From 9108e078b7e4edc4ceea97758b343fa87727fd96 Mon Sep 17 00:00:00 2001 From: Sebastian Aigner Date: Sun, 26 Mar 2023 16:49:57 +0200 Subject: [PATCH 1/2] Add file to `resources` directory to make sure it is included in the template. --- shared/src/commonMain/resources/kotlin.png | Bin 0 -> 13116 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 shared/src/commonMain/resources/kotlin.png diff --git a/shared/src/commonMain/resources/kotlin.png b/shared/src/commonMain/resources/kotlin.png new file mode 100644 index 0000000000000000000000000000000000000000..b78e63a0e7be9e9e48da7901774d3953940db56c GIT binary patch literal 13116 zcmaJ|30PCt)&)^f(WGh>MM#`!UzMO15HtyhmQn{|ZJ+uC0#%?EgbD>Dn8dNsQl&~2 z5CkF)u`0A;MMOds3nBq5L@CN31p|gr!zCmk$-mDHLlW%o_wkAM+%xU7_gZW3b3M-3 z*wyUEk zYpuFE@KHivqNF)ZM5ZU-cyo*O_R5E3nEV@Qe`0eRRt=Y4$X&GwB|WxvC%UaI2b zI~rBj&OWOf_7#QurZMW_X3hR7TawmP1wuxP_GlwvHO>Kj$*!$JsI<}7Pl56nijf}jp0rFrOxGy1t?Z{4Z|?46noG;A7(CVrf>h?u@XE@}9WS<> zbA%=Qi;I~Uf5S~T{8ls& zc{bLxh}lE8Tt<2Qn}fg|H7TVIV4?+lp_QzPdV4&W3Z60x#*6tJKQS+H|9$PY6ERn{ z_$pZr1Sx~^W~HE{W(*cS0h;e=IZ2865p9^$7df1Ua+ZO)_O-xfVzl3eiOMwAF5-6E zgRCI#N6!wh>_cGFnhgsn^1r8as+Lwzi(C&47nv~d~eiEem8)Iar|BE?JgE{)v zX%$~5CH7gfR+&iu0yhL#Bi#UJ;E{#l8ktg0qi*cECj(gc|>8 z-s$@`qOH?a;DMYRJopy4h3219&NkDYS6lp>!qj9MzwmilpQeX=aa<(K++4Gj7hz=^cCpvkt`1Bl`q{IPh7R?kupmZe|#0GGugh7<=^%oGc``>ao z4oQg`=idF(#C+e=d%<5^AkgFaq^{;Qj6xUOFZRzL)h5z)j*3i5w2Z&8^g@ByolQ47 zvT%-=x0UlJz2GxZSro+_}41$|(FsRA$rGd=%Dx--^-b`zfF~{QicP zH6Cj^!+hhFWhJ|*UG<%yl?qr}@Dm_4ghDghd$rW*U`(=>VJ()Cr1~B0WRel-erPDYe|4S zG`H-J&V6-~_SrAiBXPN>nT7NQgfOxbc3Y-d#aY`k3_28TTWo8oH@IArMU*V+d2I2bb#ZHU4B!@yD}zgPDBLevyM zyJzE`DWlp6C!sxi|LUZ~h8I`BiHHyoFDzaoFmb0gl-vij!On2yoBa`LAmTMQJf!5! z+@Em=Sq7#u156(=*BjuPt=w0QG4R5xcXn<7FVXx`sQ!8xrM-er!5Ec>M%#8mnOSo0 zI-MsJyHmU2ghsq$=TxleDHF>jQ6;Ykz0%9DbVitqzgm)D>(Qx@XcsZBRjAA^T3x!hc(Qb3M#FVOhQFwqm8N=66kDqY-V8oN) zadkY6mB@0riWhMEAgfA`aBWCfQyx+MWm5L1GGbYX8Fn!Rg9tnb@!=c4%35k)=#qbof!=xp7JhYuE0TAR1$KcDKGn=f<4`O#~ctG zG;s|&@nKQo+wpy?P(mphFilp20S{;GlFyS4?>85g<-n9B`f2_MIhP&JvJp7R_`=W; z)#8dth~){YqPEqijd;(6f&SEjInG2k_8R@hy zuNVunj+-ElRG2;8!x4*EQ_w&GSVTbJo2f{%_LXDYX_BDNWSq8f()%2|1;E%UzjZch z8Y2nX&~Mb_<;O9ty_mg-LF}{8snG1=DcP#;=>(a@qXC5Zv=_6)(d%6cHjn^gUl9E` zZo6@Pn{&c#m}qJDy5?wRi6|euK?0Y3d)W}bE1TD`_tiTMY))csbL_O;KiObB^&2>q zt~vgkBkWAhI%B^UaQWHd2r63+IY?PMr4cLy9Ru5prjwgEc=5QDdQr*k3atJQ{3nLDdri=|CMP z8kMV{5p)*;J4(`%0hO@8;;>kV{Tp-9i&J6%6ShDn1P9GyJN)dKO|1oeXu)1inbiMux$?suJ8yht*{58jN zwm&d#G>J?qLon7zJ)+crhP9DyJ*e!t9H!l4pI8cv#g@M(Re>&!6fi%Q+9&!*=fH(^ic@g%soTpS zHw>IFoG7U(-v>rygtfY}>+vkQ>sMHnrlN5|#CA~&*oxm!F+^E){tRB;^-TzP^*hv} zv3v?mB{yB}JA-5@0N#$o^Y%MDJ|QA6`ZR*h_(CK5i0@}M`!9U!0r?FzOrcT|B}j91jrHWDe9)}_wqogduJ5*zF$SkT=IR zlN%;QIDa06>JMWuNLq%HRuV+;j>6Wh54=yF-6+GhnS)#&$v&H>0)%3*{&pqh9l++w zE>m&N2)C^sBj)9Dy0Z`DSyNN$ElGgBTz%dNorN{sXjGN?+u4@(N4GI3{zO3G;aY&x zF&ELRi^-`_9+()5LSv|yaAzJGw~=x2Krw>?{-dfSb_) zD2g+LJH`Otp%x2&JIgbOwe?zH8^nmbdphX16jVAv>`jXY`q|T{wSbY5Ya!4JYRrAA z5k3w1K=Et{74PpHu^PHKmi@%Rz&NP@D$rX7vzEnM^xj$+VdJ;pv^l~p?(DaNjJ|iOpvXIvRtgALsoXRLD~(vA&N|HcwRk&3w8lMs zTtuECq>K0TW5eyQBuR^2aQj#I+r`gU!CXA$SNP_~T_8lne4%4;OFZT%;PsvK0a(As znLZp+{ze|fF@kfzWGi503H{kyl9d*5%+V%m?z^4%q4HXUZH^G*5jb^ zb9^#j%e>Xf5DCSe5kCgIgrD4WkX_9?yT6BqIvXSyY>9lK)!&LEY96VGXG1I`iu;47=P7PwC3FRY^4khB+g!Bn z5K_{|UHmYrGIW4q;Jljg#gpVCXd91y7~A^f1+ZJSZULF# zvN8|m0cZe0uipT8DJy9hA93o;>s0qJGgt>1=U3uM7ty+|WPp}EAc$V$Y^;RrxR5rTPckV7M$YcZFyj;ir7^4~Lc4d93BRyFf#rJa(#gSx;6v?2~^}3u2*? zC9sWHA4TLhjD_-dLh$ScY8yUCxbzI>J?gAJ#wGUV|h&r;C*H%UO z{&wL%KLlZ`-$}hiyW*b8w$UWw)PjJVu5n|b7A85{L0VH#+WZL|j7LR_HS0aSMYQaN ztW0IgBtnOvh(gQvAXQ1;aWi%Twm9AbYpSO!T$18a=iYbjoy$naMg{{tGv9VYIDtAr zZ(ZRp1jKGle=w}m$`9YuVhpMH8 z8kK)_CJ?EPaYsw(nPrFYP%S&(W{)Atdek0?-nXjZ4GVYl@D*yf~VrW3LtpWyoA#v^DWP! z$W9?i-D-Nlxl*8ew=L5Yx^Fa z&;C8=m2)qk6GZzNfX7pFN+o}GhoV>Fr@};a48&M0%`HIKfRpPAiFYr9yeH4VnsWT? z!nf3leBVRnrjLi&l`BQ-LYF=T@!aZVfoZX4 z@}y6Y76FH~1SVKRB?q4d@fa5hij|uF^)N?KtvGSKj-ZyRH~Fj$bu35p9Fy2L2>M({ zF}?M0df#uA<W(o z!1Zyc>pjm(KCrDE9D>pZ@5?U5LZOE(WJ2ct8;q7}n^J3m3dR{U_Jqi(d1pgzH$G(m zu;9D_1MXQ&e}%Gj9Tr-is=nj`R@3|U!j*V-J=ET8JHQLbXlUn?#-S`~UCW)?7N8uE z7egcZb~VsuNTY3FQiKi57?ycYIvR~1{UI9l=+|2aq4LoMSuG@6vjlP8jDJw|#Ruy6 zi2zLO$>Mc(3rkV9lm<9G{FbX@8Rg+-R3z3h-~6{BZ~*g8j?vo(FDOSXIikEZjM8MY z$Wto=puEC;wEt2+%zTl~Shk7nOYW_y5rpTd10j=r?<()qR({ey+?G||$*)uq}e zz)8W*hY$+3>b!Zdj-mg|?U1gvq5mu#B}_(rzd|}0Rlx_*YiEXC_{Akiv7-ccWQ9|g zYx!__0OEzZiR?;k=i7x(+>Mu;dCHLZYIAhHajC1`;3Z~8dgorHiF7+L@>IlPu1+0| z^vk-3_60*Rcy}K~2IY)jBCwT#QU~;Qyt8e#iOIBo(6<1H7LfJR=D|(nI57Qdi>2ag z!?QmYRe%?|7hI&=0-?2%ZGv5g;jUJtLOF!T@??I^_Z?oumW8W%P~XK)3!khhc;4KL z=Q#6ADi#lHIs&!NL7<8i#96OMdEXjrI|OMk;%^9);ZPxCB}ASos|cKG^a6kSkhRc$ z0u~#*zP=Th5!46@u61@F4HkgVV0Pio$B{cSyoz0iWxn0pC8h6p_@qPg$VM7zSqW}4 z47V_u`^~&YFv`&Q6^XS7HZtN`-3!jm>1F7E%-yGjwj0^X+-Ege`m`>C#~REV<_Awt z18WiQ?xX1;DFoQFi};=L6{9>hWe4DtSPT%PSF4vBY5=O`RBSb89IGP%4L?km4E z$G(2tWeEo`Q3~$4(-Dg{5nm%n|N6O}0`{MdHh($fg5_MnRvU5VhxyDStlw<~Fv;Yr z8vogXD~1mrPJGA1Bef43S2Da-2|Tt$4Ql(lkB-AV84uQjPXUJ&=eZx$HY^!Qe`Npp zIovWEX+j<-^`~hF7~@i@DJ(Nax~Q{Pr`BN+*K4nHO%Jl3yHU^GRIL+ijXeZiPyQse zR?-Y#TvA)71qHL)aJPO4a~qa8rM!5pGXR{EXEl`0SUGhep-_)STeX4cUXPf$JUmB# zH47C0G)`sZk|>sLVz5+i$c1c0Lq4IAB@24sht;Hz;Q$T z1t82aT|s)@eWY{M+x95M-<$zgE2Q(N&=CnmkDt@A5+!({9@B(u*U@3#;@pf@x|BNu8>On=fjFFfS#CgZV z%eXf>L8WpS2+K-!`~{L{Q1k&*yjqB~7?e@q%5NA(!+TLyK;(q7sPLjzrnmuzCcyEJ)oF<|JH|6>m~QS^4!@kVB3~``nYTE84jC&L6Vl< z`xR!@sZ3Z?jN~FKYH?p8z@WA@E8u*N8XVnM z2semI039QfRh7pTy7QE`4&&SdXzKlqBeCck8Y&M}@K`~i+auBe#iMBAfDd(?K$I9F z9U)<(ddyf1LUItW^Dh2~w1$8O87qE05&mH^QekjeeHEcFAu{g>B!jMu^eCJefs_&> zY>|l5>r#Qkujf{&%4BF<=dF&x%mW#;PW+k}!FlT=R6k=ioKezT(M=}I=CkR1t%@H8 zmwF#z>;praN?l(5j)(t&z!~-Cd_q7MW$gvGl?d}a3$esvqqLa8gVnjKGcx%jI&5V@Thq>Z)e z`M}E%L*b`G&RMPnPOct;;JlwUz^5DrkXttHBB(vcn)NU)sG=jCbCmV;O#iqEhU}4; zxobN24TO&#XqP1;lK%@y%!Xl%O`Qi7t!V|QAT^BcWyces!g?IZcMLAebS&`d$Znir ziDy&FM^Jy$&${xQUtVq9$g5*@WNi5A$<&wDtO3uZMhmcB23bsh!v8K9TEO{p5LnG# z-x#lA0@$0x{d|4zp$T}E38xvpoq2_XPno-jQvongUSHy> zUUPFI6HiRK(?^6U)3q2vh*jOmG63dRwYZA8`~pf3Grwm+ev8+3%8FKSBW4P6>$7+) zeQ+n8m5|RKWIZt+MN|8b`934;E+CFRuhdcS3KT0hy6h5K z4(R^Jt8c8n_)edjqWmy}w%yW*7wF+uDBr1^2!(fjC?PMKhcc5^FqQ!k#Q*#fXY1>b zq8N6Vho_qFnBiMI*;MZGfn~i0f6fL^2ByLk_0~h{z0dY=`1hn)zs!!{$D9?uAk$t8VmmvZtlG$3vm5WHfDIo{-b* z1yZ;(dS$fB5dPVybUX=L>TlTAE6;$Nj)wqr= zyEpPoY6}6~z}6TG@L>GYCU+`)5^0R^%FofIUL?BGE$I43pzy8DbZSAUmb`vhY-qlDe4=i^w$0Z{X)p!vD z5YyjSE9>uqCr5!QrJ_19%ID}Ii(8*`Ys?^ea`kOcbjgLsk&{7`<%1R_p(Gx;19>sj z?eev*)Z`bPd=iG#C!$StZ9=Mhp^69!s2+6c@TBQWfxe=(2O(1h@g(JgenmN?vMA?U zg1U=tycq7b|E9X5A+e}Yrq{g55GD&JxD|9kbLj};d!?0keS?apG_h^OF#gha4;Cz- z7OnSmJA8SAiw5@c+#$xp5*8xyfYgWntE|)Scr`On4tKniJy7N0DR+&e1|DS{-EepH z+^*Abaq*|i|FNBc=uJNlQNOHRYiWU1MePQGqerToCmmWy8k?#Zl}hwckwLDc{2`Q?Tn^=uQNb*vA3#I9+NKjTATQ&d1^$8v0ep zk2zH2OZOY>D?8)@rKA5Vm-;9Zln@x0?pjVVI|qQ8!ECdQJv36p5qUDwby@nTWvsud z`_7}`yL^&~<_m{{ofoj5$PD zt^?J*utgeNdso!ml+Zv&bq=^^HVE1Ofu{tx>c1l6HzejCY{&f5cAZy29Z*8s|$>SdQX$ zD4b>pJB_jpAF(a?EmW~8%|<0$o}06E)_(`MA+!Li)*A1>D!c v!O2`lC2~;$%D)aOiJ48(_#OH`3%vwj literal 0 HcmV?d00001 From d2f327f64930ead64169a452d4495139e22bd327 Mon Sep 17 00:00:00 2001 From: Sebastian Aigner Date: Mon, 27 Mar 2023 16:54:48 +0200 Subject: [PATCH 2/2] Add Compose Multiplatform XML Vector Graphics and use it . --- iosApp/iosApp.xcodeproj/project.pbxproj | 20 +++++++++- shared/src/commonMain/kotlin/App.kt | 30 ++++++++++++--- .../resources/compose-multiplatform.xml | 36 ++++++++++++++++++ shared/src/commonMain/resources/kotlin.png | Bin 13116 -> 0 bytes 4 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 shared/src/commonMain/resources/compose-multiplatform.xml delete mode 100644 shared/src/commonMain/resources/kotlin.png diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj index ba43183..973d8d2 100644 --- a/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; - 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; CFDB58B53BB94DE262B13C24 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */; }; @@ -114,6 +112,7 @@ 7555FF77242A565900829871 /* Sources */, 7555FF79242A565900829871 /* Resources */, F85CB1118929364A9C6EFABC /* Frameworks */, + 2134C13603D0B299603D9F49 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -168,6 +167,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2134C13603D0B299603D9F49 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 98D614C51D2DA07C614CC46E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/shared/src/commonMain/kotlin/App.kt b/shared/src/commonMain/kotlin/App.kt index 5d85f24..4722441 100644 --- a/shared/src/commonMain/kotlin/App.kt +++ b/shared/src/commonMain/kotlin/App.kt @@ -1,3 +1,7 @@ +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material.Button import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -6,16 +10,30 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import org.jetbrains.compose.resources.ExperimentalResourceApi +import org.jetbrains.compose.resources.painterResource +@OptIn(ExperimentalResourceApi::class) @Composable internal fun App() { MaterialTheme { - var text by remember { mutableStateOf("Hello, World!") } - - Button(onClick = { - text = "Hello, ${getPlatformName()}" - }) { - Text(text) + var greetingText by remember { mutableStateOf("Hello, World!") } + var showImage by remember { mutableStateOf(false) } + Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { + Button(onClick = { + greetingText = "Hello, ${getPlatformName()}" + showImage = !showImage + }) { + Text(greetingText) + } + AnimatedVisibility(showImage) { + Image( + painterResource("compose-multiplatform.xml"), + null + ) + } } } } diff --git a/shared/src/commonMain/resources/compose-multiplatform.xml b/shared/src/commonMain/resources/compose-multiplatform.xml new file mode 100644 index 0000000..d7bf795 --- /dev/null +++ b/shared/src/commonMain/resources/compose-multiplatform.xml @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/shared/src/commonMain/resources/kotlin.png b/shared/src/commonMain/resources/kotlin.png deleted file mode 100644 index b78e63a0e7be9e9e48da7901774d3953940db56c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13116 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 v!O2`lC2~;$%D)aOiJ48(_#OH`3%vwj