Unverified Commit 56b88584 authored by Roman Sedaikin's avatar Roman Sedaikin Committed by GitHub

Refactoring skia-part according to CFD use. (#160)

* Refactoring skia-part according to CFD use.
* Updated test according to refactoring.
parent 5c256dcf
...@@ -421,8 +421,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -421,8 +421,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
* @see [https://fiddle.skia.org/c/@Canvas_drawPoints](https://fiddle.skia.org/c/@Canvas_drawPoints) * @see [https://fiddle.skia.org/c/@Canvas_drawPoints](https://fiddle.skia.org/c/@Canvas_drawPoints)
*/ */
fun drawPolygon(coords: FloatArray, paint: Paint): Canvas { fun drawPolygon(coords: FloatArray, paint: Paint): Canvas {
require(coords != null) { "Can’t drawPolygon with coords == null" }
require(paint != null) { "Can’t drawPolygon with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawPoints(_ptr, 2 /* SkCanvas::PointMode::kPolygon_PointMode */, coords, getPtr(paint)) _nDrawPoints(_ptr, 2 /* SkCanvas::PointMode::kPolygon_PointMode */, coords, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -430,7 +428,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -430,7 +428,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawLine(x0: Float, y0: Float, x1: Float, y1: Float, paint: Paint): Canvas { fun drawLine(x0: Float, y0: Float, x1: Float, y1: Float, paint: Paint): Canvas {
require(paint != null) { "Can’t drawLine with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawLine(_ptr, x0, y0, x1, y1, getPtr(paint)) _nDrawLine(_ptr, x0, y0, x1, y1, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -447,7 +444,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -447,7 +444,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
includeCenter: Boolean, includeCenter: Boolean,
paint: Paint paint: Paint
): Canvas { ): Canvas {
require(paint != null) { "Can’t drawArc with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawArc(_ptr, left, top, right, bottom, startAngle, sweepAngle, includeCenter, getPtr(paint)) _nDrawArc(_ptr, left, top, right, bottom, startAngle, sweepAngle, includeCenter, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -455,8 +451,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -455,8 +451,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawRect(r: Rect, paint: Paint): Canvas { fun drawRect(r: Rect, paint: Paint): Canvas {
require(r != null) { "Can’t drawRect with r == null" }
require(paint != null) { "Can’t drawRect with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawRect(_ptr, r.left, r.top, r.right, r.bottom, getPtr(paint)) _nDrawRect(_ptr, r.left, r.top, r.right, r.bottom, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -464,8 +458,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -464,8 +458,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawOval(r: Rect, paint: Paint): Canvas { fun drawOval(r: Rect, paint: Paint): Canvas {
require(r != null) { "Can’t drawOval with r == null" }
require(paint != null) { "Can’t drawOval with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawOval(_ptr, r.left, r.top, r.right, r.bottom, getPtr(paint)) _nDrawOval(_ptr, r.left, r.top, r.right, r.bottom, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -473,7 +465,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -473,7 +465,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawCircle(x: Float, y: Float, radius: Float, paint: Paint): Canvas { fun drawCircle(x: Float, y: Float, radius: Float, paint: Paint): Canvas {
require(paint != null) { "Can’t drawCircle with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawOval(_ptr, x - radius, y - radius, x + radius, y + radius, getPtr(paint)) _nDrawOval(_ptr, x - radius, y - radius, x + radius, y + radius, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -481,8 +472,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -481,8 +472,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawRRect(r: RRect, paint: Paint): Canvas { fun drawRRect(r: RRect, paint: Paint): Canvas {
require(r != null) { "Can’t drawRRect with r == null" }
require(paint != null) { "Can’t drawRRect with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawRRect(_ptr, r.left, r.top, r.right, r.bottom, r.radii, getPtr(paint)) _nDrawRRect(_ptr, r.left, r.top, r.right, r.bottom, r.radii, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -490,9 +479,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -490,9 +479,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawDRRect(outer: RRect, inner: RRect, paint: Paint): Canvas { fun drawDRRect(outer: RRect, inner: RRect, paint: Paint): Canvas {
require(outer != null) { "Can’t drawDRRect with outer == null" }
require(inner != null) { "Can’t drawDRRect with inner == null" }
require(paint != null) { "Can’t drawDRRect with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawDRRect( _nDrawDRRect(
_ptr, _ptr,
...@@ -517,7 +503,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -517,7 +503,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawRectShadow(r: Rect, dx: Float, dy: Float, blur: Float, spread: Float, color: Int): Canvas { fun drawRectShadow(r: Rect, dx: Float, dy: Float, blur: Float, spread: Float, color: Int): Canvas {
require(r != null) { "Can’t drawRectShadow with r == null" }
val insides = r.inflate(-1f) val insides = r.inflate(-1f)
if (!insides.isEmpty) { if (!insides.isEmpty) {
save() save()
...@@ -529,11 +514,10 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -529,11 +514,10 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawRectShadowNoclip(r: Rect, dx: Float, dy: Float, blur: Float, spread: Float, color: Int): Canvas { fun drawRectShadowNoclip(r: Rect, dx: Float, dy: Float, blur: Float, spread: Float, color: Int): Canvas {
require(r != null) { "Can’t drawRectShadow with r == null" }
val outline = r.inflate(spread) val outline = r.inflate(spread)
makeDropShadowOnly(dx, dy, blur / 2f, blur / 2f, color).use { f -> makeDropShadowOnly(dx, dy, blur / 2f, blur / 2f, color).use { f ->
Paint().use { p -> org.jetbrains.skia.Paint().use { p ->
p.setImageFilter(f) p.imageFilter = f
if (outline is RRect) drawRRect(outline, p) else drawRect(outline, p) if (outline is RRect) drawRRect(outline, p) else drawRect(outline, p)
} }
} }
...@@ -612,10 +596,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -612,10 +596,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
paint: Paint?, paint: Paint?,
strict: Boolean strict: Boolean
): Canvas { ): Canvas {
require(image != null) { "Can’t drawImageRect with image == null" }
require(src != null) { "Can’t drawImageRect with src == null" }
require(dst != null) { "Can’t drawImageRect with dst == null" }
require(samplingMode != null) { "Can’t drawImageRect with samplingMode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawImageRect( _nDrawImageRect(
_ptr, _ptr,
...@@ -638,10 +618,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -638,10 +618,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawImageNine(image: Image, center: IRect, dst: Rect, filterMode: FilterMode, paint: Paint?): Canvas { fun drawImageNine(image: Image, center: IRect, dst: Rect, filterMode: FilterMode, paint: Paint?): Canvas {
require(image != null) { "Can’t drawImageNine with image == null" }
require(center != null) { "Can’t drawImageNine with center == null" }
require(dst != null) { "Can’t drawImageNine with dst == null" }
require(filterMode != null) { "Can’t drawImageNine with filterMode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawImageNine( _nDrawImageNine(
_ptr, _ptr,
...@@ -663,8 +639,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -663,8 +639,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawRegion(r: Region, paint: Paint): Canvas { fun drawRegion(r: Region, paint: Paint): Canvas {
require(r != null) { "Can’t drawRegion with r == null" }
require(paint != null) { "Can’t drawRegion with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawRegion(_ptr, getPtr(r), getPtr(paint)) _nDrawRegion(_ptr, getPtr(r), getPtr(paint))
reachabilityBarrier(r) reachabilityBarrier(r)
...@@ -673,8 +647,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -673,8 +647,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawString(s: String, x: Float, y: Float, font: Font?, paint: Paint): Canvas { fun drawString(s: String, x: Float, y: Float, font: Font?, paint: Paint): Canvas {
require(s != null) { "Can’t drawString with s == null" }
require(paint != null) { "Can’t drawString with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawString(_ptr, s, x, y, getPtr(font), getPtr(paint)) _nDrawString(_ptr, s, x, y, getPtr(font), getPtr(paint))
reachabilityBarrier(font) reachabilityBarrier(font)
...@@ -683,8 +655,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -683,8 +655,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawTextBlob(blob: TextBlob, x: Float, y: Float, paint: Paint): Canvas { fun drawTextBlob(blob: TextBlob, x: Float, y: Float, paint: Paint): Canvas {
require(blob != null) { "Can’t drawTextBlob with blob == null" }
require(paint != null) { "Can’t drawTextBlob with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawTextBlob(_ptr, getPtr(blob), x, y, getPtr(paint)) _nDrawTextBlob(_ptr, getPtr(blob), x, y, getPtr(paint))
reachabilityBarrier(blob) reachabilityBarrier(blob)
...@@ -693,9 +663,7 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -693,9 +663,7 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawTextLine(line: TextLine, x: Float, y: Float, paint: Paint): Canvas { fun drawTextLine(line: TextLine, x: Float, y: Float, paint: Paint): Canvas {
require(line != null) { "Can’t drawTextLine with line == null" } line.textBlob?.use { blob -> blob.let { drawTextBlob(it, x, y, paint) } }
require(paint != null) { "Can’t drawTextLine with paint == null" }
line.textBlob?.use { blob -> drawTextBlob(blob, x, y, paint) }
return this return this
} }
...@@ -797,11 +765,9 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -797,11 +765,9 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
mode: BlendMode, mode: BlendMode,
paint: Paint paint: Paint
): Canvas { ): Canvas {
require(positions != null) { "Can’t drawTriangles with positions == null" }
require(positions.size % 3 == 0) { "Expected positions.length % 3 == 0, got: " + positions.size } require(positions.size % 3 == 0) { "Expected positions.length % 3 == 0, got: " + positions.size }
require(colors == null || colors.size == positions.size) { "Expected colors.length == positions.length, got: " + colors!!.size + " != " + positions.size } require(colors == null || colors.size == positions.size) { "Expected colors.length == positions.length, got: " + colors!!.size + " != " + positions.size }
require(texCoords == null || texCoords.size == positions.size) { "Expected texCoords.length == positions.length, got: " + texCoords!!.size + " != " + positions.size } require(texCoords == null || texCoords.size == positions.size) { "Expected texCoords.length == positions.length, got: " + texCoords!!.size + " != " + positions.size }
require(paint != null) { "Can’t drawTriangles with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawVertices( _nDrawVertices(
_ptr, _ptr,
...@@ -903,11 +869,8 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -903,11 +869,8 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
mode: BlendMode, mode: BlendMode,
paint: Paint paint: Paint
): Canvas { ): Canvas {
require(positions != null) { "Can’t drawTriangleStrip with positions == null" }
require(colors == null || colors.size == positions.size) { "Expected colors.length == positions.length, got: " + colors!!.size + " != " + positions.size } require(colors == null || colors.size == positions.size) { "Expected colors.length == positions.length, got: " + colors!!.size + " != " + positions.size }
require(texCoords == null || texCoords.size == positions.size) { "Expected texCoords.length == positions.length, got: " + texCoords!!.size + " != " + positions.size } require(texCoords == null || texCoords.size == positions.size) { "Expected texCoords.length == positions.length, got: " + texCoords!!.size + " != " + positions.size }
require(mode != null) { "Can’t drawTriangles with mode == null" }
require(paint != null) { "Can’t drawTriangles with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawVertices( _nDrawVertices(
_ptr, _ptr,
...@@ -1136,13 +1099,9 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1136,13 +1099,9 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
mode: BlendMode, mode: BlendMode,
paint: Paint paint: Paint
): Canvas { ): Canvas {
require(cubics != null) { "Can’t drawPatch with cubics == null" }
require(cubics.size == 12) { "Expected cubics.length == 12, got: " + cubics.size } require(cubics.size == 12) { "Expected cubics.length == 12, got: " + cubics.size }
require(colors != null) { "Can’t drawPatch with colors == null" }
require(colors.size == 4) { "Expected colors.length == 4, got: " + colors.size } require(colors.size == 4) { "Expected colors.length == 4, got: " + colors.size }
require(texCoords == null || texCoords.size == 4) { "Expected texCoords.length == 4, got: " + texCoords!!.size } require(texCoords == null || texCoords.size == 4) { "Expected texCoords.length == 4, got: " + texCoords!!.size }
require(mode != null) { "Can’t drawPatch with mode == null" }
require(paint != null) { "Can’t drawPatch with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawPatch( _nDrawPatch(
_ptr, _ptr,
...@@ -1212,7 +1171,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1212,7 +1171,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
* @see [https://fiddle.skia.org/c/@Canvas_drawDrawable](https://fiddle.skia.org/c/@Canvas_drawDrawable) * @see [https://fiddle.skia.org/c/@Canvas_drawDrawable](https://fiddle.skia.org/c/@Canvas_drawDrawable)
*/ */
fun drawDrawable(drawable: Drawable, matrix: Matrix33?): Canvas { fun drawDrawable(drawable: Drawable, matrix: Matrix33?): Canvas {
require(drawable != null) { "Can’t drawDrawable with drawable == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawDrawable(_ptr, getPtr(drawable), matrix?.mat) _nDrawDrawable(_ptr, getPtr(drawable), matrix?.mat)
reachabilityBarrier(drawable) reachabilityBarrier(drawable)
...@@ -1226,7 +1184,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1226,7 +1184,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun drawPaint(paint: Paint): Canvas { fun drawPaint(paint: Paint): Canvas {
require(paint != null) { "Can’t drawPaint with paint == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nDrawPaint(_ptr, getPtr(paint)) _nDrawPaint(_ptr, getPtr(paint))
reachabilityBarrier(paint) reachabilityBarrier(paint)
...@@ -1242,7 +1199,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1242,7 +1199,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
* @see [https://fiddle.skia.org/c/@Canvas_setMatrix](https://fiddle.skia.org/c/@Canvas_setMatrix) * @see [https://fiddle.skia.org/c/@Canvas_setMatrix](https://fiddle.skia.org/c/@Canvas_setMatrix)
*/ */
fun setMatrix(matrix: Matrix33): Canvas { fun setMatrix(matrix: Matrix33): Canvas {
require(matrix != null) { "Can’t setMatrix with matrix == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nSetMatrix(_ptr, matrix.mat) _nSetMatrix(_ptr, matrix.mat)
return this return this
...@@ -1276,8 +1232,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1276,8 +1232,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
get() = localToDevice.asMatrix33() get() = localToDevice.asMatrix33()
fun clipRect(r: Rect, mode: ClipMode, antiAlias: Boolean): Canvas { fun clipRect(r: Rect, mode: ClipMode, antiAlias: Boolean): Canvas {
require(r != null) { "Can’t clipRect with r == null" }
require(mode != null) { "Can’t clipRect with mode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nClipRect(_ptr, r.left, r.top, r.right, r.bottom, mode.ordinal, antiAlias) _nClipRect(_ptr, r.left, r.top, r.right, r.bottom, mode.ordinal, antiAlias)
return this return this
...@@ -1296,8 +1250,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1296,8 +1250,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun clipRRect(r: RRect, mode: ClipMode, antiAlias: Boolean): Canvas { fun clipRRect(r: RRect, mode: ClipMode, antiAlias: Boolean): Canvas {
require(r != null) { "Can’t clipRRect with r == null" }
require(mode != null) { "Can’t clipRRect with mode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nClipRRect(_ptr, r.left, r.top, r.right, r.bottom, r.radii, mode.ordinal, antiAlias) _nClipRRect(_ptr, r.left, r.top, r.right, r.bottom, r.radii, mode.ordinal, antiAlias)
return this return this
...@@ -1316,8 +1268,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1316,8 +1268,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun clipPath(p: Path, mode: ClipMode, antiAlias: Boolean): Canvas { fun clipPath(p: Path, mode: ClipMode, antiAlias: Boolean): Canvas {
require(p != null) { "Can’t clipPath with p == null" }
require(mode != null) { "Can’t clipPath with mode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nClipPath(_ptr, getPtr(p), mode.ordinal, antiAlias) _nClipPath(_ptr, getPtr(p), mode.ordinal, antiAlias)
reachabilityBarrier(p) reachabilityBarrier(p)
...@@ -1337,8 +1287,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1337,8 +1287,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun clipRegion(r: Region, mode: ClipMode): Canvas { fun clipRegion(r: Region, mode: ClipMode): Canvas {
require(r != null) { "Can’t clipRegion with r == null" }
require(mode != null) { "Can’t clipRegion with mode == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nClipRegion(_ptr, getPtr(r), mode.ordinal) _nClipRegion(_ptr, getPtr(r), mode.ordinal)
reachabilityBarrier(r) reachabilityBarrier(r)
...@@ -1370,14 +1318,12 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1370,14 +1318,12 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
} }
fun concat(matrix: Matrix33): Canvas { fun concat(matrix: Matrix33): Canvas {
require(matrix != null) { "Can’t concat with matrix == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nConcat(_ptr, matrix.mat) _nConcat(_ptr, matrix.mat)
return this return this
} }
fun concat(matrix: Matrix44): Canvas { fun concat(matrix: Matrix44): Canvas {
require(matrix != null) { "Can’t concat with matrix == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nConcat44(_ptr, matrix.mat) _nConcat44(_ptr, matrix.mat)
return this return this
...@@ -1430,7 +1376,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1430,7 +1376,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
*/ */
fun readPixels(bitmap: Bitmap, srcX: Int, srcY: Int): Boolean { fun readPixels(bitmap: Bitmap, srcX: Int, srcY: Int): Boolean {
return try { return try {
require(bitmap != null) { "Can’t readPixels with bitmap == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nReadPixels( _nReadPixels(
_ptr, _ptr,
...@@ -1496,7 +1441,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val ...@@ -1496,7 +1441,6 @@ open class Canvas internal constructor(ptr: Long, managed: Boolean, internal val
*/ */
fun writePixels(bitmap: Bitmap, x: Int, y: Int): Boolean { fun writePixels(bitmap: Bitmap, x: Int, y: Int): Boolean {
return try { return try {
require(bitmap != null) { "Can’t writePixels with bitmap == null" }
Stats.onNativeCall() Stats.onNativeCall()
_nWritePixels( _nWritePixels(
_ptr, _ptr,
......
...@@ -6,6 +6,7 @@ import org.jetbrains.skia.impl.Managed ...@@ -6,6 +6,7 @@ import org.jetbrains.skia.impl.Managed
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 org.jetbrains.skia.impl.reachabilityBarrier import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
/** /**
* Data holds an immutable data buffer. * Data holds an immutable data buffer.
...@@ -35,15 +36,15 @@ class Data internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR) ...@@ -35,15 +36,15 @@ class Data internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR)
return Data(_nMakeEmpty()) return Data(_nMakeEmpty())
} }
external fun _nGetFinalizer(): Long @JvmStatic external fun _nGetFinalizer(): Long
external fun _nSize(ptr: Long): Long @JvmStatic external fun _nSize(ptr: Long): Long
external fun _nBytes(ptr: Long, offset: Long, length: Long): ByteArray @JvmStatic external fun _nBytes(ptr: Long, offset: Long, length: Long): ByteArray
external fun _nEquals(ptr: Long, otherPtr: Long): Boolean @JvmStatic external fun _nEquals(ptr: Long, otherPtr: Long): Boolean
external fun _nToByteBuffer(ptr: Long): ByteBuffer @JvmStatic external fun _nToByteBuffer(ptr: Long): ByteBuffer
external fun _nMakeFromBytes(bytes: ByteArray?, offset: Long, length: Long): Long @JvmStatic external fun _nMakeFromBytes(bytes: ByteArray?, offset: Long, length: Long): Long
external fun _nMakeFromFileName(path: String?): Long @JvmStatic external fun _nMakeFromFileName(path: String?): Long
external fun _nMakeSubset(ptr: Long, offset: Long, length: Long): Long @JvmStatic external fun _nMakeSubset(ptr: Long, offset: Long, length: Long): Long
external fun _nMakeEmpty(): Long @JvmStatic external fun _nMakeEmpty(): Long
init { init {
staticLoad() staticLoad()
......
package org.jetbrains.skia package org.jetbrains.skia
class IRange(internal val start: Int, internal val end: Int) { class IRange(val start: Int, val end: Int) {
override fun equals(o: Any?): Boolean { override fun equals(o: Any?): Boolean {
if (o === this) return true if (o === this) return true
......
...@@ -162,6 +162,8 @@ class Paint : Managed { ...@@ -162,6 +162,8 @@ class Paint : Managed {
} }
/** /**
* Requests, but does not require, that edge pixels draw opaque or with partial transparency.
*
* Returns true if pixels on the active edges of Path may be drawn with partial transparency. * Returns true if pixels on the active edges of Path may be drawn with partial transparency.
* *
* @return antialiasing state * @return antialiasing state
...@@ -189,15 +191,20 @@ class Paint : Managed { ...@@ -189,15 +191,20 @@ class Paint : Managed {
} }
/** /**
* Requests, but does not require, to distribute color error.
*
* @return true if color error may be distributed to smooth color transition. * @return true if color error may be distributed to smooth color transition.
*/ */
val isDither: Boolean var isDither: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nIsDither(_ptr) _nIsDither(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setDither(value)
}
/** /**
* Requests, but does not require, to distribute color error. * Requests, but does not require, to distribute color error.
...@@ -212,6 +219,12 @@ class Paint : Managed { ...@@ -212,6 +219,12 @@ class Paint : Managed {
} }
/** /**
* Sets whether the geometry is filled, stroked, or filled and stroked.
*
* @see [https://fiddle.skia.org/c/@Paint_setStyle](https://fiddle.skia.org/c/@Paint_setStyle)
*
* @see [https://fiddle.skia.org/c/@Stroke_Width](https://fiddle.skia.org/c/@Stroke_Width)
*
* @return whether the geometry is filled, stroked, or filled and stroked. * @return whether the geometry is filled, stroked, or filled and stroked.
*/ */
var mode: PaintMode var mode: PaintMode
...@@ -233,7 +246,6 @@ class Paint : Managed { ...@@ -233,7 +246,6 @@ class Paint : Managed {
* @see [https://fiddle.skia.org/c/@Stroke_Width](https://fiddle.skia.org/c/@Stroke_Width) * @see [https://fiddle.skia.org/c/@Stroke_Width](https://fiddle.skia.org/c/@Stroke_Width)
*/ */
fun setMode(style: PaintMode): Paint { fun setMode(style: PaintMode): Paint {
require(style != null) { "Paint::setMode expected style != null" }
Stats.onNativeCall() Stats.onNativeCall()
_nSetMode(_ptr, style.ordinal) _nSetMode(_ptr, style.ordinal)
return this return this
...@@ -246,10 +258,16 @@ class Paint : Managed { ...@@ -246,10 +258,16 @@ class Paint : Managed {
* @return this * @return this
*/ */
fun setStroke(value: Boolean): Paint { fun setStroke(value: Boolean): Paint {
return setMode(if (value) PaintMode.STROKE else PaintMode.FILL) mode = (if (value) PaintMode.STROKE else PaintMode.FILL)
return this
} }
/** /**
* Sets alpha and RGB used when stroking and filling. The color is a 32-bit value,
* unpremultiplied, packing 8-bit components for alpha, red, blue, and green.
*
* @see [https://fiddle.skia.org/c/@Paint_setColor](https://fiddle.skia.org/c/@Paint_setColor)
*
* Retrieves alpha and RGB, unpremultiplied, packed into 32 bits. * Retrieves alpha and RGB, unpremultiplied, packed into 32 bits.
* Use helpers [Color.getA], [Color.getR], [Color.getG], and [Color.getB] to extract * Use helpers [Color.getA], [Color.getR], [Color.getG], and [Color.getB] to extract
* a color component. * a color component.
...@@ -268,6 +286,23 @@ class Paint : Managed { ...@@ -268,6 +286,23 @@ class Paint : Managed {
} }
/** /**
* Sets alpha and RGB used when stroking and filling. The color is a 32-bit value,
* unpremultiplied, packing 8-bit components for alpha, red, blue, and green.
*
* @param color unpremultiplied ARGB
*
* @see [https://fiddle.skia.org/c/@Paint_setColor](https://fiddle.skia.org/c/@Paint_setColor)
*/
fun setColor(color: Int): Paint {
Stats.onNativeCall()
_nSetColor(_ptr, color)
return this
}
/**
* Sets alpha and RGB used when stroking and filling. The color is four floating
* point values, unpremultiplied. The color values are interpreted as being in sRGB.
*
* Retrieves alpha and RGB, unpremultiplied, as four floating point values. RGB are * Retrieves alpha and RGB, unpremultiplied, as four floating point values. RGB are
* extended sRGB values (sRGB gamut, and encoded with the sRGB transfer function). * extended sRGB values (sRGB gamut, and encoded with the sRGB transfer function).
* *
...@@ -284,20 +319,6 @@ class Paint : Managed { ...@@ -284,20 +319,6 @@ class Paint : Managed {
setColor4f(value) setColor4f(value)
} }
/**
* Sets alpha and RGB used when stroking and filling. The color is a 32-bit value,
* unpremultiplied, packing 8-bit components for alpha, red, blue, and green.
*
* @param color unpremultiplied ARGB
*
* @see [https://fiddle.skia.org/c/@Paint_setColor](https://fiddle.skia.org/c/@Paint_setColor)
*/
fun setColor(color: Int): Paint {
Stats.onNativeCall()
_nSetColor(_ptr, color)
return this
}
/** /**
* Sets alpha and RGB used when stroking and filling. The color is four floating * Sets alpha and RGB used when stroking and filling. The color is four floating
* point values, unpremultiplied. The color values are interpreted as being in sRGB. * point values, unpremultiplied. The color values are interpreted as being in sRGB.
...@@ -321,7 +342,6 @@ class Paint : Managed { ...@@ -321,7 +342,6 @@ class Paint : Managed {
*/ */
fun setColor4f(color: Color4f, colorSpace: ColorSpace?): Paint { fun setColor4f(color: Color4f, colorSpace: ColorSpace?): Paint {
return try { return try {
require(color != null) { "Paint::setColor4f expected color != null" }
Stats.onNativeCall() Stats.onNativeCall()
_nSetColor4f( _nSetColor4f(
_ptr, _ptr,
...@@ -366,7 +386,8 @@ class Paint : Managed { ...@@ -366,7 +386,8 @@ class Paint : Managed {
* @return this * @return this
*/ */
fun setAlphaf(a: Float): Paint { fun setAlphaf(a: Float): Paint {
return setColor4f(color4f.withA(a)) setColor4f(color4f.withA(a), null)
return this
} }
/** /**
...@@ -403,6 +424,15 @@ class Paint : Managed { ...@@ -403,6 +424,15 @@ class Paint : Managed {
} }
/** /**
* Sets the thickness of the pen used by the paint to outline the shape.
* A stroke-width of zero is treated as "hairline" width. Hairlines are always exactly one
* pixel wide in device space (their thickness does not change as the canvas is scaled).
* Negative stroke-widths are invalid; setting a negative width will have no effect.
*
* @see [https://fiddle.skia.org/c/@Miter_Limit](https://fiddle.skia.org/c/@Miter_Limit)
*
* @see [https://fiddle.skia.org/c/@Paint_setStrokeWidth](https://fiddle.skia.org/c/@Paint_setStrokeWidth)
*
* Returns the thickness of the pen used by Paint to outline the shape. * Returns the thickness of the pen used by Paint to outline the shape.
* *
* @return zero for hairline, greater than zero for pen thickness * @return zero for hairline, greater than zero for pen thickness
...@@ -437,6 +467,12 @@ class Paint : Managed { ...@@ -437,6 +467,12 @@ class Paint : Managed {
} }
/** /**
* Sets the limit at which a sharp corner is drawn beveled.
* Valid values are zero and greater.
* Has no effect if miter is less than zero.
*
* @see [https://fiddle.skia.org/c/@Paint_setStrokeMiter](https://fiddle.skia.org/c/@Paint_setStrokeMiter)
*
* Returns the limit at which a sharp corner is drawn beveled. * Returns the limit at which a sharp corner is drawn beveled.
* *
* @return zero and greater miter limit * @return zero and greater miter limit
...@@ -469,6 +505,12 @@ class Paint : Managed { ...@@ -469,6 +505,12 @@ class Paint : Managed {
} }
/** /**
* Sets the geometry drawn at the beginning and end of strokes.
*
* @see [https://fiddle.skia.org/c/@Paint_setStrokeCap_a](https://fiddle.skia.org/c/@Paint_setStrokeCap_a)
*
* @see [https://fiddle.skia.org/c/@Paint_setStrokeCap_b](https://fiddle.skia.org/c/@Paint_setStrokeCap_b)
*
* @return the geometry drawn at the beginning and end of strokes. * @return the geometry drawn at the beginning and end of strokes.
*/ */
var strokeCap: PaintStrokeCap var strokeCap: PaintStrokeCap
...@@ -492,13 +534,17 @@ class Paint : Managed { ...@@ -492,13 +534,17 @@ class Paint : Managed {
* @see [https://fiddle.skia.org/c/@Paint_setStrokeCap_b](https://fiddle.skia.org/c/@Paint_setStrokeCap_b) * @see [https://fiddle.skia.org/c/@Paint_setStrokeCap_b](https://fiddle.skia.org/c/@Paint_setStrokeCap_b)
*/ */
fun setStrokeCap(cap: PaintStrokeCap): Paint { fun setStrokeCap(cap: PaintStrokeCap): Paint {
require(cap != null) { "Paint::setStrokeCap expected cap != null" }
Stats.onNativeCall() Stats.onNativeCall()
_nSetStrokeCap(_ptr, cap.ordinal) _nSetStrokeCap(_ptr, cap.ordinal)
return this return this
} }
/** /**
* Sets the geometry drawn at the corners of strokes.
*
* @see [https://fiddle.skia.org/c/@Paint_setStrokeJoin](https://fiddle.skia.org/c/@Paint_setStrokeJoin)
*
* @return the geometry drawn at the corners of strokes. * @return the geometry drawn at the corners of strokes.
*/ */
var strokeJoin: PaintStrokeJoin var strokeJoin: PaintStrokeJoin
...@@ -520,7 +566,6 @@ class Paint : Managed { ...@@ -520,7 +566,6 @@ class Paint : Managed {
* @see [https://fiddle.skia.org/c/@Paint_setStrokeJoin](https://fiddle.skia.org/c/@Paint_setStrokeJoin) * @see [https://fiddle.skia.org/c/@Paint_setStrokeJoin](https://fiddle.skia.org/c/@Paint_setStrokeJoin)
*/ */
fun setStrokeJoin(join: PaintStrokeJoin): Paint { fun setStrokeJoin(join: PaintStrokeJoin): Paint {
require(join != null) { "Paint::setStrokeJoin expected join != null" }
Stats.onNativeCall() Stats.onNativeCall()
_nSetStrokeJoin(_ptr, join.ordinal) _nSetStrokeJoin(_ptr, join.ordinal)
return this return this
...@@ -547,7 +592,6 @@ class Paint : Managed { ...@@ -547,7 +592,6 @@ class Paint : Managed {
*/ */
fun getFillPath(src: Path, cull: Rect?, resScale: Float): Path { fun getFillPath(src: Path, cull: Rect?, resScale: Float): Path {
return try { return try {
require(src != null) { "Paint::getFillPath expected src != null" }
Stats.onNativeCall() Stats.onNativeCall()
if (cull == null) org.jetbrains.skia.Path( if (cull == null) org.jetbrains.skia.Path(
_nGetFillPath( _nGetFillPath(
...@@ -573,6 +617,12 @@ class Paint : Managed { ...@@ -573,6 +617,12 @@ class Paint : Managed {
} }
/** /**
* @param shader how geometry is filled with color; if null, color is used instead
*
* @see [https://fiddle.skia.org/c/@Color_Filter_Methods](https://fiddle.skia.org/c/@Color_Filter_Methods)
*
* @see [https://fiddle.skia.org/c/@Paint_setShader](https://fiddle.skia.org/c/@Paint_setShader)
*
* @return [Shader] or null * @return [Shader] or null
* @see [https://fiddle.skia.org/c/@Paint_refShader](https://fiddle.skia.org/c/@Paint_refShader) * @see [https://fiddle.skia.org/c/@Paint_refShader](https://fiddle.skia.org/c/@Paint_refShader)
*/ */
...@@ -606,6 +656,12 @@ class Paint : Managed { ...@@ -606,6 +656,12 @@ class Paint : Managed {
} }
/** /**
* @param colorFilter [ColorFilter] to apply to subsequent draw
*
* @see [https://fiddle.skia.org/c/@Blend_Mode_Methods](https://fiddle.skia.org/c/@Blend_Mode_Methods)
*
* @see [https://fiddle.skia.org/c/@Paint_setColorFilter](https://fiddle.skia.org/c/@Paint_setColorFilter)
*
* @return [ColorFilter] or null * @return [ColorFilter] or null
* @see [https://fiddle.skia.org/c/@Paint_refColorFilter](https://fiddle.skia.org/c/@Paint_refColorFilter) * @see [https://fiddle.skia.org/c/@Paint_refColorFilter](https://fiddle.skia.org/c/@Paint_refColorFilter)
*/ */
...@@ -642,6 +698,9 @@ class Paint : Managed { ...@@ -642,6 +698,9 @@ class Paint : Managed {
} }
/** /**
* Sets SkBlendMode to mode. Does not check for valid input.
* BlendMode used to combine source color and destination.
*
* Returns BlendMode. By default, returns [BlendMode.SRC_OVER]. * Returns BlendMode. By default, returns [BlendMode.SRC_OVER].
* *
* @return mode used to combine source color with destination color * @return mode used to combine source color with destination color
...@@ -657,12 +716,6 @@ class Paint : Managed { ...@@ -657,12 +716,6 @@ class Paint : Managed {
setBlendMode(value) setBlendMode(value)
} }
/**
* @return true if BlendMode is BlendMode.SRC_OVER, the default.
*/
val isSrcOver: Boolean
get() = blendMode == BlendMode.SRC_OVER
/** /**
* Sets SkBlendMode to mode. Does not check for valid input. * Sets SkBlendMode to mode. Does not check for valid input.
* *
...@@ -676,6 +729,18 @@ class Paint : Managed { ...@@ -676,6 +729,18 @@ class Paint : Managed {
} }
/** /**
* @return true if BlendMode is BlendMode.SRC_OVER, the default.
*/
val isSrcOver: Boolean
get() = blendMode == BlendMode.SRC_OVER
/**
* Replace [Path] with a modification when drawn
*
* @see [https://fiddle.skia.org/c/@Mask_Filter_Methods](https://fiddle.skia.org/c/@Mask_Filter_Methods)
*
* @see [https://fiddle.skia.org/c/@Paint_setPathEffect](https://fiddle.skia.org/c/@Paint_setPathEffect)
*
* @return [PathEffect] or null * @return [PathEffect] or null
* @see [https://fiddle.skia.org/c/@Paint_refPathEffect](https://fiddle.skia.org/c/@Paint_refPathEffect) * @see [https://fiddle.skia.org/c/@Paint_refPathEffect](https://fiddle.skia.org/c/@Paint_refPathEffect)
*/ */
...@@ -708,11 +773,18 @@ class Paint : Managed { ...@@ -708,11 +773,18 @@ class Paint : Managed {
} }
} }
/** /**
* maskFilter modifies clipping mask generated from drawn geometry
*
* @see [https://fiddle.skia.org/c/@Paint_setMaskFilter](https://fiddle.skia.org/c/@Paint_setMaskFilter)
*
* @see [https://fiddle.skia.org/c/@Typeface_Methods](https://fiddle.skia.org/c/@Typeface_Methods)
*
* @return [MaskFilter] if previously set, null otherwise * @return [MaskFilter] if previously set, null otherwise
* @see [https://fiddle.skia.org/c/@Paint_refMaskFilter](https://fiddle.skia.org/c/@Paint_refMaskFilter) * @see [https://fiddle.skia.org/c/@Paint_refMaskFilter](https://fiddle.skia.org/c/@Paint_refMaskFilter)
*/ */
val maskFilter: MaskFilter? var maskFilter: MaskFilter?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val maskFilterPtr = _nGetMaskFilter(_ptr) val maskFilterPtr = _nGetMaskFilter(_ptr)
...@@ -720,6 +792,9 @@ class Paint : Managed { ...@@ -720,6 +792,9 @@ class Paint : Managed {
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setMaskFilter(value)
}
/** /**
* @param maskFilter modifies clipping mask generated from drawn geometry * @param maskFilter modifies clipping mask generated from drawn geometry
...@@ -743,10 +818,16 @@ class Paint : Managed { ...@@ -743,10 +818,16 @@ class Paint : Managed {
} }
/** /**
* imageFilter how SkImage is sampled when transformed
*
* @see [https://fiddle.skia.org/c/@Draw_Looper_Methods](https://fiddle.skia.org/c/@Draw_Looper_Methods)
*
* @see [https://fiddle.skia.org/c/@Paint_setImageFilter](https://fiddle.skia.org/c/@Paint_setImageFilter)
*
* @return [ImageFilter] or null * @return [ImageFilter] or null
* @see [https://fiddle.skia.org/c/@Paint_refImageFilter](https://fiddle.skia.org/c/@Paint_refImageFilter) * @see [https://fiddle.skia.org/c/@Paint_refImageFilter](https://fiddle.skia.org/c/@Paint_refImageFilter)
*/ */
val imageFilter: ImageFilter? var imageFilter: ImageFilter?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val imageFilterPtr = _nGetImageFilter(_ptr) val imageFilterPtr = _nGetImageFilter(_ptr)
...@@ -754,6 +835,9 @@ class Paint : Managed { ...@@ -754,6 +835,9 @@ class Paint : Managed {
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setImageFilter(value)
}
/** /**
* @param imageFilter how SkImage is sampled when transformed * @param imageFilter how SkImage is sampled when transformed
......
...@@ -408,7 +408,6 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR), ...@@ -408,7 +408,6 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR),
} }
/** /**
*
* Interpolates between Path with [Point] array of equal size. * Interpolates between Path with [Point] array of equal size.
* Copy verb array and weights to out, and set out Point array to a weighted * Copy verb array and weights to out, and set out Point array to a weighted
* average of this Point array and ending Point array, using the formula: * average of this Point array and ending Point array, using the formula:
...@@ -601,6 +600,20 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR), ...@@ -601,6 +600,20 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR),
} }
/** /**
*
* Specifies whether Path is volatile; whether it will be altered or discarded
* by the caller after it is drawn. Path by default have volatile set false, allowing
* SkBaseDevice to attach a cache of data which speeds repeated drawing.
*
* Mark temporary paths, discarded or modified after use, as volatile
* to inform SkBaseDevice that the path need not be cached.
*
* Mark animating Path volatile to improve performance.
* Mark unchanging Path non-volatile to improve repeated rendering.
*
* raster surface Path draws are affected by volatile for some shadows.
* GPU surface Path draws are affected by volatile for some shadows and concave geometries.
*
* Returns true if the path is volatile; it will not be altered or discarded * Returns true if the path is volatile; it will not be altered or discarded
* by the caller after it is drawn. Path by default have volatile set false, allowing * by the caller after it is drawn. Path by default have volatile set false, allowing
* [Surface] to attach a cache of data which speeds repeated drawing. If true, [Surface] * [Surface] to attach a cache of data which speeds repeated drawing. If true, [Surface]
...@@ -608,13 +621,17 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR), ...@@ -608,13 +621,17 @@ class Path internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.PTR),
* *
* @return true if caller will alter Path after drawing * @return true if caller will alter Path after drawing
*/ */
val isVolatile: Boolean var isVolatile: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nIsVolatile(_ptr) _nIsVolatile(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
Stats.onNativeCall()
_nSetVolatile(_ptr, value)
}
/** /**
* *
......
...@@ -5,6 +5,7 @@ import org.jetbrains.skia.impl.Library.Companion.staticLoad ...@@ -5,6 +5,7 @@ import org.jetbrains.skia.impl.Library.Companion.staticLoad
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 org.jetbrains.skia.impl.reachabilityBarrier import org.jetbrains.skia.impl.reachabilityBarrier
import kotlin.jvm.JvmStatic
class PathSegmentIterator internal constructor(val _path: Path?, ptr: Long) : Managed(ptr, _nGetFinalizer()), class PathSegmentIterator internal constructor(val _path: Path?, ptr: Long) : Managed(ptr, _nGetFinalizer()),
MutableIterator<PathSegment?> { MutableIterator<PathSegment?> {
...@@ -21,9 +22,9 @@ class PathSegmentIterator internal constructor(val _path: Path?, ptr: Long) : Ma ...@@ -21,9 +22,9 @@ class PathSegmentIterator internal constructor(val _path: Path?, ptr: Long) : Ma
} }
} }
external fun _nMake(pathPtr: Long, forceClose: Boolean): Long @JvmStatic external fun _nMake(pathPtr: Long, forceClose: Boolean): Long
external fun _nGetFinalizer(): Long @JvmStatic external fun _nGetFinalizer(): Long
external fun _nNext(ptr: Long): PathSegment? @JvmStatic external fun _nNext(ptr: Long): PathSegment?
init { init {
staticLoad() staticLoad()
......
...@@ -2,7 +2,7 @@ package org.jetbrains.skia ...@@ -2,7 +2,7 @@ package org.jetbrains.skia
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
open class Rect internal constructor(val left: Float, val top: Float, val right: Float, val bottom: Float) { open class Rect constructor(val left: Float, val top: Float, val right: Float, val bottom: Float) {
val width: Float val width: Float
get() = right - left get() = right - left
val height: Float val height: Float
......
...@@ -48,13 +48,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -48,13 +48,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
} }
} }
val strutStyle: StrutStyle var strutStyle: StrutStyle
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
StrutStyle(_nGetStrutStyle(_ptr)) StrutStyle(_nGetStrutStyle(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setStrutStyle(value)
}
fun setStrutStyle(s: StrutStyle?): ParagraphStyle { fun setStrutStyle(s: StrutStyle?): ParagraphStyle {
return try { return try {
...@@ -66,13 +69,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -66,13 +69,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
} }
} }
val textStyle: TextStyle var textStyle: TextStyle
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
TextStyle(_nGetTextStyle(_ptr)) TextStyle(_nGetTextStyle(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setTextStyle(value)
}
fun setTextStyle(style: TextStyle?): ParagraphStyle { fun setTextStyle(style: TextStyle?): ParagraphStyle {
return try { return try {
...@@ -84,13 +90,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -84,13 +90,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
} }
} }
val direction: Direction var direction: Direction
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
Direction.values()[_nGetDirection(_ptr)] Direction.values()[_nGetDirection(_ptr)]
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setDirection(value)
}
fun setDirection(style: Direction): ParagraphStyle { fun setDirection(style: Direction): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -98,13 +107,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -98,13 +107,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
return this return this
} }
val alignment: Alignment var alignment: Alignment
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
Alignment.values()[_nGetAlignment(_ptr)] Alignment.values()[_nGetAlignment(_ptr)]
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setAlignment(value)
}
fun setAlignment(alignment: Alignment): ParagraphStyle { fun setAlignment(alignment: Alignment): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -112,13 +124,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -112,13 +124,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
return this return this
} }
val maxLinesCount: Long var maxLinesCount: Long
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetMaxLinesCount(_ptr) _nGetMaxLinesCount(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setMaxLinesCount(value)
}
fun setMaxLinesCount(count: Long): ParagraphStyle { fun setMaxLinesCount(count: Long): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -126,13 +141,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -126,13 +141,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
return this return this
} }
val ellipsis: String var ellipsis: String
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetEllipsis(_ptr) _nGetEllipsis(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setEllipsis(value)
}
fun setEllipsis(ellipsis: String?): ParagraphStyle { fun setEllipsis(ellipsis: String?): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -140,13 +158,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -140,13 +158,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
return this return this
} }
val height: Float var height: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetHeight(_ptr) _nGetHeight(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeight(value)
}
fun setHeight(height: Float): ParagraphStyle { fun setHeight(height: Float): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -154,13 +175,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -154,13 +175,16 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
return this return this
} }
val heightMode: HeightMode var heightMode: HeightMode
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
HeightMode.values()[_nGetHeightMode(_ptr)] HeightMode.values()[_nGetHeightMode(_ptr)]
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeightMode(value)
}
fun setHeightMode(behavior: HeightMode): ParagraphStyle { fun setHeightMode(behavior: HeightMode): ParagraphStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -175,6 +199,7 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) { ...@@ -175,6 +199,7 @@ class ParagraphStyle : Managed(_nMake(), _FinalizerHolder.PTR) {
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
val isHintingEnabled: Boolean val isHintingEnabled: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
......
...@@ -64,13 +64,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -64,13 +64,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val fontStyle: FontStyle var fontStyle: FontStyle
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
FontStyle(_nGetFontStyle(_ptr)) FontStyle(_nGetFontStyle(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setFontStyle(value)
}
fun setFontStyle(style: FontStyle): StrutStyle { fun setFontStyle(style: FontStyle): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -78,13 +81,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -78,13 +81,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val fontSize: Float var fontSize: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetFontSize(_ptr) _nGetFontSize(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setFontSize(value)
}
fun setFontSize(value: Float): StrutStyle { fun setFontSize(value: Float): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -92,13 +98,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -92,13 +98,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val height: Float var height: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetHeight(_ptr) _nGetHeight(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeight(value)
}
fun setHeight(value: Float): StrutStyle { fun setHeight(value: Float): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -106,13 +115,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -106,13 +115,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val leading: Float var leading: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetLeading(_ptr) _nGetLeading(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setLeading(value)
}
fun setLeading(value: Float): StrutStyle { fun setLeading(value: Float): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -120,13 +132,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -120,13 +132,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val isEnabled: Boolean var isEnabled: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nIsEnabled(_ptr) _nIsEnabled(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setEnabled(value)
}
fun setEnabled(value: Boolean): StrutStyle { fun setEnabled(value: Boolean): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -134,13 +149,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -134,13 +149,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val isHeightForced: Boolean var isHeightForced: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nIsHeightForced(_ptr) _nIsHeightForced(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeightForced(value)
}
fun setHeightForced(value: Boolean): StrutStyle { fun setHeightForced(value: Boolean): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -148,13 +166,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder ...@@ -148,13 +166,16 @@ class StrutStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder
return this return this
} }
val isHeightOverridden: Boolean var isHeightOverridden: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nIsHeightOverridden(_ptr) _nIsHeightOverridden(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeightOverridden(value)
}
fun setHeightOverridden(value: Boolean): StrutStyle { fun setHeightOverridden(value: Boolean): StrutStyle {
Stats.onNativeCall() Stats.onNativeCall()
......
...@@ -97,13 +97,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -97,13 +97,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} }
} }
val color: Int var color: Int
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetColor(_ptr) _nGetColor(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setColor(value)
}
fun setColor(color: Int): TextStyle { fun setColor(color: Int): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -111,7 +114,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -111,7 +114,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val foreground: Paint? var foreground: Paint?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nGetForeground(_ptr) val ptr = _nGetForeground(_ptr)
...@@ -119,6 +122,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -119,6 +122,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setForeground(value)
}
fun setForeground(paint: Paint?): TextStyle { fun setForeground(paint: Paint?): TextStyle {
return try { return try {
...@@ -133,7 +139,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -133,7 +139,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} }
} }
val background: Paint? var background: Paint?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nGetBackground(_ptr) val ptr = _nGetBackground(_ptr)
...@@ -141,6 +147,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -141,6 +147,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setBackground(value)
}
fun setBackground(paint: Paint?): TextStyle { fun setBackground(paint: Paint?): TextStyle {
return try { return try {
...@@ -155,13 +164,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -155,13 +164,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} }
} }
val decorationStyle: org.jetbrains.skia.paragraph.DecorationStyle var decorationStyle: org.jetbrains.skia.paragraph.DecorationStyle
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetDecorationStyle(_ptr) _nGetDecorationStyle(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setDecorationStyle(value)
}
fun setDecorationStyle(d: DecorationStyle): TextStyle { fun setDecorationStyle(d: DecorationStyle): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -178,13 +190,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -178,13 +190,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val fontStyle: FontStyle var fontStyle: FontStyle
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
FontStyle(_nGetFontStyle(_ptr)) FontStyle(_nGetFontStyle(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setFontStyle(value)
}
fun setFontStyle(s: FontStyle): TextStyle { fun setFontStyle(s: FontStyle): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -242,13 +257,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -242,13 +257,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val fontSize: Float var fontSize: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetFontSize(_ptr) _nGetFontSize(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setFontSize(value)
}
fun setFontSize(size: Float): TextStyle { fun setFontSize(size: Float): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -256,13 +274,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -256,13 +274,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val fontFamilies: Array<String> var fontFamilies: Array<String>
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetFontFamilies(_ptr) _nGetFontFamilies(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setFontFamilies(value)
}
fun setFontFamily(family: String): TextStyle { fun setFontFamily(family: String): TextStyle {
return setFontFamilies(arrayOf(family)) return setFontFamilies(arrayOf(family))
...@@ -274,13 +295,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -274,13 +295,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val height: Float? var height: Float?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetHeight(_ptr) _nGetHeight(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setHeight(value)
}
fun setHeight(height: Float?): TextStyle { fun setHeight(height: Float?): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -288,13 +312,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -288,13 +312,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val letterSpacing: Float var letterSpacing: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetLetterSpacing(_ptr) _nGetLetterSpacing(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setLetterSpacing(value)
}
fun setLetterSpacing(letterSpacing: Float): TextStyle { fun setLetterSpacing(letterSpacing: Float): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -302,13 +329,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -302,13 +329,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val wordSpacing: Float var wordSpacing: Float
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetWordSpacing(_ptr) _nGetWordSpacing(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setWordSpacing(value)
}
fun setWordSpacing(wordSpacing: Float): TextStyle { fun setWordSpacing(wordSpacing: Float): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -316,7 +346,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -316,7 +346,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val typeface: Typeface? var typeface: Typeface?
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
val ptr = _nGetTypeface(_ptr) val ptr = _nGetTypeface(_ptr)
...@@ -324,6 +354,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -324,6 +354,9 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setTypeface(value)
}
fun setTypeface(typeface: Typeface?): TextStyle { fun setTypeface(typeface: Typeface?): TextStyle {
return try { return try {
...@@ -338,13 +371,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -338,13 +371,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} }
} }
val locale: String var locale: String
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetLocale(_ptr) _nGetLocale(_ptr)
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setLocale(value)
}
fun setLocale(locale: String?): TextStyle { fun setLocale(locale: String?): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -352,13 +388,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -352,13 +388,16 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
return this return this
} }
val baselineMode: BaselineMode var baselineMode: BaselineMode
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
BaselineMode.values().get(_nGetBaselineMode(_ptr)) BaselineMode.values().get(_nGetBaselineMode(_ptr))
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
set(value) {
setBaselineMode(value)
}
fun setBaselineMode(baseline: BaselineMode): TextStyle { fun setBaselineMode(baseline: BaselineMode): TextStyle {
Stats.onNativeCall() Stats.onNativeCall()
...@@ -373,6 +412,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder. ...@@ -373,6 +412,7 @@ class TextStyle internal constructor(ptr: Long) : Managed(ptr, _FinalizerHolder.
} finally { } finally {
reachabilityBarrier(this) reachabilityBarrier(this)
} }
val isPlaceholder: Boolean val isPlaceholder: Boolean
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
......
package org.jetbrains.skia.svg package org.jetbrains.skia.svg
class SVGLength(internal val value: Float, unit: SVGLengthUnit) { class SVGLength(val value: Float, unit: SVGLengthUnit) {
internal val _unit: SVGLengthUnit internal val _unit: SVGLengthUnit
......
...@@ -25,7 +25,6 @@ class SVGLengthContext @JvmOverloads constructor( ...@@ -25,7 +25,6 @@ class SVGLengthContext @JvmOverloads constructor(
height.toDouble() height.toDouble()
) / Math.sqrt(2.0) / 100.0).toFloat() ) / Math.sqrt(2.0) / 100.0).toFloat()
} }
length.value * dpi / 2.54f
} }
SVGLengthUnit.CM -> length.value * dpi / 2.54f SVGLengthUnit.CM -> length.value * dpi / 2.54f
SVGLengthUnit.MM -> length.value * dpi / 25.4f SVGLengthUnit.MM -> length.value * dpi / 25.4f
......
...@@ -26,113 +26,137 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) { ...@@ -26,113 +26,137 @@ class SVGSVG internal constructor(ptr: Long) : SVGContainer(ptr) {
} }
} }
val x: SVGLength var x: SVGLength
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetX(_ptr) _nGetX(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
val y: SVGLength set(value) {
get() = try { setX(value)
}
fun setX(length: SVGLength): SVGSVG {
return try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetY(_ptr) _nSetX(_ptr, length.value, length._unit.ordinal)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
val width: SVGLength }
var y: SVGLength
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetWidth(_ptr) _nGetY(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
val height: SVGLength set(value) {
get() = try { setY(value)
}
fun setY(length: SVGLength): SVGSVG {
return try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetHeight(_ptr) _nSetY(_ptr, length.value, length._unit.ordinal)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
val preserveAspectRatio: SVGPreserveAspectRatio }
var width: SVGLength
get() = try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetPreserveAspectRatio(_ptr) _nGetWidth(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
val viewBox: Rect? set(value) {
get() = try { setWidth(value)
}
fun setWidth(length: SVGLength): SVGSVG {
return try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetViewBox(_ptr) _nSetWidth(_ptr, length.value, length._unit.ordinal)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
}
fun getIntrinsicSize(lc: SVGLengthContext): Point { var height: SVGLength
return try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nGetIntrinsicSize(_ptr, lc.width, lc.height, lc.dpi) _nGetHeight(_ptr)
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
set(value) {
setHeight(value)
} }
fun setX(length: SVGLength): SVGSVG { fun setHeight(length: SVGLength): SVGSVG {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetX(_ptr, length.value, length._unit.ordinal) _nSetHeight(_ptr, length.value, length._unit.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
} }
fun setY(length: SVGLength): SVGSVG { var preserveAspectRatio: SVGPreserveAspectRatio
return try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetY(_ptr, length.value, length._unit.ordinal) _nGetPreserveAspectRatio(_ptr)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
set(value) {
setPreserveAspectRatio(value)
} }
fun setWidth(length: SVGLength): SVGSVG { fun setPreserveAspectRatio(ratio: SVGPreserveAspectRatio): SVGSVG {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetWidth(_ptr, length.value, length._unit.ordinal) _nSetPreserveAspectRatio(_ptr, ratio._align._value, ratio._scale.ordinal)
this this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
} }
fun setHeight(length: SVGLength): SVGSVG { var viewBox: Rect?
return try { get() = try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetHeight(_ptr, length.value, length._unit.ordinal) _nGetViewBox(_ptr)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
set(value) {
require(value != null) { "Can't set viewBox with value == null" }
setViewBox(value)
} }
fun setPreserveAspectRatio(ratio: SVGPreserveAspectRatio): SVGSVG { fun setViewBox(viewBox: Rect): SVGSVG {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetPreserveAspectRatio(_ptr, ratio._align._value, ratio._scale.ordinal) _nSetViewBox(_ptr, viewBox.left, viewBox.top, viewBox.right, viewBox.bottom)
this this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
} }
fun setViewBox(viewBox: Rect): SVGSVG { fun getIntrinsicSize(lc: SVGLengthContext): Point {
return try { return try {
Stats.onNativeCall() Stats.onNativeCall()
_nSetViewBox(_ptr, viewBox.left, viewBox.top, viewBox.right, viewBox.bottom) _nGetIntrinsicSize(_ptr, lc.width, lc.height, lc.dpi)
this
} finally { } finally {
Reference.reachabilityFence(this) Reference.reachabilityFence(this)
} }
......
...@@ -32,9 +32,10 @@ class SkiaWindowTest { ...@@ -32,9 +32,10 @@ class SkiaWindowTest {
private fun paragraph(size: Float, text: String) = private fun paragraph(size: Float, text: String) =
ParagraphBuilder(ParagraphStyle(), fontCollection) ParagraphBuilder(ParagraphStyle(), fontCollection)
.pushStyle( .pushStyle(
TextStyle() TextStyle().apply {
.setColor(Color.RED.rgb) color = Color.RED.rgb
.setFontSize(size) fontSize = size
}
) )
.addText(text) .addText(text)
.popStyle() .popStyle()
...@@ -344,7 +345,7 @@ class SkiaWindowTest { ...@@ -344,7 +345,7 @@ class SkiaWindowTest {
} }
canvas.drawRect(Rect(x.toFloat(), 0f, x.toFloat() + size.toFloat(), size.toFloat()), Paint().apply { canvas.drawRect(Rect(x.toFloat(), 0f, x.toFloat() + size.toFloat(), size.toFloat()), Paint().apply {
setColor(Color.RED.rgb) color = Color.RED.rgb
}) })
layer.needRedraw() layer.needRedraw()
......
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