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
a077e19b
Unverified
Commit
a077e19b
authored
Nov 03, 2021
by
Aleksandr Veselov
Committed by
GitHub
Nov 03, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implement Animation native methods, add test (#341)
* Implement Animation native methods, add test * Remove dead code
parent
333d444e
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
130 additions
and
63 deletions
+130
-63
Animation.kt
...commonMain/kotlin/org/jetbrains/skia/skottie/Animation.kt
+12
-21
AnimationTest.kt
...onTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt
+21
-0
test_animation01.json
skiko/src/commonTest/resources/skottie/test_animation01.json
+1
-0
Animation.cc
skiko/src/jvmMain/cpp/common/skottie/Animation.cc
+6
-5
Animation.jvm.kt
...vmMain/kotlin/org/jetbrains/skia/skottie/Animation.jvm.kt
+15
-0
AnimationTest.jvm.kt
...st/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt
+27
-0
common.h
skiko/src/nativeJsMain/cpp/common.h
+1
-1
Animation.cc
skiko/src/nativeJsMain/cpp/skottie/Animation.cc
+7
-36
Animation.native.kt
...ain/kotlin/org/jetbrains/skia/skottie/Animation.native.kt
+15
-0
AnimationTest.native.kt
...kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt
+25
-0
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/skottie/Animation.kt
View file @
a077e19b
...
@@ -4,27 +4,18 @@ package org.jetbrains.skia.skottie
...
@@ -4,27 +4,18 @@ package org.jetbrains.skia.skottie
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
import
org.jetbrains.skia.sksg.InvalidationController
import
org.jetbrains.skia.sksg.InvalidationController
import
org.jetbrains.skia.*
import
org.jetbrains.skia.*
import
org.jetbrains.skia.impl.Managed
import
org.jetbrains.skia.impl.Stats
import
org.jetbrains.skia.impl.reachabilityBarrier
import
org.jetbrains.skia.ExternalSymbolName
import
org.jetbrains.skia.ExternalSymbolName
import
org.jetbrains.skia.impl.NativePointer
import
org.jetbrains.skia.impl.*
import
org.jetbrains.skia.impl.getPtr
class
Animation
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
class
Animation
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
companion
object
{
companion
object
{
fun
makeFromString
(
data
:
String
):
Animation
{
fun
makeFromString
(
data
:
String
):
Animation
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
val
ptr
=
_nMakeFromString
(
data
)
interopScope
{
val
ptr
=
_nMakeFromString
(
toInterop
(
data
))
require
(
ptr
!=
NullPointer
)
{
"Failed to create Animation from string=\"$data\""
}
require
(
ptr
!=
NullPointer
)
{
"Failed to create Animation from string=\"$data\""
}
return
Animation
(
ptr
)
return
Animation
(
ptr
)
}
}
fun
makeFromFile
(
path
:
String
):
Animation
{
Stats
.
onNativeCall
()
val
ptr
=
_nMakeFromFile
(
path
)
require
(
ptr
!=
NullPointer
)
{
"Failed to create Animation from path=\"$path\""
}
return
Animation
(
ptr
)
}
}
fun
makeFromData
(
data
:
Data
):
Animation
{
fun
makeFromData
(
data
:
Data
):
Animation
{
...
@@ -261,7 +252,7 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
...
@@ -261,7 +252,7 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
val
version
:
String
val
version
:
String
get
()
=
try
{
get
()
=
try
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
_nGetVersion
(
_ptr
)
withStringReferenceResult
{
_nGetVersion
(
_ptr
)
}
}
finally
{
}
finally
{
reachabilityBarrier
(
this
)
reachabilityBarrier
(
this
)
}
}
...
@@ -270,7 +261,7 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
...
@@ -270,7 +261,7 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
val
size
:
Point
val
size
:
Point
get
()
{
get
()
{
if
(
_size
==
null
)
{
if
(
_size
==
null
)
{
_size
=
_nGetSize
(
_ptr
)
_size
=
Point
.
fromInteropPointer
{
_nGetSize
(
_ptr
,
it
)
}
}
}
return
_size
!!
return
_size
!!
}
}
...
@@ -285,10 +276,10 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
...
@@ -285,10 +276,10 @@ class Animation internal constructor(ptr: NativePointer) : Managed(ptr, _Finaliz
private
external
fun
_nGetFinalizer
():
NativePointer
private
external
fun
_nGetFinalizer
():
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromString"
)
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromString"
)
private
external
fun
_nMakeFromString
(
data
:
String
?
):
NativePointer
private
external
fun
_nMakeFromString
(
data
:
InteropPointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromFile"
)
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromFile"
)
private
external
fun
_nMakeFromFile
(
path
:
String
?
):
NativePointer
internal
external
fun
_nMakeFromFile
(
path
:
InteropPointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromData"
)
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nMakeFromData"
)
private
external
fun
_nMakeFromData
(
dataPtr
:
NativePointer
):
NativePointer
private
external
fun
_nMakeFromData
(
dataPtr
:
NativePointer
):
NativePointer
...
@@ -327,7 +318,7 @@ private external fun _nGetInPoint(ptr: NativePointer): Float
...
@@ -327,7 +318,7 @@ private external fun _nGetInPoint(ptr: NativePointer): Float
private
external
fun
_nGetOutPoint
(
ptr
:
NativePointer
):
Float
private
external
fun
_nGetOutPoint
(
ptr
:
NativePointer
):
Float
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nGetVersion"
)
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nGetVersion"
)
private
external
fun
_nGetVersion
(
ptr
:
NativePointer
):
String
private
external
fun
_nGetVersion
(
ptr
:
NativePointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nGetSize"
)
@ExternalSymbolName
(
"org_jetbrains_skia_skottie_Animation__1nGetSize"
)
private
external
fun
_nGetSize
(
ptr
:
NativePointer
):
Point
?
private
external
fun
_nGetSize
(
ptr
:
NativePointer
,
dst
:
InteropPointer
)
skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt
0 → 100644
View file @
a077e19b
package
org.jetbrains.skia.skottie
import
org.jetbrains.skia.Point
import
kotlin.test.Test
import
kotlin.test.assertEquals
class
AnimationTest
{
@Test
fun
canCreateFromString
()
{
val
animation
=
Animation
.
makeFromString
(
"""{"nm": "Test","v": "1.42.0","ip": 0,"op": 180,"fr": 60,"w": 32,"h": 32,"layers": []}"""
)
assertEquals
(
"1.42.0"
,
animation
.
version
)
assertEquals
(
Point
(
32.0f
,
32.0f
),
animation
.
size
)
assertEquals
(
60.0f
,
animation
.
fPS
)
assertEquals
(
3.0f
,
animation
.
duration
)
assertEquals
(
0.0f
,
animation
.
inPoint
)
assertEquals
(
180.0f
,
animation
.
outPoint
)
}
}
\ No newline at end of file
skiko/src/commonTest/resources/skottie/test_animation01.json
0 → 100644
View file @
a077e19b
{
"nm"
:
"Test"
,
"v"
:
"1.42.0"
,
"ip"
:
0
,
"op"
:
180
,
"fr"
:
60
,
"w"
:
32
,
"h"
:
32
,
"layers"
:
[]}
\ No newline at end of file
skiko/src/jvmMain/cpp/common/skottie/Animation.cc
View file @
a077e19b
...
@@ -90,15 +90,16 @@ extern "C" JNIEXPORT jfloat JNICALL Java_org_jetbrains_skia_skottie_AnimationKt_
...
@@ -90,15 +90,16 @@ extern "C" JNIEXPORT jfloat JNICALL Java_org_jetbrains_skia_skottie_AnimationKt_
return
(
jfloat
)
instance
->
outPoint
();
return
(
jfloat
)
instance
->
outPoint
();
}
}
extern
"C"
JNIEXPORT
j
stri
ng
JNICALL
Java_org_jetbrains_skia_skottie_AnimationKt__1nGetVersion
extern
"C"
JNIEXPORT
j
lo
ng
JNICALL
Java_org_jetbrains_skia_skottie_AnimationKt__1nGetVersion
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
return
javaString
(
env
,
instance
->
version
());
const
SkString
*
version
=
&
instance
->
version
();
return
reinterpret_cast
<
jlong
>
(
const_cast
<
SkString
*>
(
version
));
}
}
extern
"C"
JNIEXPORT
jobject
JNICALL
Java_org_jetbrains_skia_skottie_AnimationKt__1nGetSize
extern
"C"
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skia_skottie_AnimationKt__1nGetSize
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloatArray
dst
)
{
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
const
SkSize
&
size
=
instance
->
size
();
const
SkSize
&
size
=
instance
->
size
();
return
skija
::
Point
::
make
(
env
,
size
.
fWidth
,
size
.
fHeigh
t
);
skija
::
Point
::
copyToInterop
(
env
,
{
size
.
fWidth
,
size
.
fHeight
},
ds
t
);
}
}
skiko/src/jvmMain/kotlin/org/jetbrains/skia/skottie/Animation.jvm.kt
0 → 100644
View file @
a077e19b
package
org.jetbrains.skia.skottie
import
org.jetbrains.skia.impl.Native
import
org.jetbrains.skia.impl.Stats
import
org.jetbrains.skia.impl.interopScope
fun
Animation
.
Companion
.
makeFromFile
(
path
:
String
):
Animation
{
Stats
.
onNativeCall
()
interopScope
{
val
ptr
=
_nMakeFromFile
(
toInterop
(
path
))
require
(
ptr
!=
Native
.
NullPointer
)
{
"Failed to create Animation from path=\"$path\""
}
return
Animation
(
ptr
)
}
}
\ No newline at end of file
skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt
0 → 100644
View file @
a077e19b
package
org.jetbrains.skiko.tests.org.jetbrains.skia.skottie
import
org.jetbrains.skia.Point
import
org.jetbrains.skia.skottie.Animation
import
org.jetbrains.skia.skottie.makeFromFile
import
org.jetbrains.skiko.KotlinBackend
import
org.jetbrains.skiko.kotlinBackend
import
org.jetbrains.skiko.resourcePath
import
org.junit.Test
import
kotlin.test.assertEquals
class
AnimationTestJVM
{
@Test
fun
canCreateFromFile
()
{
val
animation
=
Animation
.
makeFromFile
(
resourcePath
(
"./skottie/test_animation01.json"
)
)
assertEquals
(
"1.42.0"
,
animation
.
version
)
assertEquals
(
Point
(
32.0f
,
32.0f
),
animation
.
size
)
assertEquals
(
60.0f
,
animation
.
fPS
)
assertEquals
(
3.0f
,
animation
.
duration
)
assertEquals
(
0.0f
,
animation
.
inPoint
)
assertEquals
(
180.0f
,
animation
.
outPoint
)
}
}
\ No newline at end of file
skiko/src/nativeJsMain/cpp/common.h
View file @
a077e19b
...
@@ -59,7 +59,7 @@ namespace skija {
...
@@ -59,7 +59,7 @@ namespace skija {
}
}
namespace
Point
{
namespace
Point
{
void
copyToInterop
(
const
SkPoint
&
rec
t
,
KInteropPointer
pointer
);
void
copyToInterop
(
const
SkPoint
&
poin
t
,
KInteropPointer
pointer
);
}
}
namespace
RRect
{
namespace
RRect
{
...
...
skiko/src/nativeJsMain/cpp/skottie/Animation.cc
View file @
a077e19b
...
@@ -19,33 +19,18 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_skottie_Animation__1nGetFinalizer
...
@@ -19,33 +19,18 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_skottie_Animation__1nGetFinalizer
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromString
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromString
(
KInteropPointer
dataStr
)
{
(
KInteropPointer
dataStr
)
{
TODO
(
"implement org_jetbrains_skia_skottie_Animation__1nMakeFromString"
);
SkString
data
=
skString
(
dataStr
);
}
#if 0
SKIKO_EXPORT KNativePointer org_jetbrains_skia_skottie_Animation__1nMakeFromString
(KInteropPointer dataStr) {
SkString data = skString(env, dataStr);
sk_sp
<
Animation
>
instance
=
Animation
::
Make
(
data
.
c_str
(),
data
.
size
());
sk_sp
<
Animation
>
instance
=
Animation
::
Make
(
data
.
c_str
(),
data
.
size
());
return
reinterpret_cast
<
KNativePointer
>
(
instance
.
release
());
return
reinterpret_cast
<
KNativePointer
>
(
instance
.
release
());
}
}
#endif
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromFile
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromFile
(
KInteropPointer
pathStr
)
{
(
KInteropPointer
pathStr
)
{
TODO
(
"implement org_jetbrains_skia_skottie_Animation__1nMakeFromFile"
);
SkString
path
=
skString
(
pathStr
);
}
#if 0
SKIKO_EXPORT KNativePointer org_jetbrains_skia_skottie_Animation__1nMakeFromFile
(KInteropPointer pathStr) {
SkString path = skString(env, pathStr);
sk_sp
<
Animation
>
instance
=
Animation
::
MakeFromFile
(
path
.
c_str
());
sk_sp
<
Animation
>
instance
=
Animation
::
MakeFromFile
(
path
.
c_str
());
return
reinterpret_cast
<
KNativePointer
>
(
instance
.
release
());
return
reinterpret_cast
<
KNativePointer
>
(
instance
.
release
());
}
}
#endif
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromData
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_skottie_Animation__1nMakeFromData
...
@@ -110,32 +95,18 @@ SKIKO_EXPORT KFloat org_jetbrains_skia_skottie_Animation__1nGetOutPoint
...
@@ -110,32 +95,18 @@ SKIKO_EXPORT KFloat org_jetbrains_skia_skottie_Animation__1nGetOutPoint
}
}
SKIKO_EXPORT
KInteropPointer
org_jetbrains_skia_skottie_Animation__1nGetVersion
(
KNativePointer
ptr
)
{
TODO
(
"implement org_jetbrains_skia_skottie_Animation__1nGetVersion"
);
}
#if 0
SKIKO_EXPORT
KInteropPointer
org_jetbrains_skia_skottie_Animation__1nGetVersion
SKIKO_EXPORT
KInteropPointer
org_jetbrains_skia_skottie_Animation__1nGetVersion
(
KNativePointer
ptr
)
{
(
KNativePointer
ptr
)
{
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
((
ptr
));
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
((
ptr
));
return javaString(env, instance->version());
const
SkString
*
version
=
&
instance
->
version
();
return
reinterpret_cast
<
KInteropPointer
>
(
const_cast
<
SkString
*>
(
version
));
}
}
#endif
SKIKO_EXPORT
KInteropPointer
org_jetbrains_skia_skottie_Animation__1nGetSize
SKIKO_EXPORT
void
org_jetbrains_skia_skottie_Animation__1nGetSize
(
KNativePointer
ptr
)
{
(
KNativePointer
ptr
,
KInteropPointer
dst
)
{
TODO
(
"implement org_jetbrains_skia_skottie_Animation__1nGetSize"
);
}
#if 0
SKIKO_EXPORT KInteropPointer org_jetbrains_skia_skottie_Animation__1nGetSize
(KNativePointer ptr) {
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
((
ptr
));
Animation
*
instance
=
reinterpret_cast
<
Animation
*>
((
ptr
));
const
SkSize
&
size
=
instance
->
size
();
const
SkSize
&
size
=
instance
->
size
();
return skija::Point::
make(env, size.fWidth, size.fHeigh
t);
return
skija
::
Point
::
copyToInterop
({
size
.
fWidth
,
size
.
fHeight
},
ds
t
);
}
}
#endif
skiko/src/nativeMain/kotlin/org/jetbrains/skia/skottie/Animation.native.kt
0 → 100644
View file @
a077e19b
package
org.jetbrains.skia.skottie
import
org.jetbrains.skia.impl.Native
import
org.jetbrains.skia.impl.Stats
import
org.jetbrains.skia.impl.interopScope
fun
Animation
.
Companion
.
makeFromFile
(
path
:
String
):
Animation
{
Stats
.
onNativeCall
()
interopScope
{
val
ptr
=
_nMakeFromFile
(
toInterop
(
path
))
require
(
ptr
!=
Native
.
NullPointer
)
{
"Failed to create Animation from path=\"$path\""
}
return
Animation
(
ptr
)
}
}
\ No newline at end of file
skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt
0 → 100644
View file @
a077e19b
package
org.jetbrains.skia.skottie
import
org.jetbrains.skia.Point
import
org.jetbrains.skiko.KotlinBackend
import
org.jetbrains.skiko.kotlinBackend
import
org.jetbrains.skiko.resourcePath
import
kotlin.test.Test
import
kotlin.test.assertEquals
class
AnimationTestNative
{
@Test
fun
canCreateFromFile
()
{
val
animation
=
Animation
.
makeFromFile
(
resourcePath
(
"./skottie/test_animation01.json"
)
)
assertEquals
(
"1.42.0"
,
animation
.
version
)
assertEquals
(
Point
(
32.0f
,
32.0f
),
animation
.
size
)
assertEquals
(
60.0f
,
animation
.
fPS
)
assertEquals
(
3.0f
,
animation
.
duration
)
assertEquals
(
0.0f
,
animation
.
inPoint
)
assertEquals
(
180.0f
,
animation
.
outPoint
)
}
}
\ 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