From aa8317cf889f48428ee79c5048eb8c0e1746a13f Mon Sep 17 00:00:00 2001 From: yds12 Date: Sat, 18 Mar 2023 11:38:06 +0100 Subject: [PATCH] Screenshot on readme and revert to egui-miniquad 0.14.0 --- CONTRIBUTING.md | 5 +++++ Cargo.lock | 3 ++- README.md | 13 +++++++++---- docs/features.md | 4 ++++ docs/install.md | 2 ++ docs/issues.md | 2 ++ docs/screenshot.png | Bin 0 -> 41051 bytes egui-macroquad/Cargo.toml | 3 +-- lapix/Cargo.toml | 1 + tarsila/Cargo.toml | 3 ++- 10 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 docs/screenshot.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3badac2..3867771 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,3 +5,8 @@ or changes that require design decisions (if there are no obviously best way to do the change, or there are significantly different possibilities of implementation) please open an issue first for discussion. +To find things that need doing, take a look at our +[issues](https://github.com/yds12/tarsila/issues), specially the ones marked +with +[help wanted](https://github.com/yds12/tarsila/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). + diff --git a/Cargo.lock b/Cargo.lock index 0f5ae91..6761039 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -334,7 +334,8 @@ dependencies = [ [[package]] name = "egui-miniquad" version = "0.14.0" -source = "git+https://github.com/not-fl3/egui-miniquad?rev=474b8c825887dbe93dd7d28c62266a31ef55a6e8#474b8c825887dbe93dd7d28c62266a31ef55a6e8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c93b1e7505c5a4f7c362555758b8feb3ab5dc3bb3cda5e9a6805d46374d1428" dependencies = [ "bytemuck", "copypasta", diff --git a/README.md b/README.md index 10b3be8..3ba7913 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -** NOTE: this project is a work in progress, if you want to use it, please save -your work as frequently as possible to avoid data losses. ** +**NOTE: this project is a work in progress, if you want to use it, please save +your work as frequently as possible to avoid losing your work.** + +![alt text](https://github.com/yds12/tarsila/blob/master/docs/screenshot.png?raw=true) Tarsila is a pixel art and spritesheet editor written in Rust with [macroquad](https://macroquad.rs/) as graphics backend and @@ -28,9 +30,12 @@ Have in mind that this project is a work in progress and might have a lot of bugs, incomplete or missing features and suboptimal performance here and there. Some of the main gaps currently are: +* Works as intended on Linux, but there are some compatibility issues with MacOS + (file dialog window does not open), and status on Windows is unknown; * No error handling, everything panics; -* Lack of tests; -* There is much to improve when it comes to performance +* There are a few unit tests, but integration tests are missing, and coverage is + far from 100%; +* There is room to improve when it comes to performance Visit our [issues page](https://github.com/yds12/tarsila/issues) for known problems/bugs. diff --git a/docs/features.md b/docs/features.md index cfb9f10..7ba9820 100644 --- a/docs/features.md +++ b/docs/features.md @@ -8,11 +8,14 @@ Features (+ means done, (-) means least important): - Canvas to edit sprite (+) - Resizable (+) - Multiple frames (+) + - add new frame based on existing one - Layers (+) - control visibility (+) - control editability (+) - layer panel allow to change layer position, remove and add layers (+) - group/ungroup layers (-) + - merge layers + - active layer with full opacity, others with lower - Transparent (+) or solid background - Zoom in and out (+) and predefined zoom levels - Pan (+) @@ -68,6 +71,7 @@ Features (+ means done, (-) means least important): - By color area (with customizable tolerance) or all of the same color (magic wand) - Copy and paste (+) + - Cut - Move (+) - When selection is active, might affect other tools, like bucket - create selection based on what's on a layer (-) diff --git a/docs/install.md b/docs/install.md index 89ccf48..d90a5b5 100644 --- a/docs/install.md +++ b/docs/install.md @@ -34,3 +34,5 @@ libraries: * `atk` * `gdk` +On a fresh MacOS Ventura you probably just need to install xcode developer tools. + diff --git a/docs/issues.md b/docs/issues.md index 2eb3c09..f29eab6 100644 --- a/docs/issues.md +++ b/docs/issues.md @@ -31,3 +31,5 @@ Projects issues and bugs: 29. Limit the amount of data on Undo list [ENH] 30. If selection is not fully in canvas, panic [DONE] 31. When dragging preview window, draws on canvas behind +32. CTRL shortcuts not working on Mac +33. File dialog not working on Mac diff --git a/docs/screenshot.png b/docs/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..be4642d92f923c939bc62c0e9339f6c0f752c10d GIT binary patch literal 41051 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 P7>*s$QqE91d+q-KW^%Yp literal 0 HcmV?d00001 diff --git a/egui-macroquad/Cargo.toml b/egui-macroquad/Cargo.toml index 8ba83d4..b7c2d84 100644 --- a/egui-macroquad/Cargo.toml +++ b/egui-macroquad/Cargo.toml @@ -13,6 +13,5 @@ keywords = ["gui", "imgui", "immediate", "portable", "gamedev"] [dependencies] egui = "0.21.0" -# TODO use a crates.io version when 0.15 is released -egui-miniquad = { git = "https://github.com/not-fl3/egui-miniquad", rev = "474b8c825887dbe93dd7d28c62266a31ef55a6e8" } +egui-miniquad = "0.14.0" macroquad = "0.3.25" diff --git a/lapix/Cargo.toml b/lapix/Cargo.toml index 8244c45..c397b96 100644 --- a/lapix/Cargo.toml +++ b/lapix/Cargo.toml @@ -10,6 +10,7 @@ readme = "README.md" documentation = "https://docs.rs/lapix/latest/" keywords = ["image", "pixel", "pixel-art", "image-editor", "editor"] categories = ["game-development", "graphics", "multimedia", "multimedia::images", "rendering"] +license = "MIT" [dependencies] bincode = "1.3.3" diff --git a/tarsila/Cargo.toml b/tarsila/Cargo.toml index 76c8117..9dcb7a2 100644 --- a/tarsila/Cargo.toml +++ b/tarsila/Cargo.toml @@ -10,11 +10,12 @@ readme = "README.md" documentation = "https://docs.rs/tarsila/latest/" keywords = ["image", "pixel", "pixel-art", "image-editor", "editor"] categories = ["game-development", "graphics", "multimedia", "multimedia::images", "rendering"] +license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -lapix = { path = "../lapix" } +lapix = { path = "../lapix", version = "0.1.0" } egui-macroquad = { package = "egui-macroquad-fork", version = "0.1.0", path = "../egui-macroquad" } macroquad = "0.3.25" rfd = "0.10.0"