From 0988ab832bfc7a1b1c851125b6172cf68c6d9cb9 Mon Sep 17 00:00:00 2001 From: Xander Swan <[hidden email]> Date: Wed, 7 Jan 2026 23:12:22 -0500 Subject: doesn't compile but i'm commiting anywya --- .../aseprite/utils/utils_internal.odin | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 tools/compile_assets/aseprite/utils/utils_internal.odin (limited to 'tools/compile_assets/aseprite/utils/utils_internal.odin') diff --git a/tools/compile_assets/aseprite/utils/utils_internal.odin b/tools/compile_assets/aseprite/utils/utils_internal.odin new file mode 100644 index 0000000..6915fe5 --- /dev/null +++ b/tools/compile_assets/aseprite/utils/utils_internal.odin @@ -0,0 +1,110 @@ +package aseprite_file_handler_utility + +import ir "base:intrinsics" +import "base:runtime" +import "core:reflect" +import "core:strconv" +import "core:slice" + +@(require) import "core:fmt" +@(require) import "core:log" + +_ :: reflect + + +@(private) +fast_log_str :: proc(lvl: log.Level, str: string, loc := #caller_location) { + logger := context.logger + if logger.procedure == nil { return } + if lvl < logger.lowest_level { return } + logger.procedure(logger.data, lvl, str, logger.options, loc) +} + +@(private) +fast_log_str_enum :: proc(lvl: log.Level, str: string, val: $T, sep := " ", loc := #caller_location) where ir.type_is_enum(T) { + logger := context.logger + if logger.procedure == nil { return } + if lvl < logger.lowest_level { return } + + s := reflect.enum_string(val) + buf := make([]u8, len(str) + len(sep) + len(s)) + defer delete(buf) + + n := copy(buf[:], str) + n += copy(buf[n:], sep) + copy(buf[n:], s) + + logger.procedure(logger.data, lvl, string(buf), logger.options, loc) +} + +@(private) +fast_log_str_num :: proc(lvl: log.Level, str: string, val: $T, sep := " ", loc := #caller_location) where ir.type_is_integer(T) { + logger := context.logger + if logger.procedure == nil { return } + if lvl < logger.lowest_level { return } + + nb: [32]u8 + s := strconv.append_int(nb[:], i64(val), 10) + buf := make([]u8, len(str) + len(sep) + len(s)) + defer delete(buf) + + n := copy(buf[:], str) + n += copy(buf[n:], sep) + copy(buf[n:], s) + + logger.procedure(logger.data, lvl, string(buf), logger.options, loc) +} + +@(private) +fast_log :: proc {fast_log_str, fast_log_str_enum, fast_log_str_num} + + +// Internal Debugging Tool. +format_pixels :: proc(img: Image, x := 4, y := 4, alloc := context.allocator) -> (str: string, err: runtime.Allocator_Error) #optional_allocator_error { + ch := int(img.bpp) >> 3 + + size := len(img.data) * 3 /*pixel in bytes*/ \ + + (len(img.data)/ch - 1) /*comas*/ \ + + (len(img.data)*2/ch) /*|*/ \ + + (img.width*img.height*4) /*tile gap*/ + + sb := make([dynamic]byte, 0, size) or_return + buf: [3]byte + + for n in 0..