Strings in LUMENA.TXT


                      LUMENA FILE STRUCTURE
LUMENA file structures are described for those who want to inspect
or edit image file values. For example, if you intend to load a
non-standard image file, you might need to read its header to
extract information required by loadalien.
The LUMENA image file format, as of LUMENA/Vista v.3.4, is based
on the Truevision TGA file format, v.2.0. The format is type 2 for
unmapped data and type 10 for run-length encoded RGB data. The
structures for headers and other file areas in these formats differ
from those in earlier-version TGA and LUMENA image files.
Note, however, that LUMENA high-resolution files (.BPX files) still
use the earlier LUMENA format.
Three file formats are described below: TGA v.2.0, TGA prior to
v.2.0, and LUMENA .PIX or .BPX.
TGA File Format, v.2.0
Decimal
Byte Number
Offset of
Into File Bytes Contents
HEADER
0: 1 Number of bytes in image ID field
1: 1 Color map type: 0 = no map, 1 = map
2: 1 Image type: 2 = standard, 0A = run-length encoded
3: 5 Color map specification
8: 2 X-origin of image
10: 2 Y-origin of image
12: 2 Image width
14: 2 Image height
16: 1 Pixel depth
17: 1 Image descriptor
IMAGE/COLOR MAP DATA (Image Field)
18: varies 255 bytes, max
IMAGE DATA
varies varies Start of image data
DEVELOPER AREA
varies
EXTENSION AREA
2 Extension size
41 Author name
324 Author comments
12 Date and time stamp
41 Job name or ID
6 Job time
41 Software ID
3 Software version
4 Key color
4 Pixel aspect ratio
4 Gamma value
4 Color correction offset
4 Stamp offset
4 Scan line offset
1 Attributes type
varies Scan line table
varies Start of postage stamp data
2048 Color correction table
TGA FILE FOOTER
4 Extension area offset
4 Developer directory offset
16 Signature
1 Reserved character
1 Binary terminator
Typical Header of a LUMENA/Vista TGA File, v.2.0
Offset
(In Hex)
0000:0000 00 00 02 00 00 00 00 00 00 00 00 00 00 02 E2 01
0000:00101 20 08 ------- (image ID field begins here) ---
LUMENA .PIX and .BPX File Format
Decimal
Byte Number
Offset of
Into File Bytes Contents
LUMENA LUMENA
16 32 16 32 HEADER
0: 0: 1 1 number of bytes in descriptor
1: 1: 1 1 pix with stamp = 1, pix w/o stamp = 0,
bigpix = 0
2: 2: 1 1 standard file 2, run-length encoded file
= 0A, compressed file = 8E
3: 3: 2 2 stamp width in pixels
5: 5: 2 2 stamp size in pixels
7: 7: 1 1 number of bits per pixel in stamp
(including alpha (mask) bits)
8: 8: 2 2 origin of lower left X coordinate
10: 10: 2 2 origin of lower left Y coordinate
12: 12: 2 2 image width in pixels
14: 14: 2 2 image height in pixels
16: 16: 1 1 number of bits per pixel (including alpha
(mask) bits)
17: 17: 1 1 number of alpha (mask) bits per pixel
LUMENA LUMENA
16 32 16 32 DESCRIPTOR
18: 18: 2 2 magic word for LUMENA internal routine (use
8E)
20: 20: 2 4 mask for red bits
22: 24: 2 4 mask for green bits
24: 28: 2 4 mask for blue bits
26: 32: 2 2 image aspect ratio, X component
28: 34: 2 2 image aspect ratio, Y component
30: 36: 2 4 background color (black = 0)
32: 40: 40 40 40 bytes reserved for comment
72: 80: varies start of stamp data (followed immediately
by image data)
NOTE: All values are to be entered in HEX.
Typical Header of a LUMENA/16 .PIX File
Offset
(In Hex)
0000;0000 36 01 02 40 00 00 0F 10 00 00 00 00 00 02 E2 01
0000:0010 10 01 8E 00 00 7C E0 03 1F 00 1A 03 00 04 00 00
0000:0020 54 69 6D 65 00 41 72 74 73 20 49 6E 63 20 45 2E
0000:0030 56 2E 41 2E 20 66 69 6C 65 00 00 00 00 00 00 00
0000:0040
00 00 00 00 00 00 00 00 (Stamp begins here)
Typical Header of a LUMENA/32 .PIX File
Offset
(In Hex)
0000:0000 3e 01 02 40 00 00 0F 20 00 00 00 00 00 02 E2 01
0000:0010 20 08 8E 00 00 00 FF 00 00 FF 00 00 FF 00 00 00
0000:0020 11 00 14 00 FF FF FF 00 54 69 6D 65 00 41 72 74
0000:0030 73 20 49 6E 63 20 45 2E 56 2E 41 2E 20 66 69 6C
0000:0040 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:0050 (Stamp begins here)
Typical Header of a LUMENA/16 .BPX File
Offset
(In Hex)
0000:0000 36 00 02 00 00 00 00 00 00 00 00 00 00 04 C4 03
0000:0010 10 01 8E 00 00 7C E0 03 1F 00 11 00 14 00 00 00
0000:0020 54 69 6D 65 20 41 72 74 73 20 4C 75 6D 65 6E 61
0000:0030 20 66 69 6C 65 2E 00 6C 65 00 00 00 00 00 00 00
0000:0040 00 00 00 00 00 00 00 00 (Image begins here)
Typical Header of a LUMENA/32 .BPX File
Offset
(In Hex)
0000:0000 3e 00 02 00 00 00 00 00 00 00 00 00 00 04 8B 03
0000:0010 20 08 8E 00 00 00 FF 00 00 FF 00 00 FF 00 00 00
0000:0020 11 00 14 00 FF FF FF 00 54 69 6D 65 00 41 72 74
0000:0030 73 20 49 6E 63 20 45 2E 56 2E 41 2E 20 66 69 6C
0000:0040 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000:0050 (Image begins here)
Earlier TGA Header Structure (prior to v.2.0)
The Truevision TGA file header format described below is the basis
for the Time Arts .PIX and .BPX header. A TGA header can be edited
to emulate the Time Arts header.
Earlier TGA Header Structure
Decimal
Byte Number
Offset of
Into File Bytes Contents
0: 1 number of characters in identification field
1: 1 color map type
2: 1 image type (2 = standard file; 0A = run-length
encoded; 8E = compressed)
3: 5 color map specification
8: 2 origin of lower left X coordinate
10: 2 origin of lower left Y coordinate
12: 2 image width in pixels
14: 2 image height in pixels
16: 1 number of bits per pixel (including alpha (mask)
bits)
17: 1 number of alpha (mask) bits per pixel
13: variable identification field
Typical Header of a .TGA File
Offset
(In Hex)
0000:0000 00 01 02 00 00 00 01 10 00 00 00 00 00 02 E2 01
0000:0010 10 00 (Identification field or image begins here)
Header Sizes
LUMENA/16 or /32 .TGA Image = 18 bytes
LUMENA/16 .BPX Image = 18 [header] + 54 [descriptor] = 72 bytes
LUMENA/32 .BPX Image = 18 [header] + 62 [descriptor] = 80 bytes
* The stamp width and height = 1/8 of image file proportions.
Bigpic files do not have stamps.
File Format For Lumena .CEL File
Decimal
Byte Number
Offset of
Into File Bytes Contents
0: 2 Width of cell
3: 2 Height of cell
4: variable Cell data ... (followed by next width, height,
cell data, etc.)
The formula to determine where next cell file will begin is:
width x height x depth (2 for 16 bits, or 4 for 32 bits)
of previous cell
VECTOR FILE FORMAT (as written by LUMENA)
The vector file is written by a set of calls to POLYSTORE (poly,
handle). Each call writes the data for one character. The following
gets written:
Offset Description
0 | P polygon flag (char)
1 | image pixel height (integer)
3 | font dam height (integer) H
5 | x-offset (integer) E
7 | y-offset (integer) A
9 | frameb->xsize (integer) D
11 | frameb->ysize (integer) E
13 | red (unsigned char) R
14 | green (unsigned char)
15 | blue (unsigned char)
M O | o start of outline (char)
U U | . point (char) D
L T | x (integer) A
T L | y (integer) T
I I | . A
P N | x
L E | y
E S | (and so on)
| e end of polygon (char)
Comments:
frameb->xsize & frameb->ysize are not really helpful. These are
designed for distinguishing a bigpic from a regular size image. A
bigpic would use a different scaling factor than a non bigpic.
However, this is already handled at creation time when the user
set the font size. He will set it differently depending on whether
he is using a bigpic or a regular image. Also, these are global
values so they should not be duplicated within each polygon.
I'm planning to use this space for storing:
Polygon angle (100ths of a degree)
Italic angle (100ths of a degree)
Shadow offset x (pixels)
Shadow offset y (pixels)
struct tiffhead /* structure for our TIFF Version 5.0 header */
Int order; /* byte order in file = II for Intel */
Int version; /* TIFF magic number is always 42 */
long offset1; /* offset of 1st sub directory */
int tags; /* number of entries in directory */
struct tag NewSubfileType; /* tag254 = 0 */
struct tag ImageWidth; /* tag256 = pixels/line */
struct tag ImageLength; /* tag257 = lines/image */
struct tag BitsPerSample; /* tag258 = 8 or offset to rbits */
struct tag Compression; /* tag259 = 1 for none, 5 for LZW */
struct tag Photometric; /* tag262 = 1 for grey, 2 for rgb */
struct tag StripOffsets; /* tag273 = offset of strip offsets */
struct tag SamplesPerPixel; /* tag277 = 1 for grey, 3 for rgb */
struct tag RowsPerStrip; /* tag278 = 1 */
struct tag StripByteCounts;/* tag279 = offset of byte count table*/
struct tag XResolution; /* tag282 = offset of xresi */
struct tag YResolution; /* tag283 = offset of yresi */
struct tag PlanarConfiguration; /* tag284 = 1 for rgbrgbrgb ... */
struct tag ResolutionUnit; /* tag296 = 1 for undefined */
struct tag Predictor; /* tag3l7 = 1 for none, 2 for LZW */
long offsetn; /* offset of next subdirectory = 0 */
long xres1,xres2, yres1,yres2; /* x & y aspect */
short rbits,gbits,bbits; /* bits per pixel of red, green, blue */
Note: rbits, gbits, and bbits are not present if SamplesPerPixel
= 1.
All file offset fields are filled in at run time.
Here are the default values we start with:
struct tiffhead ctiff = /* an actual tiff file header */
{ /* with our defaults in place */
0X4949,42;BL,159
254,3,1L,0L, 256,3,1L,512L,
257,3,1L,482L, 258,3,1L,0L,
259,3,1L;1L, 262,3,1L,1L,
273,4,482L,0L, 277,3,1L,3L,
278,3,1L,1L, 279,3,482L,0L,
282,5,1L,0L, 283,5,1L,0L,
284,3,1L,1L, 296,3,1L,1L,
317,3,1L,1L,
0L, /* mark end of header */
1L,1L,1L,1L /* the aspect rationals */
8,8,8 /* BitsPerSample for color */
/* Format of a Lumena/16/32 version 2.40 greyscale TIFF file
offset contents comment
0 */ 0x4949, /* byte order in file is usually Intel
2 */ 42, /* this has "deep philosophical significance"
4 */ 8L, /* offset of first sub directory
8 */ 8, /* 8 tags in first subdirectory
10 */ 255,3;1L,1L; /* SubfileType = full resolution data
22 */ 256,3,1L,512L, /* ImageWidth can change
34 */ 257,3,1L,482L, /* ImageLength can change
46 */ 258,3,1L,8L, /* BitsPerSample is 9 for greyscale data
58 */ 262,3,1L,1L, /* PhotometricInterpretation = black to white
70 */ 273,3,1L,126L, /* StripOffsets = offset where image starts
82 */ 282,5,1L,110L, /* XResolution offset of xresi and xres2
94 */ 283,5,1L,11BL, /* Yresolution offset of yresi and yres2
106 */ 0L, /* offset of next subdirectery(there is none)
110 */ 150L,1L, /* xresi = system aspect times 150, xres2=1
118 */ 150L,1L /* yresi=150, yres2=1. These never change.
126 Image data starts here, consisting of one byte per pixel
stored in horizonal lines scanned left to right, top to
bottom. */
TIME ARTS FILE STRUCTURE
for Lumena/16/32 and ColorScheme 1 & 2
Time Arts is using the AT&T Targa file formats, types 2 and 10,
for unmapped and run-length encoded RGB data, respectively. The
detailed header struct is shown below, and the stamp description,
which is placed after the descriptor, is noted at the bottom. The
"stamp" is a small version of the entire image that is used in
previewing. It is stored immediately following the descriptor data,
in the same place a map would have been put in a mapped image. We
are using this same format for high-resolution (bigpic) image files
but without a stamp.
Decimal
Byte Number
Offset of
Into File Bytes Contents
LUMENA LUMENA
16 32 16 32
* * * HEADER * * *
0: 0: 1 1 number of bytes in descriptor
1: 1: 1 1 pix with stamp=1 pix w/o stamp=0 bigpix=0
2: 2: 1 1 standard file=2 run-length encoded file=0A
compressed file=8E
3: 3: 2 2 stamp width in pixels
5: 5: 2 2 stamp size in pixels
7: 7: 1 1 number of bits per pixel in stamp
[including alpha (mask) bits]
8: 8: 2 2 origin of lower left X coordinate
10: 10: 2 2 origin of lower left Y coordinate
12: 12: 2 2 image width in pixels
14: 14: 2 2 image height in pixels
16: 16: 1 1 number of bits per pixel [including alpha
(mask) bits]
17: 17: 1 1 number of alpha (mask) bits per pixel
* * * DESCRIPTOR * * *
18: 18: 2 2 magic word for Lumena internal routine (use
8E)
20: 20: 2 4 mask for red bits
22: 24: 2 4 mask for green bits
24: 28: 2 4 mask for blue bits
26: 32: 2 2 image aspect ratio-X coordinate | Note:
| These two
28: 34: 2 2 image aspect ratio-Y coordinate | values
| together
| indicate
| a ratio.
30: 36: 2 4 background color (black=0)
32: 40: 40 40 40 bytes (reserved for comment)
72: 80: start of stamp data (followed immediately
by image data)
NOTE: All values are to be entered in HEX.
Assuming an image size of 512 x 482:
Lumena/16 header size, bytes = 18 [header] + 54 [descriptor]
+ (64x60x2) [stamp] = 7752
Lumena/32 header size, bytes = 18 [header] + 62 [descriptor]
+ (64x60x4) [stamp] = 15440
Stamp width and height = 1/8 of image file proportions.
Lumena /8
File Formats
Image files ( .PIC )
Image files contain the entire contents of the frame buffer i.e.
all pixel values at the time the SAVE command was issued. The frame
buffer contents are not encoded in any way, and there is no header
record. The first 512 bytes of the file contain the top line of
pixels , left to right, with the next 512 bytes containing the next
line of pixels, and so on. 512 lines are saved. PIC files do not
contain any color map information.
Bytes Contents
0 - 511 Line 511 (top of screen) pixel 0-511 values.
512 - 1023 Line 510 pixel values.
261633 - 262144 Line 0 (bottom of frame buffer--not visible).
Map files ( .MAP )
Map files contain the contents of the current color map at the time
they were created. They are automatically created when an image is
saved, or can be saved by themselves through the MAPS menu. The
file consists of 768 bytes. The first 256 bytes contain the red
color component of the 256 entries in the color map, starting with
the first entry. The next 256 bytes contain the green color
component, and the next 256 bytes contain the blue component.
Bytes
Contents
0 - 255 Red entries 0-255 in color map.
256 - 511 Green entries 0-255 in color map.
512 - 767 Blue entries 0=255 in color map.
Cell outline files ( .CEL )
Cell outline files contain the coordinates of the cells whose
outlines have been created through the CELLS menu. The files can
be created in the CELLS menu; they get saved along with events in
the ANIM menu. A cell outline is a rectangular area of the screen
which is defined by two points, the lower left and the upper right
corners. Each cell is also assigned a name or label. The user may
determine this name when the cell is created, otherwise the value
one is used. The file contains a 16-byte record for each cell
outline that existed when the file was created. The first 2 bytes
(bytes 0-1) of each record contain a number representing the ASCII
value for the cell name, or label. The next two bytes (bytes 2-3)
currently are not used. Bytes (4-5) contain the x-coordinate of the
lower left point. Bytes (6-7) contain the y-coordinate of this
point. The next 4 bytes (bytes 8-11) contain the x and y
coordinates of the upper right point.
Bytes 12-15 are not currently used.
Bytes Contents
0 - 1 Cell label
2 - 3 Unused
4 - 5 X1
6 - 7 Y1
8 - 9 X2
10 - 11 Y2
12 - 15 Unused
MHI image files are 1024x964 pixels and follow the PIC format
outlined earlier, but as a much longer file.
VHI image files are 2048x1928 pixels and follow the PIC format as
well.
These file formats are created by Lumena 8+, while the PIC format
is from Lumena 8. They are all colormapped files. The colormaps
are the same and may be used with all three image formats from
Lumena 8.