From 709879ee56d31fe543a0ad882713bd4e3d17d2d2 Mon Sep 17 00:00:00 2001 From: dam Date: Thu, 17 Aug 2023 20:28:47 +0100 Subject: Added kscurses and testing program. --- kscurses/utils.jai | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 kscurses/utils.jai (limited to 'kscurses/utils.jai') diff --git a/kscurses/utils.jai b/kscurses/utils.jai new file mode 100644 index 0000000..2b88e85 --- /dev/null +++ b/kscurses/utils.jai @@ -0,0 +1,53 @@ +// array_slice :: (array : []$T, left : int, right : int) -> []T { +// assert(left <= right && left >= 0 && right <= array.count); +// result : []T; +// result.data, result.count = array.data + left, right - left; +// return result; +// } + +length_code :: inline (c : u64) -> u8 { + for 0..7 { + if !c return xx it; + c >>= 8; + } + return 8; +} +utf8 :: (str : string) -> u32 { + code : u32; + assert(str.count <= 4); + memcpy(*code, str.data, str.count); + return code; +} +byteswap_64 :: (c : u64) -> u64 { + c = ((0xFFFFFFFF00000000 & c) >> 32) | ((0x00000000FFFFFFFF & c) << 32); + c = ((0xFFFF0000FFFF0000 & c) >> 16) | ((0x0000FFFF0000FFFF & c) << 16); + c = ((0xFF00FF00FF00FF00 & c) >> 8) | ((0x00FF00FF00FF00FF & c) << 8); + return c; +} +byteswap_32 :: (c : u32) -> u32 { + c = ((0xFFFF0000 & c) >> 16) | ((0x0000FFFF & c) << 16); + c = ((0xFF00FF00 & c) >> 8) | ((0x00FF00FF & c) << 8); + return c; +} +char_bs :: (code : u32) -> u32 { + l := length_code(code); + return byteswap_32(code) >> ((8 - l) * 8); +} +utf8_bs :: (str : string) -> u32 { + return char_bs(utf8(str)); +} +arrow_code_to_ivec2 :: (key : Key, $swap_y := true) -> ivec2 { + #if swap_y { + return ifx key == .UP ivec2.{ 0, -1} + else ifx key == .RIGHT ivec2.{ 1, 0} + else ifx key == .DOWN ivec2.{ 0, 1} + else ifx key == .LEFT ivec2.{-1, 0} + else ivec2.{}; + } else { + return ifx key == .UP ivec2.{ 0, 1} + else ifx key == .RIGHT ivec2.{ 1, 0} + else ifx key == .DOWN ivec2.{ 0, -1} + else ifx key == .LEFT ivec2.{-1, 0} + else ivec2.{}; + } +} -- cgit v1.2.3