Unverified Commit 2295bace authored by igoriakovlev's avatar igoriakovlev Committed by GitHub

Fix invalid bindings (#638)

parent 922f1ec1
...@@ -204,7 +204,7 @@ class Bitmap internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerH ...@@ -204,7 +204,7 @@ class Bitmap internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerH
* *
* @return size in bytes of image buffer * @return size in bytes of image buffer
*/ */
fun computeByteSize(): NativePointer { fun computeByteSize(): Int {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nComputeByteSize(_ptr) _nComputeByteSize(_ptr)
...@@ -1083,7 +1083,7 @@ private external fun _nGetRowBytes(ptr: NativePointer): Int ...@@ -1083,7 +1083,7 @@ private external fun _nGetRowBytes(ptr: NativePointer): Int
private external fun _nSetAlphaType(ptr: NativePointer, alphaType: Int): Boolean private external fun _nSetAlphaType(ptr: NativePointer, alphaType: Int): Boolean
@ExternalSymbolName("org_jetbrains_skia_Bitmap__1nComputeByteSize") @ExternalSymbolName("org_jetbrains_skia_Bitmap__1nComputeByteSize")
private external fun _nComputeByteSize(ptr: NativePointer): NativePointer private external fun _nComputeByteSize(ptr: NativePointer): Int
@ExternalSymbolName("org_jetbrains_skia_Bitmap__1nIsImmutable") @ExternalSymbolName("org_jetbrains_skia_Bitmap__1nIsImmutable")
private external fun _nIsImmutable(ptr: NativePointer): Boolean private external fun _nIsImmutable(ptr: NativePointer): Boolean
......
package org.jetbrains.skia package org.jetbrains.skia
import org.jetbrains.skia.impl.InteropPointer import org.jetbrains.skia.impl.*
import org.jetbrains.skia.impl.InteropScope import org.jetbrains.skia.impl.InteropScope
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.Native.Companion.NullPointer import org.jetbrains.skia.impl.Native.Companion.NullPointer
import org.jetbrains.skia.impl.NativePointer
import org.jetbrains.skia.impl.Stats
import org.jetbrains.skia.impl.interopScope import org.jetbrains.skia.impl.interopScope
import org.jetbrains.skia.impl.reachabilityBarrier import org.jetbrains.skia.impl.reachabilityBarrier
import org.jetbrains.skia.impl.withResult
/** /**
* *
...@@ -496,7 +494,10 @@ class BreakIterator internal constructor(ptr: NativePointer) : Managed(ptr, _Fin ...@@ -496,7 +494,10 @@ class BreakIterator internal constructor(ptr: NativePointer) : Managed(ptr, _Fin
val ruleStatuses: IntArray val ruleStatuses: IntArray
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetRuleStatuses(_ptr) val arrayLen = _nGetRuleStatusesLen(_ptr)
withResult(IntArray(arrayLen)) { result ->
_nGetRuleStatuses(_ptr, result, arrayLen)
}
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
...@@ -579,8 +580,11 @@ private external fun _nIsBoundary(ptr: NativePointer, offset: Int): Boolean ...@@ -579,8 +580,11 @@ private external fun _nIsBoundary(ptr: NativePointer, offset: Int): Boolean
@ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nGetRuleStatus") @ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nGetRuleStatus")
private external fun _nGetRuleStatus(ptr: NativePointer): Int private external fun _nGetRuleStatus(ptr: NativePointer): Int
@ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nGetRuleStatusesLen")
private external fun _nGetRuleStatusesLen(ptr: NativePointer): Int
@ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nGetRuleStatuses") @ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nGetRuleStatuses")
private external fun _nGetRuleStatuses(ptr: NativePointer): IntArray private external fun _nGetRuleStatuses(ptr: NativePointer, result: InteropPointer, len: Int)
@ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nSetText") @ExternalSymbolName("org_jetbrains_skia_BreakIterator__1nSetText")
private external fun _nSetText(ptr: NativePointer, textStr: InteropPointer, len: Int, errorCode: InteropPointer): NativePointer private external fun _nSetText(ptr: NativePointer, textStr: InteropPointer, len: Int, errorCode: InteropPointer): NativePointer
\ No newline at end of file
...@@ -57,7 +57,7 @@ class Codec internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerHo ...@@ -57,7 +57,7 @@ class Codec internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerHo
val size: IPoint val size: IPoint
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
toIPoint(_nGetSize(_ptr)) IPoint(_nGetSizeWidth(_ptr), _nGetSizeHeight(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
...@@ -372,8 +372,11 @@ private external fun Codec_nReadPixels(ptr: NativePointer, bitmapPtr: NativePoin ...@@ -372,8 +372,11 @@ private external fun Codec_nReadPixels(ptr: NativePointer, bitmapPtr: NativePoin
@ExternalSymbolName("org_jetbrains_skia_Codec__1nMakeFromData") @ExternalSymbolName("org_jetbrains_skia_Codec__1nMakeFromData")
private external fun _nMakeFromData(dataPtr: NativePointer): NativePointer private external fun _nMakeFromData(dataPtr: NativePointer): NativePointer
@ExternalSymbolName("org_jetbrains_skia_Codec__1nGetSize") @ExternalSymbolName("org_jetbrains_skia_Codec__1nGetSizeWidth")
private external fun _nGetSize(ptr: NativePointer): Long private external fun _nGetSizeWidth(ptr: NativePointer): Int
@ExternalSymbolName("org_jetbrains_skia_Codec__1nGetSizeHeight")
private external fun _nGetSizeHeight(ptr: NativePointer): Int
@ExternalSymbolName("org_jetbrains_skia_Codec__1nGetEncodedOrigin") @ExternalSymbolName("org_jetbrains_skia_Codec__1nGetEncodedOrigin")
private external fun _nGetEncodedOrigin(ptr: NativePointer): Int private external fun _nGetEncodedOrigin(ptr: NativePointer): Int
......
...@@ -45,4 +45,4 @@ class TypefaceFontProvider : FontMgr(TypefaceFontProvider_nMake()) { ...@@ -45,4 +45,4 @@ class TypefaceFontProvider : FontMgr(TypefaceFontProvider_nMake()) {
private external fun TypefaceFontProvider_nMake(): NativePointer private external fun TypefaceFontProvider_nMake(): NativePointer
@ExternalSymbolName("org_jetbrains_skia_paragraph_TypefaceFontProvider__1nRegisterTypeface") @ExternalSymbolName("org_jetbrains_skia_paragraph_TypefaceFontProvider__1nRegisterTypeface")
private external fun _nRegisterTypeface(ptr: NativePointer, typefacePtr: NativePointer, alias: InteropPointer): NativePointer private external fun _nRegisterTypeface(ptr: NativePointer, typefacePtr: NativePointer, alias: InteropPointer)
...@@ -40,6 +40,8 @@ class BitmapTest { ...@@ -40,6 +40,8 @@ class BitmapTest {
assertFalse(bitmap.isNull) assertFalse(bitmap.isNull)
assertTrue(bitmap.isReadyToDraw) assertTrue(bitmap.isReadyToDraw)
assertEquals(84, bitmap.computeByteSize())
bitmap.generationId bitmap.generationId
} }
......
...@@ -66,4 +66,13 @@ class BreakIteratorTests { ...@@ -66,4 +66,13 @@ class BreakIteratorTests {
assertContentEquals(listOf(167, 287), boundary.asSequence().toList()) assertContentEquals(listOf(167, 287), boundary.asSequence().toList())
} }
@Test
fun breakRuleStatusesTest() {
val boundary = BreakIterator.makeWordInstance()
boundary.setText("Hello world!")
boundary.next()
assertEquals(boundary.ruleStatus, 200)
assertContentEquals(listOf(200), boundary.ruleStatuses.toList())
}
} }
\ No newline at end of file
...@@ -15,6 +15,8 @@ class CodecTest { ...@@ -15,6 +15,8 @@ class CodecTest {
assertEquals(1, codec.frameCount) assertEquals(1, codec.frameCount)
assertEquals(8, codec.imageInfo.width) assertEquals(8, codec.imageInfo.width)
assertEquals(8, codec.imageInfo.height) assertEquals(8, codec.imageInfo.height)
assertEquals(8, codec.size.x)
assertEquals(8, codec.size.y)
assertEquals(EncodedImageFormat.PNG, codec.encodedImageFormat) assertEquals(EncodedImageFormat.PNG, codec.encodedImageFormat)
val pixels = codec.readPixels() val pixels = codec.readPixels()
...@@ -27,6 +29,8 @@ class CodecTest { ...@@ -27,6 +29,8 @@ class CodecTest {
assertEquals(5, codec.frameCount) assertEquals(5, codec.frameCount)
assertEquals(8, codec.imageInfo.width) assertEquals(8, codec.imageInfo.width)
assertEquals(8, codec.imageInfo.height) assertEquals(8, codec.imageInfo.height)
assertEquals(8, codec.size.x)
assertEquals(8, codec.size.y)
assertEquals(EncodedImageFormat.GIF, codec.encodedImageFormat) assertEquals(EncodedImageFormat.GIF, codec.encodedImageFormat)
val palette = intArrayOf(Color.BLACK, Color.RED, Color.GREEN, Color.BLUE, Color.WHITE) val palette = intArrayOf(Color.BLACK, Color.RED, Color.GREEN, Color.BLUE, Color.WHITE)
......
...@@ -95,18 +95,25 @@ extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nGet ...@@ -95,18 +95,25 @@ extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nGet
return ubrk_getRuleStatus(instance); return ubrk_getRuleStatus(instance);
} }
extern "C" JNIEXPORT jintArray JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nGetRuleStatuses extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nGetRuleStatusesLen
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(static_cast<uintptr_t>(ptr)); UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(static_cast<uintptr_t>(ptr));
UErrorCode status = U_ZERO_ERROR; UErrorCode status = U_ZERO_ERROR;
int32_t len = ubrk_getRuleStatusVec(instance, nullptr, 0, &status); int32_t len = ubrk_getRuleStatusVec(instance, nullptr, 0, &status);
if (U_FAILURE(status)) if (status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(status))
env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status)); env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status));
std::vector<jint> vec(len); return len;
ubrk_getRuleStatusVec(instance, reinterpret_cast<int32_t*>(vec.data()), len, &status); }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nGetRuleStatuses
(JNIEnv* env, jclass jclass, jlong ptr, jintArray result, jint len) {
UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(static_cast<uintptr_t>(ptr));
UErrorCode status = U_ZERO_ERROR;
std::vector<jint> statuses(len);
ubrk_getRuleStatusVec(instance, reinterpret_cast<int32_t*>(statuses.data()), len, &status);
if (U_FAILURE(status)) if (U_FAILURE(status))
env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status)); env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status));
return javaIntArray(env, vec); env->SetIntArrayRegion(result, 0, len, statuses.data());
} }
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nSetText extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_BreakIteratorKt__1nSetText
......
...@@ -27,10 +27,16 @@ extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_CodecKt_Codec_1nGetIma ...@@ -27,10 +27,16 @@ extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_CodecKt_Codec_1nGetIma
skija::ImageInfo::writeImageInfoForInterop(env, imageInfo, imageInfoResult, colorSpaceResultPtr); skija::ImageInfo::writeImageInfoForInterop(env, imageInfo, imageInfoResult, colorSpaceResultPtr);
} }
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_CodecKt__1nGetSize extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_CodecKt__1nGetSizeWidth
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkCodec* instance = reinterpret_cast<SkCodec*>(static_cast<uintptr_t>(ptr)); SkCodec* instance = reinterpret_cast<SkCodec*>(static_cast<uintptr_t>(ptr));
return packISize(instance->dimensions()); return instance->dimensions().fWidth;
}
extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_CodecKt__1nGetSizeHeight
(JNIEnv* env, jclass jclass, jlong ptr) {
SkCodec* instance = reinterpret_cast<SkCodec*>(static_cast<uintptr_t>(ptr));
return instance->dimensions().fHeight;
} }
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_CodecKt__1nGetEncodedOrigin extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_CodecKt__1nGetEncodedOrigin
......
...@@ -98,23 +98,22 @@ SKIKO_EXPORT KInt org_jetbrains_skia_BreakIterator__1nGetRuleStatus ...@@ -98,23 +98,22 @@ SKIKO_EXPORT KInt org_jetbrains_skia_BreakIterator__1nGetRuleStatus
} }
SKIKO_EXPORT KInt org_jetbrains_skia_BreakIterator__1nGetRuleStatusesLen
#if 0
SKIKO_EXPORT KInt* org_jetbrains_skia_BreakIterator__1nGetRuleStatuses
(KNativePointer ptr) { (KNativePointer ptr) {
UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(ptr); UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(ptr);
UErrorCode status = U_ZERO_ERROR; UErrorCode status = U_ZERO_ERROR;
int32_t len = ubrk_getRuleStatusVec(instance, nullptr, 0, &status); int32_t len = ubrk_getRuleStatusVec(instance, nullptr, 0, &status);
if (U_FAILURE(status)) SKIKO_ASSERT(status == U_BUFFER_OVERFLOW_ERROR || !U_FAILURE(status), "Failed to get rule statuses");
env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status)); return len;
std::vector<KInt> vec(len);
ubrk_getRuleStatusVec(instance, reinterpret_cast<int32_t*>(vec.data()), len, &status);
if (U_FAILURE(status))
env->ThrowNew(java::lang::RuntimeException::cls, u_errorName(status));
return javaIntArray(env, vec);
} }
#endif
SKIKO_EXPORT void org_jetbrains_skia_BreakIterator__1nGetRuleStatuses
(KNativePointer ptr, KInteropPointer result, KInt len) {
UBreakIterator* instance = reinterpret_cast<UBreakIterator*>(ptr);
UErrorCode status = U_ZERO_ERROR;
ubrk_getRuleStatusVec(instance, reinterpret_cast<int32_t*>(result), len, &status);
SKIKO_ASSERT(!U_FAILURE(status), "Failed to get rule statuses");
}
SKIKO_EXPORT KNativePointer org_jetbrains_skia_BreakIterator__1nSetText SKIKO_EXPORT KNativePointer org_jetbrains_skia_BreakIterator__1nSetText
(KNativePointer ptr, KChar* textArr, KInt len, KInt* errorCode) { (KNativePointer ptr, KChar* textArr, KInt len, KInt* errorCode) {
......
...@@ -26,10 +26,16 @@ SKIKO_EXPORT void org_jetbrains_skia_Codec__1nGetImageInfo ...@@ -26,10 +26,16 @@ SKIKO_EXPORT void org_jetbrains_skia_Codec__1nGetImageInfo
skija::ImageInfo::writeImageInfoForInterop(imageInfo, imageInfoResult, colorSpacePtrsArray); skija::ImageInfo::writeImageInfoForInterop(imageInfo, imageInfoResult, colorSpacePtrsArray);
} }
SKIKO_EXPORT KInt org_jetbrains_skia_Codec__1nGetSize SKIKO_EXPORT KInt org_jetbrains_skia_Codec__1nGetSizeWidth
(KNativePointer ptr) { (KNativePointer ptr) {
SkCodec* instance = reinterpret_cast<SkCodec*>((ptr)); SkCodec* instance = reinterpret_cast<SkCodec*>((ptr));
return packISize(instance->dimensions()); return instance->dimensions().fWidth;
}
SKIKO_EXPORT KInt org_jetbrains_skia_Codec__1nGetSizeHeight
(KNativePointer ptr) {
SkCodec* instance = reinterpret_cast<SkCodec*>((ptr));
return instance->dimensions().fHeight;
} }
SKIKO_EXPORT KInt org_jetbrains_skia_Codec__1nGetEncodedOrigin SKIKO_EXPORT KInt org_jetbrains_skia_Codec__1nGetEncodedOrigin
......
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