Skip to content

Commit b7ac409

Browse files
authored
Merge pull request #46 from NativeScript/1.0.0-alpha.1
fix: svg display issues
2 parents dd2acd0 + 9b2c034 commit b7ac409

File tree

36 files changed

+276
-139
lines changed

36 files changed

+276
-139
lines changed

CanvasNative.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Pod::Spec.new do |s|
22

33
s.name = "CanvasNative"
44

5-
s.version = "1.0.0-alpha.0"
5+
s.version = "1.0.0-alpha.1"
66

77
s.summary = "A Canvas library"
88

packages/canvas/SVG/SVG.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ export class Svg extends View {
135135
__redraw() {
136136
if (this.__attachedToDom) {
137137
const domCopy = this._dom.valueOf();
138+
const serialized = this._serializer.serializeToString(domCopy);
138139
const width = domCopy.documentElement.getAttribute('width');
139140
const height = domCopy.documentElement.getAttribute('height');
140141
if (width === 'auto') {
@@ -143,15 +144,23 @@ export class Svg extends View {
143144
if (height === 'auto') {
144145
domCopy.documentElement.setAttribute('height', `${this.getMeasuredHeight()}px`);
145146
}
146-
const serialized = this._serializer.serializeToString(domCopy);
147147
if (serialized !== initialSVG) {
148148
this.src = serialized;
149149
}
150150
}
151151
}
152152

153-
createNativeView(): Object {
153+
onLoaded() {
154+
super.onLoaded();
154155
this.__attachedToDom = true;
156+
}
157+
158+
onUnloaded() {
159+
this.__attachedToDom = false;
160+
super.onUnloaded();
161+
}
162+
163+
createNativeView(): Object {
155164
return this._svg;
156165
}
157166

packages/canvas/package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nativescript/canvas",
3-
"version": "1.0.0-alpha.0",
3+
"version": "1.0.0-alpha.1",
44
"description": "DOM Canvas API for NativeScript",
55
"main": "index",
66
"typings": "index.d.ts",
@@ -31,5 +31,9 @@
3131
"license": "Apache-2.0",
3232
"homepage": "https://github.com/NativeScript/canvas",
3333
"readmeFilename": "README.md",
34-
"bootstrapper": "@nativescript/plugin-seed"
34+
"bootstrapper": "@nativescript/plugin-seed",
35+
"dependencies": {
36+
"xmldom": "~0.6.0",
37+
"@nativescript-community/gesturehandler": "0.1.45"
38+
}
3539
}

packages/canvas/platforms/android/include.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ allprojects {
66
}
77

88
dependencies {
9-
implementation 'org.nativescript:canvas:1.0.0-alpha.0'
9+
implementation 'org.nativescript:canvas:1.0.0-alpha.1'
1010
}

packages/canvas/platforms/ios/Podfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ use_frameworks!
22
platform :ios, '11.0'
33
#pod 'CanvasNative' , '~> 1.0.0.alpha.0'
44
#pod 'CanvasNative', :path => "$(SRCROOT)/../../../../../"
5-
pod 'CanvasNative', :git => 'https://github.com/NativeScript/canvas.git', :tag => '1.0.0-alpha.0'
5+
pod 'CanvasNative', :git => 'https://github.com/NativeScript/canvas.git', :tag => '1.0.0-alpha.1'
66

packages/canvas/src-native/canvas-android/.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/canvas/src-native/canvas-android/.idea/deploymentTargetDropDown.xml

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/canvas/src-native/canvas-android/.idea/gradle.xml

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/canvas/src-native/canvas-android/.idea/misc.xml

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/canvas/src-native/canvas-android/.idea/runConfigurations.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/canvas/src-native/canvas-android/app/src/main/java/org/nativescript/canvasdemo/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ class MainActivity : AppCompatActivity() {
3434
override fun onCreate(savedInstanceState: Bundle?) {
3535
super.onCreate(savedInstanceState)
3636
setContentView(R.layout.activity_main)
37-
canvas = findViewById(R.id.canvasView)
37+
//canvas = findViewById(R.id.canvasView)
3838
svg = findViewById(R.id.svgView)
39-
svg?.ignorePixelScaling = true
39+
svg?.ignorePixelScaling = false
4040
// findViewById<androidx.constraintlayout.widget.ConstraintLayout>(R.id.parent)
4141
// .addView(canvas)
4242

packages/canvas/src-native/canvas-android/canvas/publish.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ signing {
2121

2222
group = "org.nativescript"
2323
archivesBaseName = "canvas"
24-
version = "1.0.0-alpha.0"
24+
version = "1.0.0-alpha.1"
2525

2626
uploadArchives {
2727
repositories {

packages/canvas/src-native/canvas-android/canvas/src/main/java/org/nativescript/canvas/TNSSVG.kt

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ class TNSSVG : View {
6060
}
6161
}
6262

63+
private var currentTask: java.util.concurrent.Future<*>? = null
6364
private fun resize(w: Int, h: Int) {
64-
executor.execute {
65+
currentTask?.cancel(true)
66+
currentTask = executor.submit {
6567
val metrics = resources.displayMetrics
6668
TNSCanvas.nativeResizeCustomSurface(
6769
svgCanvas,
@@ -86,6 +88,7 @@ class TNSSVG : View {
8688
}
8789
}
8890
}
91+
currentTask = null
8992
}
9093
}
9194

@@ -98,7 +101,8 @@ class TNSSVG : View {
98101
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
99102

100103
if (svgCanvas == 0L) {
101-
executor.execute {
104+
currentTask?.cancel(true)
105+
currentTask = executor.submit {
102106
synchronized(lock) {
103107
svgCanvas = TNSCanvas.nativeInitContextWithCustomSurface(
104108
w.toFloat(),
@@ -126,6 +130,8 @@ class TNSSVG : View {
126130
}
127131

128132
}
133+
134+
currentTask = null
129135
}
130136
}
131137
} else {
@@ -144,12 +150,15 @@ class TNSSVG : View {
144150
bitmap?.let {
145151
synchronized(lock) {
146152
if (svgCanvas != 0L) {
147-
executor.execute {
153+
currentTask?.cancel(true)
154+
currentTask = executor.submit {
148155
TNSCanvas.nativeCustomWithBitmapFlush(svgCanvas, it)
149156
handler!!.post {
150157
pendingInvalidate = false
151158
invalidate()
152159
}
160+
161+
currentTask = null
153162
}
154163
}
155164
}
@@ -159,34 +168,32 @@ class TNSSVG : View {
159168
private fun doDraw() {
160169
synchronized(lock) {
161170
if (svgCanvas != 0L) {
162-
executor.execute {
171+
currentTask?.cancel(true)
172+
currentTask = executor.submit {
163173
if (srcPath.isNotEmpty()) {
164174
nativeDrawSVGFromPath(svgCanvas, srcPath)
165175
bitmap?.let {
166176
if (svgCanvas != 0L) {
167-
executor.execute {
168-
TNSCanvas.nativeCustomWithBitmapFlush(svgCanvas, it)
169-
handler!!.post {
170-
pendingInvalidate = false
171-
invalidate()
172-
}
177+
TNSCanvas.nativeCustomWithBitmapFlush(svgCanvas, it)
178+
handler!!.post {
179+
pendingInvalidate = false
180+
invalidate()
173181
}
174182
}
175183
}
176184
} else {
177185
nativeDrawSVG(svgCanvas, src)
178186
bitmap?.let {
179187
if (svgCanvas != 0L) {
180-
executor.execute {
181-
TNSCanvas.nativeCustomWithBitmapFlush(svgCanvas, it)
182-
handler!!.post {
183-
pendingInvalidate = false
184-
invalidate()
185-
}
188+
TNSCanvas.nativeCustomWithBitmapFlush(svgCanvas, it)
189+
handler!!.post {
190+
pendingInvalidate = false
191+
invalidate()
186192
}
187193
}
188194
}
189195
}
196+
currentTask = null
190197
}
191198
}
192199
}

packages/canvas/src-native/canvas-ios/CanvasDemo/CanvasDemo/ViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ViewController: UIViewController, TNSCanvasListener {
2727
svg = TNSSVG(frame: view.bounds)
2828
canvas1.addSubview(svg!)
2929
svg?.bringSubviewToFront(canvas1)
30-
svg?.ignorePixelScaling = true
30+
svg?.ignorePixelScaling = false
3131
// svg!.backgroundColor = .white
3232
// svg?.src = """
3333
//<svg width="660" height="220" style="outline: 1px solid red">
@@ -160,7 +160,7 @@ class ViewController: UIViewController, TNSCanvasListener {
160160
let start = CACurrentMediaTime()
161161
print("Started", start)
162162
let svg_file = NSURL(fileURLWithPath: NSTemporaryDirectory() + UUID().uuidString + "_svg_file.svg")
163-
let svg_data = try Data(contentsOf: URL(string: "https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/tiger.svg")!)
163+
let svg_data = try Data(contentsOf: URL(string: "https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/gallardo.svg")!)
164164
try svg_data.write(to: svg_file.absoluteURL!, options: .atomicWrite)
165165
let mid = CACurrentMediaTime()
166166
print("Finished Downloading", mid , mid - start)

packages/canvas/src-native/canvas-ios/CanvasNative/Dist/CanvasNative.xcframework/Info.plist

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,29 @@
66
<array>
77
<dict>
88
<key>LibraryIdentifier</key>
9-
<string>ios-x86_64-simulator</string>
9+
<string>ios-arm64</string>
1010
<key>LibraryPath</key>
1111
<string>CanvasNative.framework</string>
1212
<key>SupportedArchitectures</key>
1313
<array>
14-
<string>x86_64</string>
14+
<string>arm64</string>
1515
</array>
1616
<key>SupportedPlatform</key>
1717
<string>ios</string>
18-
<key>SupportedPlatformVariant</key>
19-
<string>simulator</string>
2018
</dict>
2119
<dict>
2220
<key>LibraryIdentifier</key>
23-
<string>ios-arm64</string>
21+
<string>ios-x86_64-simulator</string>
2422
<key>LibraryPath</key>
2523
<string>CanvasNative.framework</string>
2624
<key>SupportedArchitectures</key>
2725
<array>
28-
<string>arm64</string>
26+
<string>x86_64</string>
2927
</array>
3028
<key>SupportedPlatform</key>
3129
<string>ios</string>
30+
<key>SupportedPlatformVariant</key>
31+
<string>simulator</string>
3232
</dict>
3333
</array>
3434
<key>CFBundlePackageType</key>

0 commit comments

Comments
 (0)