55
66package org.jetbrains.letsPlot.skia.compose
77
8- import androidx.compose.runtime.Composable
8+ import androidx.compose.runtime.*
99import androidx.compose.ui.Modifier
10+ import androidx.compose.ui.viewinterop.AndroidView
1011import org.jetbrains.letsPlot.Figure
12+ import org.jetbrains.letsPlot.android.canvas.CanvasView
13+ import org.jetbrains.letsPlot.core.util.sizing.SizingPolicy
14+ import org.jetbrains.letsPlot.intern.toSpec
15+ import org.jetbrains.letsPlot.raster.builder.MonolithicCanvas
16+ import org.jetbrains.letsPlot.raster.view.PlotCanvasFigure
1117import org.jetbrains.letsPlot.skia.compose.util.NaiveLogger
1218
1319private val LOG = NaiveLogger (" PlotPanel" )
1420
15- // TODO: update pacakge? Skia is not used in Android anymore.
1621@Suppress(" FunctionName" )
1722@Composable
1823actual fun PlotPanel (
@@ -21,10 +26,25 @@ actual fun PlotPanel(
2126 modifier : Modifier ,
2227 computationMessagesHandler : (List <String >) -> Unit
2328) {
24- org.jetbrains.letsPlot.android.compose.PlotPanel (
25- figure = figure,
26- preserveAspectRatio = preserveAspectRatio,
29+ var plotCanvasFigure by remember { mutableStateOf(PlotCanvasFigure ()) }
30+
31+ LOG .print { " Recompose PlotPanel()" }
32+
33+ AndroidView (
34+ factory = { ctx ->
35+ LOG .print { " PlotPanel: AndroidView factory called" }
36+ val canvasView = CanvasView (ctx)
37+ canvasView.figure = plotCanvasFigure
38+ canvasView
39+ },
2740 modifier = modifier,
28- computationMessagesHandler = computationMessagesHandler
41+ update = { canvasView ->
42+ MonolithicCanvas .updatePlotFigureFromRawSpec(
43+ plotCanvasFigure = plotCanvasFigure,
44+ rawSpec = figure.toSpec(),
45+ sizingPolicy = SizingPolicy .fitContainerSize(preserveAspectRatio),
46+ computationMessagesHandler = computationMessagesHandler
47+ )
48+ }
2949 )
3050}
0 commit comments