forked from bartvdbraak/blender
OpenEXR cleanup: get rid of public IMB_exr_split_token
, use BLI str helpers instead of own cooking.
This commit is contained in:
parent
ff7a46cfad
commit
ecb6a6df52
@ -769,16 +769,19 @@ static const char *imb_exr_insert_view_name(const char *passname, const char *vi
|
|||||||
return passname;
|
return passname;
|
||||||
|
|
||||||
static char retstr[EXR_PASS_MAXNAME];
|
static char retstr[EXR_PASS_MAXNAME];
|
||||||
const char *end = passname + strlen(passname);
|
const char delims[] = {'.', '\0'};
|
||||||
const char *token;
|
char *sep;
|
||||||
|
char *token;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
int len = IMB_exr_split_token(passname, end, &token);
|
len = BLI_str_rpartition(passname, delims, &sep, &token);
|
||||||
|
|
||||||
if (len == 0)
|
if (sep) {
|
||||||
|
BLI_snprintf(retstr, sizeof(retstr), "%.*s.%s.%s", (int)len, passname, viewname, token);
|
||||||
|
}
|
||||||
|
else {
|
||||||
BLI_snprintf(retstr, sizeof(retstr), "%s.%s", passname, viewname);
|
BLI_snprintf(retstr, sizeof(retstr), "%s.%s", passname, viewname);
|
||||||
else
|
}
|
||||||
BLI_snprintf(retstr, sizeof(retstr), "%.*s%s.%s",
|
|
||||||
(int)(end - passname) - len, passname, viewname, token);
|
|
||||||
|
|
||||||
return retstr;
|
return retstr;
|
||||||
}
|
}
|
||||||
@ -1413,16 +1416,18 @@ void IMB_exr_close(void *handle)
|
|||||||
/* ********* */
|
/* ********* */
|
||||||
|
|
||||||
/* get a substring from the end of the name, separated by '.' */
|
/* get a substring from the end of the name, separated by '.' */
|
||||||
int IMB_exr_split_token(const char *str, const char *end, const char **token)
|
static int imb_exr_split_token(const char *str, const char *end, const char **token)
|
||||||
{
|
{
|
||||||
ptrdiff_t maxlen = end - str;
|
const char delims[] = {'.', '\0'};
|
||||||
int len = 0;
|
char *sep;
|
||||||
while (len < maxlen && *(end - len - 1) != '.') {
|
|
||||||
len++;
|
BLI_str_partition_ex(str, end, delims, &sep, (char **)token, true);
|
||||||
|
|
||||||
|
if (!sep) {
|
||||||
|
*token = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
*token = end - len;
|
return (int)(end - *token);
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *passname)
|
static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *passname)
|
||||||
@ -1449,7 +1454,7 @@ static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* last token is single character channel identifier */
|
/* last token is single character channel identifier */
|
||||||
len = IMB_exr_split_token(name, end, &token);
|
len = imb_exr_split_token(name, end, &token);
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
printf("multilayer read: bad channel name: %s\n", name);
|
printf("multilayer read: bad channel name: %s\n", name);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1487,7 +1492,7 @@ static int imb_exr_split_channel_name(ExrChannel *echan, char *layname, char *pa
|
|||||||
end -= len + 1; /* +1 to skip '.' separator */
|
end -= len + 1; /* +1 to skip '.' separator */
|
||||||
|
|
||||||
/* second token is pass name */
|
/* second token is pass name */
|
||||||
len = IMB_exr_split_token(name, end, &token);
|
len = imb_exr_split_token(name, end, &token);
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
printf("multilayer read: bad channel name: %s\n", name);
|
printf("multilayer read: bad channel name: %s\n", name);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -93,8 +93,6 @@ void IMB_exr_close(void *handle);
|
|||||||
|
|
||||||
void IMB_exr_add_view(void *handle, const char *name);
|
void IMB_exr_add_view(void *handle, const char *name);
|
||||||
|
|
||||||
int IMB_exr_split_token(const char *str, const char *end, const char **token);
|
|
||||||
|
|
||||||
bool IMB_exr_has_multilayer(void *handle);
|
bool IMB_exr_has_multilayer(void *handle);
|
||||||
bool IMB_exr_has_singlelayer_multiview(void *handle);
|
bool IMB_exr_has_singlelayer_multiview(void *handle);
|
||||||
|
|
||||||
|
@ -79,6 +79,5 @@ bool IMB_exr_multiview_save(
|
|||||||
void IMB_exr_close (void * /*handle*/) { }
|
void IMB_exr_close (void * /*handle*/) { }
|
||||||
|
|
||||||
void IMB_exr_add_view(void * /*handle*/, const char * /*name*/) { }
|
void IMB_exr_add_view(void * /*handle*/, const char * /*name*/) { }
|
||||||
int IMB_exr_split_token(const char * /*str*/, const char * /*end*/, const char ** /*token*/) { return 1; }
|
|
||||||
bool IMB_exr_has_multilayer(void * /*handle*/) { return false; }
|
bool IMB_exr_has_multilayer(void * /*handle*/) { return false; }
|
||||||
bool IMB_exr_has_singlelayer_multiview(void * /*handle*/) { return false; }
|
bool IMB_exr_has_singlelayer_multiview(void * /*handle*/) { return false; }
|
||||||
|
Loading…
Reference in New Issue
Block a user