From 0988ab832bfc7a1b1c851125b6172cf68c6d9cb9 Mon Sep 17 00:00:00 2001 From: Xander Swan <[hidden email]> Date: Wed, 7 Jan 2026 23:12:22 -0500 Subject: doesn't compile but i'm commiting anywya --- tools/compile_assets/aseprite/README.md | 106 ++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 tools/compile_assets/aseprite/README.md (limited to 'tools/compile_assets/aseprite/README.md') 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` & 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. -- cgit v1.3-2-g0d8e