Moved MapCanvas to another file
This commit is contained in:
parent
f39dcef454
commit
0448677b67
2 changed files with 60 additions and 60 deletions
|
|
@ -5,12 +5,6 @@ import android.util.Log
|
|||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.foundation.Canvas
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.gestures.Orientation
|
||||
import androidx.compose.foundation.gestures.detectDragGestures
|
||||
import androidx.compose.foundation.gestures.draggable
|
||||
import androidx.compose.foundation.gestures.rememberDraggableState
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
|
|
@ -19,26 +13,18 @@ import androidx.compose.material.icons.Icons
|
|||
import androidx.compose.material.icons.filled.Build
|
||||
import androidx.compose.material3.FloatingActionButton
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.MaterialTheme.colorScheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableFloatStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.mirenkov.ktheightmap.ui.theme.KtHeightMapTheme
|
||||
|
||||
const val TAG = "KtHeightMap"
|
||||
const val TILE_SIZE: Float = 128F
|
||||
const val TILE_SIZE: Float = 256F
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -64,51 +50,6 @@ class MainActivity : ComponentActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MapCanvas(
|
||||
backColor: Color,
|
||||
gridColor: Color,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val offsetX = rememberSaveable { mutableFloatStateOf(0F) }
|
||||
val offsetY = rememberSaveable { mutableFloatStateOf(0F) }
|
||||
Canvas(
|
||||
modifier = modifier.fillMaxSize()
|
||||
.pointerInput(Unit) {
|
||||
detectDragGestures { _, distance ->
|
||||
offsetX.floatValue += distance.x
|
||||
offsetY.floatValue += distance.y
|
||||
}
|
||||
}
|
||||
) {
|
||||
drawRect(
|
||||
color = backColor,
|
||||
size = size
|
||||
)
|
||||
|
||||
|
||||
val strippedOffsetX = offsetX.floatValue % TILE_SIZE
|
||||
val strippedOffsetY = offsetY.floatValue % TILE_SIZE
|
||||
|
||||
val offset = Offset(strippedOffsetX, strippedOffsetY)
|
||||
val grid = size / TILE_SIZE
|
||||
val gridWidth = grid.width.toInt()
|
||||
val gridHeight = grid.height.toInt()
|
||||
for (cellX in 0 .. gridWidth + 1) {
|
||||
val offsetX = TILE_SIZE * (cellX - 1)
|
||||
for (cellY in 0 .. gridHeight + 1) {
|
||||
val offsetY = TILE_SIZE * (cellY - 1)
|
||||
drawRect(
|
||||
color = gridColor,
|
||||
size = Size(TILE_SIZE, TILE_SIZE),
|
||||
topLeft = offset + Offset(offsetX, offsetY),
|
||||
style = Stroke(width = 4F)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ToolButton() {
|
||||
FloatingActionButton(
|
||||
|
|
|
|||
59
app/src/main/java/com/mirenkov/ktheightmap/MapCanvas.kt
Normal file
59
app/src/main/java/com/mirenkov/ktheightmap/MapCanvas.kt
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package com.mirenkov.ktheightmap
|
||||
|
||||
import androidx.compose.foundation.Canvas
|
||||
import androidx.compose.foundation.gestures.detectDragGestures
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableFloatStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
|
||||
@Composable
|
||||
fun MapCanvas(
|
||||
backColor: Color,
|
||||
gridColor: Color,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val offsetX = rememberSaveable { mutableFloatStateOf(0F) }
|
||||
val offsetY = rememberSaveable { mutableFloatStateOf(0F) }
|
||||
Canvas(
|
||||
modifier = modifier.fillMaxSize()
|
||||
.pointerInput(Unit) {
|
||||
detectDragGestures { _, distance ->
|
||||
offsetX.floatValue += distance.x
|
||||
offsetY.floatValue += distance.y
|
||||
}
|
||||
}
|
||||
) {
|
||||
drawRect(
|
||||
color = backColor,
|
||||
size = size
|
||||
)
|
||||
|
||||
|
||||
val strippedOffsetX = offsetX.floatValue % TILE_SIZE
|
||||
val strippedOffsetY = offsetY.floatValue % TILE_SIZE
|
||||
|
||||
val offset = Offset(strippedOffsetX, strippedOffsetY)
|
||||
val grid = size / TILE_SIZE
|
||||
val gridWidth = grid.width.toInt()
|
||||
val gridHeight = grid.height.toInt()
|
||||
for (cellX in 0 .. gridWidth + 2) {
|
||||
val offsetX = TILE_SIZE * (cellX - 1)
|
||||
for (cellY in 0 .. gridHeight + 2) {
|
||||
val offsetY = TILE_SIZE * (cellY - 1)
|
||||
drawRect(
|
||||
color = gridColor,
|
||||
size = Size(TILE_SIZE, TILE_SIZE),
|
||||
topLeft = offset + Offset(offsetX, offsetY),
|
||||
style = Stroke(width = 4F)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue