Skip to content

Handler for Aseprite's .ase/.aseprite, .aseprite-extension & extended .gpl files writen in Odin.

License

Notifications You must be signed in to change notification settings

blob1807/odin-aseprite

Repository files navigation

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 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

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

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

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.
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.

About

Handler for Aseprite's .ase/.aseprite, .aseprite-extension & extended .gpl files writen in Odin.

Resources

License

Stars

Watchers

Forks

Languages