Changeset View
Changeset View
Standalone View
Standalone View
source/blender/imbuf/IMB_metadata.h
| Show All 22 Lines | |||||
| #ifndef __IMB_METADATA_H__ | #ifndef __IMB_METADATA_H__ | ||||
| #define __IMB_METADATA_H__ | #define __IMB_METADATA_H__ | ||||
| struct IDProperty; | struct IDProperty; | ||||
| struct ImBuf; | struct ImBuf; | ||||
| struct anim; | struct anim; | ||||
| /** The metadata is a list of key/value pairs (both char *) that can me | /** | ||||
| * The metadata is a list of key/value pairs (both char *) that can me | |||||
| * saved in the header of several image formats. | * saved in the header of several image formats. | ||||
| * Apart from some common keys like | * Apart from some common keys like | ||||
| * 'Software' and 'Description' (png standard) we'll use keys within the | * 'Software' and 'Description' (png standard) we'll use keys within the | ||||
| * Blender namespace, so should be called 'Blender::StampInfo' or 'Blender::FrameNum' | * Blender namespace, so should be called 'Blender::StampInfo' or 'Blender::FrameNum' | ||||
| * etc... | * etc... | ||||
| * | * | ||||
| * The keys & values are stored in ID properties, in the group "metadata". | * The keys & values are stored in ID properties, in the group "metadata". | ||||
| */ | */ | ||||
| /** Ensure that the metadata property is a valid IDProperty object. | /** | ||||
| * Ensure that the metadata property is a valid #IDProperty object. | |||||
| * This is a no-op when *metadata != NULL. | * This is a no-op when *metadata != NULL. | ||||
| */ | */ | ||||
| void IMB_metadata_ensure(struct IDProperty **metadata); | void IMB_metadata_ensure(struct IDProperty **metadata); | ||||
| void IMB_metadata_free(struct IDProperty *metadata); | void IMB_metadata_free(struct IDProperty *metadata); | ||||
| /** Read the field from the image info into the field. | /** | ||||
| * \param metadata: the IDProperty that contains the metadata | * Read the field from the image info into the field. | ||||
| * \param metadata: the #IDProperty that contains the metadata | |||||
| * \param key: the key of the field | * \param key: the key of the field | ||||
| * \param value: the data in the field, first one found with key is returned, | * \param value: the data in the field, first one found with key is returned, | ||||
| * memory has to be allocated by user. | * memory has to be allocated by user. | ||||
| * \param len: length of value buffer allocated by user. | * \param len: length of value buffer allocated by user. | ||||
| * \return - 1 (true) if metadata is present and value for the key found, 0 (false) otherwise | * \return 1 (true) if metadata is present and value for the key found, 0 (false) otherwise. | ||||
| */ | */ | ||||
| bool IMB_metadata_get_field(struct IDProperty *metadata, | bool IMB_metadata_get_field(struct IDProperty *metadata, | ||||
| const char *key, | const char *key, | ||||
| char *value, | char *value, | ||||
| const size_t len); | const size_t len); | ||||
| /** Set user data in the metadata. | /** | ||||
| * Set user data in the metadata. | |||||
| * If the field already exists its value is overwritten, otherwise the field | * If the field already exists its value is overwritten, otherwise the field | ||||
| * will be added with the given value. | * will be added with the given value. | ||||
| * \param metadata: the IDProperty that contains the metadata | * \param metadata: the #IDProperty that contains the metadata | ||||
| * \param key: the key of the field | * \param key: the key of the field | ||||
| * \param value: the data to be written to the field. zero terminated string | * \param value: the data to be written to the field. zero terminated string | ||||
| */ | */ | ||||
| void IMB_metadata_set_field(struct IDProperty *metadata, const char *key, const char *value); | void IMB_metadata_set_field(struct IDProperty *metadata, const char *key, const char *value); | ||||
| void IMB_metadata_copy(struct ImBuf *dimb, struct ImBuf *simb); | void IMB_metadata_copy(struct ImBuf *dimb, struct ImBuf *simb); | ||||
| struct IDProperty *IMB_anim_load_metadata(struct anim *anim); | struct IDProperty *IMB_anim_load_metadata(struct anim *anim); | ||||
| /* Invoke callback for every value stored in the metadata. */ | /* Invoke callback for every value stored in the metadata. */ | ||||
| typedef void (*IMBMetadataForeachCb)(const char *field, const char *value, void *userdata); | typedef void (*IMBMetadataForeachCb)(const char *field, const char *value, void *userdata); | ||||
| void IMB_metadata_foreach(struct ImBuf *ibuf, IMBMetadataForeachCb callback, void *userdata); | void IMB_metadata_foreach(struct ImBuf *ibuf, IMBMetadataForeachCb callback, void *userdata); | ||||
| #endif /* __IMB_METADATA_H__ */ | #endif /* __IMB_METADATA_H__ */ | ||||