Unverified Commit 3a68bff4 authored by Nikolay Igotti's avatar Nikolay Igotti Committed by GitHub

Complete commonization. (#168)

parent a8dbcb11
...@@ -419,7 +419,6 @@ project.tasks.register<Exec>("nativeBridgesLink") { ...@@ -419,7 +419,6 @@ project.tasks.register<Exec>("nativeBridgesLink") {
val srcs = inputs.files.files val srcs = inputs.files.files
.map { it.absolutePath } .map { it.absolutePath }
.toTypedArray() .toTypedArray()
println("SRCS: $srcs")
val staticLib = "$outDir/skiko-native-bridges-$target.a" val staticLib = "$outDir/skiko-native-bridges-$target.a"
workingDir = File(outDir) workingDir = File(outDir)
commandLine = listOf( commandLine = listOf(
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.skottie package org.jetbrains.skia.skottie
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.sksg.InvalidationController import org.jetbrains.skia.sksg.InvalidationController
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Managed import org.jetbrains.skia.impl.Managed
import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) { class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) {
companion object { companion object {
...@@ -26,12 +27,13 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -26,12 +27,13 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
fun makeFromData(data: Data): Animation { fun makeFromData(data: Data): Animation {
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nMakeFromData(Native.Companion.getPtr(data)) val ptr = _nMakeFromData(getPtr(data))
require(ptr != 0L) { "Failed to create Animation from data." } require(ptr != 0L) { "Failed to create Animation from data." }
return Animation(ptr) return Animation(ptr)
} }
@JvmStatic external fun _nGetFinalizer(): Long @JvmStatic
external fun _nGetFinalizer(): Long
@JvmStatic external fun _nMakeFromString(data: String?): Long @JvmStatic external fun _nMakeFromString(data: String?): Long
@JvmStatic external fun _nMakeFromFile(path: String?): Long @JvmStatic external fun _nMakeFromFile(path: String?): Long
@JvmStatic external fun _nMakeFromData(dataPtr: Long): Long @JvmStatic external fun _nMakeFromData(dataPtr: Long): Long
...@@ -127,15 +129,13 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -127,15 +129,13 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
*/ */
fun render(canvas: Canvas, dst: Rect, vararg renderFlags: RenderFlag): Animation { fun render(canvas: Canvas, dst: Rect, vararg renderFlags: RenderFlag): Animation {
return try { return try {
assert(canvas != null) { "Can’t Animation::render with canvas == null" }
assert(dst != null) { "Can’t Animation::render with dst == null" }
Stats.onNativeCall() Stats.onNativeCall()
var flags = 0 var flags = 0
for (flag in renderFlags) flags = flags or flag._flag for (flag in renderFlags) flags = flags or flag._flag
_nRender(_ptr, Native.Companion.getPtr(canvas), dst.left, dst.top, dst.right, dst.bottom, flags) _nRender(_ptr, getPtr(canvas), dst.left, dst.top, dst.right, dst.bottom, flags)
this this
} finally { } finally {
Reference.reachabilityFence(canvas) reachabilityBarrier(canvas)
} }
} }
...@@ -161,10 +161,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -161,10 +161,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
fun seek(t: Float, ic: InvalidationController?): Animation { fun seek(t: Float, ic: InvalidationController?): Animation {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSeek(_ptr, t, Native.Companion.getPtr(ic)) _nSeek(_ptr, t, getPtr(ic))
this this
} finally { } finally {
Reference.reachabilityFence(ic) reachabilityBarrier(ic)
} }
} }
...@@ -200,10 +200,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -200,10 +200,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
fun seekFrame(t: Float, ic: InvalidationController?): Animation { fun seekFrame(t: Float, ic: InvalidationController?): Animation {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSeekFrame(_ptr, t, Native.Companion.getPtr(ic)) _nSeekFrame(_ptr, t, getPtr(ic))
this this
} finally { } finally {
Reference.reachabilityFence(ic) reachabilityBarrier(ic)
} }
} }
...@@ -231,10 +231,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -231,10 +231,10 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
fun seekFrameTime(t: Float, ic: InvalidationController?): Animation { fun seekFrameTime(t: Float, ic: InvalidationController?): Animation {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSeekFrameTime(_ptr, t, Native.Companion.getPtr(ic)) _nSeekFrameTime(_ptr, t, getPtr(ic))
this this
} finally { } finally {
Reference.reachabilityFence(ic) reachabilityBarrier(ic)
} }
} }
...@@ -246,7 +246,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -246,7 +246,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
Stats.onNativeCall() Stats.onNativeCall()
_nGetDuration(_ptr) _nGetDuration(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
/** /**
...@@ -257,7 +257,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -257,7 +257,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
Stats.onNativeCall() Stats.onNativeCall()
_nGetFPS(_ptr) _nGetFPS(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
/** /**
...@@ -268,7 +268,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -268,7 +268,7 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
Stats.onNativeCall() Stats.onNativeCall()
_nGetInPoint(_ptr) _nGetInPoint(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
/** /**
...@@ -279,14 +279,14 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -279,14 +279,14 @@ class Animation internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
Stats.onNativeCall() Stats.onNativeCall()
_nGetOutPoint(_ptr) _nGetOutPoint(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
val version: String val version: String
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetVersion(_ptr) _nGetVersion(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
private var _size: Point? = null private var _size: Point? = null
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.skottie package org.jetbrains.skia.skottie
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Managed import org.jetbrains.skia.impl.Managed
import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) { class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) {
companion object { companion object {
...@@ -15,7 +16,8 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer ...@@ -15,7 +16,8 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer
return flags return flags
} }
@JvmStatic external fun _nGetFinalizer(): Long @JvmStatic
external fun _nGetFinalizer(): Long
@JvmStatic external fun _nMake(flags: Int): Long @JvmStatic external fun _nMake(flags: Int): Long
@JvmStatic external fun _nSetFontManager(ptr: Long, fontMgrPtr: Long) @JvmStatic external fun _nSetFontManager(ptr: Long, fontMgrPtr: Long)
@JvmStatic external fun _nSetLogger(ptr: Long, loggerPtr: Long) @JvmStatic external fun _nSetLogger(ptr: Long, loggerPtr: Long)
...@@ -44,10 +46,10 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer ...@@ -44,10 +46,10 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer
fun setFontManager(fontMgr: FontMgr?): AnimationBuilder { fun setFontManager(fontMgr: FontMgr?): AnimationBuilder {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetFontManager(_ptr, Native.Companion.getPtr(fontMgr)) _nSetFontManager(_ptr, getPtr(fontMgr))
this this
} finally { } finally {
Reference.reachabilityFence(fontMgr) reachabilityBarrier(fontMgr)
} }
} }
...@@ -58,47 +60,44 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer ...@@ -58,47 +60,44 @@ class AnimationBuilder internal constructor(ptr: Long) : Managed(ptr, _Finalizer
fun setLogger(logger: Logger?): AnimationBuilder { fun setLogger(logger: Logger?): AnimationBuilder {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetLogger(_ptr, Native.Companion.getPtr(logger)) _nSetLogger(_ptr, getPtr(logger))
this this
} finally { } finally {
Reference.reachabilityFence(logger) reachabilityBarrier(logger)
} }
} }
fun buildFromString(data: String): Animation { fun buildFromString(data: String): Animation {
return try { return try {
assert(data != null) { "Can’t buildFromString with data == null" }
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nBuildFromString(_ptr, data) val ptr = _nBuildFromString(_ptr, data)
require(ptr != 0L) { "Failed to create Animation from string: \"$data\"" } require(ptr != 0L) { "Failed to create Animation from string: \"$data\"" }
Animation(ptr) Animation(ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
fun buildFromFile(path: String): Animation { fun buildFromFile(path: String): Animation {
return try { return try {
assert(path != null) { "Can’t buildFromFile with path == null" }
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nBuildFromFile(_ptr, path) val ptr = _nBuildFromFile(_ptr, path)
require(ptr != 0L) { "Failed to create Animation from path: $path" } require(ptr != 0L) { "Failed to create Animation from path: $path" }
Animation(ptr) Animation(ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
fun buildFromData(data: Data): Animation { fun buildFromData(data: Data): Animation {
return try { return try {
assert(data != null) { "Can’t buildFromData with data == null" }
Stats.onNativeCall() Stats.onNativeCall()
val ptr = val ptr =
_nBuildFromData(_ptr, Native.Companion.getPtr(data)) _nBuildFromData(_ptr, getPtr(data))
require(ptr != 0L) { "Failed to create Animation from data" } require(ptr != 0L) { "Failed to create Animation from data" }
Animation(ptr) Animation(ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
} }
\ No newline at end of file
package org.jetbrains.skia.skottie package org.jetbrains.skia.skottie
enum class AnimationBuilderFlag(internal val _flag: Int) { enum class AnimationBuilderFlag(internal val _flag: Int) {
/** /**
* Normally, all static image frames are resolved at * Normally, all static image frames are resolved at
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.skottie package org.jetbrains.skia.skottie
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.impl.RefCnt import org.jetbrains.skia.impl.RefCnt
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import kotlin.jvm.JvmStatic
/** /**
* *
...@@ -11,7 +13,8 @@ import org.jetbrains.skia.impl.Stats ...@@ -11,7 +13,8 @@ import org.jetbrains.skia.impl.Stats
*/ */
abstract class Logger : RefCnt(_nMake()) { abstract class Logger : RefCnt(_nMake()) {
companion object { companion object {
@JvmStatic external fun _nMake(): Long @JvmStatic
external fun _nMake(): Long
init { init {
staticLoad() staticLoad()
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.sksg package org.jetbrains.skia.sksg
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Managed import org.jetbrains.skia.impl.Managed
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
/** /**
* *
...@@ -14,7 +16,8 @@ import java.lang.ref.Reference ...@@ -14,7 +16,8 @@ import java.lang.ref.Reference
*/ */
class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) { class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) {
companion object { companion object {
@JvmStatic external fun _nGetFinalizer(): Long @JvmStatic
external fun _nGetFinalizer(): Long
@JvmStatic external fun _nMake(): Long @JvmStatic external fun _nMake(): Long
@JvmStatic external fun _nInvalidate(ptr: Long, left: Float, top: Float, right: Float, bottom: Float, matrix: FloatArray?) @JvmStatic external fun _nInvalidate(ptr: Long, left: Float, top: Float, right: Float, bottom: Float, matrix: FloatArray?)
@JvmStatic external fun _nGetBounds(ptr: Long): Rect @JvmStatic external fun _nGetBounds(ptr: Long): Rect
...@@ -39,7 +42,7 @@ class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _Fin ...@@ -39,7 +42,7 @@ class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _Fin
top, top,
right, right,
bottom, bottom,
if (matrix == null) Matrix33.Companion.IDENTITY.mat else matrix.mat matrix?.mat ?: Matrix33.IDENTITY.mat
) )
return this return this
} }
...@@ -49,7 +52,7 @@ class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _Fin ...@@ -49,7 +52,7 @@ class InvalidationController internal constructor(ptr: Long) : Managed(ptr, _Fin
Stats.onNativeCall() Stats.onNativeCall()
_nGetBounds(_ptr) _nGetBounds(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
fun reset(): InvalidationController { fun reset(): InvalidationController {
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Native import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import kotlin.jvm.JvmStatic
object SVGCanvas { object SVGCanvas {
/** /**
...@@ -49,7 +51,8 @@ object SVGCanvas { ...@@ -49,7 +51,8 @@ object SVGCanvas {
return Canvas(ptr, true, out) return Canvas(ptr, true, out)
} }
@JvmStatic external fun _nMake(left: Float, top: Float, right: Float, bottom: Float, wstreamPtr: Long, flags: Int): Long @JvmStatic
external fun _nMake(left: Float, top: Float, right: Float, bottom: Float, wstreamPtr: Long, flags: Int): Long
init { init {
staticLoad() staticLoad()
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.impl.RefCnt import org.jetbrains.skia.impl.RefCnt
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Native
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) { class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) {
companion object { companion object {
@JvmStatic external fun _nMakeFromData(dataPtr: Long): Long @JvmStatic
external fun _nMakeFromData(dataPtr: Long): Long
@JvmStatic external fun _nGetRoot(ptr: Long): Long @JvmStatic external fun _nGetRoot(ptr: Long): Long
@JvmStatic external fun _nGetContainerSize(ptr: Long): Point @JvmStatic external fun _nGetContainerSize(ptr: Long): Point
@JvmStatic external fun _nSetContainerSize(ptr: Long, width: Float, height: Float) @JvmStatic external fun _nSetContainerSize(ptr: Long, width: Float, height: Float)
...@@ -20,18 +22,18 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) { ...@@ -20,18 +22,18 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) {
} }
} }
constructor(data: Data) : this(_nMakeFromData(Native.getPtr(data))) { constructor(data: Data) : this(_nMakeFromData(getPtr(data))) {
Stats.onNativeCall() Stats.onNativeCall()
Reference.reachabilityFence(data) reachabilityBarrier(data)
} }
val root: org.jetbrains.skia.svg.SVGSVG? val root: SVGSVG?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nGetRoot(_ptr) val ptr = _nGetRoot(_ptr)
if (ptr == 0L) null else SVGSVG(ptr) if (ptr == 0L) null else SVGSVG(ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
/** /**
...@@ -42,7 +44,7 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) { ...@@ -42,7 +44,7 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) {
get() = try { get() = try {
_nGetContainerSize(_ptr) _nGetContainerSize(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
fun setContainerSize(width: Float, height: Float): SVGDOM { fun setContainerSize(width: Float, height: Float): SVGDOM {
...@@ -61,10 +63,10 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) { ...@@ -61,10 +63,10 @@ class SVGDOM internal constructor(ptr: Long) : RefCnt(ptr) {
fun render(canvas: Canvas): SVGDOM { fun render(canvas: Canvas): SVGDOM {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nRender(_ptr, Native.Companion.getPtr(canvas)) _nRender(_ptr, getPtr(canvas))
this this
} finally { } finally {
Reference.reachabilityFence(canvas) reachabilityBarrier(canvas)
} }
} }
} }
\ No newline at end of file
...@@ -29,9 +29,9 @@ class SVGLength(val value: Float, unit: SVGLengthUnit) { ...@@ -29,9 +29,9 @@ class SVGLength(val value: Float, unit: SVGLengthUnit) {
override fun hashCode(): Int { override fun hashCode(): Int {
val PRIME = 59 val PRIME = 59
var result = 1 var result = 1
result = result * PRIME + java.lang.Float.floatToIntBits(value) result = result * PRIME + value.toBits()
val `$_unit`: Any = unit val `$_unit`: Any = unit
result = result * PRIME + (`$_unit`?.hashCode() ?: 43) result = result * PRIME + (`$_unit`.hashCode())
return result return result
} }
......
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import org.jetbrains.skia.* import org.jetbrains.skia.*
import java.lang.IllegalArgumentException import kotlin.math.hypot
import kotlin.math.sqrt
class SVGLengthContext @JvmOverloads constructor( class SVGLengthContext constructor(
internal val width: Float, internal val width: Float,
internal val height: Float, internal val height: Float,
internal val dpi: Float = 90f internal val dpi: Float = 90f
...@@ -20,10 +21,10 @@ class SVGLengthContext @JvmOverloads constructor( ...@@ -20,10 +21,10 @@ class SVGLengthContext @JvmOverloads constructor(
SVGLengthType.HORIZONTAL -> return length.value * width / 100.0f SVGLengthType.HORIZONTAL -> return length.value * width / 100.0f
SVGLengthType.VERTICAL -> return length.value * height / 100.0f SVGLengthType.VERTICAL -> return length.value * height / 100.0f
SVGLengthType.OTHER -> // https://www.w3.org/TR/SVG11/coords.html#Units_viewport_percentage SVGLengthType.OTHER -> // https://www.w3.org/TR/SVG11/coords.html#Units_viewport_percentage
return (length.value * Math.hypot( return (length.value * hypot(
width.toDouble(), width.toDouble(),
height.toDouble() height.toDouble()
) / Math.sqrt(2.0) / 100.0).toFloat() ) / sqrt(2.0) / 100.0).toFloat()
} }
} }
SVGLengthUnit.CM -> length.value * dpi / 2.54f SVGLengthUnit.CM -> length.value * dpi / 2.54f
...@@ -49,9 +50,9 @@ class SVGLengthContext @JvmOverloads constructor( ...@@ -49,9 +50,9 @@ class SVGLengthContext @JvmOverloads constructor(
if (o !is SVGLengthContext) return false if (o !is SVGLengthContext) return false
val other = o val other = o
if (!other.canEqual(this as Any)) return false if (!other.canEqual(this as Any)) return false
if (java.lang.Float.compare(width, other.width) != 0) return false if (width.compareTo(other.width) != 0) return false
if (java.lang.Float.compare(height, other.height) != 0) return false if (height.compareTo(other.height) != 0) return false
return if (java.lang.Float.compare(dpi, other.dpi) != 0) false else true return dpi.compareTo(other.dpi) == 0
} }
protected fun canEqual(other: Any?): Boolean { protected fun canEqual(other: Any?): Boolean {
...@@ -61,14 +62,14 @@ class SVGLengthContext @JvmOverloads constructor( ...@@ -61,14 +62,14 @@ class SVGLengthContext @JvmOverloads constructor(
override fun hashCode(): Int { override fun hashCode(): Int {
val PRIME = 59 val PRIME = 59
var result = 1 var result = 1
result = result * PRIME + java.lang.Float.floatToIntBits(width) result = result * PRIME + width.toBits()
result = result * PRIME + java.lang.Float.floatToIntBits(height) result = result * PRIME + height.toBits()
result = result * PRIME + java.lang.Float.floatToIntBits(dpi) result = result * PRIME + dpi.toBits()
return result return result
} }
override fun toString(): String { override fun toString(): String {
return "SVGLengthContext(_width=" + width + ", _height=" + height + ", _dpi=" + dpi + ")" return "SVGLengthContext(_width=$width, _height=$height, _dpi=$dpi)"
} }
fun withWidth(_width: Float): SVGLengthContext { fun withWidth(_width: Float): SVGLengthContext {
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.impl.RefCnt import org.jetbrains.skia.impl.RefCnt
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
abstract class SVGNode internal constructor(ptr: Long) : RefCnt(ptr) { abstract class SVGNode internal constructor(ptr: Long) : RefCnt(ptr) {
companion object { companion object {
@JvmStatic external fun _nGetTag(ptr: Long): Int @JvmStatic
external fun _nGetTag(ptr: Long): Int
init { init {
staticLoad() staticLoad()
...@@ -19,6 +22,6 @@ abstract class SVGNode internal constructor(ptr: Long) : RefCnt(ptr) { ...@@ -19,6 +22,6 @@ abstract class SVGNode internal constructor(ptr: Long) : RefCnt(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
SVGTag.values().get(_nGetTag(_ptr)) SVGTag.values().get(_nGetTag(_ptr))
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
\ No newline at end of file
...@@ -29,7 +29,7 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese ...@@ -29,7 +29,7 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
if (if (`this$_align` == null) `other$_align` != null else `this$_align` != `other$_align`) return false if (if (`this$_align` == null) `other$_align` != null else `this$_align` != `other$_align`) return false
val `this$_scale`: Any = scale val `this$_scale`: Any = scale
val `other$_scale`: Any = other.scale val `other$_scale`: Any = other.scale
return if (if (`this$_scale` == null) `other$_scale` != null else `this$_scale` != `other$_scale`) false else true return !if (`this$_scale` == null) true else `this$_scale` != `other$_scale`
} }
protected fun canEqual(other: Any?): Boolean { protected fun canEqual(other: Any?): Boolean {
...@@ -40,14 +40,14 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese ...@@ -40,14 +40,14 @@ class SVGPreserveAspectRatio(align: SVGPreserveAspectRatioAlign, scale: SVGPrese
val PRIME = 59 val PRIME = 59
var result = 1 var result = 1
val `$_align`: Any = align val `$_align`: Any = align
result = result * PRIME + (`$_align`?.hashCode() ?: 43) result = result * PRIME + (`$_align`.hashCode())
val `$_scale`: Any = scale val `$_scale`: Any = scale
result = result * PRIME + (`$_scale`?.hashCode() ?: 43) result = result * PRIME + (`$_scale`.hashCode())
return result return result
} }
override fun toString(): String { override fun toString(): String {
return "SVGPreserveAspectRatio(_align=" + align + ", _scale=" + scale + ")" return "SVGPreserveAspectRatio(_align=$align, _scale=$scale)"
} }
fun withAlign(_align: SVGPreserveAspectRatioAlign): SVGPreserveAspectRatio { fun withAlign(_align: SVGPreserveAspectRatioAlign): SVGPreserveAspectRatio {
......
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import java.lang.IllegalArgumentException
enum class SVGPreserveAspectRatioAlign constructor(internal val _value: Int) { enum class SVGPreserveAspectRatioAlign constructor(internal val _value: Int) {
// These values are chosen such that bits [0,1] encode X alignment, and // These values are chosen such that bits [0,1] encode X alignment, and
// bits [2,3] encode Y alignment. // bits [2,3] encode Y alignment.
XMIN_YMIN(0x00), XMID_YMIN(0x01), XMAX_YMIN(0x02), XMIN_YMID(0x04), XMID_YMID(0x05), XMAX_YMID(0x06), XMIN_YMAX(0x08), XMID_YMAX( XMIN_YMIN(0x00),
0x09 XMID_YMIN(0x01),
), XMAX_YMIN(0x02),
XMAX_YMAX(0x0a), NONE(0x10); XMIN_YMID(0x04),
XMID_YMID(0x05),
XMAX_YMID(0x06),
XMIN_YMAX(0x08),
XMID_YMAX(0x09),
XMAX_YMAX(0x0a),
NONE(0x10);
companion object { companion object {
internal fun valueOf(value: Int): SVGPreserveAspectRatioAlign { internal fun valueOf(value: Int): SVGPreserveAspectRatioAlign {
......
@file:Suppress("NESTED_EXTERNAL_DECLARATION")
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
import org.jetbrains.skia.impl.Library.Companion.staticLoad import org.jetbrains.skia.impl.Library.Companion.staticLoad
import org.jetbrains.skia.* import org.jetbrains.skia.*
import org.jetbrains.skia.impl.Stats import org.jetbrains.skia.impl.Stats
import java.lang.ref.Reference import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
companion object { companion object {
@JvmStatic external fun _nGetX(ptr: Long): SVGLength @JvmStatic
external fun _nGetX(ptr: Long): SVGLength
@JvmStatic external fun _nGetY(ptr: Long): SVGLength @JvmStatic external fun _nGetY(ptr: Long): SVGLength
@JvmStatic external fun _nGetWidth(ptr: Long): SVGLength @JvmStatic external fun _nGetWidth(ptr: Long): SVGLength
@JvmStatic external fun _nGetHeight(ptr: Long): SVGLength @JvmStatic external fun _nGetHeight(ptr: Long): SVGLength
...@@ -31,7 +34,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -31,7 +34,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetX(_ptr) _nGetX(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
setX(value) setX(value)
...@@ -43,7 +46,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -43,7 +46,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetX(_ptr, length.value, length._unit.ordinal) _nSetX(_ptr, length.value, length._unit.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -52,7 +55,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -52,7 +55,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetY(_ptr) _nGetY(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
setY(value) setY(value)
...@@ -64,7 +67,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -64,7 +67,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetY(_ptr, length.value, length._unit.ordinal) _nSetY(_ptr, length.value, length._unit.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -73,7 +76,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -73,7 +76,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetWidth(_ptr) _nGetWidth(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
setWidth(value) setWidth(value)
...@@ -85,7 +88,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -85,7 +88,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetWidth(_ptr, length.value, length._unit.ordinal) _nSetWidth(_ptr, length.value, length._unit.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -94,7 +97,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -94,7 +97,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetHeight(_ptr) _nGetHeight(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
setHeight(value) setHeight(value)
...@@ -106,7 +109,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -106,7 +109,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetHeight(_ptr, length.value, length._unit.ordinal) _nSetHeight(_ptr, length.value, length._unit.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -115,7 +118,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -115,7 +118,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetPreserveAspectRatio(_ptr) _nGetPreserveAspectRatio(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
setPreserveAspectRatio(value) setPreserveAspectRatio(value)
...@@ -127,7 +130,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -127,7 +130,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetPreserveAspectRatio(_ptr, ratio._align._value, ratio._scale.ordinal) _nSetPreserveAspectRatio(_ptr, ratio._align._value, ratio._scale.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -136,7 +139,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -136,7 +139,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetViewBox(_ptr) _nGetViewBox(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
set(value) { set(value) {
require(value != null) { "Can't set viewBox with value == null" } require(value != null) { "Can't set viewBox with value == null" }
...@@ -149,7 +152,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -149,7 +152,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
_nSetViewBox(_ptr, viewBox.left, viewBox.top, viewBox.right, viewBox.bottom) _nSetViewBox(_ptr, viewBox.left, viewBox.top, viewBox.right, viewBox.bottom)
this this
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
...@@ -158,7 +161,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -158,7 +161,7 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
Stats.onNativeCall() Stats.onNativeCall()
_nGetIntrinsicSize(_ptr, lc.width, lc.height, lc.dpi) _nGetIntrinsicSize(_ptr, lc.width, lc.height, lc.dpi)
} finally { } finally {
Reference.reachabilityFence(this) reachabilityBarrier(this)
} }
} }
} }
\ No newline at end of file
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
enum class SVGTag { enum class SVGTag {
CIRCLE, CLIP_PATH, DEFS, ELLIPSE, FE_BLEND, FE_COLOR_MATRIX, FE_COMPOSITE, FE_DIFFUSE_LIGHTING, FE_DISPLACEMENT_MAP, FE_DISTANT_LIGHT, FE_FLOOD, FE_GAUSSIAN_BLUR, FE_IMAGE, FE_MORPHOLOGY, FE_OFFSET, FE_POINT_LIGHT, FE_SPECULAR_LIGHTING, FE_SPOT_LIGHT, FE_TURBULENCE, FILTER, G, IMAGE, LINE, LINEAR_GRADIENT, MASK, PATH, PATTERN, POLYGON, POLYLINE, RADIAL_GRADIENT, RECT, STOP, SVG, TEXT, TEXT_LITERAL, TEXTPATH, TSPAN, USE; CIRCLE,
CLIP_PATH,
DEFS,
ELLIPSE,
FE_BLEND,
FE_COLOR_MATRIX,
FE_COMPOSITE,
FE_DIFFUSE_LIGHTING,
FE_DISPLACEMENT_MAP,
FE_DISTANT_LIGHT,
FE_FLOOD,
FE_GAUSSIAN_BLUR,
FE_IMAGE,
FE_MORPHOLOGY,
FE_OFFSET,
FE_POINT_LIGHT,
FE_SPECULAR_LIGHTING,
FE_SPOT_LIGHT,
FE_TURBULENCE,
FILTER,
G,
IMAGE,
LINE,
LINEAR_GRADIENT,
MASK,
PATH,
PATTERN,
POLYGON,
POLYLINE,
RADIAL_GRADIENT,
RECT,
STOP,
SVG,
TEXT,
TEXT_LITERAL,
TEXTPATH,
TSPAN,
USE;
} }
\ 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