Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
skiko
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuqiang
skiko
Commits
030fea30
Unverified
Commit
030fea30
authored
Oct 05, 2021
by
Nikolay Igotti
Committed by
GitHub
Oct 05, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix SVG rendering. (#238)
parent
8cde16e1
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
74 additions
and
59 deletions
+74
-59
SVGDOM.kt
skiko/src/commonMain/kotlin/org/jetbrains/skia/svg/SVGDOM.kt
+2
-5
SVGLength.kt
...src/commonMain/kotlin/org/jetbrains/skia/svg/SVGLength.kt
+5
-14
SVGPreserveAspectRatio.kt
...n/kotlin/org/jetbrains/skia/svg/SVGPreserveAspectRatio.kt
+10
-18
SVGDOM.cc
skiko/src/jvmMain/cpp/common/svg/SVGDOM.cc
+5
-5
SVGNode.cc
skiko/src/jvmMain/cpp/common/svg/SVGNode.cc
+1
-1
SVGSVG.cc
skiko/src/jvmMain/cpp/common/svg/SVGSVG.cc
+13
-13
SkiaTest.kt
skiko/src/jvmTest/kotlin/org/jetbrains/skiko/SkiaTest.kt
+38
-3
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/svg/SVGDOM.kt
View file @
030fea30
...
@@ -41,16 +41,14 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
...
@@ -41,16 +41,14 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
reachabilityBarrier
(
this
)
reachabilityBarrier
(
this
)
}
}
fun
setContainerSize
(
width
:
Float
,
height
:
Float
)
:
SVGDOM
{
fun
setContainerSize
(
width
:
Float
,
height
:
Float
)
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
SVGDOM_nSetContainerSize
(
_ptr
,
width
,
height
)
SVGDOM_nSetContainerSize
(
_ptr
,
width
,
height
)
return
this
}
}
fun
setContainerSize
(
size
:
Point
)
:
SVGDOM
{
fun
setContainerSize
(
size
:
Point
)
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
SVGDOM_nSetContainerSize
(
_ptr
,
size
.
x
,
size
.
y
)
SVGDOM_nSetContainerSize
(
_ptr
,
size
.
x
,
size
.
y
)
return
this
}
}
// sk_sp<SkSVGNode>* findNodeById(const char* id);
// sk_sp<SkSVGNode>* findNodeById(const char* id);
...
@@ -65,7 +63,6 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
...
@@ -65,7 +63,6 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
}
}
}
}
@ExternalSymbolName
(
"org_jetbrains_skia_svg_SVGDOM__1nMakeFromData"
)
@ExternalSymbolName
(
"org_jetbrains_skia_svg_SVGDOM__1nMakeFromData"
)
private
external
fun
SVGDOM_nMakeFromData
(
dataPtr
:
NativePointer
):
NativePointer
private
external
fun
SVGDOM_nMakeFromData
(
dataPtr
:
NativePointer
):
NativePointer
...
...
skiko/src/commonMain/kotlin/org/jetbrains/skia/svg/SVGLength.kt
View file @
030fea30
...
@@ -6,27 +6,18 @@ class SVGLength(val value: Float, val unit: SVGLengthUnit) {
...
@@ -6,27 +6,18 @@ class SVGLength(val value: Float, val unit: SVGLengthUnit) {
constructor
(
value
:
Float
)
:
this
(
value
,
SVGLengthUnit
.
NUMBER
)
{}
constructor
(
value
:
Float
)
:
this
(
value
,
SVGLengthUnit
.
NUMBER
)
{}
override
fun
equals
(
o
:
Any
?):
Boolean
{
override
fun
equals
(
other
:
Any
?):
Boolean
{
if
(
o
===
this
)
return
true
if
(
other
===
this
)
return
true
if
(
o
!
is
SVGLength
)
return
false
if
(
other
!
is
SVGLength
)
return
false
val
other
=
o
if
(!
other
.
canEqual
(
this
as
Any
))
return
false
if
(
value
.
compareTo
(
other
.
value
)
!=
0
)
return
false
if
(
value
.
compareTo
(
other
.
value
)
!=
0
)
return
false
val
`
this
$
_unit
`
:
Any
=
unit
return
unit
==
other
.
unit
val
`
other
$
_unit
`
:
Any
=
other
.
unit
return
`
this
$
_unit
`
==
`
other
$
_unit
`
}
protected
fun
canEqual
(
other
:
Any
?):
Boolean
{
return
other
is
SVGLength
}
}
override
fun
hashCode
():
Int
{
override
fun
hashCode
():
Int
{
val
PRIME
=
59
val
PRIME
=
59
var
result
=
1
var
result
=
1
result
=
result
*
PRIME
+
value
.
toBits
()
result
=
result
*
PRIME
+
value
.
toBits
()
val
`$
_unit
`
:
Any
=
unit
result
=
result
*
PRIME
+
unit
.
hashCode
()
result
=
result
*
PRIME
+
(
`$
_unit
`
.
hashCode
())
return
result
return
result
}
}
...
...
skiko/src/commonMain/kotlin/org/jetbrains/skia/svg/SVGPreserveAspectRatio.kt
View file @
030fea30
...
@@ -10,26 +10,20 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
...
@@ -10,26 +10,20 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
SVGPreserveAspectRatioScale
.
values
()[
scale
]
SVGPreserveAspectRatioScale
.
values
()[
scale
]
)
)
constructor
()
:
this
(
SVGPreserveAspectRatioAlign
.
XMID_YMID
,
SVGPreserveAspectRatioScale
.
MEET
)
{}
constructor
()
:
this
(
SVGPreserveAspectRatioAlign
.
XMID_YMID
,
SVGPreserveAspectRatioScale
.
MEET
)
constructor
(
align
:
SVGPreserveAspectRatioAlign
)
:
this
(
align
,
SVGPreserveAspectRatioScale
.
MEET
)
{}
constructor
(
align
:
SVGPreserveAspectRatioAlign
)
:
this
(
align
,
SVGPreserveAspectRatioScale
.
MEET
)
constructor
(
scale
:
SVGPreserveAspectRatioScale
)
:
this
(
SVGPreserveAspectRatioAlign
.
XMID_YMID
,
scale
)
{}
constructor
(
scale
:
SVGPreserveAspectRatioScale
)
:
this
(
SVGPreserveAspectRatioAlign
.
XMID_YMID
,
scale
)
val
align
:
SVGPreserveAspectRatioAlign
val
align
:
SVGPreserveAspectRatioAlign
get
()
=
_align
get
()
=
_align
val
scale
:
SVGPreserveAspectRatioScale
val
scale
:
SVGPreserveAspectRatioScale
get
()
=
_scale
get
()
=
_scale
override
fun
equals
(
o
:
Any
?):
Boolean
{
override
fun
equals
(
other
:
Any
?):
Boolean
{
if
(
o
===
this
)
return
true
if
(
other
===
this
)
return
true
if
(
o
!
is
SVGPreserveAspectRatio
)
return
false
if
(
other
!
is
SVGPreserveAspectRatio
)
return
false
val
other
=
o
if
(
align
!=
other
.
align
)
return
false
if
(!
other
.
canEqual
(
this
as
Any
))
return
false
return
scale
==
other
.
scale
val
`
this
$
_align
`
:
Any
=
align
val
`
other
$
_align
`
:
Any
=
other
.
align
if
(
`
this
$
_align
`
!=
`
other
$
_align
`
)
return
false
val
`
this
$
_scale
`
:
Any
=
scale
val
`
other
$
_scale
`
:
Any
=
other
.
scale
return
`
this
$
_scale
`
==
`
other
$
_scale
`
}
}
protected
fun
canEqual
(
other
:
Any
?):
Boolean
{
protected
fun
canEqual
(
other
:
Any
?):
Boolean
{
...
@@ -39,10 +33,8 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
...
@@ -39,10 +33,8 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
override
fun
hashCode
():
Int
{
override
fun
hashCode
():
Int
{
val
PRIME
=
59
val
PRIME
=
59
var
result
=
1
var
result
=
1
val
`$
_align
`
:
Any
=
align
result
=
result
*
PRIME
+
align
.
hashCode
()
result
=
result
*
PRIME
+
(
`$
_align
`
.
hashCode
())
result
=
result
*
PRIME
+
scale
.
hashCode
()
val
`$
_scale
`
:
Any
=
scale
result
=
result
*
PRIME
+
(
`$
_scale
`
.
hashCode
())
return
result
return
result
}
}
...
...
skiko/src/jvmMain/cpp/common/svg/SVGDOM.cc
View file @
030fea30
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
#include "SkSVGDOM.h"
#include "SkSVGDOM.h"
#include "SkSVGSVG.h"
#include "SkSVGSVG.h"
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nMakeFromData
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_
1
nMakeFromData
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
dataPtr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
dataPtr
)
{
SkData
*
data
=
reinterpret_cast
<
SkData
*>
(
static_cast
<
uintptr_t
>
(
dataPtr
));
SkData
*
data
=
reinterpret_cast
<
SkData
*>
(
static_cast
<
uintptr_t
>
(
dataPtr
));
SkMemoryStream
stream
(
sk_ref_sp
(
data
));
SkMemoryStream
stream
(
sk_ref_sp
(
data
));
...
@@ -14,7 +14,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
...
@@ -14,7 +14,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
return
reinterpret_cast
<
jlong
>
(
instance
.
release
());
return
reinterpret_cast
<
jlong
>
(
instance
.
release
());
}
}
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nGetRoot
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_
1
nGetRoot
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
root
=
instance
->
getRoot
();
SkSVGSVG
*
root
=
instance
->
getRoot
();
...
@@ -22,20 +22,20 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
...
@@ -22,20 +22,20 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
return
reinterpret_cast
<
jlong
>
(
root
);
return
reinterpret_cast
<
jlong
>
(
root
);
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nGetContainerSize
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_
1
nGetContainerSize
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
const
SkSize
&
size
=
instance
->
containerSize
();
const
SkSize
&
size
=
instance
->
containerSize
();
return
skija
::
Point
::
make
(
env
,
size
.
fWidth
,
size
.
fHeight
);
return
skija
::
Point
::
make
(
env
,
size
.
fWidth
,
size
.
fHeight
);
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt__1nSetContainerSize
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_
SVGDOM
_1nSetContainerSize
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloat
width
,
jfloat
height
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloat
width
,
jfloat
height
)
{
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
instance
->
setContainerSize
(
SkSize
{
width
,
height
});
instance
->
setContainerSize
(
SkSize
{
width
,
height
});
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nRender
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_
1
nRender
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jlong
canvasPtr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jlong
canvasPtr
)
{
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGDOM
*
instance
=
reinterpret_cast
<
SkSVGDOM
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkCanvas
*
canvas
=
reinterpret_cast
<
SkCanvas
*>
(
static_cast
<
uintptr_t
>
(
canvasPtr
));
SkCanvas
*
canvas
=
reinterpret_cast
<
SkCanvas
*>
(
static_cast
<
uintptr_t
>
(
canvasPtr
));
...
...
skiko/src/jvmMain/cpp/common/svg/SVGNode.cc
View file @
030fea30
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#include "../interop.hh"
#include "../interop.hh"
#include "SkSVGNode.h"
#include "SkSVGNode.h"
extern
"C"
JNIEXPORT
jint
JNICALL
Java_org_jetbrains_skia_svg_SVGNodeKt_SVGNode_nGetTag
extern
"C"
JNIEXPORT
jint
JNICALL
Java_org_jetbrains_skia_svg_SVGNodeKt_SVGNode_
1
nGetTag
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGNode
*
instance
=
reinterpret_cast
<
SkSVGNode
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGNode
*
instance
=
reinterpret_cast
<
SkSVGNode
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
static_cast
<
jint
>
(
instance
->
tag
());
return
static_cast
<
jint
>
(
instance
->
tag
());
...
...
skiko/src/jvmMain/cpp/common/svg/SVGSVG.cc
View file @
030fea30
...
@@ -4,44 +4,44 @@
...
@@ -4,44 +4,44 @@
#include "SkSVGSVG.h"
#include "SkSVGSVG.h"
#include "SkSVGRenderContext.h"
#include "SkSVGRenderContext.h"
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetX
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetX
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getX
());
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getX
());
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetY
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetY
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getY
());
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getY
());
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetWidth
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetWidth
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getWidth
());
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getWidth
());
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetHeight
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetHeight
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getHeight
());
return
skija
::
svg
::
SVGLength
::
toJava
(
env
,
instance
->
getHeight
());
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetPreserveAspectRatio
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetPreserveAspectRatio
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
skija
::
svg
::
SVGPreserveAspectRatio
::
toJava
(
env
,
instance
->
getPreserveAspectRatio
());
return
skija
::
svg
::
SVGPreserveAspectRatio
::
toJava
(
env
,
instance
->
getPreserveAspectRatio
());
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetViewBox
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetViewBox
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkTLazy
<
SkSVGViewBoxType
>
viewBox
=
instance
->
getViewBox
();
SkTLazy
<
SkSVGViewBoxType
>
viewBox
=
instance
->
getViewBox
();
return
viewBox
.
isValid
()
?
skija
::
Rect
::
fromSkRect
(
env
,
*
viewBox
.
get
())
:
nullptr
;
return
viewBox
.
isValid
()
?
skija
::
Rect
::
fromSkRect
(
env
,
*
viewBox
.
get
())
:
nullptr
;
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetIntrinsicSize
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nGetIntrinsicSize
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
width
,
float
height
,
float
dpi
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
width
,
float
height
,
float
dpi
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGLengthContext
lc
({
width
,
height
},
dpi
);
SkSVGLengthContext
lc
({
width
,
height
},
dpi
);
...
@@ -49,42 +49,42 @@ extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG
...
@@ -49,42 +49,42 @@ extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG
return
skija
::
Point
::
fromSkPoint
(
env
,
{
size
.
width
(),
size
.
height
()});
return
skija
::
Point
::
fromSkPoint
(
env
,
{
size
.
width
(),
size
.
height
()});
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetX
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetX
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
instance
->
setX
(
lenght
);
instance
->
setX
(
lenght
);
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetY
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetY
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
instance
->
setY
(
lenght
);
instance
->
setY
(
lenght
);
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetWidth
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetWidth
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
instance
->
setWidth
(
lenght
);
instance
->
setWidth
(
lenght
);
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetHeight
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetHeight
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
value
,
int
unit
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
SkSVGLength
lenght
(
value
,
static_cast
<
SkSVGLength
::
Unit
>
(
unit
));
instance
->
setHeight
(
lenght
);
instance
->
setHeight
(
lenght
);
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetPreserveAspectRatio
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetPreserveAspectRatio
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jint
align
,
jint
scale
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jint
align
,
jint
scale
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
instance
->
setPreserveAspectRatio
(
SkSVGPreserveAspectRatio
{
static_cast
<
SkSVGPreserveAspectRatio
::
Align
>
(
align
),
instance
->
setPreserveAspectRatio
(
SkSVGPreserveAspectRatio
{
static_cast
<
SkSVGPreserveAspectRatio
::
Align
>
(
align
),
static_cast
<
SkSVGPreserveAspectRatio
::
Scale
>
(
scale
)
});
static_cast
<
SkSVGPreserveAspectRatio
::
Scale
>
(
scale
)
});
}
}
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetViewBox
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_
1
nSetViewBox
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
l
,
float
t
,
float
r
,
float
b
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
float
l
,
float
t
,
float
r
,
float
b
)
{
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkSVGSVG
*
instance
=
reinterpret_cast
<
SkSVGSVG
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
instance
->
setViewBox
(
SkRect
::
MakeLTRB
(
l
,
t
,
r
,
b
));
instance
->
setViewBox
(
SkRect
::
MakeLTRB
(
l
,
t
,
r
,
b
));
...
...
skiko/src/jvmTest/kotlin/org/jetbrains/skiko/SkiaTest.kt
View file @
030fea30
package
org.jetbrains.skiko
package
org.jetbrains.skiko
import
org.jetbrains.skia.Color4f
import
org.jetbrains.skia.*
import
org.jetbrains.skia.ColorFilter
import
org.jetbrains.skia.svg.SVGDOM
import
org.jetbrains.skia.ColorSpace
import
org.jetbrains.skia.svg.SVGLengthContext
import
org.jetbrains.skia.svg.SVGLengthUnit
import
org.jetbrains.skia.svg.SVGTag
import
org.junit.Test
import
org.junit.Test
class
SkiaTest
{
class
SkiaTest
{
...
@@ -19,4 +21,37 @@ class SkiaTest {
...
@@ -19,4 +21,37 @@ class SkiaTest {
val
table
=
ColorFilter
.
makeTableARGB
(
array
,
array
,
array
,
array
)
val
table
=
ColorFilter
.
makeTableARGB
(
array
,
array
,
array
,
array
)
assert
(
table
.
_ptr
!=
0L
)
assert
(
table
.
_ptr
!=
0L
)
}
}
@Test
fun
`
svg
smoke
`
()
{
val
svgText
=
"""
<svg version="1.1"
width="300" height="200"
xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="red" />
<circle cx="150" cy="100" r="80" fill="green" />
<text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>
</svg>
"""
.
trimIndent
()
val
data
=
Data
.
makeFromBytes
(
svgText
.
encodeToByteArray
())
val
dom
=
SVGDOM
(
data
)
assert
(!
dom
.
isClosed
)
dom
.
setContainerSize
(
Point
(
100f
,
100f
))
dom
.
setContainerSize
(
101f
,
101f
)
assert
(
dom
.
root
!=
null
)
val
e
=
dom
.
root
!!
assert
(
e
.
x
.
unit
==
SVGLengthUnit
.
NUMBER
)
assert
(
e
.
y
.
unit
==
SVGLengthUnit
.
NUMBER
)
assert
(
e
.
width
.
unit
==
SVGLengthUnit
.
NUMBER
)
assert
(
e
.
height
.
unit
==
SVGLengthUnit
.
NUMBER
)
assert
(
e
.
viewBox
==
null
)
assert
(
e
.
tag
==
SVGTag
.
SVG
)
// e.viewBox = Rect(0f, 1f, 100f, 200f)
// assert(e.viewBox!!.top == 1f)
assert
(
e
.
getIntrinsicSize
(
SVGLengthContext
(
100f
,
100f
)).
x
==
300f
)
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment