Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pier-bezuhoff/dodeclusters
Circle-based vector graphics editor
https://github.com/pier-bezuhoff/dodeclusters
circle compose-multiplatform conformal-geometry editor geometry kotlin-multiplatform kotlin-wasm vector-graphics
Last synced: 8 days ago
JSON representation
Circle-based vector graphics editor
- Host: GitHub
- URL: https://github.com/pier-bezuhoff/dodeclusters
- Owner: pier-bezuhoff
- License: gpl-3.0
- Created: 2024-01-12T21:20:05.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-25T06:34:42.000Z (11 days ago)
- Last Synced: 2025-01-25T07:22:37.680Z (11 days ago)
- Topics: circle, compose-multiplatform, conformal-geometry, editor, geometry, kotlin-multiplatform, kotlin-wasm, vector-graphics
- Language: Kotlin
- Homepage: https://pier-bezuhoff.github.io/Dodeclusters/
- Size: 180 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dodeclusters Φ
[![License: GPL v3](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![Static Badge](https://img.shields.io/badge/status-beta-violet)
[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/pier-bezuhoff/Dodeclusters/build.yml?branch=master&event=push)](https://github.com/pier-bezuhoff/Dodeclusters/actions)### Circle-based vector graphics editor
![Dodeclusters](docs/02inf-art.png)
## Features
βΎοΈ Infinite canvas, infinite zoom, infinite precision\*
⬀ Powerful circle geometry instrumentation: treating points, circles and straight lines uniformly
π¬ Simple & intuitive design with interactive tips & brief descriptions
π― Cross-platform (mobile + desktop + browser)
π² Dynamic expression-dependency tree
π Undo/redo history & auto-save
πΎ Custom YAML-derived file format + Safe SVG export
β Smart gestures: drag-and-drop, swipe coloring & swip selection, keyboard shortcuts
π Light/dark mode (*WIP*, for now as a URL argument `?theme=light` or `?theme=dark`)\*: objects are related via dynamic expressions and child nodes' formulae are recalculated when moving parents or zooming in/out
Built with [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform), targeting
- [x] Desktop (Windows, Linux)
- [x] Android 7.0+ (SDK 24+)
- [x] Web (via [Wasm](#Web-Wasm-compatibility))
- [ ] macOS/iOS if ever get an Apple dev account (have to notarize/staple binaries), for now
only works as a web app## End goal
Combine interactive designs ~ Geogebra
with vector graphics editor ~ Inkscape
and specific type of animations ~ [MΓΆbius transformations](https://en.wikipedia.org/wiki/M%C3%B6bius_transformation) and possibly [Lie sphere geometry](https://en.wikipedia.org/wiki/Lie_sphere_geometry)> [!NOTE]
> This project is in beta, beware of bugs and breaking changes## Installation
[Live deployed here](https://pier-bezuhoff.github.io/Dodeclusters/) from the `github-pages` branch.
Executables for Linux, Window and Android can be found in the assets [attached to the latest release](https://github.com/pier-bezuhoff/Dodeclusters/releases/) or [on Google Drive](https://drive.google.com/drive/folders/1abGxbUhnnr4mGyZERKv4ePH--us66Wd4?usp=sharing).### Windows
1. From [the latest release](https://github.com/pier-bezuhoff/Dodeclusters/releases/tag/v0.2.0) go to `assets` and download `windows.zip`
2. Unarchive it
3. In folder `com.pierbezuhoff.dodeclusters` find file `com.pierbezuhoff.dodeclusters.exe`
4. Run it! That's it~ (it is bundled with JVM)### Linux
1. From [the latest release](https://github.com/pier-bezuhoff/Dodeclusters/releases/) go to `assets` and download `linux.zip`
2. Unarchive it
3. Go into folder `com.pierbezuhoff.dodeclusters/bin`, you'll find executable file `com.pierbezuhoff.dodeclusters`
4. `chmod +x` it and you can run it as `./com.pierbezuhoff.dodeclusters` (bundled with JVM)### Android
You can find the apk in the assets [attached to the latest release](https://github.com/pier-bezuhoff/Dodeclusters/releases/).> [!NOTE]
> Bundled binaries are likely behind the web version## Keyboard shortcuts
- `Ctrl + A`: quickly select/deselect everything
- `Delete`, `Backspace`: delete selected objects
- `Ctrl + V`: duplicate selected objects
- `Ctrl + +`, `Ctrl + =`; `Ctrl + -`; mouse wheel: enlarge/shrink selected objects
- `Ctrl + Z`: undo
- `Ctrl + Y`: redo
- `Esc`: cancel any ongoing constructions## Build and run via Gradle
> [!IMPORTANT]
> Requires JDK 17### Run desktop app
`./gradlew :composeApp:run`
### Run web app (dev)
`./gradlew :composeApp:wasmJsBrowserDevelopmentRun`### Package for Windows/macOS/Linux
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/`### Package for web browser
`./gradlew wasmJsBrowserDistribution`
output directory: `composeApp/build/dist/wasmJs/productionExecutable/`#### Package development version for web
`./gradlew wasmJsBrowserDevelopmentExecutableDistribution`
output directory: `composeApp/build/dist/wasmJs/developmentExecutable/`### Generate debug .apk for Android
`./gradlew assembleDebug`
output directory: `composeApp/build/outputs/apk/debug/`## Web Wasm compatibility
To run applications built with Kotlin/Wasm in a browser, you need a browser supporting [wasm garbage collection feature](https://github.com/WebAssembly/gc):
- For **Chrome** and **Chromium-based** browsers (Edge, Brave etc.), it **should just work** since version 119.
- For **Firefox** 120+ it **should just work**.
- For **Safari** it should work starting from version 18.2+.
- [Relevant Wasm compatibility table.](https://webassembly.org/features/#table-row-gc)For more information see https://kotl.in/wasm_help/.