This commit is contained in:
T8RIN 2025-12-26 01:53:25 +03:00
parent 99474ba9cb
commit f14095c5ac
7 changed files with 361 additions and 333 deletions

View File

@ -1,39 +1,128 @@
<!--
~ ImageToolbox is an image editor for android
~ Copyright (c) 2025 T8RIN (Malik Mukhametzyanov)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~
~ 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.
~
~ You should have received a copy of the Apache License
~ along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
-->
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="1305"
android:viewportHeight="1295">
<group
android:scaleX="0.38"
android:scaleY="0.37"
android:translateX="412"
android:translateY="410.5">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M761,383.8v99.7c0,17.1 5.8,31.5 17.4,43.1C790,538.2 804.3,544 821.4,544h99.7c8.1,0 15.9,-1.5 23.4,-4.5c7.6,-3 14.4,-7.6 20.4,-13.6l314.3,-314.3c9.1,-9.1 15.6,-19.4 19.6,-31c4,-11.6 6,-22.9 6,-34c0,-11.1 -2.3,-22.2 -6.8,-33.2c-4.5,-11.1 -10.8,-21.2 -18.9,-30.2l-55.9,-55.9c-9.1,-9.1 -19.1,-15.9 -30.2,-20.4c-11.1,-4.5 -22.7,-6.8 -34.8,-6.8c-11.1,0 -22.2,2 -33.2,6c-11.1,4 -21.2,10.6 -30.2,19.6L779.1,340c-6,6 -10.6,12.8 -13.6,20.4C762.5,368 761,375.8 761,383.8zM909.1,453.3h-57.4v-57.4l184.4,-182.8l55.9,55.9L909.1,453.3z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M1072,705c0,-74.8 -0.1,-135.5 -1.6,-186.2l101.8,-101.8C1180,489.6 1180,582.1 1180,705c0,248.5 0,372.8 -64.4,459.2c-18.8,25.2 -41.2,47.6 -66.4,66.4C962.8,1295 838.5,1295 590,1295s-372.8,0 -459.2,-64.4c-25.2,-18.8 -47.6,-41.2 -66.4,-66.4C0,1077.8 0,953.5 0,705s0,-372.8 64.4,-459.2c18.8,-25.2 41.2,-47.6 66.4,-66.4C217.2,115 341.5,115 590,115c134.7,0 232.8,0 308.3,10.2L798.1,225.4C743.2,223.1 675.9,223 590,223c-126.7,0 -212.9,0.2 -278.5,7.4c-63.5,7 -94.6,19.6 -116.1,35.6c-16.9,12.6 -31.8,27.5 -44.3,44.3c-16,21.5 -28.6,52.6 -35.6,116.1C108.2,492.1 108,578.3 108,705s0.2,212.9 7.4,278.5c1.6,14.3 3.4,26.9 5.5,38.2l1.1,-0.8c97.7,-71.2 198.9,-145 285.5,-95.1l74,45.5c72.3,44.8 155.5,-31.6 245.8,-114.5c60.9,-55.9 125,-114.8 191.2,-141.5c60.5,-24.4 101,-3.4 153.5,40.2C1072,739.5 1072,722.6 1072,705z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M450.2,491.9h-84.4V449.7h84.4M450.2,576.3h-84.4v-42.2h84.4M576.8,407.5h-59.3c-9.5,-16.5 -22.6,-30.6 -38.4,-41.3l34.4,-34.4l-29.7,-29.7l-45.8,45.8c-9.7,-2.3 -19.4,-3.6 -30,-3.6s-20.3,1.3 -29.7,3.6l-46,-45.8l-29.7,29.7l34.2,34.4c-15.6,10.8 -28.7,24.9 -38.2,41.3h-59.3v42.2h44.1c-1.1,7 -1.9,13.9 -1.9,21.1v21.1h-42.2v42.2h42.2v21.1c0,7.2 0.8,14.1 1.9,21.1h-44.1v42.2h59.3C320.5,656.2 361.2,681.8 408,681.8s87.5,-25.5 109.5,-63.3h59.3v-42.2h-44.1c1.1,-7 1.9,-13.9 1.9,-21.1v-21.1h42.2v-42.2h-42.2v-21.1c0,-7.2 -0.8,-14.1 -1.9,-21.1h44.1V407.5z" />
</group>
</vector>
<aapt:attr name="android:drawable">
<vector
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group
android:name="root"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
<group
android:name="pencil"
android:alpha="1"
android:pivotX="54"
android:pivotY="54"
android:scaleX="2.4"
android:scaleY="2.4"
android:translateX="-36"
android:translateY="36">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
</group>
<group android:name="body">
<path
android:name="body_path1"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z" />
<group
android:name="body_path2_wrapper"
android:scaleX="0.04"
android:scaleY="0.04"
android:translateX="27"
android:translateY="29">
<path
android:name="body_path2"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M450.2,491.9h-84.4V449.7h84.4M450.2,576.3h-84.4v-42.2h84.4M576.8,407.5h-59.3c-9.5,-16.5 -22.6,-30.6 -38.4,-41.3l34.4,-34.4l-29.7,-29.7l-45.8,45.8c-9.7,-2.3 -19.4,-3.6 -30,-3.6s-20.3,1.3 -29.7,3.6l-46,-45.8l-29.7,29.7l34.2,34.4c-15.6,10.8 -28.7,24.9 -38.2,41.3h-59.3v42.2h44.1c-1.1,7 -1.9,13.9 -1.9,21.1v21.1h-42.2v42.2h42.2v21.1c0,7.2 0.8,14.1 1.9,21.1h-44.1v42.2h59.3C320.5,656.2 361.2,681.8 408,681.8s87.5,-25.5 109.5,-63.3h59.3v-42.2h-44.1c1.1,-7 1.9,-13.9 1.9,-21.1v-21.1h42.2v-42.2h-42.2v-21.1c0,-7.2 -0.8,-14.1 -1.9,-21.1h44.1V407.5z" />
</group>
</group>
</group>
</vector>
</aapt:attr>
<target android:name="pencil">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateX"
android:startOffset="150"
android:valueFrom="-36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateY"
android:startOffset="150"
android:valueFrom="36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleX"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleY"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
</set>
</aapt:attr>
</target>
<target android:name="body_path1">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="body_path2">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>

