//Pixels have these attributes: class Pixel_Data { unsigned short ID; Specific ID number char code; Code marker (CVS identifier) DataType data_type; SUN_INTEGER, SUN_FLOAT, etc. byte_orders byte_order; BIG_ENDIAN, LITTLE_ENDIAN, others int pixel_bits; Number of bits in this pixel float pixel_bytes; Number of bytes this pixel fits into }; enum DataType { SUN_INTEGER, SUN_FLOAT, SUN_DOUBLE, etc. }; // The pixel_bytes field needs discussion // I would like to discuss the ID and code also // Not sure if data_type should be a seperate object which knows its // byte_order and its pixel_bits or not. //Pixels are stored together in this geometry: class Pixel_Geometry { int axes; The number of axes in the data Axis_Vector axis[axes]; An array of axis information }; class Axis_Vector { int order; The order of this axis in the data int size; How many pixels are in this dimension Direction direction; Either positive or negative } enum Direction { '+', '-' }; // The order is relative to an assumed order of axes, namely // (0,0,0) at the uppermost left corner of the "cube" // +x going "across" // +y going "down" // +z going "back" // Hopefully noone will "mix axes" in the data. -- When I use a word it means just what | John Ivens I choose it to mean - neither more | Principal Programmer nor less. | Cassini VIMS -- Humpty Dumpty | (520) 621-7301