Unverified Commit 111d7f30 authored by Shagen Ogandzhanian's avatar Shagen Ogandzhanian Committed by GitHub

Don't confuse Array<NativePointer> actual implementations with LongArray and IntArray (#179)

Co-authored-by: 's avatarIgor Demin <igordmn@gmail.com>
parent 8b58b170
...@@ -8,6 +8,7 @@ import org.jetbrains.skia.impl.Stats ...@@ -8,6 +8,7 @@ import org.jetbrains.skia.impl.Stats
import org.jetbrains.skia.impl.reachabilityBarrier 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.NativePointer
import org.jetbrains.skia.impl.NativePointerArray
import org.jetbrains.skia.impl.getPtr import org.jetbrains.skia.impl.getPtr
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
...@@ -318,7 +319,8 @@ class ImageFilter internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -318,7 +319,8 @@ class ImageFilter internal constructor(ptr: NativePointer) : RefCnt(ptr) {
fun makeMerge(filters: Array<ImageFilter?>, crop: IRect?): ImageFilter { fun makeMerge(filters: Array<ImageFilter?>, crop: IRect?): ImageFilter {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
val filterPtrs = filters.map { getPtr(it) }.toTypedArray() val filterPtrs = NativePointerArray(filters.size)
for (i in filters.indices) filterPtrs[i] = getPtr(filters[i])
ImageFilter(_nMakeMerge(filterPtrs, crop)) ImageFilter(_nMakeMerge(filterPtrs, crop))
} finally { } finally {
reachabilityBarrier(filters) reachabilityBarrier(filters)
...@@ -727,7 +729,7 @@ class ImageFilter internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -727,7 +729,7 @@ class ImageFilter internal constructor(ptr: NativePointer) : RefCnt(ptr) {
external fun _nMakeMatrixTransform(matrix: FloatArray?, samplingMode: Long, input: NativePointer): NativePointer external fun _nMakeMatrixTransform(matrix: FloatArray?, samplingMode: Long, input: NativePointer): NativePointer
@JvmStatic @JvmStatic
@ExternalSymbolName("org_jetbrains_skia_ImageFilter__1nMakeMerge") @ExternalSymbolName("org_jetbrains_skia_ImageFilter__1nMakeMerge")
external fun _nMakeMerge(filters: Array<NativePointer>?, crop: IRect?): NativePointer external fun _nMakeMerge(filters: NativePointerArray?, crop: IRect?): NativePointer
@JvmStatic @JvmStatic
@ExternalSymbolName("org_jetbrains_skia_ImageFilter__1nMakeOffset") @ExternalSymbolName("org_jetbrains_skia_ImageFilter__1nMakeOffset")
external fun _nMakeOffset(dx: Float, dy: Float, input: NativePointer, crop: IRect?): NativePointer external fun _nMakeOffset(dx: Float, dy: Float, input: NativePointer, crop: IRect?): NativePointer
......
...@@ -7,6 +7,7 @@ import org.jetbrains.skia.impl.Native ...@@ -7,6 +7,7 @@ import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import org.jetbrains.skia.ExternalSymbolName import org.jetbrains.skia.ExternalSymbolName
import org.jetbrains.skia.impl.NativePointer import org.jetbrains.skia.impl.NativePointer
import org.jetbrains.skia.impl.NativePointerArray
import org.jetbrains.skia.impl.getPtr import org.jetbrains.skia.impl.getPtr
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
...@@ -25,7 +26,7 @@ class RuntimeEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -25,7 +26,7 @@ class RuntimeEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
@JvmStatic @JvmStatic
@ExternalSymbolName("org_jetbrains_skia_RuntimeEffect__1nMakeShader") @ExternalSymbolName("org_jetbrains_skia_RuntimeEffect__1nMakeShader")
external fun _nMakeShader( external fun _nMakeShader(
runtimeEffectPtr: NativePointer, uniformPtr: NativePointer, childrenPtrs: Array<NativePointer>?, runtimeEffectPtr: NativePointer, uniformPtr: NativePointer, childrenPtrs: NativePointerArray?,
localMatrix: FloatArray?, isOpaque: Boolean localMatrix: FloatArray?, isOpaque: Boolean
): NativePointer ): NativePointer
...@@ -47,7 +48,7 @@ class RuntimeEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -47,7 +48,7 @@ class RuntimeEffect internal constructor(ptr: NativePointer) : RefCnt(ptr) {
): Shader { ): Shader {
Stats.onNativeCall() Stats.onNativeCall()
val childCount = children?.size ?: 0 val childCount = children?.size ?: 0
val childrenPtrs = arrayOf<NativePointer>() val childrenPtrs = NativePointerArray(childCount)
for (i in 0 until childCount) childrenPtrs[i] = getPtr(children!![i]) for (i in 0 until childCount) childrenPtrs[i] = getPtr(children!![i])
val matrix = localMatrix?.mat val matrix = localMatrix?.mat
return Shader(_nMakeShader(_ptr, getPtr(uniforms), childrenPtrs, matrix, isOpaque)) return Shader(_nMakeShader(_ptr, getPtr(uniforms), childrenPtrs, matrix, isOpaque))
......
package org.jetbrains.skia.impl
expect class NativePointerArray constructor(size: Int) {
operator fun get(index: Int): NativePointer
operator fun set(index: Int, value: NativePointer)
val size: Int
}
...@@ -8,6 +8,7 @@ import org.jetbrains.skia.impl.Stats ...@@ -8,6 +8,7 @@ import org.jetbrains.skia.impl.Stats
import org.jetbrains.skia.impl.reachabilityBarrier 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.NativePointer
import org.jetbrains.skia.impl.NativePointerArray
import org.jetbrains.skia.impl.getPtr import org.jetbrains.skia.impl.getPtr
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
...@@ -36,7 +37,7 @@ class FontCollection internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -36,7 +37,7 @@ class FontCollection internal constructor(ptr: NativePointer) : RefCnt(ptr) {
external fun _nGetFallbackManager(ptr: NativePointer): NativePointer external fun _nGetFallbackManager(ptr: NativePointer): NativePointer
@JvmStatic @JvmStatic
@ExternalSymbolName("org_jetbrains_skia_FontCollection__1nFindTypefaces") @ExternalSymbolName("org_jetbrains_skia_FontCollection__1nFindTypefaces")
external fun _nFindTypefaces(ptr: NativePointer, familyNames: Array<String?>?, fontStyle: Int): Array<NativePointer> external fun _nFindTypefaces(ptr: NativePointer, familyNames: Array<String?>?, fontStyle: Int): NativePointerArray
@JvmStatic @JvmStatic
@ExternalSymbolName("org_jetbrains_skia_FontCollection__1nDefaultFallbackChar") @ExternalSymbolName("org_jetbrains_skia_FontCollection__1nDefaultFallbackChar")
external fun _nDefaultFallbackChar(ptr: NativePointer, unicode: Int, fontStyle: Int, locale: String?): NativePointer external fun _nDefaultFallbackChar(ptr: NativePointer, unicode: Int, fontStyle: Int, locale: String?): NativePointer
...@@ -132,7 +133,7 @@ class FontCollection internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -132,7 +133,7 @@ class FontCollection internal constructor(ptr: NativePointer) : RefCnt(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
val ptrs = _nFindTypefaces(_ptr, familyNames, style._value) val ptrs = _nFindTypefaces(_ptr, familyNames, style._value)
val res = arrayOfNulls<Typeface>(ptrs.size) val res = arrayOfNulls<Typeface>(ptrs.size)
for (i in ptrs.indices) res[i] = Typeface(ptrs[i]) for (i in 0 until ptrs.size) res[i] = Typeface(ptrs[i])
res res
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
......
package org.jetbrains.skia.impl
actual typealias NativePointerArray = IntArray
\ No newline at end of file
package org.jetbrains.skia.impl
actual typealias NativePointerArray = LongArray
\ No newline at end of file
package org.jetbrains.skiko
import org.jetbrains.skia.FontMgr
import org.jetbrains.skia.FontStyle
import org.jetbrains.skia.impl.NativePointer
import org.jetbrains.skia.paragraph.FontCollection
import org.junit.Test
class ParagraphTest {
@Test
fun findTypefaces() {
val fontCollection = FontCollection().setDefaultFontManager(FontMgr.default)
fontCollection.findTypefaces(emptyArray(), FontStyle.NORMAL)
}
}
\ No newline at end of file
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