Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ package com.example.cahier.developer.brushgraph.data

import android.content.Context
import androidx.ink.brush.StockBrushes
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.encode
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.example.cahier.core.ui.CahierTextureBitmapStore
Expand Down Expand Up @@ -78,7 +78,7 @@ class BrushGraphRepositoryTest {

val family = StockBrushes.marker()
val outputStream = FileOutputStream(tempFile)
AndroidBrushFamilySerialization.encode(family, outputStream, mockTextureStore)
family.encode(outputStream, mockTextureStore)
outputStream.close()

val uriString = android.net.Uri.fromFile(tempFile).toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.example.cahier.developer.brushgraph.viewmodel

import androidx.ink.storage.encode
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.example.cahier.core.ui.CahierTextureBitmapStore
Expand Down Expand Up @@ -442,7 +443,7 @@ class BrushGraphViewModelTest {
0.1f
).family
val baos = ByteArrayOutputStream()
androidx.ink.storage.AndroidBrushFamilySerialization.encode(family, baos, mockTextureStore)
family.encode(baos, mockTextureStore)
val entity = CustomBrushEntity(name = brushName, brushBytes = baos.toByteArray())

viewModel.loadFromPalette(entity)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
package com.example.cahier.core.data

import android.content.Context
import android.graphics.Bitmap
import androidx.ink.brush.BrushFamily
import androidx.ink.brush.Version
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.BrushFamilyDecodeCallback
import androidx.ink.storage.decode
import androidx.ink.strokes.Stroke
import com.example.cahier.core.ui.CahierTextureBitmapStore
import com.example.cahier.core.ui.Converters
Expand Down Expand Up @@ -59,17 +60,19 @@ class OfflineNotesRepository(
val dbBrushes = dbEntities.mapNotNull { entity ->
try {
ByteArrayInputStream(entity.brushBytes).use { inputStream ->
val family = AndroidBrushFamilySerialization.decode(
val family = BrushFamily.decode(
inputStream,
maxVersion = Version.DEVELOPMENT,
BrushFamilyDecodeCallback { id, bitmap ->
if (bitmap != null && textureStore[id] == null) textureStore.loadTexture(
id,
bitmap
)
id
maxVersion = Version.DEVELOPMENT
) { id: String, bitmap: Bitmap? ->
bitmap?.let {
if (textureStore[id] == null)
textureStore.loadTexture(
id,
bitmap
)
}
)
id
}
CustomBrush(entity.name, com.example.cahier.R.drawable.edit_24px, family, true)
}
} catch (e: Exception) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class BrushDesignerViewModel @Inject constructor(
BrushFamily.decode(
inputStream,
maxVersion = Version.DEVELOPMENT
) { textureId, bitmap ->
) { textureId: String, bitmap: Bitmap? ->
bitmap?.let { textureStore.loadTexture(textureId, it) }
textureId
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import android.net.Uri
import android.util.Log
import androidx.ink.brush.BrushFamily
import androidx.ink.brush.Version
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.BrushFamilyDecodeCallback
import androidx.ink.storage.decode
import androidx.ink.storage.encode
import com.example.cahier.R
import com.example.cahier.core.di.ApplicationScope
import com.example.cahier.core.ui.CahierTextureBitmapStore
Expand Down Expand Up @@ -102,7 +102,7 @@ class DefaultBrushGraphRepository @Inject constructor(
try {
val family = BrushFamilyConverter.convert(graph)
val baos = ByteArrayOutputStream()
AndroidBrushFamilySerialization.encode(family, baos, textureStore)
family.encode(baos, textureStore)
customBrushDao.saveCustomBrush(
com.example.cahier.developer.brushdesigner.data.CustomBrushEntity(
AUTOSAVE_KEY,
Expand Down Expand Up @@ -184,16 +184,14 @@ class DefaultBrushGraphRepository @Inject constructor(
val decodedBytes = entity.brushBytes
return try {
val bais = ByteArrayInputStream(decodedBytes)
val family = AndroidBrushFamilySerialization.decode(
val family = BrushFamily.decode(
bais,
maxVersion = Version.DEVELOPMENT,
BrushFamilyDecodeCallback { id: String, bitmap: Bitmap? ->
if (bitmap != null) {
textureStore.loadTexture(id, bitmap)
}
id
}
)
maxVersion = Version.DEVELOPMENT
) { id: String, bitmap: Bitmap? ->
bitmap?.let { textureStore.loadTexture(id, it) }
id
}

loadBrushFamily(family)
true
} catch (e: Exception) {
Expand Down Expand Up @@ -232,16 +230,15 @@ class DefaultBrushGraphRepository @Inject constructor(

val bais = ByteArrayInputStream(bytes)
val family = try {
AndroidBrushFamilySerialization.decode(
BrushFamily.decode(
bais,
maxVersion = Version.DEVELOPMENT,
BrushFamilyDecodeCallback { id, bitmap ->
if (bitmap != null) {
textureStore.loadTexture(id, bitmap)
}
id
maxVersion = Version.DEVELOPMENT
) { id: String, bitmap: Bitmap? ->
bitmap?.let {
textureStore.loadTexture(id, bitmap)
}
)
id
}
} catch (e: Exception) {
android.util.Log.e(
"DefaultBrushGraphRepository",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.ink.brush.BrushFamily
import androidx.ink.brush.Version
import androidx.ink.rendering.android.canvas.CanvasStrokeRenderer
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.BrushFamilyDecodeCallback
import androidx.ink.storage.decode
import androidx.ink.storage.encode
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.window.core.layout.WindowHeightSizeClass
import androidx.window.core.layout.WindowWidthSizeClass
Expand Down Expand Up @@ -165,31 +166,24 @@ fun BrushGraphScreen(
val family = kotlinx.coroutines.withContext(kotlinx.coroutines.Dispatchers.IO) {
context.contentResolver.openInputStream(it)?.use { stream ->
try {
AndroidBrushFamilySerialization.decode(
BrushFamily.decode(
stream,
maxVersion = Version.DEVELOPMENT,
BrushFamilyDecodeCallback { id: String, bitmap: Bitmap? ->
if (bitmap != null) {
viewModel.loadTexture(id, bitmap)
}
id
}
)
maxVersion = Version.DEVELOPMENT
) { id: String, bitmap: Bitmap? ->
bitmap?.let { viewModel.loadTexture(id, it) }
id
}
} catch (e: Exception) {
Log.d(
"BrushGraphWidget",
"Failed to decode with AndroidBrushFamilySerialization, trying legacy fallback"
"Failed to load brush."
)
null
}
}
}

if (family == null) {
Log.d(
"BrushGraphWidget",
"Failed to decode with AndroidBrushFamilySerialization, and legacy fallback is disabled."
)
viewModel.postDebug(DisplayText.Resource(R.string.bg_err_load_brush))
} else {
viewModel.loadBrushFamily(family)
Expand All @@ -215,8 +209,7 @@ fun BrushGraphScreen(
scope.launch {
try {
context.contentResolver.openOutputStream(it)?.use { outputStream ->
AndroidBrushFamilySerialization.encode(
viewModel.brush.value.family,
viewModel.brush.value.family.encode(
outputStream,
textureStore
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ import androidx.ink.brush.StockBrushes
import androidx.ink.brush.Version
import androidx.ink.brush.compose.composeColor
import androidx.ink.brush.compose.createWithComposeColor
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.BrushFamilyDecodeCallback
import androidx.ink.storage.decode
import androidx.ink.storage.encode
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.cahier.core.ui.CahierTextureBitmapStore
Expand Down Expand Up @@ -564,7 +564,7 @@ class BrushGraphViewModel @Inject constructor(
viewModelScope.launch(Dispatchers.IO) {
try {
val baos = ByteArrayOutputStream()
AndroidBrushFamilySerialization.encode(brush.value.family, baos, textureStore)
brush.value.family.encode(baos, textureStore)
val finalCompressedBytes = baos.toByteArray()

customBrushDao.saveCustomBrush(
Expand Down Expand Up @@ -595,16 +595,14 @@ class BrushGraphViewModel @Inject constructor(
fun loadFromPalette(entity: CustomBrushEntity) {
viewModelScope.launch(Dispatchers.IO) {
try {
val family = AndroidBrushFamilySerialization.decode(
val family = BrushFamily.decode(
ByteArrayInputStream(entity.brushBytes),
maxVersion = Version.DEVELOPMENT,
BrushFamilyDecodeCallback { id, bitmap ->
if (bitmap != null) {
loadTexture(id, bitmap)
}
id
}
)
maxVersion = Version.DEVELOPMENT
) { id: String, bitmap: Bitmap? ->
bitmap?.let { loadTexture(id, it) }
id
}

withContext(Dispatchers.Main) {
loadBrushFamily(family)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
package com.example.cahier.features.drawing

import android.content.Context
import android.graphics.Bitmap
import android.util.Log
import androidx.ink.brush.BrushFamily
import androidx.ink.brush.Version
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.decode
import com.example.cahier.R
import com.example.cahier.core.data.CustomBrush
import com.example.cahier.core.ui.CahierTextureBitmapStore
Expand Down Expand Up @@ -59,12 +61,11 @@ object CustomBrushes {
val (resourceId, icon) = pair
try {
val brushFamily = context.resources.openRawResource(resourceId).use { inputStream ->
AndroidBrushFamilySerialization.decode(
BrushFamily.decode(
inputStream,
maxVersion = Version.DEVELOPMENT
) { id, bitmap ->
if (bitmap != null)
textureStore.loadTexture(id, bitmap)
) { id: String, bitmap: Bitmap? ->
bitmap?.let { textureStore.loadTexture(id, bitmap) }
id
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.example.cahier.features.drawing.viewmodel

import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.net.Uri
Expand All @@ -40,7 +41,8 @@ import androidx.ink.geometry.MutableParallelogram
import androidx.ink.geometry.MutableSegment
import androidx.ink.geometry.MutableVec
import androidx.ink.rendering.android.canvas.CanvasStrokeRenderer
import androidx.ink.storage.AndroidBrushFamilySerialization
import androidx.ink.storage.decode
import androidx.ink.storage.encode
import androidx.ink.strokes.Stroke
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
Expand Down Expand Up @@ -475,8 +477,7 @@ class DrawingCanvasViewModel @Inject constructor(
withContext(Dispatchers.IO) {
try {
val stream = java.io.ByteArrayOutputStream()
AndroidBrushFamilySerialization.encode(
_selectedBrush.value.family,
_selectedBrush.value.family.encode(
stream,
textureStore
)
Expand Down Expand Up @@ -529,12 +530,11 @@ class DrawingCanvasViewModel @Inject constructor(

ByteArrayInputStream(entity.brushBytes).use { inputStream ->
val family =
AndroidBrushFamilySerialization.decode(
BrushFamily.decode(
inputStream,
maxVersion = Version.DEVELOPMENT
) { id, bitmap ->
if (bitmap != null)
textureStore.loadTexture(id, bitmap)
) { id: String, bitmap: Bitmap? ->
bitmap?.let { textureStore.loadTexture(id, bitmap) }
id
}
CustomBrush(
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ coilCompose = "3.4.0"
foundation = "1.10.5"
hiltAndroid = "2.59.2"
hiltNavigationCompose = "1.3.0"
ink = "1.1.0-alpha03"
ink = "1.1.0-alpha04"
kotlin = "2.3.20"
coreKtx = "1.18.0"
junit = "4.13.2"
Expand Down
Loading
Loading