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.aseexactly as given by the spec.\gpl: extended & normal .gpl.\extensions: .aseprite-extension. WIP.\tests: test files
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 } }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 } }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) }ICC Colour Profiles aren't supported. The raw data will be saved to doc.
Any errors please make an issue or DM them to me, blob1807, on the Odin Discord.
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.