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.
36 lines
1.1 KiB
36 lines
1.1 KiB
package example.imageviewer |
|
|
|
import androidx.compose.ui.graphics.ImageBitmap |
|
import example.imageviewer.model.PictureData |
|
|
|
// TODO: Rework it with some web service to store the images |
|
class WebImageStorage : ImageStorage { |
|
private val pictures = HashMap<String, SavedPicture>() |
|
|
|
override fun saveImage(picture: PictureData.Camera, image: PlatformStorableImage) { |
|
pictures[picture.id] = SavedPicture(picture, image.imageBitmap) |
|
} |
|
|
|
override fun delete(picture: PictureData.Camera) { |
|
pictures.remove(picture.id) |
|
} |
|
|
|
override fun rewrite(picture: PictureData.Camera) { |
|
pictures[picture.id]?.let { |
|
pictures[picture.id] = it.copy(data = picture) |
|
} |
|
} |
|
|
|
override suspend fun getThumbnail(picture: PictureData.Camera): ImageBitmap { |
|
return pictures[picture.id]?.bitmap ?: error("Picture was not found") |
|
} |
|
|
|
override suspend fun getImage(picture: PictureData.Camera): ImageBitmap { |
|
return pictures[picture.id]?.bitmap ?: error("Picture was not found") |
|
} |
|
|
|
private data class SavedPicture( |
|
val data: PictureData, |
|
val bitmap: ImageBitmap |
|
) |
|
} |