Unverified Commit 0428658f authored by Shagen Ogandzhanian's avatar Shagen Ogandzhanian Committed by GitHub

Commonize ParagraphStyle::ellipsis (#406)

parent 56ac3e85
......@@ -6,8 +6,11 @@ import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats
import org.jetbrains.skia.impl.reachabilityBarrier
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.withStringResult
class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) {
companion object {
......@@ -99,16 +102,19 @@ class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) {
reachabilityBarrier(this)
}
var ellipsis: String
var ellipsis: String?
get() = try {
Stats.onNativeCall()
_nGetEllipsis(_ptr)
val ellipsis = _nGetEllipsis(_ptr)
if (ellipsis == NullPointer) null else withStringResult { ellipsis }
} finally {
reachabilityBarrier(this)
}
set(value) = try {
Stats.onNativeCall()
_nSetEllipsis(_ptr, value)
interopScope {
_nSetEllipsis(_ptr, toInterop(value))
}
} finally {
reachabilityBarrier(this)
}
......@@ -216,10 +222,10 @@ private external fun _nGetMaxLinesCount(ptr: NativePointer): Int
private external fun _nSetMaxLinesCount(ptr: NativePointer, maxLines: Int)
@ExternalSymbolName("org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis")
private external fun _nGetEllipsis(ptr: NativePointer): String
private external fun _nGetEllipsis(ptr: NativePointer): NativePointer
@ExternalSymbolName("org_jetbrains_skia_paragraph_ParagraphStyle__1nSetEllipsis")
private external fun _nSetEllipsis(ptr: NativePointer, ellipsis: String?)
private external fun _nSetEllipsis(ptr: NativePointer, ellipsis: InteropPointer)
@ExternalSymbolName("org_jetbrains_skia_paragraph_ParagraphStyle__1nSetHeight")
private external fun _nSetHeight(ptr: NativePointer, height: Float)
......
package org.jetbrains.skiko.paragraph
import org.jetbrains.skia.impl.use
import org.jetbrains.skia.paragraph.ParagraphStyle
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull
class ParagraphStyleTests {
@Test
fun paragraphStyleEllipsisTests() {
ParagraphStyle().use { paragraphStyle ->
assertNull(paragraphStyle.ellipsis)
paragraphStyle.ellipsis = ".^."
assertEquals(".^.", paragraphStyle.ellipsis)
}
}
}
\ No newline at end of file
......@@ -95,10 +95,10 @@ extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_ParagraphSty
instance->setMaxLines(count);
}
extern "C" JNIEXPORT jstring JNICALL Java_org_jetbrains_skia_paragraph_ParagraphStyleKt__1nGetEllipsis
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_paragraph_ParagraphStyleKt__1nGetEllipsis
(JNIEnv* env, jclass jclass, jlong ptr) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>(static_cast<uintptr_t>(ptr));
return instance->ellipsized() ? javaString(env, instance->getEllipsis()) : nullptr;
return instance->ellipsized() ? reinterpret_cast<jlong>(new SkString(instance->getEllipsis())) : 0;
}
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_ParagraphStyleKt__1nSetEllipsis
......
......@@ -95,36 +95,18 @@ SKIKO_EXPORT void org_jetbrains_skia_paragraph_ParagraphStyle__1nSetMaxLinesCoun
instance->setMaxLines(count);
}
SKIKO_EXPORT KInteropPointer org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis
(KNativePointer ptr) {
TODO("implement org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis");
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>(ptr);
return instance->ellipsized() ? new SkString(instance->getEllipsis()) : nullptr;
}
#if 0
SKIKO_EXPORT KInteropPointer org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis
(KNativePointer ptr) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>((ptr));
return instance->ellipsized() ? javaString(env, instance->getEllipsis()) : nullptr;
}
#endif
SKIKO_EXPORT void org_jetbrains_skia_paragraph_ParagraphStyle__1nSetEllipsis
(KNativePointer ptr, KInteropPointer ellipsis) {
TODO("implement org_jetbrains_skia_paragraph_ParagraphStyle__1nSetEllipsis");
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>(ptr);
instance->setEllipsis(skString(ellipsis));
}
#if 0
SKIKO_EXPORT void org_jetbrains_skia_paragraph_ParagraphStyle__1nSetEllipsis
(KNativePointer ptr, KInteropPointer ellipsis) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>((ptr));
instance->setEllipsis(skString(env, ellipsis));
}
#endif
SKIKO_EXPORT KFloat org_jetbrains_skia_paragraph_ParagraphStyle__1nGetHeight
(KNativePointer ptr) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>((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