Unverified Commit 0e039620 authored by Ivan Matkov's avatar Ivan Matkov Committed by GitHub

Fix `PictureFilterCanvas` native bindings and add tests (#1011)

parent c22b0fcb
......@@ -32,5 +32,7 @@ class PaintFilterCanvasTest {
assertTrue(called)
assertEquals(Color.RED, pixels.getColor(2, 2))
surface.close()
}
}
\ No newline at end of file
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
......@@ -37,31 +37,31 @@ protected:
}
};
SKIKO_EXPORT KNativePointer org_jetbrains_skia_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__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));
......
......@@ -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_SkikoPictureFilterCanvas__1nGetOnDrawPicture_picture")
@ModuleImport("./skiko.mjs", "org_jetbrains_skia_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__1nGetOnDrawPicture_matrix")
@ModuleImport("./skiko.mjs", "org_jetbrains_skia_SkikoPictureFilterCanvas__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_SkikoPictureFilterCanvas__1nGetOnDrawPicture_paint")
@ModuleImport("./skiko.mjs", "org_jetbrains_skia_SkikoPictureFilterCanvas__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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment