aboutsummaryrefslogtreecommitdiff
path: root/tools/compile_assets/aseprite/README.md
diff options
context:
space:
mode:
authorXander Swan <[hidden email]>2026-01-07 23:12:22 -0500
committerXander Swan <[hidden email]>2026-01-07 23:12:22 -0500
commit0988ab832bfc7a1b1c851125b6172cf68c6d9cb9 (patch)
tree460bc2d9f0bce463af273d6b2b2c20faa880ac29 /tools/compile_assets/aseprite/README.md
parentade0dc4d257d053b7064184f193f8168c496e308 (diff)
doesn't compile but i'm commiting anywya
Diffstat (limited to 'tools/compile_assets/aseprite/README.md')
-rw-r--r--tools/compile_assets/aseprite/README.md106
1 files changed, 106 insertions, 0 deletions
diff --git a/tools/compile_assets/aseprite/README.md b/tools/compile_assets/aseprite/README.md
new file mode 100644
index 0000000..a43b1f1
--- /dev/null
+++ b/tools/compile_assets/aseprite/README.md
@@ -0,0 +1,106 @@
+# Odin Aseprite
+Handler for Aseprite's `.ase`/`.aseprite`, `.aseprite-extension` &amp; extended `.gpl` files writen in Odin.
+
+* `.\`: Main un/marshaler for `.ase`
+* `.\utils`: Creates Images, Animations & Sprite Sheets from Documents
+* `.\raw`: un/marshals `.ase` exactly as given by the spec
+* `.\gpl`: extended & normal .gpl
+* `.\extensions`: .aseprite-extension. WIP
+* `.\tests`: test files
+
+## Examples
+### aseprite
+```odin
+package main
+
+import "core:fmt"
+import ase "odin-aseprite"
+
+main :: proc() {
+ data := #load("geralt.aseprite")
+
+ doc: ase.Document
+ defer ase.destroy_doc(&doc)
+
+ umerr := ase.unmarshal(data[:], &doc)
+ if umerr != nil {
+ fmt.println(umerr)
+ return
+ }
+
+ buf: [dynamic]byte
+ defer delete(buf)
+
+ written, merr := ase.marshal(&buf, &doc)
+ if merr != nil {
+ fmt.println(merr)
+ return
+ }
+}
+```
+
+### utils
+```odin
+package main
+
+import "core:fmt"
+import ase "odin-aseprite"
+import "odin-aseprite/utils"
+
+main :: proc() {
+ data := #load("geralt.aseprite")
+
+ doc: ase.Document
+ defer ase.destroy_doc(&doc)
+
+ umerr := ase.unmarshal(data[:], &doc)
+ if umerr != nil {
+ fmt.println(umerr)
+ return
+ }
+
+ imgs, imgs_err := utils.get_all_images(&doc)
+ defer utils.destroy(imgs)
+
+ if imgs_err != nil {
+ fmt.println(imgs_err)
+ return
+ }
+}
+```
+
+### gpl
+```odin
+package main
+
+import "core:fmt"
+import "odin-aseprite/gpl"
+
+main :: proc() {
+ data := #load("geralt.gpl")
+
+ palette, err := gpl.parse(data[:])
+ if err != nil {
+ fmt.println(err)
+ return
+ }
+ defer destroy_gpl(&palette)
+
+ buf, err2 := gpl.to_bytes(palette)
+ if err2 != nil {
+ fmt.println(err2)
+ return
+ }
+ defer delete(buf)
+}
+```
+
+
+## Warnings
+ICC Colour Profiles aren't supported. The raw data will be saved to doc.
+
+## Errors
+Any errors please make an issue or DM them to me, `blob1807`, on the [Odin Discord](https://discord.com/invite/sVBPHEv).
+If you DM me please include the offending file/s.
+
+If you want to test your own files for errors. Add them to a new folder in `./tests` and run `odin test .` in the `./tests` directory.