Unverified Commit 0c7dafe9 authored by Ivan Matkov's avatar Ivan Matkov Committed by GitHub

Expose `PathBuilder.offset` and `PathBuilder.transform` in Kotlin API (#1169)

[SKIKO-1112](https://youtrack.jetbrains.com/issue/SKIKO-1112) Missed
`PathBuilder.offset` and `PathBuilder.transform` in `0.144.0`

Missed part from #1154
JNI/KN C++ bindings are already in place
parent 8ea278fd
...@@ -782,6 +782,42 @@ class PathBuilder internal constructor(ptr: NativePointer) : Managed(ptr, _Final ...@@ -782,6 +782,42 @@ class PathBuilder internal constructor(ptr: NativePointer) : Managed(ptr, _Final
} }
} }
/**
* Offsets all points in this builder by (dx, dy).
*
* @param dx offset on x-axis
* @param dy offset on y-axis
* @return this builder for chaining
*/
fun offset(dx: Float, dy: Float): PathBuilder {
return try {
Stats.onNativeCall()
PathBuilder_nOffset(_ptr, dx, dy)
this
} finally {
reachabilityBarrier(this)
}
}
/**
* Transforms this builder by matrix.
*
* @param matrix transform to apply
* @return this builder for chaining
*/
fun transform(matrix: Matrix33): PathBuilder {
return try {
Stats.onNativeCall()
interopScope {
PathBuilder_nTransform(_ptr, toInterop(matrix.mat))
}
this
} finally {
reachabilityBarrier(this)
reachabilityBarrier(matrix)
}
}
/** /**
* Sets last point to (x, y). * Sets last point to (x, y).
* *
...@@ -901,3 +937,9 @@ private external fun PathBuilder_nAddPathTransform(ptr: NativePointer, srcPtr: N ...@@ -901,3 +937,9 @@ private external fun PathBuilder_nAddPathTransform(ptr: NativePointer, srcPtr: N
@ExternalSymbolName("org_jetbrains_skia_PathBuilder__1nSetLastPt") @ExternalSymbolName("org_jetbrains_skia_PathBuilder__1nSetLastPt")
private external fun PathBuilder_nSetLastPt(ptr: NativePointer, x: Float, y: Float) private external fun PathBuilder_nSetLastPt(ptr: NativePointer, x: Float, y: Float)
@ExternalSymbolName("org_jetbrains_skia_PathBuilder__1nOffset")
private external fun PathBuilder_nOffset(ptr: NativePointer, dx: Float, dy: Float)
@ExternalSymbolName("org_jetbrains_skia_PathBuilder__1nTransform")
private external fun PathBuilder_nTransform(ptr: NativePointer, matrix: InteropPointer)
...@@ -366,6 +366,25 @@ class PathBuilderTest { ...@@ -366,6 +366,25 @@ class PathBuilderTest {
assertEquals(Point(10f, 10f), path3.getPoint(0)) assertEquals(Point(10f, 10f), path3.getPoint(0))
} }
@Test
fun testOffsetAndTransform() {
val offsetPath = PathBuilder()
.moveTo(1f, 2f)
.lineTo(3f, 4f)
.offset(5f, 6f)
.detach()
assertEquals(Point(6f, 8f), offsetPath.getPoint(0))
assertEquals(Point(8f, 10f), offsetPath.getPoint(1))
val transformedPath = PathBuilder()
.moveTo(1f, 2f)
.lineTo(3f, 4f)
.transform(Matrix33.makeScale(2f, 3f))
.detach()
assertEquals(Point(2f, 6f), transformedPath.getPoint(0))
assertEquals(Point(6f, 12f), transformedPath.getPoint(1))
}
@Test @Test
fun testSetLastPt() { fun testSetLastPt() {
val path = PathBuilder() val path = PathBuilder()
......
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