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
import org.jetbrains.skia.impl.InteropPointer
import org.jetbrains.skia.impl.NativePointer
import org.jetbrains.skia.impl.getPtr
import org.jetbrains.skia.impl.interopScope
import org.jetbrains.skia.impl.withResult
import org.jetbrains.skia.impl.withStringResult
class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _FinalizerHolder.PTR) {
companion object {
......@@ -36,14 +38,18 @@ class StrutStyle internal constructor(ptr: NativePointer) : Managed(ptr, _Finali
val fontFamilies: Array<String>
get() = try {
Stats.onNativeCall()
_nGetFontFamilies(_ptr)
arrayDecoderScope({ArrayDecoder(_nGetFontFamilies(_ptr), ManagedString_nGetFinalizer())}) { arrayDecoder ->
(0 until arrayDecoder.size).map { i -> withStringResult(arrayDecoder.release(i)) }.toTypedArray()
}
} finally {
reachabilityBarrier(this)
}
fun setFontFamilies(families: Array<String?>?): StrutStyle {
fun setFontFamilies(families: Array<String>): StrutStyle {
Stats.onNativeCall()
_nSetFontFamilies(_ptr, families)
interopScope {
StrutStyle_nSetFontFamilies(_ptr, toInterop(families), families.size)
}
return this
}
......@@ -194,10 +200,10 @@ private external fun StrutStyle_nSetHeight(ptr: NativePointer, value: Float)
private external fun StrutStyle_nSetEnabled(ptr: NativePointer, value: Boolean)
@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")
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")
private external fun _nGetFontStyle(ptr: NativePointer, fontStyleData: InteropPointer): Int
......
......@@ -3,6 +3,7 @@ package org.jetbrains.skia
import org.jetbrains.skia.impl.use
import org.jetbrains.skia.paragraph.StrutStyle
import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertEquals
......@@ -16,6 +17,10 @@ class StrutStyleTests {
strutStyle.fontStyle = FontStyle(300, 4, FontSlant.ITALIC)
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
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) {
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
(JNIEnv* env, jclass jclass, jlong ptr, jobjectArray familiesArr) {
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_StrutStyleKt_StrutStyle_1nSetFontFamilies
(JNIEnv* env, jclass jclass, jlong ptr, jobjectArray familiesArr, jint familiesCount) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>(static_cast<uintptr_t>(ptr));
instance->setFontFamilies(skStringVector(env, familiesArr));
}
......
......@@ -31,36 +31,25 @@ 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) {
TODO("implement org_jetbrains_skia_paragraph_StrutStyle__1nGetFontFamilies");
}
#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
StrutStyle* instance = reinterpret_cast<StrutStyle*>(ptr);
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
(KNativePointer ptr, KInteropPointerArray familiesArr) {
TODO("implement org_jetbrains_skia_paragraph_StrutStyle__1nSetFontFamilies");
return reinterpret_cast<KNativePointer>(res);
}
#if 0
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);
instance->setFontFamilies(skStringVector(env, familiesArr));
instance->setFontFamilies(skStringVector(familiesArr, familiesCount));
}
#endif
SKIKO_EXPORT void org_jetbrains_skia_paragraph_StrutStyle__1nGetFontStyle
(KNativePointer ptr, KInt* fontStyleData) {
StrutStyle* instance = reinterpret_cast<StrutStyle*>(ptr);
......
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