Commit f96f8444 authored by Alexander Gorshenev's avatar Alexander Gorshenev Committed by alexander-gorshenev

[Native] Moved to 1.5.0 compiler branch.

Updated to a cleaner interop plugin syntax
parent b898513c
kotlin.code.style=official
kotlin.native.version=1.5.30-dev-184
kotlin.native.version=1.5.10-eap-81
......@@ -11,6 +11,9 @@ import kotlin.math.cos
import kotlin.math.sin
fun main(args: Array<String>) {
// TODO: Remove me! This is to run all cleaners before main() exits.
kotlin.native.internal.Debugging.forceCheckedShutdown = true
NSApplication.sharedApplication()
createWindow("Skia/Native macos sample")
NSApp?.run()
......@@ -32,9 +35,9 @@ class Renderer(
val layer: SkiaLayer,
val displayScene: (Renderer, Int, Int, Long) -> Unit
): SkiaRenderer {
var canvas: SkCanvas? = null
var canvas: Canvas? = null
override fun onRender(canvas: SkCanvas, width: Int, height: Int, nanoTime: Long) {
override fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long) {
this.canvas = canvas
val contentScale = layer.contentScale
canvas.scale(contentScale, contentScale)
......@@ -46,7 +49,7 @@ class Renderer(
fun displayScene(renderer: Renderer, nanoTime: Long) {
val canvas = renderer.canvas!!
val paint = SkPaint()
val paint = Paint()
paint.setColor(SK_ColorGREEN)
canvas.clear(SK_ColorRED);
......@@ -55,9 +58,7 @@ fun displayScene(renderer: Renderer, nanoTime: Long) {
canvas.translate(128.0f, 128.0f)
canvas.rotate(nanoTime.toFloat() / 1e7f)
val rect = SkRect.MakeXYWH(-90.5f, -90.5f, 181.0f, 181.0f)
canvas.drawRect(rect, paint.ptr)
canvas.drawRect(rect, paint)
canvas.restore();
// TODO: need memory management.
// nativeHeap.free(paint)
}
kotlin.code.style=official
deploy.version=0.0.0
kotlin.native.version=1.5.30-dev-184
kotlin.native.version=1.5.10-eap-81
dependencies.skija.git.commit=adf4d3aac4402a32096cf0a79ed75a0dc82c796d
dependencies.skia.windows-x64=m91-71fcb16fc2/Skia-m91-71fcb16fc2-windows-Release-x64
......
......@@ -7,11 +7,11 @@ import org.jetbrains.skiko.native.redrawer.*
import org.jetbrains.skiko.skia.native.*
interface SkiaRenderer {
fun onRender(canvas: SkCanvas, width: Int, height: Int, nanoTime: Long)
fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long)
}
// TODO: this is exact copy of jvm counterpart. Commonize!
private class PictureHolder(val instance: SkPicture, val width: Int, val height: Int)
private class PictureHolder(val instance: Picture, val width: Int, val height: Int)
open class SkiaLayer(
private val properties: SkiaLayerProperties = SkiaLayerProperties()
......@@ -25,7 +25,7 @@ open class SkiaLayer(
private var redrawer: Redrawer? = null
private var picture: PictureHolder? = null
private val pictureRecorder = SkPictureRecorder()
private val pictureRecorder = PictureRecorder()
private val pictureLock = Any()
override fun init() {
......@@ -56,8 +56,7 @@ open class SkiaLayer(
val bounds = SkRect.MakeWH(pictureWidth.toFloat(), pictureHeight.toFloat())
val canvas = pictureRecorder.beginRecording(bounds, null)!!
// TODO: get rid of .pointed?
renderer?.onRender(canvas.pointed, pictureWidth.toInt(), pictureHeight.toInt(), nanoTime)
renderer?.onRender(canvas, pictureWidth.toInt(), pictureHeight.toInt(), nanoTime)
val picture = pictureRecorder.finishRecordingAsPicture()!!
this.picture = PictureHolder(picture, pictureWidth.toInt(), pictureHeight.toInt())
......
......@@ -18,10 +18,10 @@ internal abstract class ContextHandler(val layer: HardwareLayer) {
// TODO: hostOs is all written in jdk kotlin.
// open val bleachConstant = if (hostOs == OS.MacOS) 0 else -1
open val bleachConstant = 0U
var context: GrDirectContext? = null
var renderTarget: GrBackendRenderTarget? = null
var surface: SkSurface? = null
var canvas: SkCanvas? = null
var context: DirectContext? = null
var renderTarget: BackendRenderTarget? = null
var surface: Surface? = null
var canvas: Canvas? = null
abstract fun initContext(): Boolean
......@@ -32,9 +32,9 @@ internal abstract class ContextHandler(val layer: HardwareLayer) {
canvas?.clear(bleachConstant)
}
open fun drawOnCanvas(picture: SkPicture) {
open fun drawOnCanvas(picture: Picture) {
println("ContextHandler::drawOnCanvas")
canvas?.drawPicture(picture.ptr)
canvas?.drawPicture(picture)
}
open fun flush() {
......
......@@ -14,7 +14,7 @@ internal class OpenGLContextHandler(layer: HardwareLayer) : ContextHandler(layer
println("OpenGLContextHandler::initContext")
try {
if (context == null) {
context = GrDirectContext.MakeGL()
context = DirectContext.MakeGL()
}
} catch (e: Exception) {
println("Failed to create Skia OpenGL context!")
......@@ -51,22 +51,23 @@ internal class OpenGLContextHandler(layer: HardwareLayer) : ContextHandler(layer
val glInfo: GrGLFramebufferInfo = alloc<GrGLFramebufferInfo>()
glInfo.fFBOID = fbId
glInfo.fFormat = GL_RGBA8.toUInt()
renderTarget = GrBackendRenderTarget(w, h, 0, 8, glInfo.readValue())
renderTarget = BackendRenderTarget(w, h, 0, 8, glInfo.readValue())
}
surface = SkSurface.MakeFromBackendRenderTarget(
surface = Surface.MakeFromBackendRenderTarget(
// TODO: C++ interop knows nothing about inheritance.
context!!.ptr.reinterpret<GrRecordingContext>(),
renderTarget!!.ptr,
// As a bare minimum have an extension function for such conversions.
RecordingContext(context!!.cpp.ptr.reinterpret<GrRecordingContext>().pointed, managed = false),
renderTarget!!,
GrSurfaceOrigin.kBottomLeft_GrSurfaceOrigin,
colorType = kRGBA_8888_SkColorType,
colorSpace = SkColorSpace.MakeSRGB(),
colorSpace = ColorSpace.MakeSRGB(),
surfaceProps = null,
releaseProc = null,
releaseContext = null
) ?: error("Could not obtain SkSurface")
) ?: error("Could not obtain Surface")
canvas = surface!!.getCanvas()?.pointed
?: error("Could not obtain SkCanvas from SkSurface")
canvas = surface!!.getCanvas()
?: error("Could not obtain Canvas from Surface")
}
}
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