@ -3,15 +3,14 @@ package common
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Description
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.graphics.Color
import util.toAwtImage
import java.awt.image.BufferedImage
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.RenderVectorGroup
import androidx.compose.ui.graphics.vector.VectorPainter
import androidx.compose.ui.graphics.vector.rememberVectorPainter
val LocalAppResources = staticCompositionLocalOf < AppResources > {
error ( " LocalNotepadResources isn't provided " )
@ -19,20 +18,22 @@ val LocalAppResources = staticCompositionLocalOf<AppResources> {
@Composable
fun rememberAppResources ( ) : AppResources {
val resources = remember { AppResources ( ) }
LaunchedEffect ( Unit ) {
resources . init ( )
}
return resources
val icon = rememberVectorPainter ( Icons . Default . Description , Color ( 0xFF2CA4E1 ) )
return remember { AppResources ( icon ) }
}
class AppResources {
var icon : BufferedImage ? by mutableStateOf ( null )
private set
class AppResources ( val icon : VectorPainter )
suspend fun init ( ) {
icon = Icons . Default . Description . toAwtImage ( Color ( 0xFF2CA4E1 ) )
}
}
@OptIn ( ExperimentalComposeUiApi :: class )
@Composable
fun rememberVectorPainter ( image : ImageVector , tintColor : Color ) =
rememberVectorPainter (
defaultWidth = image . defaultWidth ,
defaultHeight = image . defaultHeight ,
viewportWidth = image . viewportWidth ,
viewportHeight = image . viewportHeight ,
name = image . name ,
tintColor = tintColor ,
tintBlendMode = image . tintBlendMode ,
content = { _ , _ -> RenderVectorGroup ( group = image . root ) }
)