IndexedFormat<P> class final Pixel Formats

A pixel format that uses a predefined palette to index colors.

Given a linear list of colors, an indexed pixel format uses a single integer value to represent a color in the palette. This is useful for reducing the memory footprint of images, especially when the number of unique colors is small.

Example

// Creating a simple system palette with 8 colors.
final palette = [
  abgr8888.create(red: 0xFF, green: 0x00, blue: 0x00),
  abgr8888.create(red: 0x00, green: 0xFF, blue: 0x00),
  abgr8888.create(red: 0x00, green: 0x00, blue: 0xFF),
  abgr8888.create(red: 0xFF, green: 0xFF, blue: 0x00),
  abgr8888.create(red: 0xFF, green: 0x00, blue: 0xFF),
  abgr8888.create(red: 0x00, green: 0xFF, blue: 0xFF),
  abgr8888.create(red: 0xFF, green: 0xFF, blue: 0xFF),
  abgr8888.create(red: 0x00, green: 0x00, blue: 0x00),
];

// Creating an 8-bit indexed pixel format with the palette.
final indexed = IndexedFormat.bits8(palette, format: abgr8888);

// Converting a color to an index.
final index = indexed.fromAbgr8888(abgr8888.create(red: 0xFF, green: 0x00, blue: 0x00));

// Converting an index to a color.
final color = indexed.toAbgr8888(index);

See system8 for a predefined palette of common RGB colors.

Inheritance

Constructors

IndexedFormat.bits16(Iterable<P> palette, {required PixelFormat<P, void> format, String? name, int? zero, int? max})
Creates an 16-bit indexed pixel format with the given palette.
factory
IndexedFormat.bits32(Iterable<P> palette, {required PixelFormat<P, void> format, String? name, int? zero, int? max})
Creates an 32-bit indexed pixel format with the given palette.
factory
IndexedFormat.bits8(Iterable<P> palette, {required PixelFormat<P, void> format, String? name, int? zero, int? max})
Creates an 8-bit indexed pixel format with the given palette.
factory

Properties

bytesPerPixel → int
Number of bytes required to store a single pixel in memory.
final
hashCode → int
The hash code for this object.
no setterinherited
length → int
Length of the palette.
no setter
max → int
The maximum value for the pixel format.
final
name → String
Human-readable name or description of the pixel format.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
zero → int
The zero, or minimum, value for the pixel format.
final

Methods

clamp(int pixel) → int
Clamps a pixel to the valid range of values for the pixel format.
override
compare(int a, int b) → double
Compares two pixels in the pixel format.
override
convert<R>(R pixel, {required PixelFormat<R, void> from}) → int
Converts a pixel from one another format to this format.
inherited
copyWith(int pixel) → int
Returns a copy of the pixel.
override
copyWithNormalized(int pixel) → int
Returns a copy of the pixel with normalized values.
override
describe(int pixel) → String
Returns a human-readable description of the pixel.
inherited
distance(int a, int b) → double
Returns the distance between two pixels in the pixel format.
override
fromAbgr8888(int pixel) → int
Converts a pixel in the abgr8888 pixel format to this pixel format.
override
fromFloatRgba(Float32x4 pixel) → int
Converts a pixel in the floatRgba pixel format to this pixel format.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toAbgr8888(int pixel) → int
Converts a pixel in this pixel format to the abgr8888 pixel format.
override
toFloatRgba(int pixel) → Float32x4
Converts a pixel in this pixel format to the floatRgba pixel format.
override
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited
operator [](int index) → P
Returns the color in the palette at the given index.