HDK
|
Storage, name and type information for an attribute. More...
#include <openexr_attr.h>
Public Attributes | |
const char * | name |
const char * | type_name |
uint8_t | name_length |
uint8_t | type_name_length |
uint8_t | pad [2] |
exr_attribute_type_t | type |
union { | |
uint8_t uc | |
double d | |
float f | |
int32_t i | |
exr_attr_box2i_t * box2i | |
exr_attr_box2f_t * box2f | |
exr_attr_chlist_t * chlist | |
exr_attr_chromaticities_t * chromaticities | |
exr_attr_keycode_t * keycode | |
exr_attr_float_vector_t * floatvector | |
exr_attr_m33f_t * m33f | |
exr_attr_m33d_t * m33d | |
exr_attr_m44f_t * m44f | |
exr_attr_m44d_t * m44d | |
exr_attr_preview_t * preview | |
exr_attr_rational_t * rational | |
exr_attr_string_t * string | |
exr_attr_string_vector_t * stringvector | |
exr_attr_tiledesc_t * tiledesc | |
exr_attr_timecode_t * timecode | |
exr_attr_v2i_t * v2i | |
exr_attr_v2f_t * v2f | |
exr_attr_v2d_t * v2d | |
exr_attr_v3i_t * v3i | |
exr_attr_v3f_t * v3f | |
exr_attr_v3d_t * v3d | |
exr_attr_opaquedata_t * opaque | |
uint8_t * rawptr | |
}; | |
Storage, name and type information for an attribute.
Attributes (metadata) for the file cause a surprising amount of overhead. It is not uncommon for a production-grade EXR to have many attributes. As such, the attribute struct is designed in a slightly more complicated manner. It is optimized to have the storage for that attribute: the struct itself, the name, the type, and the data all allocated as one block. Further, the type and standard names may use a static string to avoid allocating space for those as necessary with the pointers pointing to static strings (not to be freed). Finally, small values are optimized for.
Definition at line 469 of file openexr_attr.h.
union { ... } |
Union of pointers of different types that can be used to type pun to an appropriate type for builtins. Do note that while this looks like a big thing, it is only the size of a single pointer. These are all pointers into some other data block storing the value you want, with the exception of the pod types which are just put in place (i.e. small value optimization).
The attribute type type
should directly correlate to one of these entries.
exr_attr_box2f_t* exr_attribute_t::box2f |
Definition at line 504 of file openexr_attr.h.
exr_attr_box2i_t* exr_attribute_t::box2i |
Definition at line 503 of file openexr_attr.h.
exr_attr_chlist_t* exr_attribute_t::chlist |
Definition at line 505 of file openexr_attr.h.
exr_attr_chromaticities_t* exr_attribute_t::chromaticities |
Definition at line 506 of file openexr_attr.h.
double exr_attribute_t::d |
Definition at line 499 of file openexr_attr.h.
float exr_attribute_t::f |
Definition at line 500 of file openexr_attr.h.
exr_attr_float_vector_t* exr_attribute_t::floatvector |
Definition at line 508 of file openexr_attr.h.
int32_t exr_attribute_t::i |
Definition at line 501 of file openexr_attr.h.
exr_attr_keycode_t* exr_attribute_t::keycode |
Definition at line 507 of file openexr_attr.h.
exr_attr_m33d_t* exr_attribute_t::m33d |
Definition at line 510 of file openexr_attr.h.
exr_attr_m33f_t* exr_attribute_t::m33f |
Definition at line 509 of file openexr_attr.h.
exr_attr_m44d_t* exr_attribute_t::m44d |
Definition at line 512 of file openexr_attr.h.
exr_attr_m44f_t* exr_attribute_t::m44f |
Definition at line 511 of file openexr_attr.h.
const char* exr_attribute_t::name |
Name of the attribute.
Definition at line 472 of file openexr_attr.h.
uint8_t exr_attribute_t::name_length |
Length of name string (short flag is 31 max, long allows 255).
Definition at line 476 of file openexr_attr.h.
exr_attr_opaquedata_t* exr_attribute_t::opaque |
Definition at line 525 of file openexr_attr.h.
uint8_t exr_attribute_t::pad[2] |
Definition at line 480 of file openexr_attr.h.
exr_attr_preview_t* exr_attribute_t::preview |
Definition at line 513 of file openexr_attr.h.
exr_attr_rational_t* exr_attribute_t::rational |
Definition at line 514 of file openexr_attr.h.
uint8_t* exr_attribute_t::rawptr |
Definition at line 526 of file openexr_attr.h.
exr_attr_string_t* exr_attribute_t::string |
Definition at line 515 of file openexr_attr.h.
exr_attr_string_vector_t* exr_attribute_t::stringvector |
Definition at line 516 of file openexr_attr.h.
exr_attr_tiledesc_t* exr_attribute_t::tiledesc |
Definition at line 517 of file openexr_attr.h.
exr_attr_timecode_t* exr_attribute_t::timecode |
Definition at line 518 of file openexr_attr.h.
exr_attribute_type_t exr_attribute_t::type |
Enum of the attribute type.
Definition at line 483 of file openexr_attr.h.
const char* exr_attribute_t::type_name |
String type name of the attribute.
Definition at line 474 of file openexr_attr.h.
uint8_t exr_attribute_t::type_name_length |
Length of type string (short flag is 31 max, long allows 255).
Definition at line 478 of file openexr_attr.h.
uint8_t exr_attribute_t::uc |
Definition at line 498 of file openexr_attr.h.
exr_attr_v2d_t* exr_attribute_t::v2d |
Definition at line 521 of file openexr_attr.h.
exr_attr_v2f_t* exr_attribute_t::v2f |
Definition at line 520 of file openexr_attr.h.
exr_attr_v2i_t* exr_attribute_t::v2i |
Definition at line 519 of file openexr_attr.h.
exr_attr_v3d_t* exr_attribute_t::v3d |
Definition at line 524 of file openexr_attr.h.
exr_attr_v3f_t* exr_attribute_t::v3f |
Definition at line 523 of file openexr_attr.h.
exr_attr_v3i_t* exr_attribute_t::v3i |
Definition at line 522 of file openexr_attr.h.