Skip to content

Commit ce74db0

Browse files
committed
Added Drawable
1 parent 7812d59 commit ce74db0

File tree

3 files changed

+136
-64
lines changed

3 files changed

+136
-64
lines changed

Sources/GraphicsDrawableColorDrawable.swift

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,19 @@ public extension Android.Graphics.Drawable {
1313
public typealias ColorDrawable = AndroidGraphicsDrawableColorDrawable
1414
}
1515

16-
public class AndroidGraphicsDrawableColorDrawable: JavaObject {
16+
public class AndroidGraphicsDrawableColorDrawable: Android.Graphics.Drawable.Drawable {
1717

18-
public convenience init?( casting object: java_swift.JavaObject,
19-
_ file: StaticString = #file,
20-
_ line: Int = #line ) {
21-
22-
self.init(javaObject: nil)
23-
24-
object.withJavaObject {
25-
self.javaObject = $0
26-
}
27-
}
28-
29-
public required init( javaObject: jobject? ) {
30-
super.init(javaObject: javaObject)
31-
}
32-
33-
public convenience init(color: Int){
18+
/// Creates a new black ColorDrawable.
19+
public convenience init(){
3420

3521
var __locals = [jobject]()
3622

3723
var __args = [jvalue]( repeating: jvalue(), count: 1 )
38-
__args[0] = jvalue(i: jint(color))
3924

4025
let __object = JNIMethod.NewObject(
4126
className: JNICache.className,
4227
classCache: &JNICache.jniClass,
43-
methodSig: "(I)V",
28+
methodSig: "()V",
4429
methodCache: &JNICache.MethodID.newMethod1,
4530
args: &__args,
4631
locals: &__locals )
@@ -50,17 +35,19 @@ public class AndroidGraphicsDrawableColorDrawable: JavaObject {
5035
JNI.DeleteLocalRef( __object )
5136
}
5237

53-
public convenience init(){
38+
/// Creates a new ColorDrawable with the specified color.
39+
public convenience init(color: Int){
5440

5541
var __locals = [jobject]()
5642

5743
var __args = [jvalue]( repeating: jvalue(), count: 1 )
44+
__args[0] = jvalue(i: jint(color))
5845

5946
let __object = JNIMethod.NewObject(
6047
className: JNICache.className,
6148
classCache: &JNICache.jniClass,
62-
methodSig: "()V",
63-
methodCache: &JNICache.MethodID.newMethod2,
49+
methodSig: "(I)V",
50+
methodCache: &JNICache.MethodID.newMethod1,
6451
args: &__args,
6552
locals: &__locals )
6653

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//
2+
// GraphicsDrawableDrawable.swift
3+
// Android
4+
//
5+
// Created by Marco Estrella on 7/18/18.
6+
//
7+
8+
import Foundation
9+
import java_lang
10+
11+
public extension Android.Graphics.Drawable {
12+
13+
public typealias Drawable = AndroidGraphicsDrawableDrawable
14+
}
15+
16+
/***
17+
* A Drawable is a general abstraction for "something that can be drawn." Most often you will deal with Drawable
18+
* as the type of resource retrieved for drawing things to the screen; the Drawable class provides a generic API
19+
* for dealing with an underlying visual resource that may take a variety of forms. Unlike a View, a Drawable does
20+
* not have any facility to receive events or otherwise interact with the user.
21+
*/
22+
public class AndroidGraphicsDrawableDrawable: JavaObject {
23+
24+
public convenience init?( casting object: java_swift.JavaObject,
25+
_ file: StaticString = #file,
26+
_ line: Int = #line ) {
27+
28+
self.init(javaObject: nil)
29+
30+
object.withJavaObject {
31+
self.javaObject = $0
32+
}
33+
}
34+
35+
public required init( javaObject: jobject? ) {
36+
super.init(javaObject: javaObject)
37+
}
38+
39+
public convenience init(){
40+
41+
var __locals = [jobject]()
42+
43+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
44+
45+
let __object = JNIMethod.NewObject(
46+
className: DrawableJNICache.className,
47+
classCache: &DrawableJNICache.jniClass,
48+
methodSig: "()V",
49+
methodCache: &DrawableJNICache.MethodID.newMethod1,
50+
args: &__args,
51+
locals: &__locals )
52+
53+
self.init( javaObject: __object )
54+
55+
JNI.DeleteLocalRef( __object )
56+
}
57+
}
58+
59+
public extension AndroidGraphicsDrawableDrawable {
60+
61+
/// JNI Cache
62+
struct DrawableJNICache {
63+
64+
/// JNI Java class signature
65+
static let classSignature = Android.Graphics.Drawable.className(["Drawable"])
66+
67+
/// JNI Java class name
68+
static let className = classSignature.rawValue
69+
70+
/// JNI Java class
71+
static var jniClass: jclass?
72+
73+
/// JNI Method ID cache
74+
struct MethodID {
75+
76+
static var newMethod1: jmethodID?
77+
}
78+
}
79+
}
80+

Sources/View.swift

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ open class AndroidView: JavaObject {
6262
JNI.DeleteLocalRef( __object )
6363
}
6464

65+
public var background: Android.Graphics.Drawable.Drawable? {
66+
get {
67+
return getBackground()
68+
}
69+
set {
70+
setBackground(newValue!)
71+
}
72+
}
73+
6574
open func findViewById(_ id: Int) -> Android.View.View? {
6675

6776
var __locals = [jobject]()
@@ -2714,6 +2723,42 @@ public extension Android.View.View {
27142723

27152724
public extension Android.View.View {
27162725

2726+
@inline(__always)
2727+
internal func setBackground(_ background: Android.Graphics.Drawable.Drawable) {
2728+
2729+
var __locals = [jobject]()
2730+
2731+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
2732+
2733+
__args[0] = JNIType.toJava(value: background, locals: &__locals)
2734+
2735+
JNIMethod.CallVoidMethod(
2736+
object: javaObject,
2737+
methodName: "setBackground",
2738+
methodSig: "(Landroid/graphics/drawable/Drawable;)V",
2739+
methodCache: &JNICache.MethodID.setBackground,
2740+
args: &__args,
2741+
locals: &__locals )
2742+
}
2743+
2744+
@inline(__always)
2745+
internal func getBackground() -> Android.Graphics.Drawable.Drawable? {
2746+
2747+
var __locals = [jobject]()
2748+
2749+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
2750+
2751+
let __return = JNIMethod.CallObjectMethod(
2752+
object: javaObject,
2753+
methodName: "getBackground",
2754+
methodSig: "()Landroid/graphics/drawable/Drawable;",
2755+
methodCache: &JNICache.MethodID.getBackground,
2756+
args: &__args,
2757+
locals: &__locals )
2758+
2759+
return __return != nil ? Android.Graphics.Drawable.Drawable(javaObject: __return) : nil
2760+
}
2761+
27172762
@inline(__always)
27182763
public func findViewById(_ id: Android.R.ID) -> Android.View.View? {
27192764

@@ -9876,48 +9921,7 @@ public extension Android.View.View {
98769921

98779922

98789923
}
9879-
9880-
9881-
public func setBackground(background: JavaObject) {
9882-
9883-
var __locals = [jobject]()
9884-
9885-
var __args = [jvalue]( repeating: jvalue(), count: 1 )
9886-
9887-
__args[0] = JNIType.toJava(value: background, locals: &__locals)
9888-
9889-
JNIMethod.CallVoidMethod(
9890-
object: javaObject,
9891-
methodName: "setBackground",
9892-
methodSig: "(Landroid/graphics/drawable/Drawable;)V",
9893-
methodCache: &JNICache.MethodID.setBackground,
9894-
args: &__args,
9895-
locals: &__locals )
9896-
9897-
9898-
}
9899-
9900-
9901-
public func setBackgroundDrawable(background: JavaObject) {
9902-
9903-
var __locals = [jobject]()
9904-
9905-
var __args = [jvalue]( repeating: jvalue(), count: 1 )
9906-
9907-
__args[0] = JNIType.toJava(value: background, locals: &__locals)
9908-
9909-
JNIMethod.CallVoidMethod(
9910-
object: javaObject,
9911-
methodName: "setBackgroundDrawable",
9912-
methodSig: "(Landroid/graphics/drawable/Drawable;)V",
9913-
methodCache: &JNICache.MethodID.setBackgroundDrawable,
9914-
args: &__args,
9915-
locals: &__locals )
9916-
9917-
9918-
}
9919-
9920-
9924+
99219925
public func setClipBounds(clipBounds: JavaObject) {
99229926

99239927
var __locals = [jobject]()
@@ -10143,6 +10147,7 @@ internal extension Android.View.View {
1014310147
struct MethodID {
1014410148
static var init_method_1: jmethodID?
1014510149

10150+
static var getBackground: jmethodID?
1014610151
static var findViewById: jmethodID?
1014710152
static var findViewWithTag: jmethodID?
1014810153
static var getTag: jmethodID?

0 commit comments

Comments
 (0)