Overview
Forum
Mango
iMango
Papaya
Multi-image Analysis GUI
Download
User Guide
Developer Guide
Troubleshooting
Acknowledgements

Mango Surface Format (v1.5)

Header

Field NameByte LengthDescription
Magic Cookie5String: "mango"
Byte Order1Character: 'l' or 'b'
Version2String: e.g., "15" = v1.5
Preview Image Size4Unsigned 32-bit Integer (x 1)
Number of Surfaces4Unsigned 32-bit Integer (x 1)
ModelView Matrix12864-bit Float (x 16)
Image Dimensions (X, Y, Z)12Unsigned 32-bit Integer (x 3)
Voxel Dimensions (X, Y, Z)1232-bit Float (x 3)
Origin (X, Y, Z)1232-bit Float (x 3)
Build Threshold432-bit Float (x 1)
Preview ImagePreview Image SizeByte Array (JPEG data)

Loop for each surface (1 or more):

See "Number of Surfaces" for loop iteration count.

Field NameByte LengthDescription
Surface Name64String (64 bytes)
Base Color (R, G, B)1232-bit Float (x 3)
Number of Parts4Unsigned 32-bit Integer (x 1) [deprecated]
Number of Point Values4Unsigned 32-bit Integer (x 1)
Point DataNumber of Point Values x 432-bit Float (x Number of Point Values)
Number of Parts4Unsigned 32-bit Integer (x 1) [deprecated]
Number of Normal Values4Unsigned 32-bit Integer (x 1)
Normals DataNumber of Normal Values x 432-bit Float (x Number of Normal Values)
Number of Parts4Unsigned 32-bit Integer (x 1) [deprecated]
Number of Index Values4Unsigned 32-bit Integer (x 1)
Index DataNumber of Index Values x 4Unsigned 32-bit Integer (x Number of Index Values)

Loop for each surface color overlay (0 or more):

Check if magic cookie exists and loop if so.

Field NameByte LengthDescription
Magic Cookie 14Bytes: [0, 0, 0, 0]
Magic Cookie 24String: "scal"
Overlay Name64String (64 bytes)
Color Lookup Table Name64String (64 bytes)
Overlay Alpha4Unsigned 32-bit Integer (x 1)
Overlay Display Min432-bit Float (x 1)
Overlay Display Max432-bit Float (x 1)
Brightness432-bit Float (x 1) [deprecated]
Number of Parts4Unsigned 32-bit Integer (x 1) [deprecated]
Number of Scalar Values4Unsigned 32-bit Integer (x 1)
Scalar DataNumber of Scalar Values x 432-bit Float (x Number of Scalar Values)

Loop for each vector shape (0 or more):

Check if magic cookie exists and loop if so.

Field NameByte LengthDescription
Magic Cookie 14Bytes: [-1, 0, 0, 0] or [-2, 0, 0, 0]
Magic Cookie 24String: "shap"
Shape Name64String (64 bytes)
Color (R, G, B)1232-bit Float (x 3)
Number of Points4Unsigned 32-bit Integer (x 1)
Point DataNumber of Points x 432-bit Float (x Number of Points)

Notes:

RGB data can be derived from the scalar data (1 value per vertex) and a lookup table. The "Overlay Display Min" and "Overlay Display Max" values indicate the bounds of the color table. Where the scalar data is less than or equal to "Overlay Display Min" substitute the surface's "Base Color".

See this open source Mango Surface Format reader in the Papaya project as an example.