Skip to content

Commit 14d6e41

Browse files
Merge branch 'feature/image-transform' into develop
2 parents ed88a47 + 364d170 commit 14d6e41

File tree

14 files changed

+2017
-8
lines changed

14 files changed

+2017
-8
lines changed

app/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ dependencies {
5151
implementation project(':image')
5252

5353
implementation 'androidx.core:core-ktx:1.8.0'
54-
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
54+
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.0'
5555

56-
implementation 'com.github.SmartToolFactory:Compose-Extended-Gestures:1.2.0'
56+
implementation 'com.github.SmartToolFactory:Compose-Extended-Gestures:2.0.0'
5757

5858
implementation "androidx.compose.ui:ui:$compose_version"
5959
// Tooling support (Previews, etc.)
@@ -66,12 +66,12 @@ dependencies {
6666
implementation "androidx.compose.material:material-icons-core:$compose_version"
6767
implementation "androidx.compose.material:material-icons-extended:$compose_version"
6868
// Integration with activities
69-
implementation 'androidx.activity:activity-compose:1.4.0'
69+
implementation 'androidx.activity:activity-compose:1.5.0'
7070
// Integration with ViewModels
71-
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.4.1'
71+
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.5.0'
7272

7373
// Material Design 3 for Compose
74-
implementation "androidx.compose.material3:material3:1.0.0-alpha13"
74+
implementation "androidx.compose.material3:material3:1.0.0-alpha14"
7575

7676
// Photo Picker
7777
implementation("com.google.modernstorage:modernstorage-photopicker:1.0.0-alpha06")

app/src/main/java/com/smarttoolfactory/composeimage/MainActivity.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import com.google.accompanist.pager.ExperimentalPagerApi
1818
import com.google.accompanist.pager.HorizontalPager
1919
import com.google.accompanist.pager.PagerState
2020
import com.google.accompanist.pager.rememberPagerState
21+
import com.smarttoolfactory.composeimage.demo.EditScaleDemo
22+
import com.smarttoolfactory.composeimage.demo.EditSizeDemo
2123
import com.smarttoolfactory.composeimage.demo.ImageWithConstraintsDemo
2224
import com.smarttoolfactory.composeimage.demo.ThumbnailDemo
2325
import com.smarttoolfactory.composeimage.ui.theme.ComposeImageTheme
@@ -89,7 +91,9 @@ private fun HomeContent() {
8991

9092
when (page) {
9193
0 -> ImageWithConstraintsDemo()
92-
else-> ThumbnailDemo()
94+
1 -> ThumbnailDemo()
95+
2 -> EditScaleDemo()
96+
else -> EditSizeDemo()
9397
}
9498
}
9599
}
@@ -98,5 +102,7 @@ private fun HomeContent() {
98102
internal val tabList =
99103
listOf(
100104
"Image Constraints",
101-
"Image Thumbnail"
105+
"Image Thumbnail",
106+
"Editable Scale",
107+
"Editable Size",
102108
)
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.smarttoolfactory.composeimage.demo
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.layout.*
6+
import androidx.compose.foundation.shape.RoundedCornerShape
7+
import androidx.compose.material.Text
8+
import androidx.compose.material3.ElevatedButton
9+
import androidx.compose.runtime.*
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.compose.ui.layout.ContentScale
13+
import androidx.compose.ui.platform.LocalDensity
14+
import androidx.compose.ui.res.painterResource
15+
import androidx.compose.ui.unit.dp
16+
import androidx.compose.ui.unit.sp
17+
import androidx.compose.ui.zIndex
18+
import com.smarttoolfactory.composeimage.R
19+
import com.smarttoolfactory.image.transform.HandlePlacement
20+
import com.smarttoolfactory.image.transform.TransformLayout
21+
22+
@Composable
23+
fun EditScaleDemo() {
24+
Column(
25+
modifier = Modifier
26+
.background(Color(0xff424242))
27+
.fillMaxSize()
28+
.padding(8.dp)
29+
) {
30+
31+
var enabled by remember { mutableStateOf(true) }
32+
33+
Spacer(modifier = Modifier.height(40.dp))
34+
35+
var zIndex1 by remember {
36+
mutableStateOf(0f)
37+
}
38+
39+
var zIndex2 by remember {
40+
mutableStateOf(0f)
41+
}
42+
43+
var zIndex3 by remember {
44+
mutableStateOf(0f)
45+
}
46+
47+
48+
val density = LocalDensity.current
49+
val size = (500 / density.density).dp
50+
51+
TransformLayout(
52+
modifier = Modifier
53+
.size(size)
54+
.zIndex(zIndex1),
55+
enabled = enabled,
56+
onDown = {
57+
zIndex1 = 1f
58+
},
59+
onUp = {
60+
zIndex1 = 0f
61+
}
62+
) {
63+
Image(
64+
painter = painterResource(id = R.drawable.landscape1),
65+
contentScale = ContentScale.FillBounds,
66+
contentDescription = "",
67+
)
68+
}
69+
70+
TransformLayout(
71+
modifier = Modifier.zIndex(zIndex2),
72+
handleRadius = 20.dp,
73+
enabled = enabled,
74+
handlePlacement = HandlePlacement.Side,
75+
onDown = {
76+
zIndex2 = 1f
77+
},
78+
onUp = {
79+
zIndex2 = 0f
80+
}
81+
) {
82+
Image(
83+
painter = painterResource(id = R.drawable.landscape2),
84+
contentScale = ContentScale.FillBounds,
85+
contentDescription = ""
86+
)
87+
}
88+
89+
TransformLayout(
90+
modifier = Modifier
91+
.size(width = 300.dp, height = 200.dp)
92+
.zIndex(zIndex3),
93+
enabled = enabled,
94+
handlePlacement = HandlePlacement.Both,
95+
onDown = {
96+
zIndex3 = 1f
97+
},
98+
onUp = {
99+
zIndex3 = 0f
100+
}
101+
) {
102+
Image(
103+
painter = painterResource(id = R.drawable.landscape3),
104+
contentScale = ContentScale.Fit,
105+
contentDescription = ""
106+
)
107+
}
108+
109+
TransformLayout(
110+
enabled = enabled
111+
) {
112+
Text(
113+
text = "Hello World",
114+
modifier = Modifier
115+
.background(
116+
Color.Red,
117+
RoundedCornerShape(25)
118+
)
119+
.padding(2.dp),
120+
fontSize = 20.sp,
121+
color = Color.White
122+
)
123+
}
124+
125+
126+
Spacer(modifier = Modifier.weight(1f))
127+
128+
ElevatedButton(
129+
modifier = Modifier
130+
.fillMaxWidth()
131+
.padding(8.dp),
132+
onClick = { enabled = !enabled }
133+
) {
134+
Text(if (enabled) "Disable" else "Enable")
135+
}
136+
Spacer(modifier = Modifier.height(50.dp))
137+
}
138+
}
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package com.smarttoolfactory.composeimage.demo
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.layout.*
6+
import androidx.compose.foundation.shape.RoundedCornerShape
7+
import androidx.compose.material.Text
8+
import androidx.compose.material3.ElevatedButton
9+
import androidx.compose.runtime.*
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.compose.ui.layout.ContentScale
13+
import androidx.compose.ui.platform.LocalDensity
14+
import androidx.compose.ui.res.painterResource
15+
import androidx.compose.ui.unit.dp
16+
import androidx.compose.ui.unit.sp
17+
import androidx.compose.ui.zIndex
18+
import com.smarttoolfactory.composeimage.R
19+
import com.smarttoolfactory.image.transform.HandlePlacement
20+
import com.smarttoolfactory.image.transform.MorphLayout
21+
22+
@Composable
23+
fun EditSizeDemo() {
24+
Column(
25+
modifier = Modifier
26+
.background(Color(0xff424242))
27+
.fillMaxSize()
28+
.padding(8.dp)
29+
) {
30+
31+
var enabled by remember { mutableStateOf(true) }
32+
33+
Spacer(modifier = Modifier.height(40.dp))
34+
35+
var zIndex1 by remember {
36+
mutableStateOf(0f)
37+
}
38+
39+
var zIndex2 by remember {
40+
mutableStateOf(0f)
41+
}
42+
43+
var zIndex3 by remember {
44+
mutableStateOf(0f)
45+
}
46+
47+
48+
val density = LocalDensity.current
49+
val size = (500 / density.density).dp
50+
51+
MorphLayout(
52+
modifier = Modifier.size(size),
53+
containerModifier = Modifier.zIndex(zIndex1),
54+
enabled = enabled,
55+
onDown = {
56+
zIndex1 = 1f
57+
},
58+
onUp = {
59+
zIndex1 = 0f
60+
}
61+
) {
62+
Image(
63+
painter = painterResource(id = R.drawable.landscape1),
64+
contentScale = ContentScale.FillBounds,
65+
contentDescription = "",
66+
)
67+
}
68+
69+
MorphLayout(
70+
containerModifier = Modifier.zIndex(zIndex2),
71+
handleRadius = 20.dp,
72+
enabled = enabled,
73+
handlePlacement = HandlePlacement.Side,
74+
onDown = {
75+
zIndex2 = 1f
76+
},
77+
onUp = {
78+
zIndex2 = 0f
79+
}
80+
) {
81+
Image(
82+
painter = painterResource(id = R.drawable.landscape2),
83+
contentScale = ContentScale.FillBounds,
84+
contentDescription = ""
85+
)
86+
}
87+
88+
MorphLayout(
89+
modifier = Modifier.size(width = 300.dp, height = 200.dp),
90+
containerModifier = Modifier.zIndex(zIndex3),
91+
enabled = enabled,
92+
handlePlacement = HandlePlacement.Both,
93+
onDown = {
94+
zIndex3 = 1f
95+
},
96+
onUp = {
97+
zIndex3 = 0f
98+
}
99+
) {
100+
Image(
101+
painter = painterResource(id = R.drawable.landscape3),
102+
contentScale = ContentScale.Fit,
103+
contentDescription = ""
104+
)
105+
}
106+
107+
MorphLayout(
108+
enabled = enabled
109+
) {
110+
Text(
111+
text = "Hello World",
112+
modifier = Modifier
113+
.background(
114+
Color.Red,
115+
RoundedCornerShape(25)
116+
)
117+
.padding(2.dp),
118+
fontSize = 20.sp,
119+
color = Color.White
120+
)
121+
}
122+
123+
124+
Spacer(modifier = Modifier.weight(1f))
125+
126+
ElevatedButton(
127+
modifier = Modifier
128+
.fillMaxWidth()
129+
.padding(8.dp),
130+
onClick = { enabled = !enabled }
131+
) {
132+
Text(if (enabled) "Disable" else "Enable")
133+
}
134+
Spacer(modifier = Modifier.height(50.dp))
135+
}
136+
}

image/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ dependencies {
4646

4747
implementation 'androidx.core:core-ktx:1.8.0'
4848

49-
implementation 'com.github.SmartToolFactory:Compose-Extended-Gestures:1.2.0'
49+
implementation 'com.github.SmartToolFactory:Compose-Extended-Gestures:2.0.0'
5050

5151
// Jetpack Compose
5252
implementation "androidx.compose.ui:ui:$compose_version"

0 commit comments

Comments
 (0)