├── .idea ├── .name ├── .gitignore ├── compiler.xml ├── kotlinc.xml ├── AndroidProjectSystem.xml ├── deploymentTargetSelector.xml ├── misc.xml ├── runConfigurations.xml └── inspectionProfiles │ └── Project_Default.xml ├── combo-breaker ├── .gitignore ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── dev │ │ └── romainguy │ │ └── text │ │ └── combobreaker │ │ ├── MeasuredText.kt │ │ ├── Locale.kt │ │ ├── Utilities.kt │ │ ├── FlowShape.kt │ │ ├── Geometry.kt │ │ ├── Clipping.kt │ │ ├── IntervalTree.kt │ │ ├── TextPaint.kt │ │ ├── FlowSlots.kt │ │ ├── TextLayout.kt │ │ └── BasicTextFlow.kt ├── gradle.properties └── build.gradle ├── combo-breaker-demo ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ ├── drawable-xxhdpi │ │ │ ├── badge.png │ │ │ ├── hearts.png │ │ │ ├── landscape.jpg │ │ │ ├── letter_t.png │ │ │ └── microphone.png │ │ ├── drawable │ │ │ ├── baseline_line_style_24.xml │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── dev │ │ └── romainguy │ │ └── text │ │ └── combobreaker │ │ └── demo │ │ ├── ui │ │ └── theme │ │ │ ├── Shape.kt │ │ │ ├── Type.kt │ │ │ ├── Color.kt │ │ │ └── Theme.kt │ │ └── ComboBreakerActivity.kt ├── proguard-rules.pro └── build.gradle ├── combo-breaker-material3 ├── .gitignore ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── dev │ │ └── romainguy │ │ └── text │ │ └── combobreaker │ │ └── material3 │ │ └── TextFlow.kt ├── gradle.properties └── build.gradle ├── art ├── screenshot_shapes.png ├── screenshot_default_shapes.png ├── screenshot_arbitrary_shapes.png └── screenshot_styles_and_justification.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── settings.gradle ├── .github └── workflows │ └── continuous-build.yml ├── gradle.properties ├── .gitignore ├── gradlew.bat ├── gradlew ├── README.md └── LICENSE /.idea/.name: -------------------------------------------------------------------------------- 1 | Combo Breaker -------------------------------------------------------------------------------- /combo-breaker/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /combo-breaker-demo/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /combo-breaker-material3/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /combo-breaker/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /combo-breaker-material3/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /art/screenshot_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/art/screenshot_shapes.png -------------------------------------------------------------------------------- /combo-breaker/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Combo Breaker 2 | POM_ARTIFACT_ID=combo-breaker 3 | POM_PACKAGING=aar 4 | -------------------------------------------------------------------------------- /art/screenshot_default_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/art/screenshot_default_shapes.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /art/screenshot_arbitrary_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/art/screenshot_arbitrary_shapes.png -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Combo Breaker Demo 3 | -------------------------------------------------------------------------------- /art/screenshot_styles_and_justification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/art/screenshot_styles_and_justification.png -------------------------------------------------------------------------------- /combo-breaker-material3/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Combo Breaker for Material3 2 | POM_ARTIFACT_ID=combo-breaker-material3 3 | POM_PACKAGING=aar 4 | -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/drawable-xxhdpi/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/combo-breaker-demo/src/main/res/drawable-xxhdpi/badge.png -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/drawable-xxhdpi/hearts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/combo-breaker-demo/src/main/res/drawable-xxhdpi/hearts.png -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/drawable-xxhdpi/landscape.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/combo-breaker-demo/src/main/res/drawable-xxhdpi/landscape.jpg -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/drawable-xxhdpi/letter_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/combo-breaker-demo/src/main/res/drawable-xxhdpi/letter_t.png -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/drawable-xxhdpi/microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/romainguy/combo-breaker/HEAD/combo-breaker-demo/src/main/res/drawable-xxhdpi/microphone.png -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /combo-breaker-demo/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |