mohamed rejeb
04/18/2024, 3:34 PMmohamed rejeb
04/18/2024, 3:35 PMMichael Paus
04/18/2024, 3:47 PMmohamed rejeb
04/18/2024, 4:05 PMpointerInput
and onPointerEvent
but I got the same result. I even tried using the swing mouse listener directly but I keep getting delay on rendering.Michael Paus
04/18/2024, 4:12 PMmohamed rejeb
04/18/2024, 4:46 PMAlexander Maryanovsky
04/18/2024, 7:51 PMChris Sinco [G]
04/18/2024, 8:14 PM// Decrease the touch slop. The default value of too high for desktop
val vc = LocalViewConfiguration.current.withTouchSlop(
with(LocalDensity.current) { 0.125.dp.toPx() },
)
CompositionLocalProvider(LocalViewConfiguration provides vc) {
// content
}
Alexander Maryanovsky
04/18/2024, 8:16 PMmohamed rejeb
04/18/2024, 8:27 PMMichael Paus
04/19/2024, 6:40 AMAlexander Maryanovsky
04/19/2024, 6:42 AMAlexander Maryanovsky
04/19/2024, 6:43 AMMichael Paus
04/19/2024, 6:53 AMAlexander Maryanovsky
04/19/2024, 6:55 AMmohamed rejeb
04/19/2024, 7:13 AMval path = Path()
val skiaLayer = SkiaLayer()
skiaLayer.renderDelegate = SkiaLayerRenderDelegate(skiaLayer, object : SkikoRenderDelegate {
val paint = Paint().apply {
color = Color.BLACK
strokeWidth = 5f
strokeCap = PaintStrokeCap.ROUND
strokeJoin = PaintStrokeJoin.ROUND
pathEffect = PathEffect.makeCorner(5f)
mode = PaintMode.STROKE
}
override fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long) {
canvas.drawPath(
path = path,
paint = paint
)
}
})
// Mouse events
override fun mousePressed(e: MouseEvent) {
path.reset()
path.moveTo(e.x.toFloat(), e.y.toFloat())
}
override fun mouseReleased(e: MouseEvent) {
path.reset()
}
override fun mouseDragged(e: MouseEvent) {
path.lineTo(e.x.toFloat(), e.y.toFloat())
}
mohamed rejeb
04/19/2024, 7:15 AMMichael Paus
04/19/2024, 7:33 AMAlexander Maryanovsky
04/19/2024, 6:51 PMAlexander Maryanovsky
04/19/2024, 6:51 PMAlexander Maryanovsky
04/19/2024, 6:52 PMAlexander Maryanovsky
04/19/2024, 6:55 PMAlexander Maryanovsky
04/19/2024, 6:55 PMfun main() {
// System.setProperty("skiko.vsync.enabled", "false")
val path = Path()
val skiaLayer = SkiaLayer()
skiaLayer.renderDelegate = SkiaLayerRenderDelegate(skiaLayer, object : SkikoRenderDelegate {
val paint = Paint().apply {
color = org.jetbrains.skia.Color.BLACK
strokeWidth = 5f
strokeCap = PaintStrokeCap.ROUND
strokeJoin = PaintStrokeJoin.ROUND
mode = PaintMode.STROKE
}
override fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long) {
canvas.drawPath(
path = path,
paint = paint
)
val lastPt = path.lastPt
if (lastPt.x != 0f) {
canvas.drawCircle(x = lastPt.x, y = lastPt.y, radius = 6f, paint = paint)
}
}
})
SwingUtilities.invokeLater {
val window = JFrame("Skiko example").apply {
defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE
preferredSize = Dimension(800, 600)
}
skiaLayer.attachTo(window.contentPane)
skiaLayer.needRedraw()
skiaLayer.addMouseListener(object: MouseAdapter() {
override fun mousePressed(e: MouseEvent) {
path.reset()
path.moveTo(e.x.toFloat(), e.y.toFloat())
}
override fun mouseReleased(e: MouseEvent) {
path.reset()
}
})
skiaLayer.addMouseMotionListener(object: MouseAdapter() {
override fun mouseDragged(e: MouseEvent) {
path.lineTo(e.x.toFloat(), e.y.toFloat())
}
})
window.pack()
window.isVisible = true
}
}
mohamed rejeb
04/19/2024, 8:55 PMmohamed rejeb
04/20/2024, 12:54 PMAlexander Maryanovsky
04/20/2024, 12:59 PMmohamed rejeb
04/20/2024, 12:59 PMMichael Paus
04/20/2024, 5:19 PMmohamed rejeb
04/21/2024, 1:31 PMElijah Semyonov
04/21/2024, 1:35 PMmohamed rejeb
04/21/2024, 1:44 PMmohamed rejeb
04/22/2024, 12:36 PMmohamed rejeb
04/28/2024, 12:37 PMElijah Semyonov
04/29/2024, 8:57 AMAlexander Maryanovsky
05/07/2024, 4:29 PMAlexander Maryanovsky
05/07/2024, 4:34 PMmohamed rejeb
05/07/2024, 4:35 PMmohamed rejeb
05/07/2024, 4:36 PMAlexander Maryanovsky
05/07/2024, 4:36 PMmohamed rejeb
05/13/2024, 9:03 PMmohamed rejeb
05/13/2024, 9:05 PMwithFrameMillis
the latency is back 🤔Alexander Maryanovsky
05/13/2024, 9:49 PMmohamed rejeb
05/14/2024, 4:02 AMmohamed rejeb
05/14/2024, 5:48 AMmohamed rejeb
05/14/2024, 5:54 AMAlexander Maryanovsky
05/14/2024, 7:01 AM