|
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_bytes_t * bytes | |
| 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 453 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 488 of file openexr_attr.h.
| exr_attr_box2i_t* exr_attribute_t::box2i |
Definition at line 487 of file openexr_attr.h.
| exr_attr_bytes_t* exr_attribute_t::bytes |
Definition at line 489 of file openexr_attr.h.
| exr_attr_chlist_t* exr_attribute_t::chlist |
Definition at line 490 of file openexr_attr.h.
| exr_attr_chromaticities_t* exr_attribute_t::chromaticities |
Definition at line 491 of file openexr_attr.h.
| double exr_attribute_t::d |
Definition at line 483 of file openexr_attr.h.
| float exr_attribute_t::f |
Definition at line 484 of file openexr_attr.h.
| exr_attr_float_vector_t* exr_attribute_t::floatvector |
Definition at line 493 of file openexr_attr.h.
| int32_t exr_attribute_t::i |
Definition at line 485 of file openexr_attr.h.
| exr_attr_keycode_t* exr_attribute_t::keycode |
Definition at line 492 of file openexr_attr.h.
| exr_attr_m33d_t* exr_attribute_t::m33d |
Definition at line 495 of file openexr_attr.h.
| exr_attr_m33f_t* exr_attribute_t::m33f |
Definition at line 494 of file openexr_attr.h.
| exr_attr_m44d_t* exr_attribute_t::m44d |
Definition at line 497 of file openexr_attr.h.
| exr_attr_m44f_t* exr_attribute_t::m44f |
Definition at line 496 of file openexr_attr.h.
| const char* exr_attribute_t::name |
Name of the attribute.
Definition at line 456 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 460 of file openexr_attr.h.
| exr_attr_opaquedata_t* exr_attribute_t::opaque |
Definition at line 510 of file openexr_attr.h.
| uint8_t exr_attribute_t::pad[2] |
Definition at line 464 of file openexr_attr.h.
| exr_attr_preview_t* exr_attribute_t::preview |
Definition at line 498 of file openexr_attr.h.
| exr_attr_rational_t* exr_attribute_t::rational |
Definition at line 499 of file openexr_attr.h.
| uint8_t* exr_attribute_t::rawptr |
Definition at line 511 of file openexr_attr.h.
| exr_attr_string_t* exr_attribute_t::string |
Definition at line 500 of file openexr_attr.h.
| exr_attr_string_vector_t* exr_attribute_t::stringvector |
Definition at line 501 of file openexr_attr.h.
| exr_attr_tiledesc_t* exr_attribute_t::tiledesc |
Definition at line 502 of file openexr_attr.h.
| exr_attr_timecode_t* exr_attribute_t::timecode |
Definition at line 503 of file openexr_attr.h.
| exr_attribute_type_t exr_attribute_t::type |
Enum of the attribute type.
Definition at line 467 of file openexr_attr.h.
| const char* exr_attribute_t::type_name |
String type name of the attribute.
Definition at line 458 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 462 of file openexr_attr.h.
| uint8_t exr_attribute_t::uc |
Definition at line 482 of file openexr_attr.h.
| exr_attr_v2d_t* exr_attribute_t::v2d |
Definition at line 506 of file openexr_attr.h.
| exr_attr_v2f_t* exr_attribute_t::v2f |
Definition at line 505 of file openexr_attr.h.
| exr_attr_v2i_t* exr_attribute_t::v2i |
Definition at line 504 of file openexr_attr.h.
| exr_attr_v3d_t* exr_attribute_t::v3d |
Definition at line 509 of file openexr_attr.h.
| exr_attr_v3f_t* exr_attribute_t::v3f |
Definition at line 508 of file openexr_attr.h.
| exr_attr_v3i_t* exr_attribute_t::v3i |
Definition at line 507 of file openexr_attr.h.