View File

@ -1,128 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<!--
~ ImageToolbox is an image editor for android
~ Copyright (c) 2025 T8RIN (Malik Mukhametzyanov)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~
~ 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.
~
~ You should have received a copy of the Apache License
~ along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
-->
<aapt:attr name="android:drawable">
<vector
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group
android:name="root"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
<group
android:name="pencil"
android:alpha="1"
android:pivotX="54"
android:pivotY="54"
android:scaleX="2.4"
android:scaleY="2.4"
android:translateX="-36"
android:translateY="36">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
</group>
<group android:name="body">
<path
android:name="body_path1"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z" />
<group
android:name="body_path2_wrapper"
android:scaleX="0.04"
android:scaleY="0.04"
android:translateX="27"
android:translateY="29">
<path
android:name="body_path2"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M450.2,491.9h-84.4V449.7h84.4M450.2,576.3h-84.4v-42.2h84.4M576.8,407.5h-59.3c-9.5,-16.5 -22.6,-30.6 -38.4,-41.3l34.4,-34.4l-29.7,-29.7l-45.8,45.8c-9.7,-2.3 -19.4,-3.6 -30,-3.6s-20.3,1.3 -29.7,3.6l-46,-45.8l-29.7,29.7l34.2,34.4c-15.6,10.8 -28.7,24.9 -38.2,41.3h-59.3v42.2h44.1c-1.1,7 -1.9,13.9 -1.9,21.1v21.1h-42.2v42.2h42.2v21.1c0,7.2 0.8,14.1 1.9,21.1h-44.1v42.2h59.3C320.5,656.2 361.2,681.8 408,681.8s87.5,-25.5 109.5,-63.3h59.3v-42.2h-44.1c1.1,-7 1.9,-13.9 1.9,-21.1v-21.1h42.2v-42.2h-42.2v-21.1c0,-7.2 -0.8,-14.1 -1.9,-21.1h44.1V407.5z" />
</group>
</group>
</group>
</vector>
</aapt:attr>
<target android:name="pencil">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateX"
android:startOffset="150"
android:valueFrom="-36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateY"
android:startOffset="150"
android:valueFrom="36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleX"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleY"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
</set>
</aapt:attr>
</target>
<target android:name="body_path1">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="body_path2">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="1305"
android:viewportHeight="1295">
<group
android:scaleX="0.38"
android:scaleY="0.37"
android:translateX="412"
android:translateY="410.5">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M761,383.8v99.7c0,17.1 5.8,31.5 17.4,43.1C790,538.2 804.3,544 821.4,544h99.7c8.1,0 15.9,-1.5 23.4,-4.5c7.6,-3 14.4,-7.6 20.4,-13.6l314.3,-314.3c9.1,-9.1 15.6,-19.4 19.6,-31c4,-11.6 6,-22.9 6,-34c0,-11.1 -2.3,-22.2 -6.8,-33.2c-4.5,-11.1 -10.8,-21.2 -18.9,-30.2l-55.9,-55.9c-9.1,-9.1 -19.1,-15.9 -30.2,-20.4c-11.1,-4.5 -22.7,-6.8 -34.8,-6.8c-11.1,0 -22.2,2 -33.2,6c-11.1,4 -21.2,10.6 -30.2,19.6L779.1,340c-6,6 -10.6,12.8 -13.6,20.4C762.5,368 761,375.8 761,383.8zM909.1,453.3h-57.4v-57.4l184.4,-182.8l55.9,55.9L909.1,453.3z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M1072,705c0,-74.8 -0.1,-135.5 -1.6,-186.2l101.8,-101.8C1180,489.6 1180,582.1 1180,705c0,248.5 0,372.8 -64.4,459.2c-18.8,25.2 -41.2,47.6 -66.4,66.4C962.8,1295 838.5,1295 590,1295s-372.8,0 -459.2,-64.4c-25.2,-18.8 -47.6,-41.2 -66.4,-66.4C0,1077.8 0,953.5 0,705s0,-372.8 64.4,-459.2c18.8,-25.2 41.2,-47.6 66.4,-66.4C217.2,115 341.5,115 590,115c134.7,0 232.8,0 308.3,10.2L798.1,225.4C743.2,223.1 675.9,223 590,223c-126.7,0 -212.9,0.2 -278.5,7.4c-63.5,7 -94.6,19.6 -116.1,35.6c-16.9,12.6 -31.8,27.5 -44.3,44.3c-16,21.5 -28.6,52.6 -35.6,116.1C108.2,492.1 108,578.3 108,705s0.2,212.9 7.4,278.5c1.6,14.3 3.4,26.9 5.5,38.2l1.1,-0.8c97.7,-71.2 198.9,-145 285.5,-95.1l74,45.5c72.3,44.8 155.5,-31.6 245.8,-114.5c60.9,-55.9 125,-114.8 191.2,-141.5c60.5,-24.4 101,-3.4 153.5,40.2C1072,739.5 1072,722.6 1072,705z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M450.2,491.9h-84.4V449.7h84.4M450.2,576.3h-84.4v-42.2h84.4M576.8,407.5h-59.3c-9.5,-16.5 -22.6,-30.6 -38.4,-41.3l34.4,-34.4l-29.7,-29.7l-45.8,45.8c-9.7,-2.3 -19.4,-3.6 -30,-3.6s-20.3,1.3 -29.7,3.6l-46,-45.8l-29.7,29.7l34.2,34.4c-15.6,10.8 -28.7,24.9 -38.2,41.3h-59.3v42.2h44.1c-1.1,7 -1.9,13.9 -1.9,21.1v21.1h-42.2v42.2h42.2v21.1c0,7.2 0.8,14.1 1.9,21.1h-44.1v42.2h59.3C320.5,656.2 361.2,681.8 408,681.8s87.5,-25.5 109.5,-63.3h59.3v-42.2h-44.1c1.1,-7 1.9,-13.9 1.9,-21.1v-21.1h42.2v-42.2h-42.2v-21.1c0,-7.2 -0.8,-14.1 -1.9,-21.1h44.1V407.5z" />
</group>
</vector>

