├── .gitignore ├── .idea ├── .gitignore ├── compiler.xml ├── deploymentTargetDropDown.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml └── misc.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── Dolphin.jpg │ ├── Highlander.jpg │ ├── Lizard.jpg │ └── Shanghai.jpg │ ├── java │ └── nl │ │ └── birdly │ │ └── zoom │ │ ├── Image.kt │ │ ├── ImageScreen.kt │ │ ├── ImageViewModel.kt │ │ ├── MainActivity.kt │ │ ├── MainScreen.kt │ │ └── ui │ │ └── theme │ │ ├── Color.kt │ │ ├── Shape.kt │ │ ├── Theme.kt │ │ └── Type.kt │ └── res │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable │ └── ic_launcher_background.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.webp │ └── ic_launcher_round.webp │ ├── mipmap-mdpi │ ├── ic_launcher.webp │ └── ic_launcher_round.webp │ ├── mipmap-xhdpi │ ├── ic_launcher.webp │ └── ic_launcher_round.webp │ ├── mipmap-xxhdpi │ ├── ic_launcher.webp │ └── ic_launcher_round.webp │ ├── mipmap-xxxhdpi │ ├── ic_launcher.webp │ └── ic_launcher_round.webp │ └── values │ ├── colors.xml │ ├── strings.xml │ └── themes.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── nl │ │ └── birdly │ │ └── zoombox │ │ ├── ZoomState.kt │ │ ├── Zoomable.kt │ │ ├── gesture │ │ ├── condition │ │ │ ├── AnyTouchCondition.kt │ │ │ ├── OnDoubleTouchCondition.kt │ │ │ ├── TouchCondition.kt │ │ │ ├── WithinXBoundsTouchCondition.kt │ │ │ └── WithinYBoundsTouchCondition.kt │ │ ├── tap │ │ │ ├── OnDoubleTapHandler.kt │ │ │ ├── TapHandler.kt │ │ │ └── ZoomOnDoubleTapHandler.kt │ │ └── transform │ │ │ ├── KeepWithinBoundsOnCancelledBehavior.kt │ │ │ ├── OnCancelledBehavior.kt │ │ │ ├── OnPinchGestureHandler.kt │ │ │ ├── OnPinchToZoomGestureHandler.kt │ │ │ ├── ResetToOriginalPositionOnCancelledBehavior.kt │ │ │ └── TransformGestureHandler.kt │ │ └── util │ │ ├── Calculator.kt │ │ ├── MathExt.kt │ │ ├── PointerInputScopeExt.kt │ │ └── TranslatableStateExt.kt │ └── test │ └── java │ └── nl │ └── birdly │ └── zoombox │ ├── gesture │ └── transform │ │ └── OnPinchToZoomGestureHandlerTest.kt │ └── util │ ├── CalculatorTest.kt │ └── MathExtKtTest.kt ├── preview.gif └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.gitignore -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.idea/compiler.xml -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.idea/deploymentTargetDropDown.xml -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.idea/gradle.xml -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.idea/inspectionProfiles/Project_Default.xml -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/.idea/misc.xml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/README.md -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/build.gradle -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /app/src/main/assets/Dolphin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/assets/Dolphin.jpg -------------------------------------------------------------------------------- /app/src/main/assets/Highlander.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/assets/Highlander.jpg -------------------------------------------------------------------------------- /app/src/main/assets/Lizard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/assets/Lizard.jpg -------------------------------------------------------------------------------- /app/src/main/assets/Shanghai.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/assets/Shanghai.jpg -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/Image.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/Image.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ImageScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ImageScreen.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ImageViewModel.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ImageViewModel.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/MainActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/MainActivity.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/MainScreen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/MainScreen.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ui/theme/Color.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ui/theme/Color.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ui/theme/Shape.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ui/theme/Shape.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ui/theme/Theme.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ui/theme/Theme.kt -------------------------------------------------------------------------------- /app/src/main/java/nl/birdly/zoom/ui/theme/Type.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/java/nl/birdly/zoom/ui/theme/Type.kt -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/drawable-v24/ic_launcher_foreground.xml -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/drawable/ic_launcher_background.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/values/colors.xml -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/app/src/main/res/values/themes.xml -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/gradlew.bat -------------------------------------------------------------------------------- /library/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /library/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/build.gradle -------------------------------------------------------------------------------- /library/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /library/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/proguard-rules.pro -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/ZoomState.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/ZoomState.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/Zoomable.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/Zoomable.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/condition/AnyTouchCondition.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/condition/AnyTouchCondition.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/condition/OnDoubleTouchCondition.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/condition/OnDoubleTouchCondition.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/condition/TouchCondition.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/condition/TouchCondition.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/condition/WithinXBoundsTouchCondition.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/condition/WithinXBoundsTouchCondition.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/condition/WithinYBoundsTouchCondition.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/condition/WithinYBoundsTouchCondition.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/tap/OnDoubleTapHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/tap/OnDoubleTapHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/tap/TapHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/tap/TapHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/tap/ZoomOnDoubleTapHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/tap/ZoomOnDoubleTapHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/KeepWithinBoundsOnCancelledBehavior.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/KeepWithinBoundsOnCancelledBehavior.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/OnCancelledBehavior.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/OnCancelledBehavior.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/OnPinchGestureHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/OnPinchGestureHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/OnPinchToZoomGestureHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/OnPinchToZoomGestureHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/ResetToOriginalPositionOnCancelledBehavior.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/ResetToOriginalPositionOnCancelledBehavior.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/gesture/transform/TransformGestureHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/gesture/transform/TransformGestureHandler.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/util/Calculator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/util/Calculator.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/util/MathExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/util/MathExt.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/util/PointerInputScopeExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/util/PointerInputScopeExt.kt -------------------------------------------------------------------------------- /library/src/main/java/nl/birdly/zoombox/util/TranslatableStateExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/main/java/nl/birdly/zoombox/util/TranslatableStateExt.kt -------------------------------------------------------------------------------- /library/src/test/java/nl/birdly/zoombox/gesture/transform/OnPinchToZoomGestureHandlerTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/test/java/nl/birdly/zoombox/gesture/transform/OnPinchToZoomGestureHandlerTest.kt -------------------------------------------------------------------------------- /library/src/test/java/nl/birdly/zoombox/util/CalculatorTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/test/java/nl/birdly/zoombox/util/CalculatorTest.kt -------------------------------------------------------------------------------- /library/src/test/java/nl/birdly/zoombox/util/MathExtKtTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/library/src/test/java/nl/birdly/zoombox/util/MathExtKtTest.kt -------------------------------------------------------------------------------- /preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/preview.gif -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mennovogel/zoom-compose/HEAD/settings.gradle --------------------------------------------------------------------------------