{"id":25564879,"url":"https://github.com/dbtreasure/eframe-paint","last_synced_at":"2026-03-14T08:30:14.563Z","repository":{"id":277926704,"uuid":"933932776","full_name":"dbtreasure/eframe-paint","owner":"dbtreasure","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-17T02:26:43.000Z","size":1897,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T03:26:00.440Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbtreasure.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-17T01:48:08.000Z","updated_at":"2025-02-17T02:25:54.000Z","dependencies_parsed_at":"2025-02-17T03:26:23.376Z","dependency_job_id":"c05d23a2-ac48-49d5-82f3-b587f70674c6","html_url":"https://github.com/dbtreasure/eframe-paint","commit_stats":null,"previous_names":["dbtreasure/eframe-paint"],"tags_count":0,"template":false,"template_full_name":"emilk/eframe_template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbtreasure%2Feframe-paint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbtreasure%2Feframe-paint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbtreasure%2Feframe-paint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbtreasure%2Feframe-paint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbtreasure","download_url":"https://codeload.github.com/dbtreasure/eframe-paint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239921826,"owners_count":19718842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T21:59:50.034Z","updated_at":"2026-03-14T08:30:14.501Z","avatar_url":"https://github.com/dbtreasure.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎨 eframe_paint\n\nA fun and intuitive painting application built with Rust and egui!\n\n## ✨ Overview\n\nCreate digital art with ease using our lightweight and fast painting application. Whether you're sketching, drawing, or just doodling, eframe_paint provides all the essential tools you need.\n\n## 🚀 Quick Start\n\n```shell\n# Clone and run\ngit clone https://github.com/yourusername/eframe_paint.git\ncd eframe_paint\ncargo run --release\n```\n\n### Testing locally\n\nMake sure you are using the latest version of stable rust by running `rustup update`.\n\n`cargo run --release`\n\nOn Linux you need to first run:\n\n`sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev`\n\nOn Fedora Rawhide you need to run:\n\n`dnf install clang clang-devel clang-tools-extra libxkbcommon-devel pkg-config openssl-devel libxcb-devel gtk3-devel atk fontconfig-devel`\n\n### Features\n\nThis paint application provides advanced drawing functionality:\n\n- 🖌 Brush Tool - Free-form drawing with adjustable thickness\n- ⌫ Eraser Tool - Remove parts of your drawing\n- ◻ Selection Tool - Select areas of your drawing\n- 🎨 Color Picker - Choose any color for your brush\n- 📑 Advanced Layer Support:\n  - Create and manage multiple layers\n  - Transform layers with rotation, scaling, and translation\n  - Reorder layers via drag and drop\n  - Toggle layer visibility\n  - Support for image layers\n- ↩ Comprehensive Undo/Redo - Track your drawing and transformation history\n\n### Testing the Features\n\n1. **Basic Drawing**\n\n   - Select the Brush tool and draw on the canvas\n   - Adjust brush thickness using the slider\n   - Change colors using the color picker\n\n2. **Advanced Layer Management**\n\n   - Create new layers using the layer panel\n   - Transform layers:\n     - Rotate layers to any angle\n     - Scale layers up or down\n     - Translate layers to new positions\n   - Add image layers with full transformation support\n   - Toggle layer visibility\n   - Drag and drop to reorder layers\n   - Rename layers as needed\n\n3. **Selection and Editing**\n   - Use the Selection tool to select parts of your drawing\n   - Move and modify selected areas\n   - Delete selections using the Eraser tool\n   - Apply transformations to selected content\n\n### Web Locally\n\nYou can compile your app to [WASM](https://en.wikipedia.org/wiki/WebAssembly) and publish it as a web page.\n\nWe use [Trunk](https://trunkrs.dev/) to build for web target.\n\n1. Install the required target with `rustup target add wasm32-unknown-unknown`.\n2. Install Trunk with `cargo install --locked trunk`.\n3. Run `trunk serve` to build and serve on `http://127.0.0.1:8080`. Trunk will rebuild automatically if you edit the project.\n4. Open `http://127.0.0.1:8080/index.html#dev` in a browser. See the warning below.\n\n\u003e `assets/sw.js` script will try to cache our app, and loads the cached version when it cannot connect to server allowing your app to work offline (like PWA).\n\u003e appending `#dev` to `index.html` will skip this caching, allowing us to load the latest builds during development.\n\n### Web Deploy\n\n1. Just run `trunk build --release`.\n2. It will generate a `dist` directory as a \"static html\" website\n3. Upload the `dist` directory to any of the numerous free hosting websites including [GitHub Pages](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site).\n4. We already provide a workflow that auto-deploys our app to GitHub pages if you enable it.\n   \u003e To enable Github Pages, you need to go to Repository -\u003e Settings -\u003e Pages -\u003e Source -\u003e set to `gh-pages` branch and `/` (root).\n   \u003e\n   \u003e If `gh-pages` is not available in `Source`, just create and push a branch called `gh-pages` and it should be available.\n   \u003e\n   \u003e If you renamed the `main` branch to something else (say you re-initialized the repository with `master` as the initial branch), be sure to edit the github workflows `.github/workflows/pages.yml` file to reflect the change\n   \u003e\n   \u003e ```yml\n   \u003e on:\n   \u003e   push:\n   \u003e     branches:\n   \u003e       - \u003cbranch name\u003e\n   \u003e ```\n\n## 📜 Development History\n\nCurious about how eframe_paint was developed? Dive into our [Development History Introduction](Development_History/Introduction.md) to learn about the technical evolution, design decisions, and creative breakthroughs that shaped this project from its inception to its current state.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbtreasure%2Feframe-paint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbtreasure%2Feframe-paint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbtreasure%2Feframe-paint/lists"}