Unverified Commit 030fea30 authored by Nikolay Igotti's avatar Nikolay Igotti Committed by GitHub

Fix SVG rendering. (#238)

parent 8cde16e1
...@@ -41,16 +41,14 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -41,16 +41,14 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
fun setContainerSize(width: Float, height: Float): SVGDOM { fun setContainerSize(width: Float, height: Float) {
Stats.onNativeCall() Stats.onNativeCall()
SVGDOM_nSetContainerSize(_ptr, width, height) SVGDOM_nSetContainerSize(_ptr, width, height)
return this
} }
fun setContainerSize(size: Point): SVGDOM { fun setContainerSize(size: Point) {
Stats.onNativeCall() Stats.onNativeCall()
SVGDOM_nSetContainerSize(_ptr, size.x, size.y) SVGDOM_nSetContainerSize(_ptr, size.x, size.y)
return this
} }
// sk_sp<SkSVGNode>* findNodeById(const char* id); // sk_sp<SkSVGNode>* findNodeById(const char* id);
...@@ -65,7 +63,6 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) { ...@@ -65,7 +63,6 @@ class SVGDOM internal constructor(ptr: NativePointer) : RefCnt(ptr) {
} }
} }
@ExternalSymbolName("org_jetbrains_skia_svg_SVGDOM__1nMakeFromData") @ExternalSymbolName("org_jetbrains_skia_svg_SVGDOM__1nMakeFromData")
private external fun SVGDOM_nMakeFromData(dataPtr: NativePointer): NativePointer private external fun SVGDOM_nMakeFromData(dataPtr: NativePointer): NativePointer
......
...@@ -6,27 +6,18 @@ class SVGLength(val value: Float, val unit: SVGLengthUnit) { ...@@ -6,27 +6,18 @@ class SVGLength(val value: Float, val unit: SVGLengthUnit) {
constructor(value: Float) : this(value, SVGLengthUnit.NUMBER) {} constructor(value: Float) : this(value, SVGLengthUnit.NUMBER) {}
override fun equals(o: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (o === this) return true if (other === this) return true
if (o !is SVGLength) return false if (other !is SVGLength) return false
val other = o
if (!other.canEqual(this as Any)) return false
if (value.compareTo(other.value) != 0) return false if (value.compareTo(other.value) != 0) return false
val `this$_unit`: Any = unit return unit == other.unit
val `other$_unit`: Any = other.unit
return `this$_unit` == `other$_unit`
}
protected fun canEqual(other: Any?): Boolean {
return other is SVGLength
} }
override fun hashCode(): Int { override fun hashCode(): Int {
val PRIME = 59 val PRIME = 59
var result = 1 var result = 1
result = result * PRIME + value.toBits() result = result * PRIME + value.toBits()
val `$_unit`: Any = unit result = result * PRIME + unit.hashCode()
result = result * PRIME + (`$_unit`.hashCode())
return result return result
} }
......
...@@ -10,26 +10,20 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese ...@@ -10,26 +10,20 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
SVGPreserveAspectRatioScale.values()[scale] SVGPreserveAspectRatioScale.values()[scale]
) )
constructor() : this(SVGPreserveAspectRatioAlign.XMID_YMID, SVGPreserveAspectRatioScale.MEET) {} constructor() : this(SVGPreserveAspectRatioAlign.XMID_YMID, SVGPreserveAspectRatioScale.MEET)
constructor(align: SVGPreserveAspectRatioAlign) : this(align, SVGPreserveAspectRatioScale.MEET) {} constructor(align: SVGPreserveAspectRatioAlign) : this(align, SVGPreserveAspectRatioScale.MEET)
constructor(scale: SVGPreserveAspectRatioScale) : this(SVGPreserveAspectRatioAlign.XMID_YMID, scale) {} constructor(scale: SVGPreserveAspectRatioScale) : this(SVGPreserveAspectRatioAlign.XMID_YMID, scale)
val align: SVGPreserveAspectRatioAlign val align: SVGPreserveAspectRatioAlign
get() = _align get() = _align
val scale: SVGPreserveAspectRatioScale val scale: SVGPreserveAspectRatioScale
get() = _scale get() = _scale
override fun equals(o: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (o === this) return true if (other === this) return true
if (o !is SVGPreserveAspectRatio) return false if (other !is SVGPreserveAspectRatio) return false
val other = o if (align != other.align) return false
if (!other.canEqual(this as Any)) return false return scale == other.scale
val `this$_align`: Any = align
val `other$_align`: Any = other.align
if (`this$_align` != `other$_align`) return false
val `this$_scale`: Any = scale
val `other$_scale`: Any = other.scale
return `this$_scale` == `other$_scale`
} }
protected fun canEqual(other: Any?): Boolean { protected fun canEqual(other: Any?): Boolean {
...@@ -39,10 +33,8 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese ...@@ -39,10 +33,8 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
override fun hashCode(): Int { override fun hashCode(): Int {
val PRIME = 59 val PRIME = 59
var result = 1 var result = 1
val `$_align`: Any = align result = result * PRIME + align.hashCode()
result = result * PRIME + (`$_align`.hashCode()) result = result * PRIME + scale.hashCode()
val `$_scale`: Any = scale
result = result * PRIME + (`$_scale`.hashCode())
return result return result
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "SkSVGDOM.h" #include "SkSVGDOM.h"
#include "SkSVGSVG.h" #include "SkSVGSVG.h"
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nMakeFromData extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_1nMakeFromData
(JNIEnv* env, jclass jclass, jlong dataPtr) { (JNIEnv* env, jclass jclass, jlong dataPtr) {
SkData* data = reinterpret_cast<SkData*>(static_cast<uintptr_t>(dataPtr)); SkData* data = reinterpret_cast<SkData*>(static_cast<uintptr_t>(dataPtr));
SkMemoryStream stream(sk_ref_sp(data)); SkMemoryStream stream(sk_ref_sp(data));
...@@ -14,7 +14,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n ...@@ -14,7 +14,7 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
return reinterpret_cast<jlong>(instance.release()); return reinterpret_cast<jlong>(instance.release());
} }
extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nGetRoot extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_1nGetRoot
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr)); SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr));
SkSVGSVG* root = instance->getRoot(); SkSVGSVG* root = instance->getRoot();
...@@ -22,20 +22,20 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n ...@@ -22,20 +22,20 @@ extern "C" JNIEXPORT jlong JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_n
return reinterpret_cast<jlong>(root); return reinterpret_cast<jlong>(root);
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nGetContainerSize extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_1nGetContainerSize
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr)); SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr));
const SkSize& size = instance->containerSize(); const SkSize& size = instance->containerSize();
return skija::Point::make(env, size.fWidth, size.fHeight); return skija::Point::make(env, size.fWidth, size.fHeight);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt__1nSetContainerSize extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_1nSetContainerSize
(JNIEnv* env, jclass jclass, jlong ptr, jfloat width, jfloat height) { (JNIEnv* env, jclass jclass, jlong ptr, jfloat width, jfloat height) {
SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr)); SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr));
instance->setContainerSize(SkSize{width, height}); instance->setContainerSize(SkSize{width, height});
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_nRender extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGDOMKt_SVGDOM_1nRender
(JNIEnv* env, jclass jclass, jlong ptr, jlong canvasPtr) { (JNIEnv* env, jclass jclass, jlong ptr, jlong canvasPtr) {
SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr)); SkSVGDOM* instance = reinterpret_cast<SkSVGDOM*>(static_cast<uintptr_t>(ptr));
SkCanvas* canvas = reinterpret_cast<SkCanvas*>(static_cast<uintptr_t>(canvasPtr)); SkCanvas* canvas = reinterpret_cast<SkCanvas*>(static_cast<uintptr_t>(canvasPtr));
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include "../interop.hh" #include "../interop.hh"
#include "SkSVGNode.h" #include "SkSVGNode.h"
extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_svg_SVGNodeKt_SVGNode_nGetTag extern "C" JNIEXPORT jint JNICALL Java_org_jetbrains_skia_svg_SVGNodeKt_SVGNode_1nGetTag
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGNode* instance = reinterpret_cast<SkSVGNode*>(static_cast<uintptr_t>(ptr)); SkSVGNode* instance = reinterpret_cast<SkSVGNode*>(static_cast<uintptr_t>(ptr));
return static_cast<jint>(instance->tag()); return static_cast<jint>(instance->tag());
......
...@@ -4,44 +4,44 @@ ...@@ -4,44 +4,44 @@
#include "SkSVGSVG.h" #include "SkSVGSVG.h"
#include "SkSVGRenderContext.h" #include "SkSVGRenderContext.h"
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetX extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetX
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
return skija::svg::SVGLength::toJava(env, instance->getX()); return skija::svg::SVGLength::toJava(env, instance->getX());
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetY extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetY
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
return skija::svg::SVGLength::toJava(env, instance->getY()); return skija::svg::SVGLength::toJava(env, instance->getY());
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetWidth extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetWidth
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
return skija::svg::SVGLength::toJava(env, instance->getWidth()); return skija::svg::SVGLength::toJava(env, instance->getWidth());
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetHeight extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetHeight
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
return skija::svg::SVGLength::toJava(env, instance->getHeight()); return skija::svg::SVGLength::toJava(env, instance->getHeight());
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetPreserveAspectRatio extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetPreserveAspectRatio
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
return skija::svg::SVGPreserveAspectRatio::toJava(env, instance->getPreserveAspectRatio()); return skija::svg::SVGPreserveAspectRatio::toJava(env, instance->getPreserveAspectRatio());
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetViewBox extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetViewBox
(JNIEnv* env, jclass jclass, jlong ptr) { (JNIEnv* env, jclass jclass, jlong ptr) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkTLazy<SkSVGViewBoxType> viewBox = instance->getViewBox(); SkTLazy<SkSVGViewBoxType> viewBox = instance->getViewBox();
return viewBox.isValid() ? skija::Rect::fromSkRect(env, *viewBox.get()) : nullptr; return viewBox.isValid() ? skija::Rect::fromSkRect(env, *viewBox.get()) : nullptr;
} }
extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nGetIntrinsicSize extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nGetIntrinsicSize
(JNIEnv* env, jclass jclass, jlong ptr, float width, float height, float dpi) { (JNIEnv* env, jclass jclass, jlong ptr, float width, float height, float dpi) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkSVGLengthContext lc({width, height}, dpi); SkSVGLengthContext lc({width, height}, dpi);
...@@ -49,42 +49,42 @@ extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG ...@@ -49,42 +49,42 @@ extern "C" JNIEXPORT jobject JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG
return skija::Point::fromSkPoint(env, {size.width(), size.height()}); return skija::Point::fromSkPoint(env, {size.width(), size.height()});
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetX extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetX
(JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) { (JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit)); SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit));
instance->setX(lenght); instance->setX(lenght);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetY extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetY
(JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) { (JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit)); SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit));
instance->setY(lenght); instance->setY(lenght);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetWidth extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetWidth
(JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) { (JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit)); SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit));
instance->setWidth(lenght); instance->setWidth(lenght);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetHeight extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetHeight
(JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) { (JNIEnv* env, jclass jclass, jlong ptr, float value, int unit) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit)); SkSVGLength lenght(value, static_cast<SkSVGLength::Unit>(unit));
instance->setHeight(lenght); instance->setHeight(lenght);
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetPreserveAspectRatio extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetPreserveAspectRatio
(JNIEnv* env, jclass jclass, jlong ptr, jint align, jint scale) { (JNIEnv* env, jclass jclass, jlong ptr, jint align, jint scale) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
instance->setPreserveAspectRatio(SkSVGPreserveAspectRatio { static_cast<SkSVGPreserveAspectRatio::Align>(align), instance->setPreserveAspectRatio(SkSVGPreserveAspectRatio { static_cast<SkSVGPreserveAspectRatio::Align>(align),
static_cast<SkSVGPreserveAspectRatio::Scale>(scale) }); static_cast<SkSVGPreserveAspectRatio::Scale>(scale) });
} }
extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_nSetViewBox extern "C" JNIEXPORT void JNICALL Java_org_jetbrains_skia_svg_SVGSVGKt_SVGSVG_1nSetViewBox
(JNIEnv* env, jclass jclass, jlong ptr, float l, float t, float r, float b) { (JNIEnv* env, jclass jclass, jlong ptr, float l, float t, float r, float b) {
SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr)); SkSVGSVG* instance = reinterpret_cast<SkSVGSVG*>(static_cast<uintptr_t>(ptr));
instance->setViewBox(SkRect::MakeLTRB(l, t, r, b)); instance->setViewBox(SkRect::MakeLTRB(l, t, r, b));
......
package org.jetbrains.skiko package org.jetbrains.skiko
import org.jetbrains.skia.Color4f import org.jetbrains.skia.*
import org.jetbrains.skia.ColorFilter import org.jetbrains.skia.svg.SVGDOM
import org.jetbrains.skia.ColorSpace import org.jetbrains.skia.svg.SVGLengthContext
import org.jetbrains.skia.svg.SVGLengthUnit
import org.jetbrains.skia.svg.SVGTag
import org.junit.Test import org.junit.Test
class SkiaTest { class SkiaTest {
...@@ -19,4 +21,37 @@ class SkiaTest { ...@@ -19,4 +21,37 @@ class SkiaTest {
val table = ColorFilter.makeTableARGB(array, array, array, array) val table = ColorFilter.makeTableARGB(array, array, array, array)
assert(table._ptr != 0L) assert(table._ptr != 0L)
} }
@Test
fun `svg smoke`() {
val svgText = """
<svg version="1.1"
width="300" height="200"
xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="red" />
<circle cx="150" cy="100" r="80" fill="green" />
<text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>
</svg>
""".trimIndent()
val data = Data.makeFromBytes(svgText.encodeToByteArray())
val dom = SVGDOM(data)
assert(!dom.isClosed)
dom.setContainerSize(Point(100f, 100f))
dom.setContainerSize(101f, 101f)
assert(dom.root != null)
val e = dom.root!!
assert(e.x.unit == SVGLengthUnit.NUMBER)
assert(e.y.unit == SVGLengthUnit.NUMBER)
assert(e.width.unit == SVGLengthUnit.NUMBER)
assert(e.height.unit == SVGLengthUnit.NUMBER)
assert(e.viewBox == null)
assert(e.tag == SVGTag.SVG)
// e.viewBox = Rect(0f, 1f, 100f, 200f)
// assert(e.viewBox!!.top == 1f)
assert(e.getIntrinsicSize(SVGLengthContext(100f, 100f)).x == 300f)
}
} }
\ No newline at end of file
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