You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.3 KiB
64 lines
2.3 KiB
package example.imageviewer.view |
|
|
|
import androidx.compose.foundation.Image |
|
import androidx.compose.foundation.background |
|
import androidx.compose.foundation.layout.* |
|
import androidx.compose.foundation.shape.RoundedCornerShape |
|
import androidx.compose.material.Text |
|
import androidx.compose.runtime.* |
|
import androidx.compose.ui.Alignment |
|
import androidx.compose.ui.Modifier |
|
import androidx.compose.ui.graphics.Color |
|
import androidx.compose.ui.graphics.ImageBitmap |
|
import androidx.compose.ui.unit.dp |
|
import example.imageviewer.* |
|
import example.imageviewer.icon.IconPhotoCamera |
|
import example.imageviewer.model.PictureData |
|
import example.imageviewer.model.createCameraPictureData |
|
import imageviewer.shared.generated.resources.Res |
|
|
|
@Composable |
|
actual fun CameraView( |
|
modifier: Modifier, |
|
onCapture: (picture: PictureData.Camera, image: PlatformStorableImage) -> Unit |
|
) { |
|
val randomPicture = remember { resourcePictures.random() } |
|
var imageBitmap by remember { mutableStateOf(ImageBitmap(1, 1)) } |
|
LaunchedEffect(randomPicture) { |
|
imageBitmap = Res.readBytes(randomPicture.resource).toImageBitmap() |
|
} |
|
Box(Modifier.fillMaxSize().background(Color.Black)) { |
|
Image( |
|
bitmap = imageBitmap, |
|
contentDescription = "Camera stub", |
|
Modifier.fillMaxSize() |
|
) |
|
Text( |
|
text = """ |
|
Camera is not available on Desktop for now. |
|
Instead, we will use a random picture. |
|
""".trimIndent(), |
|
color = Color.White, |
|
modifier = Modifier.align(Alignment.Center) |
|
.background( |
|
color = Color.Black.copy(alpha = 0.7f), |
|
shape = RoundedCornerShape(10.dp) |
|
) |
|
.padding(20.dp) |
|
) |
|
val nameAndDescription = createNewPhotoNameAndDescription() |
|
CircularButton( |
|
imageVector = IconPhotoCamera, |
|
modifier = Modifier.align(Alignment.BottomCenter).padding(36.dp), |
|
) { |
|
onCapture( |
|
createCameraPictureData( |
|
name = nameAndDescription.name, |
|
description = nameAndDescription.description, |
|
gps = randomPicture.gps |
|
), |
|
DesktopStorableImage(imageBitmap) |
|
) |
|
} |
|
} |
|
}
|
|
|