diff --git a/app/api/app.api b/app/api/app.api index 6512cac..7a7f573 100644 --- a/app/api/app.api +++ b/app/api/app.api @@ -10,8 +10,10 @@ public final class com/github/skydoves/colorpickercomposedemo/BuildConfig { public final class com/github/skydoves/colorpickercomposedemo/ComposableSingletons$MainActivityKt { public static final field INSTANCE Lcom/github/skydoves/colorpickercomposedemo/ComposableSingletons$MainActivityKt; public static field lambda-1 Lkotlin/jvm/functions/Function2; + public static field lambda-2 Lkotlin/jvm/functions/Function2; public fun ()V public final fun getLambda-1$app_release ()Lkotlin/jvm/functions/Function2; + public final fun getLambda-2$app_release ()Lkotlin/jvm/functions/Function2; } public final class com/github/skydoves/colorpickercomposedemo/ComposableSingletons$MainScreenKt { @@ -45,8 +47,8 @@ public final class com/github/skydoves/colorpickercomposedemo/PhotoPickerIconKt public abstract class com/github/skydoves/colorpickercomposedemo/Screen { public static final field $stable I - public synthetic fun (Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun getDrawable ()I + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Lorg/jetbrains/compose/resources/DrawableResource;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getDrawable ()Lorg/jetbrains/compose/resources/DrawableResource; public final fun getName ()Ljava/lang/String; public final fun getRoute ()Ljava/lang/String; } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 59dcd55..89d4d5d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,9 +12,17 @@ plugins { kotlin { applyDefaultHierarchyTemplate() androidTarget() - iosX64() - iosArm64() - iosSimulatorArm64() + + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64() + ).forEach { + it.binaries.framework { + baseName = "shared" + isStatic = true + } + } task("testClasses") diff --git a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt index baf59a0..11cdd55 100644 --- a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt +++ b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material.BottomNavigation import androidx.compose.material.BottomNavigationItem import androidx.compose.material.Icon -import androidx.compose.material.MaterialTheme import androidx.compose.material.Scaffold import androidx.compose.material.Text import androidx.compose.material.TopAppBar @@ -43,7 +42,10 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import colorpickercomposedemo.app.generated.resources.* +import colorpickercomposedemo.app.generated.resources.Res +import colorpickercomposedemo.app.generated.resources.app_name +import colorpickercomposedemo.app.generated.resources.image_24px +import colorpickercomposedemo.app.generated.resources.palette_24px import com.github.skydoves.colorpickercomposedemo.screens.HsvColorPickerColoredSelectorScreen import com.github.skydoves.colorpickercomposedemo.screens.ImageColorPickerScreen import org.jetbrains.compose.resources.DrawableResource diff --git a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt index f5bce82..b36b57f 100644 --- a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt +++ b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt @@ -15,10 +15,12 @@ */ package com.github.skydoves.colorpickercomposedemo -//import android.graphics.ImageDecoder -//import android.os.Build -//import android.provider.MediaStore -//import androidx.activity.compose.rememberLauncherForActivityResult +// import android.graphics.ImageDecoder +// import android.os.Build +// import android.provider.MediaStore +// import androidx.activity.compose.rememberLauncherForActivityResult +// import androidx.compose.ui.graphics.asImageBitmap +// import androidx.compose.ui.res.vectorResource import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box @@ -28,13 +30,13 @@ import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -//import androidx.compose.ui.graphics.asImageBitmap -//import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp -import colorpickercomposedemo.app.generated.resources.* +import colorpickercomposedemo.app.generated.resources.Res +import colorpickercomposedemo.app.generated.resources.ic_gallery import com.github.skydoves.colorpicker.compose.ColorPickerController import org.jetbrains.compose.resources.vectorResource -//import com.google.modernstorage.photopicker.PhotoPicker + +// import com.google.modernstorage.photopicker.PhotoPicker @Composable fun ColumnScope.PhotoPickerIcon( @@ -64,7 +66,7 @@ fun ColumnScope.PhotoPickerIcon( .size(42.dp) .clickable { // Launch the picker with only one image selectable - //photoPicker.launch(PhotoPicker.Args(PhotoPicker.Type.IMAGES_ONLY, 1)) + // photoPicker.launch(PhotoPicker.Args(PhotoPicker.Type.IMAGES_ONLY, 1)) }, imageVector = vectorResource(Res.drawable.ic_gallery), contentDescription = null, diff --git a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt index 1b4e3b2..a74805c 100644 --- a/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt +++ b/app/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt @@ -35,7 +35,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import colorpickercomposedemo.app.generated.resources.* +import colorpickercomposedemo.app.generated.resources.Res +import colorpickercomposedemo.app.generated.resources.palettebar import com.github.skydoves.colorpicker.compose.AlphaSlider import com.github.skydoves.colorpicker.compose.AlphaTile import com.github.skydoves.colorpicker.compose.BrightnessSlider diff --git a/app/src/iosMain/kotlin/MainViewController.kt b/app/src/iosMain/kotlin/MainViewController.kt index 6350422..a240015 100644 --- a/app/src/iosMain/kotlin/MainViewController.kt +++ b/app/src/iosMain/kotlin/MainViewController.kt @@ -1,4 +1,19 @@ +/* + * Designed and developed by 2022 skydoves (Jaewoong Eum) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import androidx.compose.ui.window.ComposeUIViewController import com.github.skydoves.colorpickercomposedemo.MainScreen -fun MainViewController() = ComposeUIViewController { MainScreen() } \ No newline at end of file +fun MainViewController() = ComposeUIViewController { MainScreen() } diff --git a/benchmark/build.gradle.kts b/benchmark/build.gradle.kts index f629ee7..f8db2f7 100644 --- a/benchmark/build.gradle.kts +++ b/benchmark/build.gradle.kts @@ -1,20 +1,11 @@ import com.github.skydoves.colorpicker.compose.Configuration -@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed plugins { id(libs.plugins.android.test.get().pluginId) - id(libs.plugins.kotlin.multiplatform.get().pluginId) + id(libs.plugins.kotlin.android.get().pluginId) id(libs.plugins.baseline.profile.get().pluginId) } -kotlin { - applyDefaultHierarchyTemplate() - androidTarget() - iosX64() - iosArm64() - iosSimulatorArm64() -} - android { namespace = "com.github.skydoves.colorpicker.compose.benchmark" compileSdk = Configuration.compileSdk @@ -24,6 +15,10 @@ android { targetCompatibility = JavaVersion.VERSION_11 } + kotlinOptions { + jvmTarget = libs.versions.jvmTarget.get() + } + defaultConfig { minSdk = 24 targetSdk = Configuration.targetSdk @@ -41,17 +36,6 @@ android { } } -tasks.withType().configureEach { - compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11) - } -} - -tasks.withType().configureEach { - this.targetCompatibility = libs.versions.jvmTarget.get() - this.sourceCompatibility = libs.versions.jvmTarget.get() -} - // This is the plugin configuration. Everything is optional. Defaults are in the // comments. In this example, you use the GMD added earlier and disable connected devices. baselineProfile { diff --git a/colorpicker-compose/api/colorpicker-compose.api b/colorpicker-compose/api/colorpicker-compose.api index e080859..17d0a4d 100644 --- a/colorpicker-compose/api/colorpicker-compose.api +++ b/colorpicker-compose/api/colorpicker-compose.api @@ -2,15 +2,6 @@ public final class com/github/skydoves/colorpicker/compose/AlphaSliderKt { public static final fun AlphaSlider-I89wPZw (Landroidx/compose/ui/Modifier;Lcom/github/skydoves/colorpicker/compose/ColorPickerController;FFJLandroidx/compose/ui/graphics/ImageBitmap;FJFLandroidx/compose/ui/graphics/Paint;JJFLandroidx/compose/ui/graphics/Color;Landroidx/compose/runtime/Composer;III)V } -public final class com/github/skydoves/colorpicker/compose/AlphaTileDrawable : android/graphics/drawable/Drawable { - public static final field $stable I - public synthetic fun (FJJLkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun draw (Landroid/graphics/Canvas;)V - public fun getOpacity ()I - public fun setAlpha (I)V - public fun setColorFilter (Landroid/graphics/ColorFilter;)V -} - public final class com/github/skydoves/colorpicker/compose/AlphaTileKt { public static final fun AlphaTile-Qd0NJH0 (Landroidx/compose/ui/Modifier;Lcom/github/skydoves/colorpicker/compose/ColorPickerController;JJJFLandroidx/compose/runtime/Composer;II)V } @@ -38,21 +29,30 @@ public final class com/github/skydoves/colorpicker/compose/ColorEnvelope { public final class com/github/skydoves/colorpicker/compose/ColorPickerController { public static final field $stable I public fun ()V + public fun (Lkotlinx/coroutines/CoroutineScope;)V + public synthetic fun (Lkotlinx/coroutines/CoroutineScope;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getColorFlow (J)Lkotlinx/coroutines/flow/Flow; + public static synthetic fun getColorFlow$default (Lcom/github/skydoves/colorpicker/compose/ColorPickerController;JILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow; + public final fun getEnabled ()Z public final fun getSelectedColor ()Landroidx/compose/runtime/State; public final fun getSelectedPoint ()Landroidx/compose/runtime/State; + public final fun getWheelAlpha ()F + public final fun getWheelBitmap ()Landroidx/compose/ui/graphics/ImageBitmap; + public final fun getWheelColor-0d7_KjU ()J + public final fun getWheelPaint ()Landroidx/compose/ui/graphics/Paint; + public final fun getWheelRadius-D9Ej5fM ()F public final fun selectByColor-DxMtmZc (JZ)V public final fun selectByCoordinate (FFZ)V + public final fun selectByCoordinate-3MmeM6k (JZ)V + public final fun selectByHsv (FFFFZ)V public final fun selectByHsv ([FFZ)V public final fun selectCenter (Z)V public final fun setAlpha (FZ)V public final fun setBrightness (FZ)V - public final fun setDebounceDuration (J)V public final fun setEnabled (Z)V - public final fun setPaletteContentScale (Lcom/github/skydoves/colorpicker/compose/PaletteContentScale;)V - public final fun setPaletteImageBitmap (Landroidx/compose/ui/graphics/ImageBitmap;)V public final fun setWheelAlpha (F)V + public final fun setWheelBitmap (Landroidx/compose/ui/graphics/ImageBitmap;)V public final fun setWheelColor-8_81llA (J)V - public final fun setWheelImageBitmap (Landroidx/compose/ui/graphics/ImageBitmap;)V public final fun setWheelPaint (Landroidx/compose/ui/graphics/Paint;)V public final fun setWheelRadius-0680j_4 (F)V } @@ -62,7 +62,7 @@ public final class com/github/skydoves/colorpicker/compose/ColorPickerController } public final class com/github/skydoves/colorpicker/compose/DrawScopeExtensionsKt { - public static final fun drawColorIndicator-mxwnekA (Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroid/graphics/PointF;J)V + public static final fun drawColorIndicator-wPWG1Vc (Landroidx/compose/ui/graphics/drawscope/DrawScope;JJ)V } public final class com/github/skydoves/colorpicker/compose/HsvColorPickerKt { diff --git a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/AlphaSlider.kt b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/AlphaSlider.kt index 884b560..a97e078 100644 --- a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/AlphaSlider.kt +++ b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/AlphaSlider.kt @@ -76,17 +76,17 @@ public fun AlphaSlider( } Slider( - modifier, - controller, - borderRadius, - borderSize, - borderColor, - wheelImageBitmap, - wheelRadius, - wheelColor, - wheelAlpha, - wheelPaint, - initialColor, + modifier = modifier, + controller = controller, + borderRadius = borderRadius, + borderSize = borderSize, + borderColor = borderColor, + wheelImageBitmap = wheelImageBitmap, + wheelRadius = wheelRadius, + wheelColor = wheelColor, + wheelAlpha = wheelAlpha, + wheelPaint = wheelPaint, + initialColor = initialColor, drawBackground = { drawRoundRect(it, borderRadius.value, paint) }, diff --git a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/BrightnessSlider.kt b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/BrightnessSlider.kt index 0f4bb0c..d291232 100644 --- a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/BrightnessSlider.kt +++ b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/BrightnessSlider.kt @@ -62,18 +62,17 @@ public fun BrightnessSlider( } Slider( - modifier, - controller, - borderRadius, - borderSize, - borderColor, - wheelImageBitmap, - wheelRadius, - wheelColor, - wheelAlpha, - wheelPaint, - initialColor, - + modifier = modifier, + controller = controller, + borderRadius = borderRadius, + borderSize = borderSize, + borderColor = borderColor, + wheelImageBitmap = wheelImageBitmap, + wheelRadius = wheelRadius, + wheelColor = wheelColor, + wheelAlpha = wheelAlpha, + wheelPaint = wheelPaint, + initialColor = initialColor, getValue = { brightness.value }, setValue = ColorPickerController::setBrightness, computeInitial = { maxOf(it.red, it.green, it.blue) }, diff --git a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/HsvColorPicker.kt b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/HsvColorPicker.kt index 8c1191e..583b3c3 100644 --- a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/HsvColorPicker.kt +++ b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/HsvColorPicker.kt @@ -62,7 +62,6 @@ public fun HsvColorPicker( drawOnPosSelected = drawOnPosSelected, drawDefaultWheelIndicator = drawDefaultWheelIndicator, onColorChanged = onColorChanged, - sizeChanged = { size = it radius = size.radius diff --git a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/Slider.kt b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/Slider.kt index 77fae0a..6fcf8e9 100644 --- a/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/Slider.kt +++ b/colorpicker-compose/src/commonMain/kotlin/com/github/skydoves/colorpicker/compose/Slider.kt @@ -82,7 +82,6 @@ internal fun Slider( alpha = wheelAlpha }, initialColor: Color? = null, - drawBackground: Canvas.(IntSize) -> Unit = {}, getValue: ColorPickerController.() -> Float, setValue: ColorPickerController.(Float, fromUser: Boolean) -> Unit, @@ -144,14 +143,14 @@ internal fun Slider( // draw wheel bitmap on the canvas. canvas.drawWheel( - controller.getValue(), - width, - height, - wheelImageBitmap, - wheelRadiusPx, - wheelColor, - wheelAlpha, - wheelPaint, + position = controller.getValue(), + width = width, + height = height, + wheelImageBitmap = wheelImageBitmap, + wheelRadius = wheelRadiusPx, + wheelColor = wheelColor, + wheelAlpha = wheelAlpha, + wheelPaint = wheelPaint, ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 054ee69..be9321f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } android-test = { id = "com.android.test", version.ref = "agp" } - +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" } diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj index ae3047e..168d344 100644 --- a/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -390,4 +390,4 @@ /* End XCConfigurationList section */ }; rootObject = 7555FF73242A565900829871 /* Project object */; -} \ No newline at end of file +} diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/jaewoongeum.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/jaewoongeum.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..fd3c62a Binary files /dev/null and b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/jaewoongeum.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/jaewoongeum.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/xcuserdata/jaewoongeum.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..56b5955 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/jaewoongeum.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + iosApp.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/iosApp/iosApp/ContentView.swift b/iosApp/iosApp/ContentView.swift index 3cd5c32..b54addd 100644 --- a/iosApp/iosApp/ContentView.swift +++ b/iosApp/iosApp/ContentView.swift @@ -1,6 +1,6 @@ import UIKit import SwiftUI -import ComposeApp +import shared struct ComposeView: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIViewController {