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 ...@@ -6,8 +6,11 @@ import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats 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.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.withStringResult
class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) { class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) {
companion object { companion object {
...@@ -99,16 +102,19 @@ class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) { ...@@ -99,16 +102,19 @@ class ParagraphStyle : Managed(ParagraphStyle_nMake(), _FinalizerHolder.PTR) {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
var ellipsis: String var ellipsis: String?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetEllipsis(_ptr) val ellipsis = _nGetEllipsis(_ptr)
if (ellipsis == NullPointer) null else withStringResult { ellipsis }
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) = try { set(value) = try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetEllipsis(_ptr, value) interopScope {
_nSetEllipsis(_ptr, toInterop(value))
}
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
...@@ -216,10 +222,10 @@ private external fun _nGetMaxLinesCount(ptr: NativePointer): Int ...@@ -216,10 +222,10 @@ private external fun _nGetMaxLinesCount(ptr: NativePointer): Int
private external fun _nSetMaxLinesCount(ptr: NativePointer, maxLines: Int) private external fun _nSetMaxLinesCount(ptr: NativePointer, maxLines: Int)
@ExternalSymbolName("org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis") @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") @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") @ExternalSymbolName("org_jetbrains_skia_paragraph_ParagraphStyle__1nSetHeight")
private external fun _nSetHeight(ptr: NativePointer, height: Float) 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 ...@@ -95,10 +95,10 @@ extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_paragraph_ParagraphSty
instance->setMaxLines(count); 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) { (JNIEnv* env, jclass jclass, jlong ptr) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>(static_cast<uintptr_t>(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 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 ...@@ -95,36 +95,18 @@ SKIKO_EXPORT void org_jetbrains_skia_paragraph_ParagraphStyle__1nSetMaxLinesCoun
instance->setMaxLines(count); instance->setMaxLines(count);
} }
SKIKO_EXPORT KInteropPointer org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis SKIKO_EXPORT KInteropPointer org_jetbrains_skia_paragraph_ParagraphStyle__1nGetEllipsis
(KNativePointer ptr) { (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 SKIKO_EXPORT void org_jetbrains_skia_paragraph_ParagraphStyle__1nSetEllipsis
(KNativePointer ptr, KInteropPointer ellipsis) { (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 SKIKO_EXPORT KFloat org_jetbrains_skia_paragraph_ParagraphStyle__1nGetHeight
(KNativePointer ptr) { (KNativePointer ptr) {
ParagraphStyle* instance = reinterpret_cast<ParagraphStyle*>((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