From 3c9268353c943b32ca517945c42dfb8c0b8484f8 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 26 Nov 2017 17:33:39 -0800 Subject: Sort directory listing in Nuklear UI file browser --HG-- branch : nuklear_ui --- util.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'util.c') diff --git a/util.c b/util.c index 8601fca..09128c8 100644 --- a/util.c +++ b/util.c @@ -680,6 +680,22 @@ void free_dir_list(dir_entry *list, size_t numentries) free(list); } +static int sort_dir_alpha(const void *a, const void *b) +{ + const dir_entry *da, *db; + da = a; + db = b; + if (da->is_dir != db->is_dir) { + return db->is_dir - da->is_dir; + } + return strcasecmp(((dir_entry *)a)->name, ((dir_entry *)b)->name); +} + +void sort_dir_list(dir_entry *list, size_t num_entries) +{ + qsort(list, num_entries, sizeof(dir_entry), sort_dir_alpha); +} + #ifdef __ANDROID__ #include -- cgit v1.2.3 From c9b253c58788376865cc8768ba342a67b4758bcf Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 26 Nov 2017 18:33:36 -0800 Subject: Filter file list in Nuklear UI --HG-- branch : nuklear_ui --- util.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'util.c') diff --git a/util.c b/util.c index 09128c8..96840e5 100644 --- a/util.c +++ b/util.c @@ -270,6 +270,22 @@ char *path_extension(char *path) return strdup(lastdot+1); } +uint8_t path_matches_extensions(char *path, char **ext_list, uint32_t num_exts) +{ + char *ext = path_extension(path); + if (!ext) { + return 0; + } + uint32_t extidx; + for (extidx = 0; extidx < num_exts; extidx++) + { + if (!strcasecmp(ext, ext_list[extidx])) { + return 1; + } + } + return 0; +} + char * path_dirname(char *path) { char *lastslash = NULL; -- cgit v1.2.3 From 60e74d48cd8c59f412128d98908f2b04b2b07586 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 6 Feb 2018 22:44:11 -0800 Subject: Fix const correctness for path_extension --HG-- branch : nuklear_ui --- util.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index 96840e5..5d2925e 100644 --- a/util.c +++ b/util.c @@ -250,11 +250,11 @@ char * basename_no_extension(char *path) return barename; } -char *path_extension(char *path) +char *path_extension(char const *path) { - char *lastdot = NULL; - char *lastslash = NULL; - char *cur; + char const *lastdot = NULL; + char const *lastslash = NULL; + char const *cur; for (cur = path; *cur; cur++) { if (*cur == '.') { -- cgit v1.2.3 From d738c30dec8a7c9f351094851c00a4623f339084 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 6 Mar 2018 21:27:12 -0800 Subject: Added support for TTC and dfont format true type fonts. More robust font selection on Windows --HG-- branch : nuklear_ui --- util.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'util.c') diff --git a/util.c b/util.c index 5d2925e..ffd970a 100644 --- a/util.c +++ b/util.c @@ -204,6 +204,50 @@ void bin_to_hex(uint8_t *output, uint8_t *input, uint64_t size) *(output++) = 0; } +char *utf16be_to_utf8(uint8_t *buf, uint32_t max_size) +{ + uint8_t *cur = buf; + uint32_t converted_size = 0; + for (uint32_t i = 0; i < max_size; i++, cur+=2) + { + uint16_t code = *cur << 16 | cur[1]; + if (!code) { + break; + } + if (code < 0x80) { + converted_size++; + } else if (code < 0x800) { + converted_size += 2; + } else { + //TODO: Deal with surrogate pairs + converted_size += 3; + } + } + char *out = malloc(converted_size + 1); + char *cur_out = out; + cur = buf; + for (uint32_t i = 0; i < max_size; i++, cur+=2) + { + uint16_t code = *cur << 16 | cur[1]; + if (!code) { + break; + } + if (code < 0x80) { + *(cur_out++) = code; + } else if (code < 0x800) { + *(cur_out++) = 0xC0 | code >> 6; + *(cur_out++) = 0x80 | (code & 0x3F); + } else { + //TODO: Deal with surrogate pairs + *(cur_out++) = 0xF0 | code >> 12; + *(cur_out++) = 0x80 | (code >> 6 & 0x3F); + *(cur_out++) = 0x80 | (code & 0x3F); + } + } + *cur_out = 0; + return out; +} + char is_path_sep(char c) { #ifdef _WIN32 -- cgit v1.2.3 From b6feecb6c12566e9ea826cb67701008f9e423eea Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 25 Mar 2018 12:00:29 -0700 Subject: Make sure config directory exists before trying to save config file --HG-- branch : nuklear_ui --- util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index ffd970a..975932a 100644 --- a/util.c +++ b/util.c @@ -549,7 +549,7 @@ time_t get_modification_time(char *path) return (time_t)wintime; } -int ensure_dir_exists(char *path) +int ensure_dir_exists(const char *path) { if (CreateDirectory(path, NULL)) { return 1; @@ -703,7 +703,7 @@ time_t get_modification_time(char *path) #endif } -int ensure_dir_exists(char *path) +int ensure_dir_exists(const char *path) { struct stat st; if (stat(path, &st)) { -- cgit v1.2.3