From a1967932d5e73b455892b612a7c51a966d5ed79e Mon Sep 17 00:00:00 2001 From: Mahdi Hosseinzadeh Date: Sat, 10 Feb 2024 11:32:56 +0330 Subject: [PATCH] Initial commit --- .../multiplatform/comshot/Comshot.android.kt | 28 +++++++++---------- .../mahozad/multiplatform/comshot/Comshot.kt | 1 + 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/library/src/androidMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.android.kt b/library/src/androidMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.android.kt index 71d12b7..12d0a6b 100644 --- a/library/src/androidMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.android.kt +++ b/library/src/androidMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.android.kt @@ -6,13 +6,8 @@ import android.content.ContextWrapper import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Rect -import android.os.Build -import android.os.Handler -import android.os.Looper -import android.view.PixelCopy -import android.view.View -import android.view.ViewTreeObserver -import android.view.Window +import android.os.* +import android.view.* import androidx.annotation.DoNotInline import androidx.annotation.RequiresApi import androidx.compose.foundation.background @@ -25,10 +20,7 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap -import androidx.compose.ui.platform.AbstractComposeView -import androidx.compose.ui.platform.ComposeView -import androidx.compose.ui.platform.ViewCompositionStrategy -import androidx.compose.ui.platform.ViewRootForTest +import androidx.compose.ui.platform.* import androidx.compose.ui.semantics.SemanticsNode import androidx.compose.ui.semantics.SemanticsProperties import androidx.compose.ui.test.* @@ -53,6 +45,7 @@ actual fun setContenttt(content: @Composable () -> Unit): Unit = TODO() actual fun captureToImageeee(content: @Composable () -> Unit): ImageBitmap = TODO() fun Context.captureToImageeee(comcon: CompositionContext, content: @Composable () -> Unit): ImageBitmap { +fun Activity.captureToImageeee(comcon: CompositionContext, content: @Composable () -> Unit): ImageBitmap { ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// @@ -89,10 +82,15 @@ fun Context.captureToImageeee(comcon: CompositionContext, content: @Composable ( // LocalView.current // LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); val composeView = ComposeView(this) - composeView.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) - composeView.setParentCompositionContext(comcon /* OR, maybe, Recomposer(Dispatchers.Main) */) - composeView.setContent(content) + val recomposer = Recomposer(Dispatchers.Unconfined) + composeView.setParentCompositionContext(recomposer) + composeView.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnLifecycleDestroyed(object : Lifecycle() { + override val currentState: State get() = State.RESUMED + override fun addObserver(observer: LifecycleObserver) {} + override fun removeObserver(observer: LifecycleObserver) {} + })) composeView.createComposition() + composeView.setContent(content) // composeView.setBackgroundColor(android.graphics.Color.BLUE) composeView.measure( View.MeasureSpec.makeMeasureSpec(300, View.MeasureSpec.EXACTLY), @@ -104,6 +102,8 @@ fun Context.captureToImageeee(comcon: CompositionContext, content: @Composable ( composeView.measuredWidth, composeView.measuredHeight ) + // this.setContentView(composeView) + // this.addContentView(composeView, ViewGroup.LayoutParams(0, 0)) @OptIn(InternalComposeUiApi::class) composeView.showLayoutBounds = true println("width: ${composeView.measuredWidth} height: ${composeView.measuredHeight}") diff --git a/library/src/commonMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.kt b/library/src/commonMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.kt index 56e3095..e6597a7 100644 --- a/library/src/commonMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.kt +++ b/library/src/commonMain/kotlin/ir/mahozad/multiplatform/comshot/Comshot.kt @@ -27,6 +27,7 @@ // https://stackoverflow.com/questions/73294041/crash-when-trying-to-measure-a-composeview-to-generate-a-bitmap-of-it // https://stackoverflow.com/questions/70944722/composable-to-bitmap-without-displaying-it // https://stackoverflow.com/questions/75461048/how-to-renderor-convert-a-composable-to-image-in-compose-desktop +// https://stackoverflow.com/questions/5604125/android-taking-screenshot-of-offscreen-page /** * The compose-multiplatform-core/compose/ui/ui-test-junit4 depends on compose-multiplatform-core/compose/ui/ui-test