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
defd411c
Unverified
Commit
defd411c
authored
Nov 01, 2021
by
Aleksandr Veselov
Committed by
GitHub
Nov 01, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement PathEffect native methods (#326)
parent
9372822b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
29 deletions
+32
-29
PathEffect.kt
skiko/src/commonMain/kotlin/org/jetbrains/skia/PathEffect.kt
+5
-5
PathEffectTest.kt
...rc/commonTest/kotlin/org/jetbrains/skia/PathEffectTest.kt
+21
-0
PathEffect.cc
skiko/src/jvmMain/cpp/common/PathEffect.cc
+1
-1
PathEffect.cc
skiko/src/nativeJsMain/cpp/PathEffect.cc
+5
-23
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/PathEffect.kt
View file @
defd411c
...
@@ -5,7 +5,7 @@ import org.jetbrains.skia.impl.Library.Companion.staticLoad
...
@@ -5,7 +5,7 @@ import org.jetbrains.skia.impl.Library.Companion.staticLoad
class
PathEffect
internal
constructor
(
ptr
:
NativePointer
)
:
RefCnt
(
ptr
)
{
class
PathEffect
internal
constructor
(
ptr
:
NativePointer
)
:
RefCnt
(
ptr
)
{
companion
object
{
companion
object
{
fun
makePath1D
(
path
:
Path
?
,
advance
:
Float
,
phase
:
Float
,
style
:
Style
):
PathEffect
{
fun
makePath1D
(
path
:
Path
,
advance
:
Float
,
phase
:
Float
,
style
:
Style
):
PathEffect
{
return
try
{
return
try
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
PathEffect
(
PathEffect
(
...
@@ -21,7 +21,7 @@ class PathEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
...
@@ -21,7 +21,7 @@ class PathEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
}
}
}
}
fun
makePath2D
(
matrix
:
Matrix33
,
path
:
Path
?
):
PathEffect
{
fun
makePath2D
(
matrix
:
Matrix33
,
path
:
Path
):
PathEffect
{
return
try
{
return
try
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
PathEffect
(
PathEffect
(
...
@@ -51,11 +51,11 @@ class PathEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
...
@@ -51,11 +51,11 @@ class PathEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
return
PathEffect
(
_nMakeCorner
(
radius
))
return
PathEffect
(
_nMakeCorner
(
radius
))
}
}
fun
makeDash
(
intervals
:
FloatArray
?
,
phase
:
Float
):
PathEffect
{
fun
makeDash
(
intervals
:
FloatArray
,
phase
:
Float
):
PathEffect
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
return
PathEffect
(
return
PathEffect
(
interopScope
{
interopScope
{
_nMakeDash
(
toInterop
(
intervals
),
phase
)
_nMakeDash
(
toInterop
(
intervals
),
intervals
.
size
,
phase
)
}
}
)
)
}
}
...
@@ -121,7 +121,7 @@ private external fun _nMakeLine2D(width: Float, matrix: InteropPointer): NativeP
...
@@ -121,7 +121,7 @@ private external fun _nMakeLine2D(width: Float, matrix: InteropPointer): NativeP
private
external
fun
_nMakeCorner
(
radius
:
Float
):
NativePointer
private
external
fun
_nMakeCorner
(
radius
:
Float
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_PathEffect__1nMakeDash"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PathEffect__1nMakeDash"
)
private
external
fun
_nMakeDash
(
intervals
:
InteropPointer
,
phase
:
Float
):
NativePointer
private
external
fun
_nMakeDash
(
intervals
:
InteropPointer
,
count
:
Int
,
phase
:
Float
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_PathEffect__1nMakeDiscrete"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PathEffect__1nMakeDiscrete"
)
private
external
fun
_nMakeDiscrete
(
segLength
:
Float
,
dev
:
Float
,
seed
:
Int
):
NativePointer
private
external
fun
_nMakeDiscrete
(
segLength
:
Float
,
dev
:
Float
,
seed
:
Int
):
NativePointer
skiko/src/commonTest/kotlin/org/jetbrains/skia/PathEffectTest.kt
0 → 100644
View file @
defd411c
package
org.jetbrains.skia
import
kotlin.test.Test
class
PathEffectTest
{
@Test
fun
canCreate
()
{
val
path
=
Path
.
makeFromSVGString
(
"M0 0 L10 10 L10 0 Z"
)
val
matrix33
=
Matrix33
(
1.0f
,
0.0f
,
0.0f
,
0.0f
,
2.0f
,
0.0f
,
0.0f
,
0.0f
,
3.0f
)
val
path1
=
PathEffect
.
makeCorner
(
12.0f
)
PathEffect
.
makePath1D
(
path
,
1.0f
,
10.0f
,
PathEffect
.
Style
.
ROTATE
)
PathEffect
.
makePath2D
(
matrix33
,
path
)
val
path2
=
PathEffect
.
makeDash
(
floatArrayOf
(
1.0f
,
2.0f
,
4.0f
,
2.0f
),
0.0f
)
PathEffect
.
makeLine2D
(
2.0f
,
matrix33
)
PathEffect
.
makeDiscrete
(
20.0f
,
0.0f
,
0
)
path1
.
makeSum
(
path2
)
path1
.
makeCompose
(
path2
)
}
}
\ No newline at end of file
skiko/src/jvmMain/cpp/common/PathEffect.cc
View file @
defd411c
...
@@ -54,7 +54,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_PathEffectKt__1nMakeC
...
@@ -54,7 +54,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_PathEffectKt__1nMakeC
}
}
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_PathEffectKt__1nMakeDash
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_PathEffectKt__1nMakeDash
(
JNIEnv
*
env
,
jclass
jclass
,
jfloatArray
intervalsArray
,
jfloat
phase
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jfloatArray
intervalsArray
,
j
int
_count
,
j
float
phase
)
{
jsize
len
=
env
->
GetArrayLength
(
intervalsArray
);
jsize
len
=
env
->
GetArrayLength
(
intervalsArray
);
jfloat
*
intervals
=
env
->
GetFloatArrayElements
(
intervalsArray
,
0
);
jfloat
*
intervals
=
env
->
GetFloatArrayElements
(
intervalsArray
,
0
);
SkPathEffect
*
ptr
=
SkDashPathEffect
::
Make
(
intervals
,
len
,
phase
).
release
();
SkPathEffect
*
ptr
=
SkDashPathEffect
::
Make
(
intervals
,
len
,
phase
).
release
();
...
...
skiko/src/nativeJsMain/cpp/PathEffect.cc
View file @
defd411c
...
@@ -34,38 +34,20 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PathEffect__1nMakePath1D
...
@@ -34,38 +34,20 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PathEffect__1nMakePath1D
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
}
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakePath2D
(
KFloat
*
matrixArr
,
KNativePointer
pathPtr
)
{
TODO
(
"implement org_jetbrains_skia_PathEffect__1nMakePath2D"
);
}
#if 0
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakePath2D
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakePath2D
(
KFloat
*
matrixArr
,
KNativePointer
pathPtr
)
{
(
KFloat
*
matrixArr
,
KNativePointer
pathPtr
)
{
std::unique_ptr<SkMatrix> m = skMatrix(
env,
matrixArr);
std
::
unique_ptr
<
SkMatrix
>
m
=
skMatrix
(
matrixArr
);
SkPath
*
path
=
reinterpret_cast
<
SkPath
*>
((
pathPtr
));
SkPath
*
path
=
reinterpret_cast
<
SkPath
*>
((
pathPtr
));
SkPathEffect
*
ptr
=
SkPath2DPathEffect
::
Make
(
*
m
,
*
path
).
release
();
SkPathEffect
*
ptr
=
SkPath2DPathEffect
::
Make
(
*
m
,
*
path
).
release
();
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
}
}
#endif
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeLine2D
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeLine2D
(
KFloat
width
,
KFloat
*
matrixArr
)
{
(
KFloat
width
,
KFloat
*
matrixArr
)
{
TODO
(
"implement org_jetbrains_skia_PathEffect__1nMakeLine2D"
);
std
::
unique_ptr
<
SkMatrix
>
m
=
skMatrix
(
matrixArr
);
}
#if 0
SKIKO_EXPORT KNativePointer org_jetbrains_skia_PathEffect__1nMakeLine2D
(KFloat width, KFloat* matrixArr) {
std::unique_ptr<SkMatrix> m = skMatrix(env, matrixArr);
SkPathEffect
*
ptr
=
SkLine2DPathEffect
::
Make
(
width
,
*
m
).
release
();
SkPathEffect
*
ptr
=
SkLine2DPathEffect
::
Make
(
width
,
*
m
).
release
();
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
}
}
#endif
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeCorner
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeCorner
(
KFloat
radius
)
{
(
KFloat
radius
)
{
...
@@ -73,10 +55,10 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PathEffect__1nMakeCorner
...
@@ -73,10 +55,10 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PathEffect__1nMakeCorner
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
}
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeDash
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeDash
(
KFloat
*
intervalsArray
,
KFloat
phase
)
{
(
KFloat
*
intervalsArray
,
KInt
count
,
KFloat
phase
)
{
TODO
(
"implement org_jetbrains_skia_PathEffect__1nMakeDash"
);
SkPathEffect
*
ptr
=
SkDashPathEffect
::
Make
(
reinterpret_cast
<
float
*>
(
intervalsArray
),
count
,
phase
).
release
();
return
reinterpret_cast
<
KNativePointer
>
(
ptr
);
}
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeDiscrete
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PathEffect__1nMakeDiscrete
...
...
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