View File

@ -1,43 +1,120 @@
<!--
~ ImageToolbox is an image editor for android
~ Copyright (c) 2024 T8RIN (Malik Mukhametzyanov)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~
~ 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.
~
~ You should have received a copy of the Apache License
~ along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
-->
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
<aapt:attr name="android:drawable">
<vector
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z"
tools:ignore="VectorPath" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M38.98,48.81C38.98,51.54 41.18,53.71 43.94,53.71C46.71,53.71 48.91,51.45 48.91,48.81C48.91,46.07 46.71,43.9 43.94,43.9C41.18,43.9 38.98,46.07 38.98,48.81Z" />
<group
android:name="root"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
</group>
</vector>
<group
android:name="pencil"
android:alpha="1"
android:pivotX="54"
android:pivotY="54"
android:scaleX="2.4"
android:scaleY="2.4"
android:translateX="-36"
android:translateY="36">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
</group>
<group android:name="body">
<path
android:name="body_path1"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z" />
<path
android:name="body_path2"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M38.98,48.81C38.98,51.54 41.18,53.71 43.94,53.71C46.71,53.71 48.91,51.45 48.91,48.81C48.91,46.07 46.71,43.9 43.94,43.9C41.18,43.9 38.98,46.07 38.98,48.81Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="pencil">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateX"
android:startOffset="150"
android:valueFrom="-36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateY"
android:startOffset="150"
android:valueFrom="36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleX"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleY"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
</set>
</aapt:attr>
</target>
<target android:name="body_path1">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="body_path2">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>

