Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MarkYav/DrawBox
The first multiplatform drawing library!
https://github.com/MarkYav/DrawBox
android compose desktop multiplatform multiplatform-compose multiplatform-kotlin-library ui
Last synced: about 2 months ago
JSON representation
The first multiplatform drawing library!
- Host: GitHub
- URL: https://github.com/MarkYav/DrawBox
- Owner: MarkYav
- License: apache-2.0
- Created: 2023-04-01T14:15:32.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-11-17T11:11:47.000Z (about 1 year ago)
- Last Synced: 2024-07-07T09:35:23.966Z (6 months ago)
- Topics: android, compose, desktop, multiplatform, multiplatform-compose, multiplatform-kotlin-library, ui
- Language: Kotlin
- Homepage:
- Size: 142 KB
- Stars: 13
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-kotlin-multiplatform - DrawBox - The first multiplatform library to draw anything on canvas. (Libraries / GUI)
README
# DrawBox
DrawBox is a multipurpose tool to draw anything on canvas, written completely on Compose Multiplatform.
This is the first multiplatform drawing library!## Features
- Cross-platform!
- Customisable stoke size, color and opacity
- Inbuilt Undo and Redo options
- Reset option
- Background with color/image
- Custom opacity of drawing/background
- Different subscriptions (dynamic update/after each drawing)
- Easy Implementations**Next releases:**
- Erase tool
- Import/export
- Background content scale**Planned:**
- Different image rations
- Filling tool
- Optimizing rendering (convert drawn PATHes)
- Migrate from Compose dependencies in [controller folder](drawbox/src/commonMain/kotlin/io/github/markyav/drawbox/controller)## Demo
https://user-images.githubusercontent.com/39382424/230722003-e9b91b28-706a-4048-a950-609f0b357151.mp4
## Usage
```kotlin
val controller = remember { DrawController() }
DrawBox(drawController = controller, modifier = Modifier.fillMaxSize())
```## Download
Using Gradle Kotlin DSL:
```kotlin
implementation("io.github.markyav.drawbox:drawbox:1.3.1")
```## Examples
You can find example of the library basic usage in the [sample](sample) package:
- [Android](sample/android/src/main/java/io/github/markyav/drawbox/android/MainActivity.kt)
- [Desktop](sample/desktop/src/jvmMain/kotlin/Main.kt)Also, I will share a link here to another independent project where you can find more sophisticated example!
## Author
This project was created by [Mark Yavorskyi](https://www.linkedin.com/in/mark-yavorskyi/)## History
I love my work.
The idea of creating this open-source project appeared because I needed a multiplatform (Android + desktop) library for drawing.
I fround several popular libs for Android but there was **ZERO** for using in KMM/KMP.
I still have some aspects to improve and I will be happy if you share your feedback or propose an idea!Hope you enjoy it! \
Mark## License
Licensed under the Apache License, Version 2.0, [click here for the full license](LICENSE.txt).