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
574e3eee
Unverified
Commit
574e3eee
authored
Mar 11, 2024
by
Ivan Matkov
Committed by
GitHub
Mar 11, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Expose `BBHFactory` to record bounds in `Picture` (#889)
parent
22d02e6b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
83 additions
and
8 deletions
+83
-8
BBHFactory.kt
skiko/src/commonMain/kotlin/org/jetbrains/skia/BBHFactory.kt
+28
-0
PictureRecorder.kt
...c/commonMain/kotlin/org/jetbrains/skia/PictureRecorder.kt
+14
-4
BBHFactory.cc
skiko/src/jvmMain/cpp/common/BBHFactory.cc
+18
-0
PictureRecorder.cc
skiko/src/jvmMain/cpp/common/PictureRecorder.cc
+3
-2
BBHFactory.cc
skiko/src/nativeJsMain/cpp/BBHFactory.cc
+17
-0
PictureRecorder.cc
skiko/src/nativeJsMain/cpp/PictureRecorder.cc
+3
-2
No files found.
skiko/src/commonMain/kotlin/org/jetbrains/skia/BBHFactory.kt
0 → 100644
View file @
574e3eee
package
org.jetbrains.skia
import
org.jetbrains.skia.impl.Managed
import
org.jetbrains.skia.impl.NativePointer
import
org.jetbrains.skia.impl.Stats
// TODO class BBoxHierarchy internal constructor(ptr: NativePointer) : RefCnt(ptr)
abstract
class
BBHFactory
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
private
object
_FinalizerHolder
{
val
PTR
=
BBHFactory_nGetFinalizer
()
}
}
class
RTreeFactory
:
BBHFactory
{
@Suppress
(
"ConvertSecondaryConstructorToPrimary"
)
constructor
()
:
super
(
RTreeFactory_nMake
())
{
Stats
.
onNativeCall
()
}
}
@ExternalSymbolName
(
"org_jetbrains_skia_RTreeFactory__1nMake"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_RTreeFactory__1nMake"
)
private
external
fun
RTreeFactory_nMake
():
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_BBHFactory__1nGetFinalizer"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_BBHFactory_1nGetFinalizer"
)
private
external
fun
BBHFactory_nGetFinalizer
():
NativePointer
skiko/src/commonMain/kotlin/org/jetbrains/skia/PictureRecorder.kt
View file @
574e3eee
...
@@ -2,9 +2,10 @@ package org.jetbrains.skia
...
@@ -2,9 +2,10 @@ package org.jetbrains.skia
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
import
org.jetbrains.skia.impl.Library.Companion.staticLoad
import
org.jetbrains.skia.impl.Managed
import
org.jetbrains.skia.impl.Managed
import
org.jetbrains.skia.impl.NativePointer
import
org.jetbrains.skia.impl.Stats
import
org.jetbrains.skia.impl.Stats
import
org.jetbrains.skia.impl.getPtr
import
org.jetbrains.skia.impl.reachabilityBarrier
import
org.jetbrains.skia.impl.reachabilityBarrier
import
org.jetbrains.skia.impl.NativePointer
class
PictureRecorder
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
class
PictureRecorder
internal
constructor
(
ptr
:
NativePointer
)
:
Managed
(
ptr
,
_FinalizerHolder
.
PTR
)
{
companion
object
{
companion
object
{
...
@@ -44,9 +45,10 @@ class PictureRecorder internal constructor(ptr: NativePointer) : Managed(ptr, _F
...
@@ -44,9 +45,10 @@ class PictureRecorder internal constructor(ptr: NativePointer) : Managed(ptr, _F
*
*
* @param bounds the cull rect used when recording this picture. Any drawing the falls outside
* @param bounds the cull rect used when recording this picture. Any drawing the falls outside
* of this rect is undefined, and may be drawn or it may not.
* of this rect is undefined, and may be drawn or it may not.
* @param bbh optional acceleration structure
* @return the canvas.
* @return the canvas.
*/
*/
fun
beginRecording
(
bounds
:
Rect
):
Canvas
{
fun
beginRecording
(
bounds
:
Rect
,
bbh
:
BBHFactory
?
=
null
):
Canvas
{
return
try
{
return
try
{
Stats
.
onNativeCall
()
Stats
.
onNativeCall
()
Canvas
(
Canvas
(
...
@@ -55,7 +57,8 @@ class PictureRecorder internal constructor(ptr: NativePointer) : Managed(ptr, _F
...
@@ -55,7 +57,8 @@ class PictureRecorder internal constructor(ptr: NativePointer) : Managed(ptr, _F
bounds
.
left
,
bounds
.
left
,
bounds
.
top
,
bounds
.
top
,
bounds
.
right
,
bounds
.
right
,
bounds
.
bottom
bounds
.
bottom
,
getPtr
(
bbh
)
),
false
,
this
),
false
,
this
)
)
}
finally
{
}
finally
{
...
@@ -134,7 +137,14 @@ private external fun PictureRecorder_nGetFinalizer(): NativePointer
...
@@ -134,7 +137,14 @@ private external fun PictureRecorder_nGetFinalizer(): NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_PictureRecorder__1nBeginRecording"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PictureRecorder__1nBeginRecording"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureRecorder__1nBeginRecording"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureRecorder__1nBeginRecording"
)
private
external
fun
_nBeginRecording
(
ptr
:
NativePointer
,
left
:
Float
,
top
:
Float
,
right
:
Float
,
bottom
:
Float
):
NativePointer
private
external
fun
_nBeginRecording
(
ptr
:
NativePointer
,
left
:
Float
,
top
:
Float
,
right
:
Float
,
bottom
:
Float
,
bbh
:
NativePointer
):
NativePointer
@ExternalSymbolName
(
"org_jetbrains_skia_PictureRecorder__1nGetRecordingCanvas"
)
@ExternalSymbolName
(
"org_jetbrains_skia_PictureRecorder__1nGetRecordingCanvas"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureRecorder__1nGetRecordingCanvas"
)
@ModuleImport
(
"./skiko.mjs"
,
"org_jetbrains_skia_PictureRecorder__1nGetRecordingCanvas"
)
...
...
skiko/src/jvmMain/cpp/common/BBHFactory.cc
0 → 100644
View file @
574e3eee
#include <jni.h>
#include "interop.hh"
#include "SkBBHFactory.h"
static
void
deleteSkBBHFactory
(
SkBBHFactory
*
bbh
)
{
delete
bbh
;
}
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_BBHFactoryKt_RTreeFactory_1nMake
(
JNIEnv
*
env
,
jclass
jclass
)
{
SkRTreeFactory
*
instance
=
new
SkRTreeFactory
();
return
reinterpret_cast
<
jlong
>
(
instance
);
}
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_BBHFactoryKt_BBHFactory_1nGetFinalizer
(
JNIEnv
*
env
,
jclass
jclass
)
{
return
static_cast
<
jlong
>
(
reinterpret_cast
<
uintptr_t
>
(
&
deleteSkBBHFactory
));
}
skiko/src/jvmMain/cpp/common/PictureRecorder.cc
View file @
574e3eee
...
@@ -21,9 +21,10 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_PictureRecorderKt_Pic
...
@@ -21,9 +21,10 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_PictureRecorderKt_Pic
}
}
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_PictureRecorderKt__1nBeginRecording
extern
"C"
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skia_PictureRecorderKt__1nBeginRecording
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloat
left
,
jfloat
top
,
jfloat
right
,
jfloat
bottom
)
{
(
JNIEnv
*
env
,
jclass
jclass
,
jlong
ptr
,
jfloat
left
,
jfloat
top
,
jfloat
right
,
jfloat
bottom
,
jlong
bbh
)
{
SkPictureRecorder
*
instance
=
reinterpret_cast
<
SkPictureRecorder
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkPictureRecorder
*
instance
=
reinterpret_cast
<
SkPictureRecorder
*>
(
static_cast
<
uintptr_t
>
(
ptr
));
SkCanvas
*
canvas
=
instance
->
beginRecording
(
SkRect
::
MakeLTRB
(
left
,
top
,
right
,
bottom
),
nullptr
);
SkBBHFactory
*
factory
=
reinterpret_cast
<
SkBBHFactory
*>
(
static_cast
<
uintptr_t
>
(
bbh
));
SkCanvas
*
canvas
=
instance
->
beginRecording
(
SkRect
::
MakeLTRB
(
left
,
top
,
right
,
bottom
),
factory
);
return
reinterpret_cast
<
jlong
>
(
canvas
);
return
reinterpret_cast
<
jlong
>
(
canvas
);
}
}
...
...
skiko/src/nativeJsMain/cpp/BBHFactory.cc
0 → 100644
View file @
574e3eee
#include "common.h"
#include "SkBBHFactory.h"
static
void
deleteSkBBHFactory
(
SkBBHFactory
*
bbh
)
{
delete
bbh
;
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_RTreeFactory__1nMake
()
{
SkRTreeFactory
*
instance
=
new
SkRTreeFactory
();
return
reinterpret_cast
<
KNativePointer
>
(
instance
);
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_BBHFactory__1nGetFinalizer
()
{
return
reinterpret_cast
<
KNativePointer
>
((
&
deleteSkBBHFactory
));
}
skiko/src/nativeJsMain/cpp/PictureRecorder.cc
View file @
574e3eee
...
@@ -20,9 +20,10 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PictureRecorder__1nGetFinalizer
...
@@ -20,9 +20,10 @@ SKIKO_EXPORT KNativePointer org_jetbrains_skia_PictureRecorder__1nGetFinalizer
}
}
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureRecorder__1nBeginRecording
SKIKO_EXPORT
KNativePointer
org_jetbrains_skia_PictureRecorder__1nBeginRecording
(
KNativePointer
ptr
,
KFloat
left
,
KFloat
top
,
KFloat
right
,
KFloat
bottom
)
{
(
KNativePointer
ptr
,
KFloat
left
,
KFloat
top
,
KFloat
right
,
KFloat
bottom
,
KNativePointer
bbh
)
{
SkPictureRecorder
*
instance
=
reinterpret_cast
<
SkPictureRecorder
*>
((
ptr
));
SkPictureRecorder
*
instance
=
reinterpret_cast
<
SkPictureRecorder
*>
((
ptr
));
SkCanvas
*
canvas
=
instance
->
beginRecording
(
SkRect
::
MakeLTRB
(
left
,
top
,
right
,
bottom
),
nullptr
);
SkBBHFactory
*
factory
=
reinterpret_cast
<
SkBBHFactory
*>
(
bbh
);
SkCanvas
*
canvas
=
instance
->
beginRecording
(
SkRect
::
MakeLTRB
(
left
,
top
,
right
,
bottom
),
factory
);
return
reinterpret_cast
<
KNativePointer
>
(
canvas
);
return
reinterpret_cast
<
KNativePointer
>
(
canvas
);
}
}
...
...
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