View File

@ -1,120 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<!--
~ ImageToolbox is an image editor for android
~ Copyright (c) 2024 T8RIN (Malik Mukhametzyanov)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~
~ 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.
~
~ You should have received a copy of the Apache License
~ along with this program. If not, see <http://www.apache.org/licenses/LICENSE-2.0>.
-->
<aapt:attr name="android:drawable">
<vector
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
<group
android:name="root"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="12"
android:translateY="11">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z"
tools:ignore="VectorPath" />
<path
android:fillColor="@color/onPrimary"
android:pathData="M38.98,48.81C38.98,51.54 41.18,53.71 43.94,53.71C46.71,53.71 48.91,51.45 48.91,48.81C48.91,46.07 46.71,43.9 43.94,43.9C41.18,43.9 38.98,46.07 38.98,48.81Z" />
<group
android:name="pencil"
android:alpha="1"
android:pivotX="54"
android:pivotY="54"
android:scaleX="2.4"
android:scaleY="2.4"
android:translateX="-36"
android:translateY="36">
<path
android:fillColor="@color/onPrimary"
android:fillType="evenOdd"
android:pathData="M57.74,43.82V47.67C57.74,48.33 57.97,48.89 58.42,49.33C58.87,49.78 59.43,50 60.1,50H64C64.32,50 64.62,49.95 64.92,49.83C65.21,49.71 65.48,49.54 65.71,49.3L78,37.17C78.35,36.82 78.61,36.42 78.76,35.97C78.92,35.52 79,35.09 79,34.66C79,34.23 78.91,33.8 78.73,33.38C78.56,32.95 78.31,32.56 78,32.21L75.81,30.05C75.46,29.7 75.06,29.44 74.63,29.26C74.2,29.09 73.74,29 73.27,29C72.84,29 72.41,29.08 71.97,29.23C71.54,29.39 71.15,29.64 70.79,29.99L58.45,42.13C58.21,42.36 58.04,42.62 57.92,42.92C57.8,43.21 57.74,43.51 57.74,43.82ZM63.53,46.5H61.28V44.29L68.49,37.23L70.67,39.39L63.53,46.5Z" />
</group>
<group android:name="body">
<path
android:name="body_path1"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M69.89,56.22C69.89,53.33 69.89,50.99 69.83,49.03L73.81,45.1C74.11,47.9 74.11,51.47 74.11,56.22C74.11,65.82 74.11,70.61 71.6,73.95C70.86,74.92 69.99,75.79 69,76.51C65.63,79 60.77,79 51.06,79C41.35,79 36.49,79 33.11,76.51C32.13,75.79 31.25,74.92 30.52,73.95C28,70.61 28,65.82 28,56.22C28,46.62 28,41.83 30.52,38.49C31.25,37.52 32.13,36.65 33.11,35.93C36.49,33.44 41.35,33.44 51.06,33.44C56.32,33.44 60.16,33.44 63.1,33.84L59.19,37.7C57.05,37.61 54.42,37.61 51.06,37.61C46.11,37.61 42.74,37.62 40.17,37.9C37.69,38.17 36.47,38.65 35.63,39.27C34.98,39.75 34.39,40.33 33.9,40.98C33.27,41.81 32.78,43.01 32.51,45.47C32.23,48 32.22,51.33 32.22,56.22C32.22,61.11 32.23,64.44 32.51,66.97C32.57,67.53 32.64,68.01 32.73,68.45L32.77,68.42C36.59,65.67 40.54,62.82 43.92,64.75L46.82,66.5C49.64,68.23 52.89,65.29 56.42,62.08C58.8,59.93 61.31,57.65 63.89,56.62C66.26,55.68 67.84,56.49 69.89,58.17C69.89,57.55 69.89,56.9 69.89,56.22Z" />
<path
android:name="body_path2"
android:alpha="0.0"
android:fillColor="@color/onPrimary"
android:pathData="M38.98,48.81C38.98,51.54 41.18,53.71 43.94,53.71C46.71,53.71 48.91,51.45 48.91,48.81C48.91,46.07 46.71,43.9 43.94,43.9C41.18,43.9 38.98,46.07 38.98,48.81Z" />
</group>
</group>
</vector>
</aapt:attr>
<target android:name="pencil">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateX"
android:startOffset="150"
android:valueFrom="-36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="translateY"
android:startOffset="150"
android:valueFrom="36"
android:valueTo="0" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleX"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/overshoot"
android:propertyName="scaleY"
android:startOffset="150"
android:valueFrom="2.4"
android:valueTo="1" />
</set>
</aapt:attr>
</target>
<target android:name="body_path1">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
<target android:name="body_path2">
<aapt:attr name="android:animation">
<set android:ordering="together">
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/decelerate_quad"
android:propertyName="fillAlpha"
android:startOffset="150"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" />
</set>
</aapt:attr>
</target>
</animated-vector>
</group>
</vector>

