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
0e039620
Unverified
Commit
0e039620
authored
Jan 14, 2025
by
Ivan Matkov
Committed by
GitHub
Jan 14, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix `PictureFilterCanvas` native bindings and add tests (#1011)
parent
c22b0fcb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
11 deletions
+58
-11
PaintFilterCanvasTest.kt
...onTest/kotlin/org/jetbrains/skia/PaintFilterCanvasTest.kt
+2
-0
PictureFilterCanvasTest.kt
...Test/kotlin/org/jetbrains/skia/PictureFilterCanvasTest.kt
+45
-0
PictureFilterCanvas.cc
skiko/src/nativeJsMain/cpp/PictureFilterCanvas.cc
+5
-5
PictureFilterCanvas.nativeJs.kt
...kotlin/org/jetbrains/skia/PictureFilterCanvas.nativeJs.kt
+6
-6
No files found.
skiko/src/commonTest/kotlin/org/jetbrains/skia/PaintFilterCanvasTest.kt
View file @
0e039620
...
...
@@ -32,5 +32,7 @@ class PaintFilterCanvasTest {
assertTrue
(
called
)
assertEquals
(
Color
.
RED
,
pixels
.
getColor
(
2
,
2
))
surface
.
close
()
}
}
\ No newline at end of file
skiko/src/commonTest/kotlin/org/jetbrains/skia/PictureFilterCanvasTest.kt
0 → 100644
View file @
0e039620
package
org.jetbrains.skia
import
kotlin.test.Test
import
kotlin.test.assertEquals
class
PictureFilterCanvasTest
{
@Test
fun
canOverrideOnDrawPicture
()
{
val
surface
=
Surface
.
makeRasterN32Premul
(
16
,
16
)
val
bounds
=
Rect
(
0f
,
0f
,
16f
,
16f
)
var
callCount
=
0
// Prepare picture
val
recorder
=
PictureRecorder
()
val
recordingCanvas
=
recorder
.
beginRecording
(
bounds
)
val
placeholder
=
Picture
.
makePlaceholder
(
bounds
)
recordingCanvas
.
drawPicture
(
placeholder
)
val
picture
=
recorder
.
finishRecordingAsPicture
()
// Filtering
val
filterCanvas
=
object
:
PictureFilterCanvas
(
surface
.
canvas
)
{
override
fun
onDrawPicture
(
picture
:
Picture
,
matrix
:
Matrix33
?,
paint
:
Paint
?):
Boolean
{
callCount
++
drawRect
(
Rect
(
0f
,
0f
,
8f
,
8f
),
Paint
().
apply
{
color
=
Color
.
RED
}
)
return
true
}
}
filterCanvas
.
drawPicture
(
picture
)
filterCanvas
.
close
()
// Render result
val
pixels
=
Bitmap
.
makeFromImage
(
surface
.
makeImageSnapshot
())
assertEquals
(
1
,
callCount
)
assertEquals
(
Color
.
RED
,
pixels
.
getColor
(
2
,
2
))
placeholder
.
close
()
picture
.
close
()
recorder
.
close
()
surface
.
close
()
}
}
\ No newline at end of file
skiko/src/nativeJsMain/cpp/PictureFilterCanvas.cc
View file @
0e039620
...
...
@@ -37,31 +37,31 @@ protected:
}
};
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nMake
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureFilterCanvas__1nMake
(
SkCanvas
*
canvas
)
{
SkikoPictureFilterCanvas
*
filterCanvas
=
new
SkikoPictureFilterCanvas
(
canvas
);
return
reinterpret_cast
<
KNativePointer
>
(
filterCanvas
);
}
SKIKO_EXPORT
void
org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nInit
SKIKO_EXPORT
void
org_jetbrains_skia_PictureFilterCanvas__1nInit
(
KNativePointer
canvasPtr
,
KInteropPointer
onDrawPicture
)
{
SkikoPictureFilterCanvas
*
canvas
=
reinterpret_cast
<
SkikoPictureFilterCanvas
*>
(
canvasPtr
);
canvas
->
_onDrawPicture
=
KBooleanCallback
(
onDrawPicture
);
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_picture
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_picture
(
KNativePointer
canvasPtr
)
{
SkikoPictureFilterCanvas
*
canvas
=
reinterpret_cast
<
SkikoPictureFilterCanvas
*>
(
canvasPtr
);
return
reinterpret_cast
<
KNativePointer
>
(
const_cast
<
SkPicture
*>
(
canvas
->
_onDrawPicture_picture
));
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_matrix
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_matrix
(
KNativePointer
canvasPtr
)
{
SkikoPictureFilterCanvas
*
canvas
=
reinterpret_cast
<
SkikoPictureFilterCanvas
*>
(
canvasPtr
);
return
reinterpret_cast
<
KNativePointer
>
(
const_cast
<
SkMatrix
*>
(
canvas
->
_onDrawPicture_matrix
));
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_paint
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_paint
(
KNativePointer
canvasPtr
)
{
SkikoPictureFilterCanvas
*
canvas
=
reinterpret_cast
<
SkikoPictureFilterCanvas
*>
(
canvasPtr
);
return
reinterpret_cast
<
KNativePointer
>
(
const_cast
<
SkPaint
*>
(
canvas
->
_onDrawPicture_paint
));
...
...
skiko/src/nativeJsMain/kotlin/org/jetbrains/skia/PictureFilterCanvas.nativeJs.kt
View file @
0e039620
...
...
@@ -21,14 +21,14 @@ internal actual fun PictureFilterCanvas.doInit(ptr: NativePointer) {
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureFilterCanvas__1nInit"
)
internal
external
fun
PictureFilterCanvas_nInit
(
ptr
:
NativePointer
,
onFilter
:
InteropPointer
)
@ExternalSymbolName
(
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_picture"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_picture"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_picture"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_picture"
)
internal
external
fun
PictureFilterCanvas_nGetOnDrawPicture_picture
(
ptr
:
NativePointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_matrix"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_matrix"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_matrix"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_matrix"
)
internal
external
fun
PictureFilterCanvas_nGetOnDrawPicture_matrix
(
ptr
:
NativePointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_paint"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_
Skiko
PictureFilterCanvas__1nGetOnDrawPicture_paint"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_paint"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureFilterCanvas__1nGetOnDrawPicture_paint"
)
internal
external
fun
PictureFilterCanvas_nGetOnDrawPicture_paint
(
ptr
:
NativePointer
):
NativePointer
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