formZ SDK | 5.0 API Reference | System | Data Type
Description
formZ variant data type. A variant data type allows data of different types to be passed to a function.
It is essentially a tagged union of all the data types it supports. This type
is used mainly for setting and getting parameters of formZ entities (lights,
objects, surface styles, etc.) The variant type set and get functions perform
runtime type checking and where possible, type conversion.
The fz_type_ get and set functions follow the same form:
They all return an error code.
Data is copied from the first parameter to the second parameter.
All data is passed to the functions by pointer.
Data type conversions happen in the get functions (if you set a value, someone else will
get it). Each get function describes the type conversions it supports. If no type conversions
are listed, none are supported. No data type conversions occur on arrays of data.
enum fz_type_enum {
FZ_TYPE_NONE,
FZ_TYPE_BOOL,
FZ_TYPE_CHAR,
FZ_TYPE_UCHAR,
FZ_TYPE_SHORT,
FZ_TYPE_USHORT,
FZ_TYPE_INT,
FZ_TYPE_UINT,
FZ_TYPE_FLOAT,
FZ_TYPE_DOUBLE,
FZ_TYPE_XY,
FZ_TYPE_XYZ,
FZ_TYPE_XYZW,
FZ_TYPE_XY_MM,
FZ_TYPE_XYZ_MM,
FZ_TYPE_XY_FLOAT,
FZ_TYPE_XYZ_FLOAT,
FZ_TYPE_EQU,
FZ_TYPE_MAT4X4,
FZ_TYPE_RGB_UCHAR,
FZ_TYPE_RGB_USHORT,
FZ_TYPE_RGB_FLOAT,
FZ_TYPE_UUID,
FZ_TYPE_4CHAR,
FZ_TYPE_STRING,
FZ_TYPE_POINT,
FZ_TYPE_RECT,
FZ_TYPE_PTR,
FZ_TYPE_MAT3X3,
FZ_TYPE_BOOL_PTR,
FZ_TYPE_CHAR_PTR,
FZ_TYPE_UCHAR_PTR,
FZ_TYPE_SHORT_PTR,
FZ_TYPE_USHORT_PTR,
FZ_TYPE_INT_PTR,
FZ_TYPE_UINT_PTR,
FZ_TYPE_FLOAT_PTR,
FZ_TYPE_DOUBLE_PTR,
FZ_TYPE_XY_PTR,
FZ_TYPE_XYZ_PTR,
FZ_TYPE_XYZW_PTR,
FZ_TYPE_XY_MM_PTR,
FZ_TYPE_XYZ_MM_PTR,
FZ_TYPE_XY_FLOAT_PTR,
FZ_TYPE_XYZ_FLOAT_PTR,
FZ_TYPE_EQU_PTR,
FZ_TYPE_MAT4X4_PTR,
FZ_TYPE_RGB_UCHAR_PTR,
FZ_TYPE_RGB_USHORT_PTR,
FZ_TYPE_RGB_FLOAT_PTR,
FZ_TYPE_UUID_PTR,
FZ_TYPE_4CHAR_PTR,
FZ_TYPE_STRING_PTR,
FZ_TYPE_POINT_PTR,
FZ_TYPE_RECT_PTR,
FZ_TYPE_PTR_PTR,
FZ_TYPE_MAT3X3_PTR,
FZ_TYPE_ENUM,
FZ_TYPE_ENUM_PTR,
FZ_TYPE_MAP_PLANE,
FZ_TYPE_MAP_PLANE_PTR,
FZ_TYPE_TAG,
FZ_TYPE_TAG_PTR,
FZ_TYPE_MAX };
Members
FZ_TYPE_NONE
No type (TODO: DAVE, what's this for?)
FZ_TYPE_BOOL
Boolean type ( fzrt_boolean)
FZ_TYPE_CHAR
Single byte signed integer type (char)
FZ_TYPE_UCHAR
Single byte unsigned integer type (unsigned char)
FZ_TYPE_SHORT
Two byte signed integer type (short)
FZ_TYPE_USHORT
Two byte unsigned integer type (unsigned short)
FZ_TYPE_INT
Four byte signed integer type (fzrt_int)
FZ_TYPE_UINT
Four byte unsigned integer type (fzrt_unsigned_int)
FZ_TYPE_FLOAT
Single precision floating point type (float)
FZ_TYPE_DOUBLE
Double precision floating point type (double)
FZ_TYPE_XY
Double precision floating point 2D x,y coordinate type ( fz_xy_td)
FZ_TYPE_XYZ
Double precision floating point 3D x,y,z coordinate type ( fz_xyz_td)
FZ_TYPE_XYZW
Double precision floating point 4D x,y,z,w coordinate type ( fz_xyzw_td)
FZ_TYPE_XY_MM
Double precision floating point 2D x,y minimum/maximum pair type ( fz_xy_mm_td)
FZ_TYPE_XYZ_MM
Double precision floating point 3D x,y,z minimum/maximum pair type ( fz_xyz_mm_td)
FZ_TYPE_XY_FLOAT
Single precision floating point 2D x,y coordinate type ( fz_xy_float_td) (TODO: Do we want to expose this?)
FZ_TYPE_XYZ_FLOAT
Single precision floating point 3D x,y,z coordinate type ( fz_xyz_float_td) (TODO: Do we want to expose this?)
FZ_TYPE_EQU
Double precision floating point plane equation type ( fz_plane_equ_td)
FZ_TYPE_MAT4X4
Double precision floating point 4x4 matrix ( fz_mat4x4_td)
FZ_TYPE_RGB_UCHAR
Single byte unsigned integer r,g,b color ( fz_rgb_uchar_td)
FZ_TYPE_RGB_USHORT
Two byte unsigned integer r,g,b color ( fz_rgb_ushort_td)
FZ_TYPE_RGB_FLOAT
Single precision floating point r,g,b color ( fz_rgb_float_td)
FZ_TYPE_UUID
UUID ( fzrt_UUID_td)
FZ_TYPE_4CHAR
Four byte string ( fz_4char_td)
FZ_TYPE_STRING
String ( fz_string_td)
FZ_TYPE_POINT
Integer 2D point type ( fzrt_point)
FZ_TYPE_RECT
Integer 2D rectangle type ( fzrt_rect)
FZ_TYPE_PTR
Generic pointer (void *) (TODO: Do we want to expose this?)
FZ_TYPE_MAT3X3
Double precision floating point 3x3 matrix ( fz_mat3x3_td)
FZ_TYPE_BOOL_PTR
Pointer to a Boolean type ( fzrt_boolean *)
FZ_TYPE_CHAR_PTR
Pointer to a Single byte signed integer type (char *)
FZ_TYPE_UCHAR_PTR
Pointer to a Single byte unsigned integer type (unsigned char *)
FZ_TYPE_SHORT_PTR
Pointer to a Two byte signed integer type (short *)
FZ_TYPE_USHORT_PTR
Pointer to a Two byte unsigned integer type (unsigned short *)
FZ_TYPE_INT_PTR
Pointer to a Four byte signed integer type (fzrt_int *)
FZ_TYPE_UINT_PTR
Pointer to a Four byte unsigned integer type (fzrt_unsigned_int *)
FZ_TYPE_FLOAT_PTR
Pointer to a Single precision floating point type (float *)
FZ_TYPE_DOUBLE_PTR
Pointer to a Double precision floating point type (double *)
FZ_TYPE_XY_PTR
Pointer to a Double precision floating point 2D x,y coordinate type ( fz_xy_td *)
FZ_TYPE_XYZ_PTR
Pointer to a Double precision floating point 3D x,y,z coordinate type ( fz_xyz_td *)
FZ_TYPE_XYZW_PTR
Pointer to a Double precision floating point 4D x,y,z,w coordinate type ( fz_xyzw_td *)
FZ_TYPE_XY_MM_PTR
Pointer to a Double precision floating point 2D x,y coordinate minimum/maximum pair type ( fz_xy_mm_td *)
FZ_TYPE_XYZ_MM_PTR
Pointer to a Double precision floating point 3D x,y,z coordinate minimum/maximum pair type ( fz_xyz_mm_td *)
FZ_TYPE_XY_FLOAT_PTR
Pointer to a Single precision floating point 2D x,y coordinate type ( fz_xy_float_td *) (TODO: Do we want to expose this?)
FZ_TYPE_XYZ_FLOAT_PTR
Pointer to a Single precision floating point 3D x,y,z coordinate type ( fz_xyz_float_td *) (TODO: Do we want to expose this?)
FZ_TYPE_EQU_PTR
Pointer to a Double precision floating point plane equation type ( fz_plane_equ_td *)
FZ_TYPE_MAT4X4_PTR
Pointer to a Double precision floating point 4x4 matrix ( fz_mat4x4_td *)
FZ_TYPE_RGB_UCHAR_PTR
Pointer to a Single byte unsigned integer r,g,b color ( fz_rgb_uchar_td *)
FZ_TYPE_RGB_USHORT_PTR
Pointer to a Two byte unsigned integer r,g,b color ( fz_rgb_ushort_td *)
FZ_TYPE_RGB_FLOAT_PTR
Pointer to a Single precision floating point r,g,b color ( fz_rgb_float_td*)
FZ_TYPE_UUID_PTR
Pointer to a UUID ( fzrt_UUID_td *)
FZ_TYPE_4CHAR_PTR
Pointer to a Four byte string ( fz_4char_td *)
FZ_TYPE_STRING_PTR
Pointer to a String ( fz_string_td *)
FZ_TYPE_POINT_PTR
Pointer to a Four byte signed integer 2D point type ( fzrt_point *)
FZ_TYPE_RECT_PTR
Pointer to a Four byte signed integer 2D rectangle type ( fzrt_rect *)
FZ_TYPE_PTR_PTR
Generic pointer to a pointer (void **) (TODO: Do we want to expose this?)
FZ_TYPE_MAT3X3_PTR
Pointer to a Double precision floating point 3x3 matrix ( fz_mat3x3_td)
FZ_TYPE_ENUM
Enumerated type (using 4 byte integer storage)
FZ_TYPE_ENUM_PTR
Pointer to an Enumerated type
FZ_TYPE_MAP_PLANE
3D Mapping plane ( fz_map_plane_td)
FZ_TYPE_MAP_PLANE_PTR
Pointer to a 3D Mapping plane ( fz_map_plane_td)
FZ_TYPE_TAG
tag, which uniquely identifies an entity, such as a surface style or light
FZ_TYPE_TAG_PTR
Pointer to a tag
FZ_TYPE_MAX
The end of this enum. Used for range checking.
Availability
5.0.0.0
Defined in