View File

@ -17,7 +17,9 @@
package com.t8rin.imagetoolbox.core.ui.widget.modifier
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
@ -29,15 +31,16 @@ import kotlin.random.Random
fun Modifier.realisticSnowfall(
enabled: Boolean = true
): Modifier = this.then(
): Modifier = this.composed {
if (enabled) {
Modifier.snowfall(
FlakeType.Custom(flakes)
type = FlakeType.Custom(flakes),
color = MaterialTheme.colorScheme.primary
)
} else Modifier
)
}
private val flakes = List(80) {
private val flakes = List(100) {
val size = (40 * Random.nextDouble(0.3, 1.0)).toFloat()
object : Painter() {
override val intrinsicSize: Size = Size(size, size)

View File

@ -31,10 +31,13 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.DrawerState
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@ -51,6 +54,7 @@ import com.t8rin.imagetoolbox.core.ui.utils.navigation.Screen
import com.t8rin.imagetoolbox.core.ui.utils.provider.rememberCurrentLifecycleEvent
import com.t8rin.imagetoolbox.core.ui.widget.enhanced.EnhancedTopAppBarType
import com.t8rin.imagetoolbox.core.ui.widget.modifier.realisticSnowfall
import kotlinx.coroutines.delay
import java.time.LocalDate
@Composable
@ -105,11 +109,7 @@ internal fun MainContentImpl(
TopAppBarDefaults.exitUntilCollapsedScrollBehavior()
}
Column(
modifier = Modifier
.fillMaxSize()
.nestedScroll(scrollBehavior.nestedScrollConnection)
) {
val topBar: @Composable () -> Unit = {
MainTopAppBar(
scrollBehavior = scrollBehavior,
onShowFeaturesFall = onShowFeaturesFall,
@ -125,6 +125,31 @@ internal fun MainContentImpl(
enabled = showSnowfall
)
)
}
Column(
modifier = Modifier
.fillMaxSize()
.nestedScroll(scrollBehavior.nestedScrollConnection)
) {
val colorScheme = MaterialTheme.colorScheme
var key by remember {
mutableStateOf(colorScheme.primary)
}
LaunchedEffect(colorScheme) {
delay(200)
key = colorScheme.primary
}
if (showSnowfall) {
key(key) {
topBar()
}
} else {
topBar()
}
Row(
modifier = Modifier.weight(1f)

View File

@ -3,8 +3,8 @@ androidMinSdk = "23"
androidTargetSdk = "36"
androidCompileSdk = "36"
versionName = "3.5.1"
versionCode = "195"
versionName = "3.5.2"
versionCode = "196"
jvmTarget = "17"