15 releases

0.4.0 Sep 29, 2024
0.2.5 Sep 10, 2024
0.2.3 Apr 16, 2024
0.2.2 Mar 30, 2024
0.1.0 Feb 26, 2023

#570 in Game dev

33 downloads per month
Used in 3 crates (2 directly)

Custom license

115KB
3K SLoC

Crates.io Documentation

ICI Files

Usage

ici-files = "0.4.0"

Encodes and decodes ICI files and JASC palettes

Designed to be used with Buffer Graphics, and in turn Pixel Graphics.

ICI Tools can be useful when working with ICI files

ICI Image editor is a MSPaint like program for ICI and ICA files

Indexed Color Images come in two forms:

  1. Single
  2. Animated

Both may contain palette data in one of these forms:

  1. No palette data
  2. Palette ID (u16)
  3. Palette Name (String 1..=255)
  4. Palette Colours (RGBA 1..=255)

Palettes

No Data

The file doesn't contain any palette information. The Image struct will default to a palette of the correct size but filled with transparency. Use Image::with_palette to set the palette or Image::set_color to set a specific color.

ID

The file has a palette ID between 0..=65535. The Image struct will default to a palette of the correct size but filled with transparency. Use Image::with_palette to set the palette or Image::set_color to set a specific color.

Name

The file has a UTF-8 palette name, between 1..=255 bytes long. The Image struct will default to a palette of the correct size but filled with transparency. Use Image::with_palette to set the palette or Image::set_color to set a specific color.

Colors

The file contains a list of RGBA colors.

Image formats

Single

Single static image, max width and height is 255

Animated

Multi frame image, max width, height and frame count is 255. Also contains a frame rate as fractional seconds per frame. All frames must be the same size.

IndexedWrapper

Stores either a static or animated image and provides a limited abstract interface

Features

Default: serde

Serde

Adds serialize and deserialize to some structs

Dependencies

~0.3–1MB
~21K SLoC