26 - Atomic File Format

Rules:
------
tags are 8, 8-bit chars
tags are ALWAYS followed by a chunk size, a 64-bit integer (8 bytes, unsigned)
chunk of size follows, unless chunk size is zero
there are some ordering rules; obey the sequence described as follows:

File content:
-------------
first, file ID group, in this specific order:
{
    ATO16BIT (chunksize=0)
    AVERSION (chunksize) integer, file format version
    AKEYVALU (chunksize) integer, 0x2E5A9B3E
}
Next, image information:
{
    Basic image information group, tags in any order:
    {
        ATO_NAME (chunksize) Image name
        ATO_ANNO (chunksize) annotation of image
        ATO_CPYR (chunksize) copyright of image
        ATO_AUTH (chunksize) author of image
        ATO_SOFT (chunksize) software involved with image
        ATO_CTIM (chunksize) image creation time: "YYYYMMDD:HHMMSS GMT"
        ATO_MTIM (chunksize) image modification time: "YYYYMMDD:HHMMSS GMT"
        ATO_LATI (chunksize) double as text, decimal latitude in degrees
        ATO_LONG (chunksize) double as text, decimal longitude in degrees
        ATO_ALTI (chunksize) double as text, decimal altitude in meters
        ATO_SHUT (chunksize) double as text, decimal shutter speed
        ATO_APER (chunksize) double as text, decimal aperture
        ATO_FOCA (chunksize) double as text, decimal focal length
        ATO_ISOS (chunksize) double as text, decimal ISO sensitivity
        ATO_XWID (chunksize) integer, of image width
        ATO_YWID (chunksize) integer, of image height
        ATO_XDPI (chunksize) integer, of image X DPI
        ATO_YDPI (chunksize) integer, of image Y DPI
        ATO_XCEN (chunksize) integer, X center of image (this is a user-assigned value)
        ATO_YCEN (chunksize) integer, Y center of image (this is a user-assigned value)
        ATO_COMP (chunksize) character, either 'T' or 'F' - compression flag
    }
    Next, allocation signal:
    {
        IMAGEKEY (chunksize=0) signal to allocate the image memory
    }
    Next, image extended information group, tags in any order:
    {
        ATO_MODE (chunksize) integer, layer blend mode
        ATO_XOFF (chunksize) integer, layer x displacement relative to master or other layer
        ATO_YOFF (chunksize) integer, layer y displacement relative to master or other layer
        ATO_OPAC (chunksize) double as text, layer opacity in range 0...1
        ATO_ROTA (chunksize) double as text, layer rotation in degrees, 0...360
        ATO_FRXX (chunksize) double as text, fractional pixel x offset, 0...1
        ATO_FRYY (chunksize) double as text, fractional pixel y offset, 0...1
        ATO_FACT (chunksize) double as text, factor for layer mode, 0...1
        ATO_VISI (chunksize) character, either 'T' or 'F' - layer visible flag
        ATO_LOCS (chunksize) character, either 'T' or 'F' - layer local stack flag
        ATO_GLOM (chunksize) character, either 'T' or 'F' - layer global mask flag
        ATO_LOKS (chunksize) character, either 'T' or 'F' - layer lockstep flag
        ATO_RCHN (chunksize) compressed* block of 16-bit unsigned red data
        ATO_GCHN (chunksize) compressed* block of 16-bit unsigned green data
        ATO_BCHN (chunksize) compressed* block of 16-bit unsigned blue data
        ATO_ACHN (chunksize) compressed* block of 16-bit unsigned alpha data
    }
    Next, after each image information group:
    {
        IMAGEBLD (chunksize=0) signal to build the image
    }
    Next, note information, if any:
    {
        ATO_INOT (chunksize) text of note
        ATO_INPU (chunksize) character, either 'T' or 'F' - note public flag
        ATO_INAM (chunksize) integer, area mode
        ATO_INTX (chunksize) integer, text X position
        ATO_INTY (chunksize) integer, text Y position
        ATO_INAX (chunksize) integer, anchor X position
        ATO_INAY (chunksize) integer, anchor Y position
        ATO_INEX (chunksize) integer, extent X position
        ATO_INEY (chunksize) integer, extent Y position
        ATO_INOP (chunksize) double as text, opacity 0-1
        For any freehand/polygon points, for each point:
        {
            ATO_INPX (chunksize) integer, point X position
            ATO_INPY (chunksize) integer, point Y position
        }
        ATO_INBU (0 chunksize) built note command
    }
}

* compression is per Qt's QtCompress() function, which uses zlib
Keyboard Navigation
, Previous Page . Next Page t TOC i Index o Operators g Glossary

Valid HTML 4.01 Loose
 

This manual was generated with wtfm
wtfm uses aa_macro and SqLite
wtfm and aa_macro are coded in python 2.7
iToolBox 1.63
Please consider supporting my iToolBox development efforts with a small PayPal donation.


Hey, look:
A box!