Unverified Commit fae467c2 authored by Shagen Ogandzhanian's avatar Shagen Ogandzhanian Committed by GitHub

Commonize StrutStyle::fontFamilies and StrutStyle::setFontFamilies (#396)

* Introdcue test for StrutStyle getFamilyNames

* Commonize StrutStyle::familiyNames, setFontFamilyNames
parent 730daee3
...@@ -10,7 +10,9 @@ import org.jetbrains.skia.ExternalSymbolName ...@@ -10,7 +10,9 @@ import org.jetbrains.skia.ExternalSymbolName
import org.jetbrains.skia.impl.InteropPointer import org.jetbrains.skia.impl.InteropPointer
import org.jetbrains.skia.impl.NativePointer import org.jetbrains.skia.impl.NativePointer
import org.jetbrains.skia.impl.getPtr import org.jetbrains.skia.impl.getPtr
import org.jetbrains.skia.impl.interopScope
import org.jetbrains.skia.impl.withResult import org.jetbrains.skia.impl.withResult
import org.jetbrains.skia.impl.withStringResult
class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerHolder.PTR) { class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerHolder.PTR) {
companion object { companion object {
...@@ -36,14 +38,18 @@ class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _Finali ...@@ -36,14 +38,18 @@ class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _Finali
val fontFamilies: Array<String> val fontFamilies: Array<String>
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetFontFamilies(_ptr) arrayDecoderScope({ArrayDecoder(_nGetFontFamilies(_ptr), ManagedString_nGetFinalizer())}) { arrayDecoder ->
(0 until arrayDecoder.size).map { i -> withStringResult(arrayDecoder.release(i)) }.toTypedArray()
}
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
fun setFontFamilies(families: Array<String?>?): StrutStyle { fun setFontFamilies(families: Array<String>): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
_nSetFontFamilies(_ptr, families) interopScope {
StrutStyle_nSetFontFamilies(_ptr, toInterop(families), families.size)
}
return this return this
} }
...@@ -194,10 +200,10 @@ private external fun StrutStyle_nSetHeight(ptr: NativePointer, value: Float) ...@@ -194,10 +200,10 @@ private external fun StrutStyle_nSetHeight(ptr: NativePointer, value: Float)
private external fun StrutStyle_nSetEnabled(ptr: NativePointer, value: Boolean) private external fun StrutStyle_nSetEnabled(ptr: NativePointer, value: Boolean)
@ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies") @ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies")
private external fun _nGetFontFamilies(ptr: NativePointer): Array<String> private external fun _nGetFontFamilies(ptr: NativePointer): NativePointer
@ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies") @ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies")
private external fun _nSetFontFamilies(ptr: NativePointer, families: Array<String?>?) private external fun StrutStyle_nSetFontFamilies(ptr: NativePointer, families: InteropPointer, familiesCount: Int)
@ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nGetFontStyle") @ExternalSymbolName("org_jetbrains_skia_paragraph_StrutStyle__1nGetFontStyle")
private external fun _nGetFontStyle(ptr: NativePointer, fontStyleData: InteropPointer): Int private external fun _nGetFontStyle(ptr: NativePointer, fontStyleData: InteropPointer): Int
......
...@@ -3,6 +3,7 @@ package org.jetbrains.skia ...@@ -3,6 +3,7 @@ package org.jetbrains.skia
import org.jetbrains.skia.impl.use import org.jetbrains.skia.impl.use
import org.jetbrains.skia.paragraph.StrutStyle import org.jetbrains.skia.paragraph.StrutStyle
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertEquals import kotlin.test.assertEquals
...@@ -16,6 +17,10 @@ class StrutStyleTests { ...@@ -16,6 +17,10 @@ class StrutStyleTests {
strutStyle.fontStyle = FontStyle(300, 4, FontSlant.ITALIC) strutStyle.fontStyle = FontStyle(300, 4, FontSlant.ITALIC)
assertEquals(FontStyle(300, 4, FontSlant.ITALIC), strutStyle.fontStyle) assertEquals(FontStyle(300, 4, FontSlant.ITALIC), strutStyle.fontStyle)
strutStyle.setFontFamilies(arrayOf("MonacoShmonaco"))
assertContentEquals(arrayOf("MonacoShmonaco"), strutStyle.fontFamilies)
} }
} }
} }
\ No newline at end of file
...@@ -30,14 +30,20 @@ extern "C" JNIEXPORT jboolean JNICALL Java_org_jetbrains_skia_paragraph_StrutSty ...@@ -30,14 +30,20 @@ extern "C" JNIEXPORT jboolean JNICALL Java_org_jetbrains_skia_paragraph_StrutSty
return *instance == *other; return *instance == *other;
} }
extern "C" JNIEXPORT jobjectArray JNICALL Java_org_jetbrains_skia_paragraph_StrutStyleKt__1nGetFontFamilies extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_paragraph_StrutStyleKt__1nGetFontFamilies
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>(static_cast<uintptr_t>(ptr)); StrutStyle* instance = reinterpret_cast<StrutStyle*>(static_cast<uintptr_t>(ptr));
return javaStringArray(env, instance->getFontFamilies());
std::vector<jlong>* res = new std::vector<jlong>();
for (auto& fontFamily : instance->getFontFamilies()) {
res->push_back(reinterpret_cast<jlong>(new SkString(fontFamily)));
}
return reinterpret_cast<jlong>(res);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_StrutStyleKt__1nSetFontFamilies extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_StrutStyleKt_StrutStyle_1nSetFontFamilies
(JNIEnv* env, jclass jclass, jlong ptr, jobjectArray familiesArr) { (JNIEnv* env, jclass jclass, jlong ptr, jobjectArray familiesArr, jint familiesCount) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>(static_cast<uintptr_t>(ptr)); StrutStyle* instance = reinterpret_cast<StrutStyle*>(static_cast<uintptr_t>(ptr));
instance->setFontFamilies(skStringVector(env, familiesArr)); instance->setFontFamilies(skStringVector(env, familiesArr));
} }
......
...@@ -31,35 +31,24 @@ SKIKO_EXPORT KBoolean org_jetbrains_skia_paragraph_StrutStyle__1nEquals ...@@ -31,35 +31,24 @@ SKIKO_EXPORT KBoolean org_jetbrains_skia_paragraph_StrutStyle__1nEquals
} }
SKIKO_EXPORT KInteropPointerArray org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies SKIKO_EXPORT KNativePointer org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies
(KNativePointer ptr) { (KNativePointer ptr) {
TODO("implement org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies"); StrutStyle* instance = reinterpret_cast<StrutStyle*>(ptr);
}
#if 0
SKIKO_EXPORT KInteropPointerArray org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies
(KNativePointer ptr) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>((ptr));
return javaStringArray(env, instance->getFontFamilies());
}
#endif
std::vector<KNativePointer>* res = new std::vector<KNativePointer>();
for (auto& fontFamily : instance->getFontFamilies()) {
res->push_back(reinterpret_cast<KNativePointer>(new SkString(fontFamily)));
}
SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies return reinterpret_cast<KNativePointer>(res);
(KNativePointer ptr, KInteropPointerArray familiesArr) {
TODO("implement org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies");
} }
#if 0
SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies
(KNativePointer ptr, KInteropPointerArray familiesArr) { (KNativePointer ptr, KInteropPointerArray familiesArr, KInt familiesCount) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>(ptr); StrutStyle* instance = reinterpret_cast<StrutStyle*>(ptr);
instance->setFontFamilies(skStringVector(env, familiesArr)); instance->setFontFamilies(skStringVector(familiesArr, familiesCount));
} }
#endif
SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nGetFontStyle SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nGetFontStyle
(KNativePointer ptr, KInt* fontStyleData) { (KNativePointer ptr, KInt* fontStyleData) {
......
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