Conformal vector image editor: using only circles (WIP)
<insert 0-inf banner here>
Built with Compose Multiplatform, targeting
- Desktop (Windows, Linux)
- Android 7.0+ (SDK 24+)
- Web (via Wasm)
- macOS/iOS if ever get an Apple dev account (have to notarize/staple binaries), for now only works as a web app thru Chrome/Firefox
Combine interactive designs ~ Geogebra
with graphical vector editor ~ Inkscape
and specific type of animations ~ Möbius transformations and possibly Lie sphere geometry
Live deployed here from the github-pages
branch
Binaries for Linux, Window and Android are stored here.
Cluster = circles + union of intersections of some of these circles (their insides or outsides)
- Cluster editor
- drag, select, copy, create & delete circles
- move & scale circles
- select/deselect intersection regions
- fill regions with diff colors
- select binary interlacing even/odd regions (like chessboard coloring)
- load/save individual clusters as .ddc/.yml (based on yaml)
- additional context-dependent toolbar to group categories of tools (a-la bucket fill + gradient)
- tools: circle by center & radius, by 3 points; maybe line by 2 points
- bezier-like pathing tool
- maybe finer control over angles/distances
- Multi-cluster editor
- drag, select, copy, create & delete clusters
- move, scale & rotate clusters
- change color, border color, fill/wireframe
- re-order / sidebar layer-like interface
- create and apply Möbius transforms as animations
- Other
- history: undo + redo
- New cluster-based format to supercede
.ddu
, YAML subset - read
.ddu
- maybe export as
.svg
./gradlew :composeApp:run
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
Build platform-dependent package (run thru Github Actions using corresponding OS):
./gradlew composeApp:createDistributable
output directory: composeApp/build/compose/binaries/main/app/
Same + use ProGuard to minify:
./gradlew composeApp:createReleaseDistributable
output directory: composeApp/build/compose/binaries/main-release/app/
Individually:
./gradlew packageReleaseMsi
./gradlew packageReleaseDmg
+ notarize/register (requires Apple dev acc)./gradlew packageReleaseDeb
output directory:composeApp/build/compose/binaries/main-release/app/
./gradlew wasmJsBrowserDistribution
output directory: composeApp/build/dist/wasmJs/productionExecutable/
./gradlew assembleDebug
output directory: composeApp/build/outputs/apk/debug/
To run applications built with Kotlin/Wasm in a browser, you need a browser supporting wasm garbage collection feature:
- For Chrome and Chromium-based browsers (Edge, Brave etc.), it should just work since version 119.
- For Firefox 120+ it should just work.
- For Firefox 119:
- Open
about:config
in the browser. - Enable javascript.options.wasm_gc.
- Refresh the page.
- Open
- For Safari it is NOT implemented as of now (March 2024)
For more information see https://kotl.in/wasm_help/.