46 int range_first_frame = 0;
59 filename, head,
sizeof(head), tail,
sizeof(tail), &digits);
62 if (do_frame_range && (range !=
nullptr) &&
STREQLEN(base_head, head,
FILE_MAX) &&
66 if (frame->
framenr < range_first_frame) {
67 BLI_path_join(range->filepath,
sizeof(range->filepath), dir, filename);
68 range_first_frame = frame->
framenr;
74 BLI_path_join(range->filepath,
sizeof(range->filepath), dir, filename);
80 range_first_frame = frame->
framenr;
111 int udim_start, udim_range;
113 range->filepath, &range->udim_tiles, &udim_start, &udim_range);
115 if (range->udims_detected) {
116 range->offset = udim_start;
117 range->length = udim_range;
126 if (frame !=
nullptr) {
127 int frame_curr = frame->
framenr;
128 range->offset = frame_curr;
130 while (frame !=
nullptr && (frame->
framenr == frame_curr)) {
135 range->length = frame_curr - range->offset;
145 const bool detect_udim)
174 STRNCPY(range->filepath, filepath);
bool BKE_image_get_tile_info(char *filepath, ListBase *tiles, int *r_tile_start, int *r_tile_range)
Some types for dealing with directories.
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define BLI_path_join(...)
bool BLI_path_is_rel(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
int BLI_path_sequence_decode(const char *path, char *head, size_t head_maxncpy, char *tail, size_t tail_maxncpy, unsigned short *r_digits_len)
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
#define STRNCPY(dst, src)
#define STREQLEN(a, b, n)
Read Guarded memory(de)allocation.
#define RNA_BEGIN(sptr, itemptr, propname)
constexpr const char * c_str() const
local_group_size(16, 16) .push_constant(Type b
static void image_detect_frame_range(ImageFrameRange *range, const bool detect_udim)
static void image_sequence_get_frame_ranges(wmOperator *op, ListBase *ranges)
ListBase ED_image_filesel_detect_sequences(blender::StringRefNull root_path, wmOperator *op, const bool detect_udim)
static int image_cmp_frame(const void *a, const void *b)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)