diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-03-18 19:06:51 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-03-21 18:38:13 +0300 |
commit | 1897df891cc6fa64a240a531853cddd1b52a78a5 (patch) | |
tree | fdef61ce07d0523db1114f2092b9a052e4e54015 /source/blender/imbuf/intern/openexr | |
parent | 6e4d2fa9140864a13356b07ffca082817822987f (diff) |
Cleanup: move OpenEXR channel name construction to OpenEXR code
Diffstat (limited to 'source/blender/imbuf/intern/openexr')
-rw-r--r-- | source/blender/imbuf/intern/openexr/openexr_api.cpp | 30 | ||||
-rw-r--r-- | source/blender/imbuf/intern/openexr/openexr_multi.h | 7 |
2 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 418a4724c00..09d567c7827 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -78,6 +78,7 @@ _CRTIMP void __cdecl _invalid_parameter_noinfo(void) } #include "BLI_blenlib.h" #include "BLI_math_color.h" +#include "BLI_string_utils.h" #include "BLI_threads.h" #include "BKE_idprop.h" @@ -1491,6 +1492,35 @@ static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *pa return 1; } +void IMB_exr_channel_name(char *fullname, + const char *layname, + const char *passname, + const char *viewname, + const char *chan_id, + const int channel) +{ + const char *strings[4]; + int strings_len = 0; + + if (layname && layname[0]) { + strings[strings_len++] = layname; + } + if (passname && passname[0]) { + strings[strings_len++] = passname; + } + if (viewname && viewname[0]) { + strings[strings_len++] = viewname; + } + + char token[2]; + if (channel >= 0) { + ARRAY_SET_ITEMS(token, chan_id[channel], '\0'); + strings[strings_len++] = token; + } + + BLI_string_join_array_by_sep_char(fullname, EXR_PASS_MAXNAME, '.', strings, strings_len); +} + static ExrLayer *imb_exr_get_layer(ListBase *lb, char *layname) { ExrLayer *lay = (ExrLayer *)BLI_findstring(lb, layname, offsetof(ExrLayer, name)); diff --git a/source/blender/imbuf/intern/openexr/openexr_multi.h b/source/blender/imbuf/intern/openexr/openexr_multi.h index f5a2f983b18..32a06a50c12 100644 --- a/source/blender/imbuf/intern/openexr/openexr_multi.h +++ b/source/blender/imbuf/intern/openexr/openexr_multi.h @@ -105,6 +105,13 @@ void IMB_exr_add_view(void *handle, const char *name); bool IMB_exr_has_multilayer(void *handle); +void IMB_exr_channel_name(char *fullname, + const char *layname, + const char *passname, + const char *viewname, + const char *chan_id, + const int channel); + #ifdef __cplusplus } /* extern "C" */ #endif |