From 8ef054baa45a46b00470a320509cba794e6c80c0 Mon Sep 17 00:00:00 2001 From: Timo Bryant Date: Mon, 1 Jan 2024 13:50:50 +0100 Subject: [PATCH] can draw a box in document --- .../de/itkl/documentViewer/DocumentViewer.kt | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/apps/documentViewer/src/main/kotlin/de/itkl/documentViewer/DocumentViewer.kt b/apps/documentViewer/src/main/kotlin/de/itkl/documentViewer/DocumentViewer.kt index 523a64a..d18124b 100644 --- a/apps/documentViewer/src/main/kotlin/de/itkl/documentViewer/DocumentViewer.kt +++ b/apps/documentViewer/src/main/kotlin/de/itkl/documentViewer/DocumentViewer.kt @@ -2,9 +2,7 @@ package de.itkl.documentViewer import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.* -import androidx.compose.foundation.gestures.detectTapGestures -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.interaction.collectIsHoveredAsState +import androidx.compose.foundation.gestures.transformable import androidx.compose.foundation.layout.* import androidx.compose.material.Text import androidx.compose.runtime.* @@ -18,18 +16,18 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.RectangleShape -import androidx.compose.ui.graphics.Shape -import androidx.compose.ui.graphics.drawscope.DrawStyle import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.input.pointer.PointerEventType import androidx.compose.ui.input.pointer.onPointerEvent -import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.loadImageBitmap -import androidx.compose.ui.text.drawText +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.WindowPosition @@ -37,8 +35,7 @@ import androidx.compose.ui.window.rememberWindowState import com.github.panpf.zoomimage.ZoomImage import com.github.panpf.zoomimage.compose.ZoomState import com.github.panpf.zoomimage.compose.rememberZoomState -import com.github.panpf.zoomimage.compose.zoom.ScrollBarSpec -import com.github.panpf.zoomimage.compose.zoom.ZoomableState +import com.github.panpf.zoomimage.compose.zoom.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.pushingpixels.aurora.theming.auroraBackground @@ -72,6 +69,7 @@ fun main() = auroraApplication { } } + @Composable @Preview fun viewImage() { @@ -165,13 +163,17 @@ data class PointConverter( @Composable fun shapes(zoomableState: ZoomableState) { Box(modifier = Modifier.fillMaxSize()) { + val scale = zoomableState.transform.scaleX Box( modifier = Modifier - .offset(100.dp) - .size(100.dp) + .offset { IntOffset( + ((zoomableState.transform.offset.x + (288 * scale)) ).toInt(), + ((zoomableState.transform.offset.y + (697 * scale)) ).toInt() + ) } + .scale(zoomableState.transform.scaleX) .clip(RectangleShape) + .size(100.dp) .background(Color.Red) - .onClick(true) { println("clicked") } ) } } @@ -180,10 +182,10 @@ fun shapes(zoomableState: ZoomableState) { fun canvas(zoomableState: ZoomableState) { Canvas(modifier = Modifier .fillMaxSize() - .onPointerEvent(PointerEventType.Move) { - val position = it.changes.first().position - println(position) - } +// .onPointerEvent(PointerEventType.Move) { +// val position = it.changes.first().position +// println(position) +// } ) { val converter = PointConverter( @@ -210,9 +212,8 @@ fun canvas(zoomableState: ZoomableState) { // ], drawRect( Color.Blue, -// topLeft = Offset(converter.convertX(288), converter.convertY(697)), - topLeft = zoomableState.transform.offset + Offset(800f,800f), - size = Size(30f, 30f), + topLeft = zoomableState.transform.offset + (Offset(288 * zoomableState.transform.scaleX,697 * zoomableState.transform.scaleY)), + size = Size( (793 - 288)* zoomableState.transform.scaleX, (741 - 697) * zoomableState.transform.scaleY), style = Stroke(width = 5f) ) }