amigainfo
amigainfo.enums
IconType Objects
class IconType(IntEnum)
do_Type values from the DiskObject structure.
GadgetFlag Objects
class GadgetFlag(IntFlag)
Gadget flag bits (ga_Flags).
GadgetActivation Objects
class GadgetActivation(IntFlag)
Gadget activation bits (ga_Activation).
amigainfo.palettes
Default Workbench palettes for classic Amiga icons.
Classic .info files don’t contain palette data — they use the system Workbench palette. These are the standard palettes from each OS generation.
amigainfo.__main__
CLI tool for inspecting and converting Amiga .info files.
amigainfo.render
Render Amiga .info image data to Pillow Images.
to_image
def to_image(obj: DiskObject, selected: bool = False) -> Image.Image
Render the best available image from a DiskObject.
Priority: ARGB > ColorIcon > NewIcon > Classic. Falls back to normal state if selected is not available.
Arguments:
obj- A loaded DiskObject.selected- If True, render the selected (highlighted) state.
Returns:
A Pillow Image in RGBA or RGB mode.
Raises:
ValueError- If no image data is available.
png_to_image
def png_to_image(data: bytes) -> Image.Image
Render a PNG icon image to a Pillow RGBA Image.
argb_to_image
def argb_to_image(img: ARGBImage) -> Image.Image
Render an ARGB image to a Pillow RGBA Image.
The raw data is in ARGB byte order; we swap to RGBA for Pillow.
coloricon_to_image
def coloricon_to_image(img: ColorIconImage) -> Image.Image
Render a ColorIcon/GlowIcon image to a Pillow RGBA Image.
newicon_to_image
def newicon_to_image(img: NewIconImage) -> Image.Image
Render a NewIcon image to a Pillow RGBA Image.
classic_to_image
def classic_to_image(
img: ClassicImage,
palette: tuple[tuple[int, int, int], ...] | None = None
) -> Image.Image
Render a classic planar image to a Pillow RGBA Image.
Palette index 0 is treated as transparent.
Arguments:
img- A ClassicImage with planar bitmap data.palette- Color palette to use. Defaults to the WB 2.x palette.
amigainfo.pillow_plugin
Pillow plugin for Amiga Workbench .info icon files.
Registers the WBINFO format so that Image.open("icon.info") works
after import amigainfo.
amigainfo.load
Load Amiga .info files into DiskObject dataclasses.
load
def load(data: bytes | bytearray) -> DiskObject
Parse an Amiga .info file and return a DiskObject.
Arguments:
data- Raw bytes of the .info file.
Returns:
A DiskObject populated with all parsed data.
Raises:
ValueError- If the file doesn’t start with the expected magic number.
amigainfo.save
Write DiskObject dataclasses back to Amiga .info file bytes.
save
def save(obj: DiskObject) -> bytes
Serialize a DiskObject to Amiga .info file bytes.
Arguments:
obj- A DiskObject to serialize.
Returns:
Raw bytes of the .info file.
amigainfo.models
Gadget Objects
@dataclass
class Gadget()
Embedded Gadget structure from the DiskObject header (44 bytes on disk).
DrawerData Objects
@dataclass
class DrawerData()
Drawer window state.
Contains NewWindow fields for the drawer window, scroll offsets, and optional OS 2.x+ display flags (DrawerData2).
ImageHeader Objects
@dataclass
class ImageHeader()
Amiga Image structure header (20 bytes on disk).
Describes a single planar bitmap. The actual pixel data is stored separately.
ClassicImage Objects
@dataclass
class ClassicImage()
A single classic planar bitmap image with its header.
ClassicImages Objects
@dataclass
class ClassicImages()
Classic planar bitmap images (OS 1.x-3.1).
Always present in a standard .info file. Up to two images: normal (from GadgetRender) and selected (from SelectRender).
NewIconImage Objects
@dataclass
class NewIconImage()
A single decoded NewIcon image.
NewIconImages Objects
@dataclass
class NewIconImages()
NewIcon images decoded from ToolTypes strings.
Identified by the “** DON’T EDIT THE FOLLOWING LINES!! **” sentinel. Image data is in IM1= (normal) and IM2= (selected) tooltypes.
FaceChunk Objects
@dataclass
class FaceChunk()
FACE chunk from IFF FORM ICON (GlowIcons/OS 3.5+).
ColorIconImage Objects
@dataclass
class ColorIconImage()
A single IMAG chunk image from IFF FORM ICON.
ColorIconImages Objects
@dataclass
class ColorIconImages()
GlowIcons / ColorIcon images from IFF FORM ICON (OS 3.5+).
Found appended after classic .info data as FORM ICON chunks.
ARGBImage Objects
@dataclass
class ARGBImage()
A single 32-bit ARGB image, zlib-compressed in the file.
ARGBImages Objects
@dataclass
class ARGBImages()
32-bit ARGB images from IFF FORM ICON ARGB chunks (OS4).
PNGImages Objects
@dataclass
class PNGImages()
OS4 PNG icon images. Two concatenated PNG files.
DiskObject Objects
@dataclass
class DiskObject()
Top-level Amiga .info file structure.
Every standard .info file starts with a DiskObject header containing metadata and a Gadget structure. Image data may be present in multiple formats, layered on top of each other for backward compatibility:
- classic: Planar bitmaps (always present for 0xE310 files)
- newicon: Higher color images encoded in ToolTypes
- coloricon: GlowIcons IMAG chunks (OS 3.5+)
- argb: 32-bit ARGB image data (OS4)