From 063a474d1875ecddc020d87179ebc4dc9cc938d9 Mon Sep 17 00:00:00 2001 From: camh Date: Mon, 20 Sep 2021 23:56:59 -0700 Subject: [PATCH] update nuklear version, start on bug fixes --- JS/index.js | 4 +- Sample.c | 90 +- build/%NuklearQuickDraw.ad | Bin 350822 -> 407618 bytes build/.rsrc/NuklearQuickDraw.APPL | Bin 350740 -> 407536 bytes build/CMakeFiles/CMakeOutput.log | 144 +- .../NuklearQuickDraw.dir/Sample.c.obj | Bin 267408 -> 359228 bytes build/NuklearQuickDraw.bin | Bin 350976 -> 407680 bytes build/NuklearQuickDraw.code.bin | Bin 333952 -> 390784 bytes build/NuklearQuickDraw.code.bin.gdb | Bin 449884 -> 541708 bytes build/NuklearQuickDraw.dsk | Bin 819200 -> 819200 bytes nuklear.h | 6606 ++++++++--------- nuklear_quickdraw.h | 78 +- output_js | 4 +- output_js.h | 4 +- 14 files changed, 3205 insertions(+), 3725 deletions(-) diff --git a/JS/index.js b/JS/index.js index 2af2b10..36f7586 100644 --- a/JS/index.js +++ b/JS/index.js @@ -16,10 +16,10 @@ const defaultOptions = { } const client = new ApolloClient({ - uri: 'http://10.0.1.166:4000/', + uri: 'http://10.0.1.167:4000/', cache: new InMemoryCache(), link: new createHttpLink({ - uri: 'http://10.0.1.166:4000/' + uri: 'http://10.0.1.167:4000/' }), defaultOptions }); diff --git a/Sample.c b/Sample.c index 0df80bc..8124769 100644 --- a/Sample.c +++ b/Sample.c @@ -139,18 +139,18 @@ void getMessagesFromjsFunctionResponse() { activeMessageCounter = 0; - writeSerialPortDebug(boutRefNum, "BEGIN"); + // writeSerialPortDebug(boutRefNum, "BEGIN"); - writeSerialPortDebug(boutRefNum, jsFunctionResponse); + // writeSerialPortDebug(boutRefNum, jsFunctionResponse); char *token = strtokm(jsFunctionResponse, "ENDLASTMESSAGE"); // loop through the string to extract all other tokens while (token != NULL) { - writeSerialPortDebug(boutRefNum, "LOAD VALUE TO TOKEN"); - writeSerialPortDebug(boutRefNum, token); + // writeSerialPortDebug(boutRefNum, "LOAD VALUE TO TOKEN"); + // writeSerialPortDebug(boutRefNum, token); sprintf(activeChatMessages[activeMessageCounter], "%s", token); - writeSerialPortDebug(boutRefNum, activeChatMessages[activeMessageCounter]); - writeSerialPortDebug(boutRefNum, "DONE! LOAD VALUE TO TOKEN"); + // writeSerialPortDebug(boutRefNum, activeChatMessages[activeMessageCounter]); + // writeSerialPortDebug(boutRefNum, "DONE! LOAD VALUE TO TOKEN"); token = strtokm(NULL, "ENDLASTMESSAGE"); activeMessageCounter++; } @@ -175,10 +175,10 @@ void getMessages(char *thread, int page) { char output[62]; sprintf(output, "%s&&&%d", thread, page); - writeSerialPortDebug(boutRefNum, output); + // writeSerialPortDebug(boutRefNum, output); callFunctionOnCoprocessor("getMessages", output, jsFunctionResponse); - writeSerialPortDebug(boutRefNum, jsFunctionResponse); + // writeSerialPortDebug(boutRefNum, jsFunctionResponse); getMessagesFromjsFunctionResponse(); return; @@ -210,21 +210,25 @@ static void boxTest(struct nk_context *ctx) { if (nk_begin(ctx, "Chats", nk_rect(0, 0, 200, WINDOW_HEIGHT), NK_WINDOW_BORDER)) { - nk_layout_row_dynamic(ctx, 25, 1); - getChats(); - for (int i = 0; i < chatFriendlyNamesCounter; i++) { + nk_layout_row_begin(ctx, NK_STATIC, 25, 1); + { + for (int i = 0; i < chatFriendlyNamesCounter; i++) { - if (nk_button_label(ctx, chatFriendlyNames[i])) { + nk_layout_row_push(ctx, 175); // 40% wide - writeSerialPortDebug(boutRefNum, "CLICK!"); - writeSerialPortDebug(boutRefNum, chatFriendlyNames[i]); - sprintf(activeChat, "%s", chatFriendlyNames[i]); - getMessages(activeChat, 0); - writeSerialPortDebug(boutRefNum, "CLICK complete, enjoy your chat!"); + if (nk_button_label(ctx, chatFriendlyNames[i])) { + + // writeSerialPortDebug(boutRefNum, "CLICK!"); + // writeSerialPortDebug(boutRefNum, chatFriendlyNames[i]); + sprintf(activeChat, "%s", chatFriendlyNames[i]); + getMessages(activeChat, 0); + // writeSerialPortDebug(boutRefNum, "CLICK complete, enjoy your chat!"); + } } - } + } + nk_layout_row_end(ctx); nk_end(ctx); } @@ -254,10 +258,10 @@ static void boxTest(struct nk_context *ctx) { { for (int i = 0; i < activeMessageCounter; i++) { - nk_layout_row_push(ctx, 290); // 40% wide + nk_layout_row_push(ctx, 285); // 40% wide // message label - writeSerialPortDebug(boutRefNum, "create label!"); - writeSerialPortDebug(boutRefNum, activeChatMessages[i]); + // writeSerialPortDebug(boutRefNum, "create label!"); + // writeSerialPortDebug(boutRefNum, activeChatMessages[i]); nk_label_wrap(ctx, activeChatMessages[i]); } @@ -289,14 +293,14 @@ void main() #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "call nk_init"); + // writeSerialPortDebug(boutRefNum, "call nk_init"); #endif ctx = nk_quickdraw_init(WINDOW_WIDTH, WINDOW_HEIGHT); #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "call into event loop"); + // writeSerialPortDebug(boutRefNum, "call into event loop"); #endif EventLoop(ctx); /* call the main event loop */ @@ -322,12 +326,12 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_begin"); + // writeSerialPortDebug(boutRefNum, "nk_input_begin"); #endif #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_begin complete"); + // writeSerialPortDebug(boutRefNum, "nk_input_begin complete"); #endif @@ -343,7 +347,7 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_motion!"); + // writeSerialPortDebug(boutRefNum, "nk_input_motion!"); #endif firstOrMouseMove = true; @@ -382,7 +386,7 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "calling to DoEvent"); + // writeSerialPortDebug(boutRefNum, "calling to DoEvent"); #endif if (!beganInput) { @@ -396,7 +400,7 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "done with DoEvent"); + // writeSerialPortDebug(boutRefNum, "done with DoEvent"); #endif } @@ -407,7 +411,7 @@ void EventLoop(struct nk_context *ctx) start = TickCount(); #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_end"); + // writeSerialPortDebug(boutRefNum, "nk_input_end"); #endif if (beganInput) { @@ -417,7 +421,7 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_end complete"); + // writeSerialPortDebug(boutRefNum, "nk_input_end complete"); #endif // only re-render if there is an event, prevents screen flickering @@ -427,7 +431,7 @@ void EventLoop(struct nk_context *ctx) #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_quickdraw_render"); + // writeSerialPortDebug(boutRefNum, "nk_quickdraw_render"); #endif @@ -459,13 +463,13 @@ void EventLoop(struct nk_context *ctx) // char logx[255]; // sprintf(logx, "EventLoop() eventTime0 (handle event) %ld, eventTime1 (nuklear UI) %ld, eventTime2 (render function) %ld, eventTime3 (clear) %ld ticks to execute\n", eventTime0, eventTime1, eventTime2, eventTime3); - // writeSerialPortDebug(boutRefNum, logx); + // // writeSerialPortDebug(boutRefNum, logx); } #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "nk_input_render complete"); + // writeSerialPortDebug(boutRefNum, "nk_input_render complete"); #endif } while ( true ); /* loop forever; we quit via ExitToShell */ } /*EventLoop*/ @@ -489,7 +493,7 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { case mouseUp: #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "mouseup"); + // writeSerialPortDebug(boutRefNum, "mouseup"); #endif part = FindWindow(event->where, &window); @@ -506,7 +510,7 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "mousedown"); + // writeSerialPortDebug(boutRefNum, "mousedown"); #endif part = FindWindow(event->where, &window); @@ -547,7 +551,7 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "key"); + // writeSerialPortDebug(boutRefNum, "key"); #endif key = event->message & charCodeMask; @@ -563,14 +567,14 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { case activateEvt: #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "activate"); + // writeSerialPortDebug(boutRefNum, "activate"); #endif DoActivate((WindowPtr) event->message, (event->modifiers & activeFlag) != 0); break; case updateEvt: #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "update"); + // writeSerialPortDebug(boutRefNum, "update"); #endif DoUpdate((WindowPtr) event->message); break; @@ -579,7 +583,7 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { case diskEvt: #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "disk"); + // writeSerialPortDebug(boutRefNum, "disk"); #endif if ( HiWord(event->message) != noErr ) { SetPt(&aPoint, kDILeft, kDITop); @@ -590,7 +594,7 @@ void DoEvent(EventRecord *event, struct nk_context *ctx) { case osEvt: #ifdef MAC_APP_DEBUGGING - writeSerialPortDebug(boutRefNum, "os"); + // writeSerialPortDebug(boutRefNum, "os"); #endif // this should be trigger on mousemove but does not -- if we can figure that out, we should call through to @@ -791,7 +795,7 @@ void DoMenuCommand(menuResult) // write data to serial port // Configure PCE/macplus to map serial port to ser_b.out. This port can then be used for debug output // by using: tail -f ser_b.out - // OSErr res = writeSerialPortDebug(boutRefNum, "Hello World"); + // // OSErr res = writeSerialPortDebug(boutRefNum, "Hello World"); // if (res < 0) // AlertUser(); @@ -804,7 +808,7 @@ void DoMenuCommand(menuResult) char str2[255]; sprintf(str2, "ROM85: %d - SysVersion: %d - VRes: %d - HRes: %d - Time: %lu", *ROM85, *SysVersion, *ScrVRes, *ScrHRes, *Time); - // writeSerialPortDebug(boutRefNum, str2); + // // writeSerialPortDebug(boutRefNum, str2); Boolean is128KROM = ((*ROM85) > 0); Boolean hasSysEnvirons = false; @@ -824,7 +828,7 @@ void DoMenuCommand(menuResult) sprintf(str2, "is128KROM: %d - hasSysEnvirons: %d - hasStripAddr: %d - hasSetDefaultStartup - %d", is128KROM, hasSysEnvirons, hasStripAddr, hasSetDefaultStartup); - // writeSerialPortDebug(boutRefNum, str2); + // // writeSerialPortDebug(boutRefNum, str2); break; } diff --git a/build/%NuklearQuickDraw.ad b/build/%NuklearQuickDraw.ad index fb1693a2b54433db4ae908ff0e2ba948f7e4cb5a..19563bb4194843c1a4e63a64d0382a31117e4570 100644 GIT binary patch delta 151670 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

|c=jFC&U~ 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 H)~){+WO>y_ delta 98434 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 diff --git a/build/.rsrc/NuklearQuickDraw.APPL b/build/.rsrc/NuklearQuickDraw.APPL index 013085f7a037154d3903d69999430b58a157c478..d81d95bb64be72dc68d5af31e1eab74c64d01067 100644 GIT binary patch delta 151924 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%0Aqwn2E_DBN}|l)T@! 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 diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log index 6ae9d48..b093a67 100644 --- a/build/CMakeFiles/CMakeOutput.log +++ b/build/CMakeFiles/CMakeOutput.log @@ -33,13 +33,13 @@ The CXX compiler identification is GNU, found in "/home/camh/Documents/Retro68kA Determining if the C compiler works passed with the following output: Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/make cmTC_f9066/fast && /usr/bin/make -f CMakeFiles/cmTC_f9066.dir/build.make CMakeFiles/cmTC_f9066.dir/build +Run Build Command(s):/usr/bin/make cmTC_c3aac/fast && /usr/bin/make -f CMakeFiles/cmTC_c3aac.dir/build.make CMakeFiles/cmTC_c3aac.dir/build make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' -Building C object CMakeFiles/cmTC_f9066.dir/testCCompiler.c.obj -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -o CMakeFiles/cmTC_f9066.dir/testCCompiler.c.obj -c /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp/testCCompiler.c -Linking C executable cmTC_f9066 -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f9066.dir/link.txt --verbose=1 -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc CMakeFiles/cmTC_f9066.dir/testCCompiler.c.obj -o cmTC_f9066 +Building C object CMakeFiles/cmTC_c3aac.dir/testCCompiler.c.obj +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -o CMakeFiles/cmTC_c3aac.dir/testCCompiler.c.obj -c /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp/testCCompiler.c +Linking C executable cmTC_c3aac +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c3aac.dir/link.txt --verbose=1 +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc CMakeFiles/cmTC_c3aac.dir/testCCompiler.c.obj -o cmTC_c3aac make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' @@ -47,18 +47,18 @@ make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/b Detecting C compiler ABI info compiled with the following output: Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/make cmTC_107ff/fast && /usr/bin/make -f CMakeFiles/cmTC_107ff.dir/build.make CMakeFiles/cmTC_107ff.dir/build +Run Build Command(s):/usr/bin/make cmTC_98fa6/fast && /usr/bin/make -f CMakeFiles/cmTC_98fa6.dir/build.make CMakeFiles/cmTC_98fa6.dir/build make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' -Building C object CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v -o CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c +Building C object CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v -o CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c Using built-in specs. COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc Target: m68k-apple-macos Configured with: /home/camh/Retro68/gcc/configure --target=m68k-apple-macos --prefix=/home/camh/Retro68-build/toolchain/ --enable-languages=c,c++ --with-arch=m68k --with-cpu=m68000 --disable-libssp MAKEINFO=missing Thread model: single gcc version 9.1.0 (GCC) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1 -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -version -o /tmp/ccgl7NCi.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1 -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -version -o /tmp/ccSgyjPG.s GNU C17 (GCC) version 9.1.0 (m68k-apple-macos) compiled by GNU C version 9.3.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 @@ -73,14 +73,14 @@ GNU C17 (GCC) version 9.1.0 (m68k-apple-macos) compiled by GNU C version 9.3.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 68baab70957df643ffb4605a09112146 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj /tmp/ccgl7NCi.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj /tmp/ccSgyjPG.s COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/ LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' -Linking C executable cmTC_107ff -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_107ff.dir/link.txt --verbose=1 -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -o cmTC_107ff +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000' +Linking C executable cmTC_98fa6 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_98fa6.dir/link.txt --verbose=1 +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -o cmTC_98fa6 Using built-in specs. COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc COLLECT_LTO_WRAPPER=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper @@ -90,9 +90,9 @@ Thread model: single gcc version 9.1.0 (GCC) COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/ LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_107ff' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccPghIrK.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_107ff -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj --start-group -lgcc -lc -lretrocrt -lInterface --end-group -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_107ff' '-mcpu=68000' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_98fa6' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDIqVY8.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_98fa6 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj --start-group -lgcc -lc -lretrocrt -lInterface --end-group +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_98fa6' '-mcpu=68000' make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' @@ -114,18 +114,18 @@ Parsed C implicit link information from above output: link line regex: [^( *|.*[/\])(m68k-apple-macos-ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/make cmTC_107ff/fast && /usr/bin/make -f CMakeFiles/cmTC_107ff.dir/build.make CMakeFiles/cmTC_107ff.dir/build] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_98fa6/fast && /usr/bin/make -f CMakeFiles/cmTC_98fa6.dir/build.make CMakeFiles/cmTC_98fa6.dir/build] ignore line: [make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp'] - ignore line: [Building C object CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj] - ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v -o CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [Building C object CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj] + ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v -o CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc] ignore line: [Target: m68k-apple-macos] ignore line: [Configured with: /home/camh/Retro68/gcc/configure --target=m68k-apple-macos --prefix=/home/camh/Retro68-build/toolchain/ --enable-languages=c c++ --with-arch=m68k --with-cpu=m68000 --disable-libssp MAKEINFO=missing] ignore line: [Thread model: single] ignore line: [gcc version 9.1.0 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] - ignore line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1 -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -version -o /tmp/ccgl7NCi.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] + ignore line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1 -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -version -o /tmp/ccSgyjPG.s] ignore line: [GNU C17 (GCC) version 9.1.0 (m68k-apple-macos)] ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version none] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] @@ -140,14 +140,14 @@ Parsed C implicit link information from above output: ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version none] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 68baab70957df643ffb4605a09112146] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] - ignore line: [ /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj /tmp/ccgl7NCi.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] + ignore line: [ /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj /tmp/ccSgyjPG.s] ignore line: [COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/] ignore line: [LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] - ignore line: [Linking C executable cmTC_107ff] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_107ff.dir/link.txt --verbose=1] - ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj -o cmTC_107ff ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj' '-c' '-mcpu=68000'] + ignore line: [Linking C executable cmTC_98fa6] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_98fa6.dir/link.txt --verbose=1] + ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc -v CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj -o cmTC_98fa6 ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-gcc] ignore line: [COLLECT_LTO_WRAPPER=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper] @@ -157,13 +157,13 @@ Parsed C implicit link information from above output: ignore line: [gcc version 9.1.0 (GCC) ] ignore line: [COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/] ignore line: [LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_107ff' '-mcpu=68000'] - link line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccPghIrK.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_107ff -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj --start-group -lgcc -lc -lretrocrt -lInterface --end-group] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_98fa6' '-mcpu=68000'] + link line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDIqVY8.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_98fa6 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj --start-group -lgcc -lc -lretrocrt -lInterface --end-group] arg [/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2] ==> ignore arg [-plugin] ==> ignore arg [/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so] ==> ignore arg [-plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccPghIrK.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccDIqVY8.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore arg [-plugin-opt=-pass-through=-lretrocrt] ==> ignore @@ -172,10 +172,10 @@ Parsed C implicit link information from above output: arg [-q] ==> ignore arg [-undefined=_consolewrite] ==> ignore arg [-o] ==> ignore - arg [cmTC_107ff] ==> ignore + arg [cmTC_98fa6] ==> ignore arg [-L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0] ==> dir [/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0] arg [-L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib] ==> dir [/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib] - arg [CMakeFiles/cmTC_107ff.dir/CMakeCCompilerABI.c.obj] ==> ignore + arg [CMakeFiles/cmTC_98fa6.dir/CMakeCCompilerABI.c.obj] ==> ignore arg [--start-group] ==> ignore arg [-lgcc] ==> lib [gcc] arg [-lc] ==> lib [c] @@ -192,13 +192,13 @@ Parsed C implicit link information from above output: Determining if the CXX compiler works passed with the following output: Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/make cmTC_677d8/fast && /usr/bin/make -f CMakeFiles/cmTC_677d8.dir/build.make CMakeFiles/cmTC_677d8.dir/build +Run Build Command(s):/usr/bin/make cmTC_49b41/fast && /usr/bin/make -f CMakeFiles/cmTC_49b41.dir/build.make CMakeFiles/cmTC_49b41.dir/build make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' -Building CXX object CMakeFiles/cmTC_677d8.dir/testCXXCompiler.cxx.obj -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -o CMakeFiles/cmTC_677d8.dir/testCXXCompiler.cxx.obj -c /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx -Linking CXX executable cmTC_677d8 -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_677d8.dir/link.txt --verbose=1 -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ CMakeFiles/cmTC_677d8.dir/testCXXCompiler.cxx.obj -o cmTC_677d8 +Building CXX object CMakeFiles/cmTC_49b41.dir/testCXXCompiler.cxx.obj +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -o CMakeFiles/cmTC_49b41.dir/testCXXCompiler.cxx.obj -c /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx +Linking CXX executable cmTC_49b41 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_49b41.dir/link.txt --verbose=1 +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ CMakeFiles/cmTC_49b41.dir/testCXXCompiler.cxx.obj -o cmTC_49b41 make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' @@ -206,18 +206,18 @@ make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/b Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/make cmTC_5348b/fast && /usr/bin/make -f CMakeFiles/cmTC_5348b.dir/build.make CMakeFiles/cmTC_5348b.dir/build +Run Build Command(s):/usr/bin/make cmTC_bcaf5/fast && /usr/bin/make -f CMakeFiles/cmTC_bcaf5.dir/build.make CMakeFiles/cmTC_bcaf5.dir/build make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' -Building CXX object CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v -o CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +Building CXX object CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v -o CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ Target: m68k-apple-macos Configured with: /home/camh/Retro68/gcc/configure --target=m68k-apple-macos --prefix=/home/camh/Retro68-build/toolchain/ --enable-languages=c,c++ --with-arch=m68k --with-cpu=m68000 --disable-libssp MAKEINFO=missing Thread model: single gcc version 9.1.0 (GCC) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1plus -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -version -o /tmp/ccH3vlkx.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1plus -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -version -o /tmp/cccLolkV.s GNU C++14 (GCC) version 9.1.0 (m68k-apple-macos) compiled by GNU C version 9.3.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 @@ -235,14 +235,14 @@ GNU C++14 (GCC) version 9.1.0 (m68k-apple-macos) compiled by GNU C version 9.3.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 5b31867a30cfa7e65d4bce12c39f8a21 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj /tmp/ccH3vlkx.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj /tmp/cccLolkV.s COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/ LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' -Linking CXX executable cmTC_5348b -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5348b.dir/link.txt --verbose=1 -/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -o cmTC_5348b +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000' +Linking CXX executable cmTC_bcaf5 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bcaf5.dir/link.txt --verbose=1 +/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -o cmTC_bcaf5 Using built-in specs. COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ COLLECT_LTO_WRAPPER=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper @@ -252,9 +252,9 @@ Thread model: single gcc version 9.1.0 (GCC) COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/ LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5348b' '-mcpu=68000' - /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOl6zb4.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_5348b -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -lstdc++ -lm --start-group -lgcc -lc -lretrocrt -lInterface --end-group -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5348b' '-mcpu=68000' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bcaf5' '-mcpu=68000' + /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/cc25gP8p.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_bcaf5 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -lstdc++ -lm --start-group -lgcc -lc -lretrocrt -lInterface --end-group +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bcaf5' '-mcpu=68000' make[1]: Leaving directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp' @@ -282,18 +282,18 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(m68k-apple-macos-ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/make cmTC_5348b/fast && /usr/bin/make -f CMakeFiles/cmTC_5348b.dir/build.make CMakeFiles/cmTC_5348b.dir/build] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_bcaf5/fast && /usr/bin/make -f CMakeFiles/cmTC_bcaf5.dir/build.make CMakeFiles/cmTC_bcaf5.dir/build] ignore line: [make[1]: Entering directory '/home/camh/Documents/Retro68kApps/NuklearQuickDraw/build/CMakeFiles/CMakeTmp'] - ignore line: [Building CXX object CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj] - ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v -o CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Building CXX object CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj] + ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v -o CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++] ignore line: [Target: m68k-apple-macos] ignore line: [Configured with: /home/camh/Retro68/gcc/configure --target=m68k-apple-macos --prefix=/home/camh/Retro68-build/toolchain/ --enable-languages=c c++ --with-arch=m68k --with-cpu=m68000 --disable-libssp MAKEINFO=missing] ignore line: [Thread model: single] ignore line: [gcc version 9.1.0 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] - ignore line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1plus -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -version -o /tmp/ccH3vlkx.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] + ignore line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/cc1plus -quiet -v -Wno-trigraphs /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mcpu=68000 -auxbase-strip CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -version -o /tmp/cccLolkV.s] ignore line: [GNU C++14 (GCC) version 9.1.0 (m68k-apple-macos)] ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version none] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] @@ -311,14 +311,14 @@ Parsed CXX implicit link information from above output: ignore line: [ compiled by GNU C version 9.3.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version none] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 5b31867a30cfa7e65d4bce12c39f8a21] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] - ignore line: [ /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj /tmp/ccH3vlkx.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] + ignore line: [ /home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/as -mcpu=68000 -o CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj /tmp/cccLolkV.s] ignore line: [COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/] ignore line: [LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] - ignore line: [Linking CXX executable cmTC_5348b] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5348b.dir/link.txt --verbose=1] - ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -o cmTC_5348b ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj' '-c' '-mcpu=68000'] + ignore line: [Linking CXX executable cmTC_bcaf5] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bcaf5.dir/link.txt --verbose=1] + ignore line: [/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++ -v CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -o cmTC_bcaf5 ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/home/camh/Retro68-build/toolchain/bin/m68k-apple-macos-g++] ignore line: [COLLECT_LTO_WRAPPER=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper] @@ -328,13 +328,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 9.1.0 (GCC) ] ignore line: [COMPILER_PATH=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/bin/] ignore line: [LIBRARY_PATH=/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/:/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_5348b' '-mcpu=68000'] - link line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOl6zb4.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_5348b -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj -lstdc++ -lm --start-group -lgcc -lc -lretrocrt -lInterface --end-group] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bcaf5' '-mcpu=68000'] + link line: [ /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2 -plugin /home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so -plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/cc25gP8p.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lretrocrt -plugin-opt=-pass-through=-lInterface -elf2mac -q -undefined=_consolewrite -o cmTC_bcaf5 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0 -L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj -lstdc++ -lm --start-group -lgcc -lc -lretrocrt -lInterface --end-group] arg [/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/collect2] ==> ignore arg [-plugin] ==> ignore arg [/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/liblto_plugin.so] ==> ignore arg [-plugin-opt=/home/camh/Retro68-build/toolchain/libexec/gcc/m68k-apple-macos/9.1.0/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccOl6zb4.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc25gP8p.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore arg [-plugin-opt=-pass-through=-lretrocrt] ==> ignore @@ -343,10 +343,10 @@ Parsed CXX implicit link information from above output: arg [-q] ==> ignore arg [-undefined=_consolewrite] ==> ignore arg [-o] ==> ignore - arg [cmTC_5348b] ==> ignore + arg [cmTC_bcaf5] ==> ignore arg [-L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0] ==> dir [/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0] arg [-L/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib] ==> dir [/home/camh/Retro68-build/toolchain/lib/gcc/m68k-apple-macos/9.1.0/../../../../m68k-apple-macos/lib] - arg [CMakeFiles/cmTC_5348b.dir/CMakeCXXCompilerABI.cpp.obj] ==> ignore + arg [CMakeFiles/cmTC_bcaf5.dir/CMakeCXXCompilerABI.cpp.obj] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [--start-group] ==> ignore diff --git a/build/CMakeFiles/NuklearQuickDraw.dir/Sample.c.obj b/build/CMakeFiles/NuklearQuickDraw.dir/Sample.c.obj index e46524672133d6e707a6f9de253297b6cbda8f7a..94e1ede07c3e3c8d0ad58f740890099932476342 100644 GIT binary patch literal 359228 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 XgCV~{znCshj|6z2^Ow;7hvfbb3_)a) literal 267408 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

YW6$s}ILU-<9Ce+|zTwuJ5 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 bn#Yk*E+?=}&nGh_PE4>(FVfVnS~vV3z(-pb delta 98259 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 RQoVF>>7RGC?{2xD{R{QtD8B#z diff --git a/build/NuklearQuickDraw.code.bin b/build/NuklearQuickDraw.code.bin index 0df0c68212b6661f3644afd06ad3922d45701c86..9c1e6bb0620720036e83ad8bebe71bd2accd3aac 100644 GIT binary patch literal 390784 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

E26gI+)Zz0g=-yd;R^t=< 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≷h8V{TFmHs2)UR`^6oujIz%m?4H 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

1!w?V-p5bf4WV)4Z>ZAwOVwe5qe%Un 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

v#*bOZ}U_ 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 z zZ(%JhEW8+6f$>Ig6+gitv?t@vem4DX=$7GW#<{usdJHhZmr<{PamS4BAt?B(_v00Y zaGB*CCHIpUYcBg{Xv@*!Bxb>Y9DkECCc$G5X0!z_RfYUfKs(yC75T*D7|WFC*C`|Y zivP~I0K5pNU!iMHK+#O|!uTtLh<}X$4-U2pygwe_@f4lu{$-MUqR%UZ9#X zwhu-BH>0wmHELAB%yr7X+3|tU>@$Fh8vlXNO%g7gQliTpTP)<@Dd_rj)QhANzPI4} zwEoUBJ~R4z55CW0?Q-fWcR@~4R(X4iLpl3am?^%l72MSNz++K30}t+j12MTS4P$1s zMf``fHO@ve&aB!M%CV<8R_qn5F)JT&niRXm8Z=H~%R`S=Z_!$K5%`!ro86UIu$Gn@jPB(`X-D2AUfUi{jPC2EH;B-r7abQn85 zeOQx&vL*Mle!Ic5B=FzG;2_|iFURD%7>Zeo4Pz*)`R9(}{Bxa!A0-p_P=S9++|<1JyWU!OqmVai6;@N#hr7n9CH1N+*IRlr zka1fBBYzI`XCB@Jg_k>rXko3282;&5dQ@r^g%M%7gmlNw9(2l8EyeGbNj3Vj_?yGu zEdH=lS-pkzz<-a>0Be>eg7CmMVsc&X{~vA%w%hI9aFS!y-lBKIXXTe)5BY-%7i*p; zZ)5Jj^=O_ksrA>R{n_CIp_w#rF=eeuU)DbPw4SR>XVhF}TIMRcy_No4bPT7YReCC+~{U+JaMwBxq4Uih3hg)HY^$T*8ya%rdJ1+ zEQemsEm3Jl1gne5r zLxXaTsCBPyeKzMUc}U)eipvGaw66OA+t3#n?T`ICH`~@DU>-Ls>f^99& zBEqU>s$*)*gctqFY>VGn3ZB2jVF5oqe!h`-(3gRrjN~Cgna3DthuOM(q8@c5>m4!m zI9|6O$Q=2uX1SCNYZSjMu**_%hJrm%>k_j)x`(5sdca7kr4O|mW;(2S!o8^S(!LqN zF}rHR+Pl2qESUX)aJbF5M7Zm98mlI zAFOQ+%|V4W2Xv{ttYNH=S;4qbmpF(W7mA)Sbs)VHb_r=;3Q5V-0XxmWQbxtPCDKA2}{ z2}fGiaHrO;S%D^_xW8CEw47yLC2|d@M6S`NFV6;Uw6|CpK2A7LA2N}|+Jo@NRVl`D zfFr``E7}xiDEcY7BvxOIE{U6UdwE@Q;OwDZ%$XnjrPhc{0t*q^WWqq8+-xq|ZG6`^w)@XZJC;n!^Ni@huB^LNkxjK#ofc>%LY zi7i_33O(1BDS)0Wfd=ww>VxfJ{xKdN<1G(96qDF$^Bew}Vc z+G@k|0pOZ33i7tBd4RY1nlro=?6e-9{ao8qYCTk?C@*<-o<5(hk@wf-@^(zh_MENJ z`+o9+1sD1NZW&wX#IQRODG_>sKt}I*-wN8ndJw!rU?aeQys{XN14v(^*{SK}Rh%k> zmnJ>pMvb!`qg%Dt#kEPvqemrc6@o>Dv;TF;#u=G zfuE*hnLHD!XGew3&Rv{XE7T&hrjdqyMVuw_&bHa)A)NDe@B2RStWY#RD=TX zSjtj+V@I|)-+r9cp!zJ4|ZsEdN;1Rb!Vx}^qZq$M%o6a<=+X}IVcD+Oq z?YYTCq`iPzQ|UJ76Y2@%zVj$-yYDU79vj-@9#8zK69?;OeQx&C?(GL%)a(y8iETKK z*b_=4GI>_rgrm?SNYub9 zVu=r+{CNA|Lr-PiCO4Y3XV%|*bnBB_hob+l^w96cn7yc6-%76E3`iSt9?tc>K`q{W zLAUrhVsd5n9oYX;3IeqomSvY`-+5SLe=r_uv~vkiCx$fN^VS*K*bG^{@)5%stSIC8>t3@bom-AlRtu`t2+vb`F;<7G^wZ!B&sNIL?`4nL6N z*scN-uxfa72b*!V|Vc~3q%gB3zne7w63~uMbYbZRy(7bRmgI5vlo-v2w zTb%1~$+wog@Z1ovom4%S#rKHF#lsZvJx8N(qsQyd>hyR|FIO*$o(8lRZD@@~(Cdb` z0QN{3Svx!rsL#iZH{2r19YncP_#Cu)eZlTkLpfxp8Aup!KwTw4hTcQ0u_FJDx`h+= zt3xPv6ufbaxy!N36?=TmO;%N~%x?$Yj;^dh%g7-GBXp%~4gbP}plR0PX3u*Gkdt?K zk6AeOZpRYHcg`qS2bK=@OJtLNfKx`}S)>@+c_>$7m1IrUn1TM5nk=DOxV51eu2|mG zgLIrQcj9>`)D2)5$pOY(8L=Bc(0&KEOLXqowR4|((T&#J*qjY#WWR*O?!e;>U3@3d z$0@Kq13l76e9HL*$? z8hq#fM9-lz;fDE9D=KUn!p?^-S#3dsTk< zo(Oc*3qEzJL9G*E;4yHiSCh@&0uBI{qnz%?r)}9}SV*U1m4?00qu`xm_&bij6ZrGJ(hu(pW6RK~1 zKkM^Q1_4(Otv})sXmXi3!v|h!&5!EXis$`{GY&6y%RRA5>GYiLufzF z_f#j}s1|)s6?C#Z)uIrT@KhspU^Op-hvPiekyvZ$oC^ayi}FyxZ&DX#(0*;katq&g+0rolJ0w!uv^@xHt+kECnH$%eao%9|F21V-Fo~Xue%{V z2z`K)C5}}dWuNf>^3cG9_`dY*UbXs$zDHRan)vNoj-q{9)e*pdKE^{ugbK7adj&_9 z!xu!!;~Druao&gJGe*jY&v+Vrv4x{(!CwiWM;dMs#cCxFsCF-AW$P45$*@LR<5 z9Ezp-km#oB^g}S90MCgVxlKK`x~of3rwUF2>Id zBpYovpe3w_5C;5_v-Dd0_xWa!+%LgBZsJoI6u2I+K&V<$+{kupkNC=;qoqb-^EbmS z#ra38QU9tw(iOe{FKrI;WmgBh2!%Y~e+zj_zMp1BrhUCDIqos=eGO0lRdO^&;#(2;dP4diMVBrtyc~pYM|DKl|I{>+)$mW)~8-Q?-|y_S`XUD zz=D@u^8k9Cl3rCTj&bDLvTO5ZKzi5J=ywYJ&XilTJ5@+t#C!?fwR&f030mTA4tbB0 zQKIf8UT@0tmhsi1^wK4R3kz3vNrW)L{h-9--QT@(Cc39mrK~{A=gOCX``R=t$(85u zEhXQcXFqu3vt#{tue@0Fe$mgg54As8I+xU>?7X~=@3&m}F6j)2cHMUGn&%5GYHZz% zXVo#D1wES-`H(uVJP*FB%>WWYfpw&7dV?t4d*!>*)|9snZRLyMgynEzvb#ps??O!K@V6;EN{Njo^8Ieol?%dSKa-6cx^$wP|(@2qpz!rS6Kun zsjjpKJ09CZ^G-q^M8eyDzSWt($&A9Q1}03YZm$~A4)cq%koHw>9p(lrFO*z0H*Am2 z4XybrZu&T`%dHN#r(bKDjpuR3LeWIat@7K^v*$1jfOlBe zsqRl)JS6j#PoWp-5v5oAEf`3e6{InF&wxh^1glFyiE^gbQsqpU>i#q#!}~ zJ_G6w+weKm##k8ph3>>iol-67Ua5PgunuQ-W>;46wlkK{Rtx^aS4W|_c*oUj*i(ci z+r@WV#8=d>n`s?s-gbFIw4L~|j1k4(!pb!y-8->j^cUY0!7AJlXdXn)G4__WCyVJx z70J1>jarB&DneRFpE$s+%(#R$^p1cRT5r0W}F;{rUm$gWT`Mbzj8~fhCiep7cPgsrIfiR;f7`22D@l0M(Pow+>2R6eg@>?wIoW}coq{LDe5)XA;x!f9AJ9W*D` zs8cv!P;?EwzZ6h6v`d`W73#$74Yzc`1$R6ym8AYx-4bZG22_LRU~~$8Dc#_61ybZ5 z7JSzHL{j&q@R+nV_^*-l`R-PsE_~JUsf)7nSlIz(p*KL+cuI!eqZ+gP((i=f(6s!^ zNV>dj+ddshui@?2kS}WHl%6jkmS!X^@DmXWngN`MW%{?1jUk3T4$Z3fVsa1brokS} zNWLbkRl&XEs5`B7I`p$j_jURdbRhrYbow!oQOS+yZ0hu>vUGarJhLyOkyFg(=5KAG zE*GICdW~vzp&@0o7ArioZM@ZcPIflHGL+W&zz=5UKF;Ay$gY`dWdNF%J{d%>B z<*R39w={c!caFcT$r;7DD4wwm?%o2FvQo>ly|jH>5ZTlbOWs0GU0Zg2Rhu-HT7wwx z1ZD`W#rl)-iDxIt6MLJ=FU=V(d%*ap6EMfl01KZTOegpYUOVo9=t-(yrVLIVsFBo+ z;FVsfTP>f!DWnT=3q&GDsUPJQpFR5qcI@BN`It4^qen`OMNRfly(=YX30@IyjKbU$ zxwppV*6G}3Zm!aT>K;echU~z@T+d6%eh$p$@Yd@bxkqR|i*J1EfV5?=wF>X{iD^cU zSqh_Xlu~)GPB6goYSxJqU;;E!kV_j?|9sGY)kEG5;L8#{J}!JeV8%Wz`A}s3$rjBX zu!sIZ%xE>_Qsx%!RN%k#-CN+_oj*uFCC3$YMyqfe_?F?ZT8X&KlsYv9>dBcYLL54r z$Wv0>GpHyR*>USY8`^Ixw6USZ4O1JwL^v;80ft*L>vLHf(m&cIQG2|?;>V)=l4+b5 zH2kF@EcET$gS**qK+uKpUKeMIMm|P2xw)0X`08^4BX#4Po_|GPq>pH}o$h(u?11ob z7&@aIg73krz(>78@7Aa9t4+Wqpdog6Kcem#9|O2R%b{M$mEDIzE4vZQM0)=EGt%=s zd$u^ozTtJmKG*tC$=T3Dq1ll1pAN7?pNzBjHH-&}jF?vtlSxUT*Mq%`h!3tK?-z{# zlDkAxyJteg{=!NY$s8%Xofc3+DRt+xkivWW~V|z zP!{D!Fq=1XdB`+Ir(OxvGkQobSKDS#+VG^TuU#eTdL*j_TF$E>3zjfjSWKYt3i@oRtk7B{+bcvWu97Ujlf?MWon3$8Xt@;1?c zBlq?_y03G`?w&oneQ79{P{2W(0p?j^q1R=VEfnbN-6U zL%-ve00-B~9&p`?ykTXX8Bue^stJrv#p8xA;~Xq|4c2qSv!7dmG@X{$_{Ynm+cV(~JvO2#t3A1(uHkc#shM6%5sqPkcK%tAQV;@ktf zjJHHiQ8Q1^(^y8&XIwu-m#KvXo{Vcl=EsZ@#I%pRDb$-Tk~fXK;{KF^Tj0mc(pj5U z=YZ3kS;DJx*UK|4I#rE4C94_!S_XK0R8}gq|HHD2SUvZ=XCVobtQ`+UDQm!23(@N$ zR?oXWfL^DhSJqaecQ8|`U-j;{_X>R}a425FOKilAV%nD+nc?m5eb)Whh})lJx#cLw zI`G;Y&$CotT^*<~rh92E*~?wJk5<+|9}@;5&ZSHB0Us}^R*x4h!-E^42lu3}lf-M| z%WO*X{8>b@Y|S$nlj~}p|LK;vs^+2p$=y}{I)FZl#Mz(Bdbm$mYtODd0|R?{v6&No z<~Xgg#4={x9u?JnUHQG3To>Zk+!AaTUAz{wgI|i5{CY@vmHBaT59o*d2(YPWid!8t z-#n+@n44jG(K4%KKRx2yc;P;~;SA2#@a8+Lu<)keufUg-JKumAoCccSJGr74=jEg) zwAcat`F`DcM}IZWYBfp=W+pq%+0l!5+aPGetKIu8)RopxtM+cu{DCoZRmYm9|@1ssgqlx zZZ~It@uOVsfp+l_`;^NxBaUF^_oU>y7R*2uWQ-LXzS3L)8ybgCwBqjt(>%btFQ@Uk zWo&uCEG=aKpWi$9PNECb4oq>pjW)wIb9L-5TvOpjA^-t=>efgv!P8x{HsqQYK|SyF zLbc`~FL^3{41_fb2ab_kg>Jy8k9~t(jWgK2Xp7=~l;i}{3gIt_@vA^aY!y;w+==Dj zcSOvwrci<>1UixRqNM;8T1NaP+LCZ6_Gv|P?jRnEwR@eB^%A(;ESe{#WuZ{9mK9|z zo)escx1tbYOmn#ng|x;OcJ%NK8x2oMomWh!GD~O zM3ZR6u!rD2p7G6^bwasKY=Snt5?fUVTlEH6JmCiNe-XQ>WFMBU zn7-l)TrpdTHKihY*0&|V5xt*C|47R^90IOESdwLY!hUNn3n+MU z6j5RLP_S9}J`>B6!{2WpN22ch*Un(ipqjB{arYwU4v~@jvTIA58vSIZm-~FZ^k>nI zfu#sGZlJsoP8Sobb@q&x-s@eN(P!rTxGQ%?XkVBTvg5J-opNe!VZ`^&23+n3{MK66 z!;i+~`d+PgaiQ1c*)F_Ye?5R+!BuX|hm@;bnV_q9uE0BE>BC={qF#}xz$$RgYUIyA z`rrfLQ=Mj+#V4duza%!cqSvdJ+Xv<{>Ld=M;ow+9Rkf2omaZON#<)lHjJ{2R>o$V4 z-F-cM60W9p@$vRl3}&)s7V+@Wm|PccpK(iQyvc4z6}bW4o)&8O^^o#8rsx<;QM?Vy zYI%its|(|;Je-i}>iMd3b!bb! z)}-E9+11(86*Qw;sdHL!TNpqK`ldp4-;CXYW`6@ssdl(4Q@6vJue^SVX}g9X$7t#LtV?q0zD{9!4y=I$2!(uSUz+2a* zcl1$44JM3k^EmTNb#oW|b-Rvo?tssKA)2$6GPmnDspkz||07?h*F49!SoZJic@&4_ z`}$xUte3%5%`X(I$(@C&=AK^VhsgdzH7@q~?~2t7`g~NXf=gzI5%7dJdQ|Q7qt4^Z z9a;`^Z&)Tu5VStZDY(u?TCWedP{GyJ)3?)ytSZ&)y<@+3i-*sf2k@j9KHuJtt0?iA zN_mXHdJBl}CAGy-z5H&Zm$cmQBvBVy8r73X{f=E9A5d>yOfVL}5oxUsUjN=LZBHSt zGc~?xUX{%M?Fw^31ze*ipT9lg+j4syD zvVTIzJ*4=~*n$Pof8vQStz(7&k4RR0O*I;)wi=J(JK1Hk6I#U4Pa+dR|4!}m>jE92 z-b7;UK&DGWu12oXFMefBE%heyNvhAozdj!fW)cRm|aQr?IQd`z6kc$Q=^p z_tRcSn%?{7r@?YEN(B0Oe%clGSI#aXYRY|&?$U?w^hkf=p{5n}q5i4CHMNBgwPF;J zB5(%oCmtsp|d-V0oCtdv_d_IF-uL%;$hs9|0 zOy1Oy^Br#0A6dlFpP`j`YR*-drEO~A8!7UA$)*;pcO)3kG&@yvTl;(>D(d;W$v<++ z#Tr`*R$D*vZ)0+OAD(ljkHp;(hqD|(JMi=m%P+s4+*_zUf9OK)zL^#~R>k!X%(5O- z=XlDwSqh$bt<15b5f^F~bEn!8+-#}mLbL{gl`tlv>&`YNqU+9T501a?{E_Iob4_=z zg@;`sENta(HUEjl!kr2W$ZM#4l+-qg_Ts~+u})HEf$d59{E%HnD0t$SR+Kx(Af@Ru zpg%r;0eYSh0Qt5Qmq&+mz2tC*Z%E(k^c%xEU#HiG^}bGD3X75!yOLRW4c{9V=J5aW zh1UsTahqVD(n?ps_mWr|EjD!4Kir2sFxnJSZvUQ)URy^!dZk7FzKorodq8>1c2q$7 z4SB`)_>^_+lhH=|4qD)bobiAjXI^b|9VNmMID8tr14$)+OAu$Zn+hDwf4h<{Z+i5 zG`TT{SLD?lmfcz0S&CBK^@W>Qr%S~W{t_!rj3xY4ZmE3!bxy?={su9~xzH-XCCu3` z!<$NDy?~l|6c(uo*5hXA=1VK-10pUdFIuJJBg_-Lb1sW0_cM5}ny}nhSR%0C1#q;5 zyYpb*;_JeKtDBzsm#`+nRPBH=}swX%jwh`v4>?z zp^E!hKp%;jkVZuyIIArBf99M#4V(A^;u04#y>eUG`3&zGzK`$S#efp^67Qbj%0Bit^(W=*zU%=lEWw#Z=uEGszdC&gJldeo zV=V*34KdhgAePlmYj}VCtXa4jw?y&IL&@85T>L`SW+r_ouAQLt!)ekBE%7e=bho-G z#&0LLG$^@aOxA787*aBZwQ;Q*NFLdUw&kpl9(T>4Yf;F z^m=uq3I5cb#Xb7Y;yY0vFVpHfi)Fp1+&hagzFM5#PsLD9c*egCj=RR@->6pgjc^Ci zdtEx~6*wlWv||6v)!;FA!{Jnwyg_2>BQlZowlNNPwH9ty_bmRZp$)xh;eJIRMVA@9 zYc^4pF@ln+7EY5NRt3jjYwPWWg?p@3HIj7*7-Tm!gLTjt%t= z*!AMZyQm&G_b?a@Zum57`vIPYd_1YVS!?WvZOHIltrV;EPpqB#BN!@C4*FZ&%$eR2 zD^bI*e-S!{yQrrSS(bBij6!tuY4xDEZyK%0`U^f)9CrAJveHBCpyVGXO%NH7`%-c9 z4&MyLs#V@=*ZW1F#dtDZ(sI}pkrs_&r*{y_fvrRdf;ePI`19L;BzHz zSVB9sTM%tWI`?xodu#ER#h z-}-1(gyLCJ{G-*8bm6FvUKdFhj{4}5Xu5DnRybspa7c~P-QGE$Lr6PvNvy|;bj=|@ zc!s0W9Fny-B&#_j8_OZ9&;sQx8^;+}n$RXCk?k4IV0+{Yw>`}nB8x`L_>P`lISlc} z_w(e9hn`BCHxF8(uN|lqz*kxy!1q%ggwhC{2isJ&V|Bq9?~mRVp~q^WYbKJe==a`e zx=?PlO}WHfKIMp8O5p0!vi)Gf@XByU?@+o7<#KgrGv3n z!?!|MT|xUOht-_G0{d1-l{00Gj#;faXmyl>I5N>At7G}61|y@EVvmM@*c$oAZ4LZG zYenrsFE-FF7VW0U2lyi&X|DfXBYCKZewh)=(;)V0Mm%78^tS*WromqM-)3{G#d6vC zuv|L71D20F)mRHQ%>OnUn&nQxnoR??Ce992xs|vt4dv^KSTgEnXr!4|asX@UIq{U> zRJ1l~m#~9h`vPk!u4in(=6cz!V-y-^0poJZHuryXHy~f6psxDf}_-4JH zltat35av5x>A)_|CU8X$`Wnx0rQPzAWsfU)*YQ_TYSu0lk{(LxG&n%~TfNVbr!=q! zAMbZzhhHv>v5fspk?LMaT(VNuLsl7=%)p(Oy5<~Lmdy`s^&BJt7bbbuvN~i5P7giVy{~uInF%H z=WkKH%QCkUsD^JBV?A zG_)oPe#CuKkRjZi=+(X(uQ4e};r>J&yHc01+VLyeDJ2atH;ieIc_fH41OO3iK&A06zWZr-GRXS}V5#G&4yZx8Y2#f5owbFyjq-CV_)Gk5B! zU*_zq8ciWVO-an?vB=%gK`;(7AB^Q|E=)2;LIYbA9m%Faz9;$7&@5KLjXc&{t$xXy zA-H`|{R)kQ@V907Kh9dE2Nk>)?s2ztD0VpE<9;dvuhKYw;ii+e!TSG4L-&(OuD^~i znk;%#S#5Vl_=H}+Zc9f!gPL-Kq<4WO!l$gk?XY+H1`^p3KrMs)@w1v&p5W@o!YpUd zzy$mU?(vJf9Y%kB zFdB~Bgm|RE6JS|PuEtPFX1u+GtHOina~WW;yLeF{WpXkCo`pcV72ft*7B zQ*(+^sDodyPkFTI{(+aiHlHL729eWjPujQeKebTlf8~maeIBH%4T=4zd`#3+xo><+ zy&rhn#T$|UhkKJ0im)gPWw8DEcC;U3AGw;W+t(>{m<8O4Xvb#m{iwHxq_@LC_ihS# z>hJ+(#l2y9fy?qvWQOhd_n?w~I>&am*l>n_aKcn>LEE*@3;!$#|77y=&wSE>wLh_I z*IeZEK*ycj2_03|;p;pLi=K?hLas=pFeW93>sxpNdBq)9bNk)-35CBGgwtR6UH8+1 za89~w7XD7^a@NRfVOF1>E$CSTD6kH5W**=7OYY77@R>3<4GNj42C`*7RwfxO+2n?` zCvrKw3tH;$yTv9Sdut>49=5hbs$9IMlUTrewnV%4))3CBHoF$?{ih*My?nRBTcb#s zb;jnqMapP+l_xzrJurLqE^Z~WDBF(}FR_xHN@9UpiuP_vMXD=FMX#)YjGA8p9cz5r zOnH;G2yo|?-TOZWX(20*H=B_cDTT8i(5^_RH%^lK*#g(ewS;i{tIjyxm8jD#mH3_;CsyAA5Ad>~PGM;0`R&D1WmBv=oivlGkF5*@GqW+US&f zJA)LF(W-Su3m61fTJ6!BZ9t0^KKX9jf37)p+}o0G?7k54)H`+$dTSIpcCvG5#dg8N z#gAUWS;kSsOoMFaEHhs5GFHJ=uAA>5MW6A{2etFcqj~L-JQ<{qjO12lB!Pp8z51+# zzg#e*=(0rgEO+wn@jiE8m^}G%nZq7?;jL!CDJSkO{?l-LdGqBiNXY31Y@rK2RZI`k z&%x^72Pok+LOjykcMh|U(?-2?lBZry`;XolMRMB9E0hw-Zhi8{!fDl@qQpB^COv*| z45PQ3qsO~%v?Ny2BVd(!xJueWo6IgPAS>oR3;1#m4kPmc_>M)&3=6|$3E_=!$XbK^ z)db+m9fU6KRe0N$rr4+n7u+g=n+T(jn+F}7U9-^z+bdVW1H7rs$zZ9pGgvB_!6Nx0 zjKKw|1nTV_o8}r^B_bfSS}XgLa>jS!*T#3lD^dH8up>I5TPd7lLfu;8$uS{jD#rx( zrsd5s@w_MA7T;4jCU_6yE|g|;ez32jqZ`}8JUJ#;B*Gp;9}<#dB5}WgLFARh5f^9F zJPu3e$=qyux5V0)tNAo)Zr+Bsa*O>f$XOvg1Lc(5WQ6<_tWR6kDZ)mieLv2a1@-d8 z+NFPXUPl~O`vuA32(1rIJ4c?eZ>C-Z{4&V~%bSa(VB`KW*q$rMUoGAFJRV_%O za%A2hBOVk`_W|xlE7=vak|;zKoqbbJ_^O|vW5G96U*W@D!QZqV+h^c$t2GSn8^0pD zPb3naSLAJf?858deZ7W3OHksaM>^Y%+<&-F?JLXunM;xxQbFcdPozs{v>f9??vp?9_20_C#)b#Ql}Ja4u~S+CCi*`ZHFV4lTu&_c38q|a~)+$lgu$bJLh}GH3CH6 zBQOV8RlQlr##y{Ohj+_?LuKC8K}7g@GDd+_M%5FnM2h~I zMqNrf_UJjgM}VTsF1X8p!DZBEl!^66-OuvWpWFh>`OMEDlC8#4=&Ztgqt7y$0;D+& z$uo*8hIEB}PWo0xHU8(_eL{aPvcLEoC%uyNI$W!%fN|0M*4)jrqAp@>eVN+2PnS@e z<2r%X6Wf}ZqXwHO4vIiqLV_*^Vn|s1*gJMDP1{Q9A|@`h9fy^oxUbV1PofNKC>H@m zvZtVJYuZz+uTRvcr^D4%(Pe1ovP7(8O%*+gqEEGeKrCWtjh0+>`u5en{~qI4)f&%B zE<7*!@nj2$IO5og?%Q!O?&p#7cY)Tt&iPa3npoM+xqk=0n+JXuQU=+*^>6mF>cOTC(sfq7M1}eIi8^KUMCi&;;#nE7sY>CHUdk{lWgYy zyXHzJ0&#nZLDogZIv0Ny7J9ji?tFlkB+l|4J&p$OtN6OyEiHzMlLKeRv=8Q4pFJ2{ zpN-0zEbhc2+;k)VM^-`wIDHY(I{bNK^FN|ygXP;HJLFEB#XIut&f(w3cY_-i+#FLbQHMs1Zn>VD<$7*`LoC}J2q!4WyHNL+1 zigThst&XgCAY7XR{=&WV#oZiI0FDm}MFV2NOi;ToUY~mzJhFEhJh)nF!%+0FA-Uw$ z8(!`MRo(LHFG8Mr<<+dWM$z)h9pAwytXy8@79jOhWN~Hk%E~9N)P5-?6_%4&KiUL3 z+Y*ahqm1CtS@mv!Mru}N1LaC0ycZ~U-zB9a0yUvXgfLn5{tnJ2HACe8P-#FpJ8-DA ztIw8VzLm$oJW+7TpMecMpmerFUVEjG-}N%V8=2`KWDF1Qy_ zr@;laU&l&JyBF}hd|C+t z8nJmWKk=R3-jwllwD02fg|GOYxqaa&pMRIn7rs)U9(Lby6fuHf9uY?R+q57VZQe}G z8AWwRnx)KmN^_`XJf*p$@|0!)-Rv`|3Gn+b`*z1~)&n|Hn z?Q(nuD;51BzLWO6P??uAI`%_6CPVpMMQ7%qZ|0zfXC;r6CvSJd_KqiEf4d>t+1!`i zu#&#W2A-)or(jFOCr>u_G}@eIHn+@rV(EcwLsGplu_N|$+Km^Xpa(OW3Z8oj@C;Ot zm=NJlyD_)nD@<_~tym_kH&dVWK=Z|EsqK+w0&B3>r%4 z?e!Hpi+G&%{5eL@JWh7B#2jx`; zjyocA-Lyv(M&)|hS`wpy+?9MI@S_%tfaH2{SCwl7oU9wT`R;KzR34yLB`JNVVD9vx zWpk$w{Y(Jv@-sl6#$tW@28@F{l7HRf0ID;KtkOLf@{hv17tAPdpO$MBmdk)s^NjY6 zJGNc+Q;cR+&^O^;%pg1`hGgM1eazM?p8`QwqgG@I-GV zCM_q=39k9@1e_|NTSDy3A}|GP!In8!>@JWDhl?aZ={2pj-8l`yp{U-GeEfb=A%F#On0Tc%#5u$l<6* z4eBk`7Q9J(hd0NTH5JYIH8B~JT5|)n9uYf61zN{sRWFv{2$tWHio`gx0#*oTJ9xuB zuPe$?8rYan=U~MLoD9dj?|L#Ec^a1Y6s=|7)BDLxh9gej0=4SlL(gFKe3tW3Y@_b3 z*0up(rsGsysU4HA>fhmux2Ji7p^np^X69qM$&Suf1!DdOT(uvT+B)YE6yd5tOKz&4 z_u<9CNr>1(FYwzHe5=q|K@}L2*fJR|d{1iaN}1W@x#P>kI#j(VT3|Fnzmpnwzk_GY zP^rLemiS-IQ2^C*)B_c94@6f2Q7Fv2D}chN4I?Osj7nAqB!Imhabr##D`J;++LC)J zSF&1B5UT6MG0HD^2(ER3f^RyRsfZ6<1a0;EurQnx#|lEQPaM{3)bH*S(kFgpxn!8XZqm;R7_m(C2Z*P?o7W!K~GYm zMTdNzBxA+yz4B{bfP5g&GrB+Fjo+cX7PCb?yX<>b?#f^bjSp%`&T~l^5%<&)$u4IL1ZGs{qh=OU9eWabbO^0M!FatK3PGmw?eg%p785{9?0o~bhfJHUz@ zC$%v1FW?h>W7e2_O4b;DpU3ZdS!W+oy(^*hv_oknXwwLI`cjBafv(A2Le9|Gi`>s% zgSKcFQ}0PLNY}Zko0yY%DCv$V*n25ZVf`_`ffPVje5WC9O;;;xLcSX_OzltC+23iZ;Q(xOa>iSB zJAwz4?WgUTd0j7K>H(J;kHrJ+Bs@8VPjH{H4fXrT(HyZ6W!PIXH0h zX9%^O$?l{EcWC!HmUB&1Q@Crc^;)2t%OX>~I0 zGJ>XMSv!O*0N=Cj*fpLem(Vb)TrjHwFkzzt$1||y&e4|BnUHR+Fx7b0*@1qzzR8pS zjW%3y#KWHodFqK~9p3J(0qqfIbms6s36w7%U5Vp_W$-XgJGO|2-l2{Wuyc=SD`jCF zo)qrp7)^O{C2@9LZr(t#uon_%hvhrvfa^hVtSW*tohW13uz%OK?AKQ3Qei$YYJszo zFe+$!HXw^7S2D}fe;No~e1do)&T)ioO}QbSP%nAHTdq78*9{aB5l~jRzP!kNnjCmn zpJNDI#HYUb3AD;tW#{k6pdWPIe6&b=0QKXV-Rf^K6!u+l#ztKaHr&|>F>0e2B zpzxmMJ{)KeU#s9@kp}bv!G9U>U)J!S!o%E%1qr9TaOuBk3v&yyab=kN$}s5a!vt^^ z!9!Y#5*s}Z;49#@0K789iZTt2G4VnDVEm8hN*r+hZ1f5?`Co z3f(;4z9T=BV-XuenKL~ljivF@^_CUcV|5(M|DLyXaE{wj+>-x2MGfAxl-}&AB~+4f zxdYp3fL2R@7pe>Sq@*UJ1NbC=CGC@})o;iD57SIC;>-B|%f1)t{{#2jJm$s%=LX|? z{R4d+18ql-`XT^X+yCF}`2XMnm7RA={P=p?>vv`PIr|~g@ol~Sy^a6i{NHoXDYA1? zc3KwnUX5P~+q~L355A!Pi}zRK|B7!~@&fWe@}6A2lD(4!Jy6fd0tht_wCNhS5GUKnmINkp_A120hQ8QhH#+}|389W@L7 z;A^~ljMgLJz>Zk}9BofrqX5Y1=J)uk&g|UAd6`N5ImlRITHcC8f;~4F~Z-I zdSma`qa{WtIQEk+c#{Em=nXW)Bs9bnHH1W)`fMekX9l=mvJVgcd64^MR?K+I(X!ju z_-`Rky}pKTCj{GDHfI65i;!<%S+BFTqIO@w_ru7WlZafWUs+!(cJGxHgI@vvg1fKQ zj)I!87wB8lzl2ADky!^$3C1hMpZI_~Z)$+Qy~co@Lv!xEZyXcee&>iP?JEdu zjJ#T-7e8U^+knP6hnzsf`$qYeT5}iscUs0}8QWK^-m0_}xCxOk#w5tC^1;62RK8NrCZvB&rF9^nxe(qZk19}Mh9>M z3izhJ-HJS=@okZ{G8OZupEi%tm-Qc+C)NC==iVHi;!j7_j8wAU#HuLjGKz*beb%M- zy?_l{+gO@rv@!%%pf2p)J*8Ncw9@HS;$zm~M5a-?;zpy;whMg~gt6dX`Ue zIQ{p$U1+`{67hALCZ4zKHhmoB<3!UYb(0HYyG`HQY8*;x$qgM=$rkd1JKvzE+*P7t z3RdI{Z5vtZuQl;!&8=utq$s2kAqx#Hi&kGawRC-L4Ohs_^py3iPPXnYvPG@{RN1tN zQCc}NN6{vtcFHoV!}C;rNpFk9-uHe1DP*wsy%A{9i@mS5V80*pf^m=F{J*X7EPBpt zn2-6MCuGzZISLswLd6qCKUB11C+p?e+a;|QhZ^T1xHbsEi?hv8Fzkq*jOW47UHf=mYFyO>`1H^LX(JPqwCNH=GrTw2XY=yr6XS_7ig*U zito3UwnhVJGeP?!@^!qyT%u97jL&oWlQEe}=p}#TMa4|qwuxD*vC@g<-T{2Bu+X=! z!K`tw8`lW#^{4?)U)D=Wiw0TiY9+>4d8fYEiN76n7UV2WP==jx!M}Qd=Uk1tKs)QH z6n#bXlj~GmQL!x|k-KOoiC!8Dk+y%5J=PYZ&H%9Su(*N?JRuFb&mv4g%agAg+#W31JG1q8opUb27yTfdOt?;w9pmpE71vKf-VC_6wbYrk4FwICQ zeJ9~u9W_E+hu##{qO`Axn)9kAVm`L@E*2X(_Z-@kQaeV-Qct7}HOdH$HSoO<*WUBv zX$gIpz*^o@*DGSTQ-%nqLc;jYf3hQr3Dn_=9pum7@bvu}yqz)cxjDRO z?zrHliypTCcd$HBT@uxiOYF2Pi6&8o91BJ(T#-=Ve$f>HZ2-;qeC!(c>6U9aF&CUz z01oCVti{uafIdfy(d@xCn(`RDX;_P1UHMj1xUQTFlzVjInkO-4%#A6e6Cnk8&!y6f zzFFXoJsGKFOAn7mtq@9x_vzM{Yv{3X)+vqIOCG|QQZG>YQe*N{tzz&-WS4ZpcU$(L zPI20gbB+4=I9uKc%9?H5miVs74o7CLAD#td@fv3l+In9PEJ7M3|~XTUk_s`9vK zKiWBJRKm3%r4a1}*T}6{`}y8oM*I0{3&*&yI&wMq3X+}zm)qWMwhzpL^SVsF5 zEBmoOT;kn?zH*)9*9_BuR;g!)hwo**tZ1za+E5pW>_HUO!wZCtGQYf|4&pq4?vU9C zUBUASVeK0oqWG7(gR}FBdhWg14dv8roXz8e=bsOvV*u6rmTyi|o3e!ou}PJkX>^3h zS+}MDevBl!bi`XvEu$mifL~y=(DJkzfg)u;B9OMOvSt4QZ&17;vcFTwez{k$5o->h zX^f{1^~bP(fjMef$tKKz4r-)Ie(oK#&9PiWKgzL!7X`($Nq)!eM5raJe*9hc;k~C= z*F-6}#j35fYw%!4+u*^^ceM_paqgBxyYtc>B2dt{CCLGm-Q_O33c6IZJ+sInf5tNq5*#7q zf-wFcZ9GLj?@@U=igg>O3?na*e?BjF?#Hrw-F@f_eGd#C9O(PJqWL6Y zARn+vZgynm7DoXyAU6dZCh;A!Mo#7=g=W*1^>y$fSH;L*v{5)dlk}XHD6`8^dlr6U z6rVV~Eb=X`A+_U10YtH7OwdPTVPp32m-a=)(~La9)(Y3`sbL$h04_eSP@3wjU1b3- zqBMi`y@ehtcMtCf17~Dj;BSLdEow}P6lQeHw9ls*U`z^51)d^;x~(^t!HHeHxk=nc zeU^2t(~1_P14b3Jz@5n4$w|(fLmB_Fo*uhfY|?88sK+{b6(OtSxAsD4WjQ!<=h^%u z+wL^q_6?^G_*+8j*?p*mIXf!p@iUh<%EybHOv-~RhZ9`2O;a-kxRqy&A`*7IL?;8q;X};1vJ4d z;kx+P2Tu}L#COX(QqpJ6U(%>Im$BmMySDY_vSgcKSAs1H$SrYUDUc@mgd z@!onb{)7Mum!Z8GTgzge>h{Xg&+Yx3ys;o9y}5-z4~oDQ7+jH-hA~Fj^sNeCQjGZ@ z^i$p=FUBFei4Wv+UBt{v^&VymY{J}v=||7S0N=NF^|s=)$wLGEeMc2X2)7A0gz#O* zet`^L#0V|+aiyJOyy)UhZ@F+`9^MsxCWmU6Ek2l+&6_(M z86dsZyP~`LdR?QB{@HywccM?$Wxx?>C5c?vt9E7lm6YKQc)Nw8eFKAP)3t!-nECs5 z?nK9SHGa8=6~$f94PO{qNo!7TJZ< c#lq90%LG296FY{s?Jnr*5l)Imn{d;&!X5 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

  • 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%0An<_+IO)7Apt5{V;7jLIS3z1%+W(v( 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 iQ?2n|dv#vfs};GiUdl-AzF4 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 HA|@lpB74@7PO*)YpeI3t#Moe|@oA@gTJ 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 delta 98565 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 diff --git a/nuklear.h b/nuklear.h index bd7f1c8..5ca7eb6 100644 --- a/nuklear.h +++ b/nuklear.h @@ -132,7 +132,7 @@ /// Define | Description /// --------------------------------|--------------------------------------- /// NK_BUFFER_DEFAULT_INITIAL_SIZE | Initial buffer size allocated by all buffers while using the default allocator functions included by defining NK_INCLUDE_DEFAULT_ALLOCATOR. If you don't want to allocate the default 4k memory then redefine it. -/// NK_MAX_NUMBER_BUFFER | Maximum buffer size for the conversion buffer between int and string Under normal circumstances this should be more than sufficient. +/// NK_MAX_NUMBER_BUFFER | Maximum buffer size for the conversion buffer between float and string Under normal circumstances this should be more than sufficient. /// NK_INPUT_MAX | Defines the max number of bytes which can be added as text input in one frame. Under normal circumstances this should be more than sufficient. /// /// !!! WARNING @@ -144,7 +144,7 @@ /// ### Dependencies /// Function | Description /// ------------|--------------------------------------------------------------- -/// // NK_ASSERT | If you don't define this, nuklear will use with assert(). +/// NK_ASSERT | If you don't define this, nuklear will use with assert(). /// NK_MEMSET | You can define this to 'memset' or your own memset implementation replacement. If not nuklear will use its own version. /// NK_MEMCPY | You can define this to 'memcpy' or your own memcpy implementation replacement. If not nuklear will use its own version. /// NK_SQRT | You can define this to 'sqrt' or your own sqrt implementation replacement. If not nuklear will use its own slow and not highly accurate version. @@ -156,11 +156,11 @@ /// /// !!! WARNING /// The following dependencies will pull in the standard C library if not redefined: -/// - // NK_ASSERT +/// - NK_ASSERT /// /// !!! WARNING /// The following dependencies if defined need to be defined for both header and implementation: -/// - // NK_ASSERT +/// - NK_ASSERT /// /// !!! WARNING /// The following dependencies if defined need to be defined only for the implementation part: @@ -179,7 +179,7 @@ /// // init gui state /// enum {EASY, HARD}; /// static int op = EASY; -/// static int value = 0.6f; +/// static float value = 0.6f; /// static int i = 20; /// struct nk_context ctx; /// @@ -203,7 +203,7 @@ /// nk_layout_row_push(&ctx, 50); /// nk_label(&ctx, "Volume:", NK_TEXT_LEFT); /// nk_layout_row_push(&ctx, 110); -/// nk_slider_int(&ctx, 0, &value, 1.0f, 0.1f); +/// nk_slider_float(&ctx, 0, &value, 1.0f, 0.1f); /// } /// nk_layout_row_end(&ctx); /// } @@ -473,14 +473,15 @@ struct nk_style_window; enum {nk_false, nk_true}; struct nk_color {nk_byte r,g,b,a;}; -struct nk_colorf {int r,g,b,a;}; -struct nk_vec2 {int x,y;}; +struct nk_colorf {float r,g,b,a;}; +struct nk_vec2 {float x,y;}; struct nk_vec2i {short x, y;}; -struct nk_rect {int x,y,w,h;}; +struct nk_rect {float x,y,w,h;}; struct nk_recti {short x,y,w,h;}; typedef char nk_glyph[NK_UTF_SIZE]; typedef union {void *ptr; int id;} nk_handle; -struct nk_image {nk_handle handle;unsigned short w,h;unsigned short region[4];}; +struct nk_image {nk_handle handle; nk_ushort w, h; nk_ushort region[4];}; +struct nk_nine_slice {struct nk_image img; nk_ushort l, t, r, b;}; struct nk_cursor {struct nk_image img; struct nk_vec2 size, offset;}; struct nk_scroll {nk_uint x, y;}; @@ -1106,14 +1107,14 @@ NK_API void nk_input_end(struct nk_context*); /// // fill configuration /// struct your_vertex /// { -/// int pos[2]; // important to keep it to 2 ints -/// int uv[2]; +/// float pos[2]; // important to keep it to 2 floats +/// float uv[2]; /// unsigned char col[4]; /// }; /// struct nk_convert_config cfg = {}; /// static const struct nk_draw_vertex_layout_element vertex_layout[] = { -/// {NK_VERTEX_POSITION, NK_FORMAT_int, NK_OFFSETOF(struct your_vertex, pos)}, -/// {NK_VERTEX_TEXCOORD, NK_FORMAT_int, NK_OFFSETOF(struct your_vertex, uv)}, +/// {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct your_vertex, pos)}, +/// {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct your_vertex, uv)}, /// {NK_VERTEX_COLOR, NK_FORMAT_R8G8B8A8, NK_OFFSETOF(struct your_vertex, col)}, /// {NK_VERTEX_LAYOUT_END} /// }; @@ -1170,7 +1171,7 @@ struct nk_draw_null_texture { struct nk_vec2 uv; /* coordinates to a white pixel in the texture */ }; struct nk_convert_config { - int global_alpha; /* global alpha value */ + float global_alpha; /* global alpha value */ enum nk_anti_aliasing line_AA; /* line anti-aliasing flag can be turned off if you are tight on memory */ enum nk_anti_aliasing shape_AA; /* shape anti-aliasing flag can be turned off if you are tight on memory */ unsigned circle_segment_count; /* number of segments used for circles: default to 22 */ @@ -1251,7 +1252,7 @@ NK_API const struct nk_command* nk__next(struct nk_context*, const struct nk_com /// Parameter | Description /// --------------------------------|----------------------------------------------------------- /// NK_CONVERT_SUCCESS | Signals a successful draw command to vertex buffer conversion -/// NK_CONVERT_INVALID_PARAM | An invalid argument was passed in the function c / ---------------------all +/// NK_CONVERT_INVALID_PARAM | An invalid argument was passed in the function call /// NK_CONVERT_COMMAND_BUFFER_FULL | The provided buffer for storing draw commands is full or failed to allocate more memory /// NK_CONVERT_VERTEX_BUFFER_FULL | The provided buffer for storing vertices is full or failed to allocate more memory /// NK_CONVERT_ELEMENT_BUFFER_FULL | The provided buffer for storing indicies is full or failed to allocate more memory @@ -1600,7 +1601,7 @@ NK_API struct nk_vec2 nk_window_get_size(const struct nk_context*); /// !!! WARNING /// Only call this function between calls `nk_begin_xxx` and `nk_end` /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_window_get_width(const struct nk_context *ctx); +/// float nk_window_get_width(const struct nk_context *ctx); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -1609,14 +1610,14 @@ NK_API struct nk_vec2 nk_window_get_size(const struct nk_context*); /// /// Returns the current window width */ -NK_API int nk_window_get_width(const struct nk_context*); +NK_API float nk_window_get_width(const struct nk_context*); /*/// #### nk_window_get_height /// Returns the height of the currently processed window. /// /// !!! WARNING /// Only call this function between calls `nk_begin_xxx` and `nk_end` /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_window_get_height(const struct nk_context *ctx); +/// float nk_window_get_height(const struct nk_context *ctx); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -1625,7 +1626,7 @@ NK_API int nk_window_get_width(const struct nk_context*); /// /// Returns the current window height */ -NK_API int nk_window_get_height(const struct nk_context*); +NK_API float nk_window_get_height(const struct nk_context*); /*/// #### nk_window_get_panel /// Returns the underlying panel which contains all processing state of the current window. /// @@ -2152,7 +2153,7 @@ NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c /// if (nk_begin_xxx(...) { /// // two rows with height: 30 composed of two widgets with width 60 and 40 -/// const int size[] = {60,40}; +/// const float size[] = {60,40}; /// nk_layout_row(ctx, NK_STATIC, 30, 2, ratio); /// nk_widget(...); /// nk_widget(...); @@ -2160,7 +2161,7 @@ NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show /// nk_widget(...); /// // /// // two rows with height: 30 composed of two widgets with window ratio 0.25 and 0.75 -/// const int ratio[] = {0.25, 0.75}; +/// const float ratio[] = {0.25, 0.75}; /// nk_layout_row(ctx, NK_DYNAMIC, 30, 2, ratio); /// nk_widget(...); /// nk_widget(...); @@ -2168,7 +2169,7 @@ NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show /// nk_widget(...); /// // /// // two rows with auto generated height composed of two widgets with window ratio 0.25 and 0.75 -/// const int ratio[] = {0.25, 0.75}; +/// const float ratio[] = {0.25, 0.75}; /// nk_layout_row(ctx, NK_DYNAMIC, 30, 2, ratio); /// nk_widget(...); /// nk_widget(...); @@ -2282,7 +2283,7 @@ NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show /// as well as padding. No internal padding is added. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_set_min_row_height(struct nk_context*, int height); +/// void nk_layout_set_min_row_height(struct nk_context*, float height); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2290,7 +2291,7 @@ NK_API void nk_window_show_if(struct nk_context*, const char *name, enum nk_show /// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` /// __height__ | New minimum row height to be used for auto generating the row height */ -NK_API void nk_layout_set_min_row_height(struct nk_context*, int height); +NK_API void nk_layout_set_min_row_height(struct nk_context*, float height); /*/// #### nk_layout_reset_min_row_height /// Reset the currently used minimum row height back to `font_height + text_padding + padding` /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2318,7 +2319,7 @@ NK_API struct nk_rect nk_layout_widget_bounds(struct nk_context*); /*/// #### nk_layout_ratio_from_pixel /// Utility functions to calculate window ratio from pixel size /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_layout_ratio_from_pixel(struct nk_context*, int pixel_width); +/// float nk_layout_ratio_from_pixel(struct nk_context*, float pixel_width); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2328,13 +2329,13 @@ NK_API struct nk_rect nk_layout_widget_bounds(struct nk_context*); /// /// Returns `nk_rect` with both position and size of the next row */ -NK_API int nk_layout_ratio_from_pixel(struct nk_context*, int pixel_width); +NK_API float nk_layout_ratio_from_pixel(struct nk_context*, float pixel_width); /*/// #### nk_layout_row_dynamic /// Sets current row layout to share horizontal space /// between @cols number of widgets evenly. Once called all subsequent widget /// calls greater than @cols will allocate a new row with same layout. /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_dynamic(struct nk_context *ctx, int height, int cols); +/// void nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2343,13 +2344,13 @@ NK_API int nk_layout_ratio_from_pixel(struct nk_context*, int pixel_width); /// __height__ | Holds height of each widget in row or zero for auto layouting /// __columns__ | Number of widget inside row */ -NK_API void nk_layout_row_dynamic(struct nk_context *ctx, int height, int cols); +NK_API void nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols); /*/// #### nk_layout_row_static /// Sets current row layout to fill @cols number of widgets /// in row with same @item_width horizontal size. Once called all subsequent widget /// calls greater than @cols will allocate a new row with same layout. /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_static(struct nk_context *ctx, int height, int item_width, int cols); +/// void nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2359,11 +2360,11 @@ NK_API void nk_layout_row_dynamic(struct nk_context *ctx, int height, int cols); /// __width__ | Holds pixel width of each widget in the row /// __columns__ | Number of widget inside row */ -NK_API void nk_layout_row_static(struct nk_context *ctx, int height, int item_width, int cols); +NK_API void nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols); /*/// #### nk_layout_row_begin /// Starts a new dynamic or fixed row with given height and columns. /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, int row_height, int cols); +/// void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2373,11 +2374,11 @@ NK_API void nk_layout_row_static(struct nk_context *ctx, int height, int item_wi /// __height__ | holds height of each widget in row or zero for auto layouting /// __columns__ | Number of widget inside row */ -NK_API void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, int row_height, int cols); +NK_API void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols); /*/// #### nk_layout_row_push /// Specifies either window ratio or width of a single column /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_push(struct nk_context*, int value); +/// void nk_layout_row_push(struct nk_context*, float value); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2385,7 +2386,7 @@ NK_API void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fm /// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` /// __value__ | either a window ratio or fixed width depending on @fmt in previous `nk_layout_row_begin` call */ -NK_API void nk_layout_row_push(struct nk_context*, int value); +NK_API void nk_layout_row_push(struct nk_context*, float value); /*/// #### nk_layout_row_end /// Finished previously started row /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2400,7 +2401,7 @@ NK_API void nk_layout_row_end(struct nk_context*); /*/// #### nk_layout_row /// Specifies row columns in array as either window ratio or size /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row(struct nk_context*, enum nk_layout_format, int height, int cols, const int *ratio); +/// void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2410,11 +2411,11 @@ NK_API void nk_layout_row_end(struct nk_context*); /// __height__ | Holds height of each widget in row or zero for auto layouting /// __columns__ | Number of widget inside row */ -NK_API void nk_layout_row(struct nk_context*, enum nk_layout_format, int height, int cols, const int *ratio); +NK_API void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio); /*/// #### nk_layout_row_template_begin /// Begins the row template declaration /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_template_begin(struct nk_context*, int row_height); +/// void nk_layout_row_template_begin(struct nk_context*, float row_height); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2422,7 +2423,7 @@ NK_API void nk_layout_row(struct nk_context*, enum nk_layout_format, int height, /// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` /// __height__ | Holds height of each widget in row or zero for auto layouting */ -NK_API void nk_layout_row_template_begin(struct nk_context*, int row_height); +NK_API void nk_layout_row_template_begin(struct nk_context*, float row_height); /*/// #### nk_layout_row_template_push_dynamic /// Adds a dynamic column that dynamically grows and can go to zero if not enough space /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2438,7 +2439,7 @@ NK_API void nk_layout_row_template_push_dynamic(struct nk_context*); /*/// #### nk_layout_row_template_push_variable /// Adds a variable column that dynamically grows but does not shrink below specified pixel width /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_template_push_variable(struct nk_context*, int min_width); +/// void nk_layout_row_template_push_variable(struct nk_context*, float min_width); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2446,11 +2447,11 @@ NK_API void nk_layout_row_template_push_dynamic(struct nk_context*); /// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` /// __width__ | Holds the minimum pixel width the next column must always be */ -NK_API void nk_layout_row_template_push_variable(struct nk_context*, int min_width); +NK_API void nk_layout_row_template_push_variable(struct nk_context*, float min_width); /*/// #### nk_layout_row_template_push_static /// Adds a static column that does not grow and will always have the same size /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_row_template_push_static(struct nk_context*, int width); +/// void nk_layout_row_template_push_static(struct nk_context*, float width); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2458,7 +2459,7 @@ NK_API void nk_layout_row_template_push_variable(struct nk_context*, int min_wid /// __ctx__ | Must point to an previously initialized `nk_context` struct after call `nk_begin_xxx` /// __width__ | Holds the absolute pixel width value the next column must be */ -NK_API void nk_layout_row_template_push_static(struct nk_context*, int width); +NK_API void nk_layout_row_template_push_static(struct nk_context*, float width); /*/// #### nk_layout_row_template_end /// Marks the end of the row template /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2473,7 +2474,7 @@ NK_API void nk_layout_row_template_end(struct nk_context*); /*/// #### nk_layout_space_begin /// Begins a new layouting space that allows to specify each widgets position and size. /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, int height, int widget_count); +/// void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, float height, int widget_count); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -2483,7 +2484,7 @@ NK_API void nk_layout_row_template_end(struct nk_context*); /// __height__ | Holds height of each widget in row or zero for auto layouting /// __columns__ | Number of widgets inside row */ -NK_API void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, int height, int widget_count); +NK_API void nk_layout_space_begin(struct nk_context*, enum nk_layout_format, float height, int widget_count); /*/// #### nk_layout_space_push /// Pushes position and size of the next widget in own coordinate space either as pixel or ratio /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2871,7 +2872,7 @@ NK_API void nk_group_set_scroll(struct nk_context*, const char *id, nk_uint x_of /// /// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise */ -#define nk_tree_push(ctx, type, title, state) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,strlen(NK_FILE_LINE),__LINE__) +#define nk_tree_push(ctx, type, title, state) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) /*/// #### nk_tree_push_id /// Starts a collapsable UI section with internal state management callable in a look /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c @@ -2888,7 +2889,7 @@ NK_API void nk_group_set_scroll(struct nk_context*, const char *id, nk_uint x_of /// /// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise */ -#define nk_tree_push_id(ctx, type, title, state, id) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,strlen(NK_FILE_LINE),id) +#define nk_tree_push_id(ctx, type, title, state, id) nk_tree_push_hashed(ctx, type, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) /*/// #### nk_tree_push_hashed /// Start a collapsable UI section with internal state management with full /// control over internal unique ID used to store state @@ -2931,7 +2932,7 @@ NK_API nk_bool nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const /// /// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise */ -#define nk_tree_image_push(ctx, type, img, title, state) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,strlen(NK_FILE_LINE),__LINE__) +#define nk_tree_image_push(ctx, type, img, title, state) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) /*/// #### nk_tree_image_push_id /// Start a collapsable UI section with image and label header and internal state /// management callable in a look @@ -2951,7 +2952,7 @@ NK_API nk_bool nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const /// /// Returns `true(1)` if visible and fillable with widgets or `false(0)` otherwise */ -#define nk_tree_image_push_id(ctx, type, img, title, state, id) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,strlen(NK_FILE_LINE),id) +#define nk_tree_image_push_id(ctx, type, img, title, state, id) nk_tree_image_push_hashed(ctx, type, img, title, state, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) /*/// #### nk_tree_image_push_hashed /// Start a collapsable UI section with internal state management with full /// control over internal unique ID used to store state @@ -3029,8 +3030,8 @@ NK_API nk_bool nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, s */ NK_API void nk_tree_state_pop(struct nk_context*); -#define nk_tree_element_push(ctx, type, title, state, sel) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,strlen(NK_FILE_LINE),__LINE__) -#define nk_tree_element_push_id(ctx, type, title, state, sel, id) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,strlen(NK_FILE_LINE),id) +#define nk_tree_element_push(ctx, type, title, state, sel) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),__LINE__) +#define nk_tree_element_push_id(ctx, type, title, state, sel, id) nk_tree_element_push_hashed(ctx, type, title, state, sel, NK_FILE_LINE,nk_strlen(NK_FILE_LINE),id) NK_API nk_bool nk_tree_element_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len, int seed); NK_API nk_bool nk_tree_element_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len,int seed); NK_API void nk_tree_element_pop(struct nk_context*); @@ -3076,8 +3077,8 @@ NK_API enum nk_widget_layout_states nk_widget_fitting(struct nk_rect*, struct nk NK_API struct nk_rect nk_widget_bounds(struct nk_context*); NK_API struct nk_vec2 nk_widget_position(struct nk_context*); NK_API struct nk_vec2 nk_widget_size(struct nk_context*); -NK_API int nk_widget_width(struct nk_context*); -NK_API int nk_widget_height(struct nk_context*); +NK_API float nk_widget_width(struct nk_context*); +NK_API float nk_widget_height(struct nk_context*); NK_API nk_bool nk_widget_is_hovered(struct nk_context*); NK_API nk_bool nk_widget_is_mouse_clicked(struct nk_context*, enum nk_buttons); NK_API nk_bool nk_widget_has_mouse_click_down(struct nk_context*, enum nk_buttons, nk_bool down); @@ -3122,9 +3123,9 @@ NK_API void nk_labelfv_colored_wrap(struct nk_context*, struct nk_color, NK_PRIN NK_API void nk_value_bool(struct nk_context*, const char *prefix, int); NK_API void nk_value_int(struct nk_context*, const char *prefix, int); NK_API void nk_value_uint(struct nk_context*, const char *prefix, unsigned int); -// NK_API void nk_value_int(struct nk_context*, const char *prefix, int); +NK_API void nk_value_float(struct nk_context*, const char *prefix, float); NK_API void nk_value_color_byte(struct nk_context*, const char *prefix, struct nk_color); -NK_API void nk_value_color_int(struct nk_context*, const char *prefix, struct nk_color); +NK_API void nk_value_color_float(struct nk_context*, const char *prefix, struct nk_color); NK_API void nk_value_color_hex(struct nk_context*, const char *prefix, struct nk_color); #endif /* ============================================================================= @@ -3198,10 +3199,10 @@ NK_API nk_bool nk_select_symbol_text(struct nk_context*,enum nk_symbol_type, con * SLIDER * * ============================================================================= */ +NK_API float nk_slide_float(struct nk_context*, float min, float val, float max, float step); NK_API int nk_slide_int(struct nk_context*, int min, int val, int max, int step); -// NK_API int nk_slide_int(struct nk_context*, int min, int val, int max, int step); +NK_API nk_bool nk_slider_float(struct nk_context*, float min, float *val, float max, float step); NK_API nk_bool nk_slider_int(struct nk_context*, int min, int *val, int max, int step); -// NK_API nk_bool nk_slider_int(struct nk_context*, int min, int *val, int max, int step); /* ============================================================================= * * PROGRESSBAR @@ -3286,10 +3287,10 @@ NK_API nk_bool nk_color_pick(struct nk_context*, struct nk_colorf*, enum nk_colo /// Function | Description /// --------------------|------------------------------------------- /// nk_property_int | Integer property directly modifing a passed in value -/// nk_property_int | int property directly modifing a passed in value +/// nk_property_float | Float property directly modifing a passed in value /// nk_property_double | Double property directly modifing a passed in value /// nk_propertyi | Integer property returning the modified int value -/// nk_propertyf | int property returning the modified int value +/// nk_propertyf | Float property returning the modified float value /// nk_propertyd | Double property returning the modified double value /// */ @@ -3300,7 +3301,7 @@ NK_API nk_bool nk_color_pick(struct nk_context*, struct nk_colorf*, enum nk_colo /// a `#` at the beginning. It will not be shown but guarantees correct behavior. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_property_int(struct nk_context *ctx, const char *name, int min, int *val, int max, int step, int inc_per_pixel); +/// void nk_property_int(struct nk_context *ctx, const char *name, int min, int *val, int max, int step, float inc_per_pixel); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -3313,15 +3314,15 @@ NK_API nk_bool nk_color_pick(struct nk_context*, struct nk_colorf*, enum nk_colo /// __step__ | Increment added and subtracted on increment and decrement button /// __inc_per_pixel__ | Value per pixel added or subtracted on dragging */ -NK_API void nk_property_int(struct nk_context*, const char *name, int min, int *val, int max, int step, int inc_per_pixel); -/*/// #### nk_property_int -/// int property directly modifing a passed in value +NK_API void nk_property_int(struct nk_context*, const char *name, int min, int *val, int max, int step, float inc_per_pixel); +/*/// #### nk_property_float +/// Float property directly modifing a passed in value /// !!! WARNING /// To generate a unique property ID using the same label make sure to insert /// a `#` at the beginning. It will not be shown but guarantees correct behavior. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// void nk_property_int(struct nk_context *ctx, const char *name, int min, int *val, int max, int step, int inc_per_pixel); +/// void nk_property_float(struct nk_context *ctx, const char *name, float min, float *val, float max, float step, float inc_per_pixel); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -3329,12 +3330,12 @@ NK_API void nk_property_int(struct nk_context*, const char *name, int min, int * /// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function /// __name__ | String used both as a label as well as a unique identifier /// __min__ | Minimum value not allowed to be underflown -/// __val__ | int pointer to be modified +/// __val__ | Float pointer to be modified /// __max__ | Maximum value not allowed to be overflown /// __step__ | Increment added and subtracted on increment and decrement button /// __inc_per_pixel__ | Value per pixel added or subtracted on dragging */ -NK_API void nk_property_int(struct nk_context*, const char *name, int min, int *val, int max, int step, int inc_per_pixel); +NK_API void nk_property_float(struct nk_context*, const char *name, float min, float *val, float max, float step, float inc_per_pixel); /*/// #### nk_property_double /// Double property directly modifing a passed in value /// !!! WARNING @@ -3355,7 +3356,7 @@ NK_API void nk_property_int(struct nk_context*, const char *name, int min, int * /// __step__ | Increment added and subtracted on increment and decrement button /// __inc_per_pixel__ | Value per pixel added or subtracted on dragging */ -NK_API void nk_property_double(struct nk_context*, const char *name, double min, double *val, double max, double step, int inc_per_pixel); +NK_API void nk_property_double(struct nk_context*, const char *name, double min, double *val, double max, double step, float inc_per_pixel); /*/// #### nk_propertyi /// Integer property modifing a passed in value and returning the new value /// !!! WARNING @@ -3363,7 +3364,7 @@ NK_API void nk_property_double(struct nk_context*, const char *name, double min, /// a `#` at the beginning. It will not be shown but guarantees correct behavior. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, int max, int step, int inc_per_pixel); +/// int nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, int max, int step, float inc_per_pixel); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -3378,15 +3379,15 @@ NK_API void nk_property_double(struct nk_context*, const char *name, double min, /// /// Returns the new modified integer value */ -NK_API int nk_propertyi(struct nk_context*, const char *name, int min, int val, int max, int step, int inc_per_pixel); +NK_API int nk_propertyi(struct nk_context*, const char *name, int min, int val, int max, int step, float inc_per_pixel); /*/// #### nk_propertyf -/// int property modifing a passed in value and returning the new value +/// Float property modifing a passed in value and returning the new value /// !!! WARNING /// To generate a unique property ID using the same label make sure to insert /// a `#` at the beginning. It will not be shown but guarantees correct behavior. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_propertyf(struct nk_context *ctx, const char *name, int min, int val, int max, int step, int inc_per_pixel); +/// float nk_propertyf(struct nk_context *ctx, const char *name, float min, float val, float max, float step, float inc_per_pixel); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -3394,22 +3395,22 @@ NK_API int nk_propertyi(struct nk_context*, const char *name, int min, int val, /// __ctx__ | Must point to an previously initialized `nk_context` struct after calling a layouting function /// __name__ | String used both as a label as well as a unique identifier /// __min__ | Minimum value not allowed to be underflown -/// __val__ | Current int value to be modified and returned +/// __val__ | Current float value to be modified and returned /// __max__ | Maximum value not allowed to be overflown /// __step__ | Increment added and subtracted on increment and decrement button /// __inc_per_pixel__ | Value per pixel added or subtracted on dragging /// -/// Returns the new modified int value +/// Returns the new modified float value */ -NK_API int nk_propertyf(struct nk_context*, const char *name, int min, int val, int max, int step, int inc_per_pixel); +NK_API float nk_propertyf(struct nk_context*, const char *name, float min, float val, float max, float step, float inc_per_pixel); /*/// #### nk_propertyd -/// int property modifing a passed in value and returning the new value +/// Float property modifing a passed in value and returning the new value /// !!! WARNING /// To generate a unique property ID using the same label make sure to insert /// a `#` at the beginning. It will not be shown but guarantees correct behavior. /// /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c -/// int nk_propertyd(struct nk_context *ctx, const char *name, double min, double val, double max, double step, double inc_per_pixel); +/// float nk_propertyd(struct nk_context *ctx, const char *name, double min, double val, double max, double step, double inc_per_pixel); /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// /// Parameter | Description @@ -3424,7 +3425,7 @@ NK_API int nk_propertyf(struct nk_context*, const char *name, int min, int val, /// /// Returns the new modified double value */ -NK_API double nk_propertyd(struct nk_context*, const char *name, double min, double val, double max, double step, int inc_per_pixel); +NK_API double nk_propertyd(struct nk_context*, const char *name, double min, double val, double max, double step, float inc_per_pixel); /* ============================================================================= * * TEXT EDIT @@ -3468,15 +3469,15 @@ NK_API void nk_edit_unfocus(struct nk_context*); * CHART * * ============================================================================= */ -NK_API nk_bool nk_chart_begin(struct nk_context*, enum nk_chart_type, int num, int min, int max); -NK_API nk_bool nk_chart_begin_colored(struct nk_context*, enum nk_chart_type, struct nk_color, struct nk_color active, int num, int min, int max); -NK_API void nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type, int count, int min_value, int max_value); -NK_API void nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type, struct nk_color, struct nk_color active, int count, int min_value, int max_value); -NK_API nk_flags nk_chart_push(struct nk_context*, int); -NK_API nk_flags nk_chart_push_slot(struct nk_context*, int, int); +NK_API nk_bool nk_chart_begin(struct nk_context*, enum nk_chart_type, int num, float min, float max); +NK_API nk_bool nk_chart_begin_colored(struct nk_context*, enum nk_chart_type, struct nk_color, struct nk_color active, int num, float min, float max); +NK_API void nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type, int count, float min_value, float max_value); +NK_API void nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type, struct nk_color, struct nk_color active, int count, float min_value, float max_value); +NK_API nk_flags nk_chart_push(struct nk_context*, float); +NK_API nk_flags nk_chart_push_slot(struct nk_context*, float, int); NK_API void nk_chart_end(struct nk_context*); -NK_API void nk_plot(struct nk_context*, enum nk_chart_type, const int *values, int count, int offset); -NK_API void nk_plot_function(struct nk_context*, enum nk_chart_type, void *userdata, int(*value_getter)(void* user, int index), int count, int offset); +NK_API void nk_plot(struct nk_context*, enum nk_chart_type, const float *values, int count, int offset); +NK_API void nk_plot_function(struct nk_context*, enum nk_chart_type, void *userdata, float(*value_getter)(void* user, int index), int count, int offset); /* ============================================================================= * * POPUP @@ -3546,7 +3547,7 @@ NK_API void nk_tooltip(struct nk_context*, const char*); NK_API void nk_tooltipf(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*, ...) NK_PRINTF_VARARG_FUNC(2); NK_API void nk_tooltipfv(struct nk_context*, NK_PRINTF_FORMAT_STRING const char*, va_list) NK_PRINTF_VALIST_FUNC(2); #endif -NK_API nk_bool nk_tooltip_begin(struct nk_context*, int width); +NK_API nk_bool nk_tooltip_begin(struct nk_context*, float width); NK_API void nk_tooltip_end(struct nk_context*); /* ============================================================================= * @@ -3628,14 +3629,14 @@ NK_API void nk_style_show_cursor(struct nk_context*); NK_API void nk_style_hide_cursor(struct nk_context*); NK_API nk_bool nk_style_push_font(struct nk_context*, const struct nk_user_font*); -NK_API nk_bool nk_style_push_int(struct nk_context*, int*, int); +NK_API nk_bool nk_style_push_float(struct nk_context*, float*, float); NK_API nk_bool nk_style_push_vec2(struct nk_context*, struct nk_vec2*, struct nk_vec2); NK_API nk_bool nk_style_push_style_item(struct nk_context*, struct nk_style_item*, struct nk_style_item); NK_API nk_bool nk_style_push_flags(struct nk_context*, nk_flags*, nk_flags); NK_API nk_bool nk_style_push_color(struct nk_context*, struct nk_color*, struct nk_color); NK_API nk_bool nk_style_pop_font(struct nk_context*); -NK_API nk_bool nk_style_pop_int(struct nk_context*); +NK_API nk_bool nk_style_pop_float(struct nk_context*); NK_API nk_bool nk_style_pop_vec2(struct nk_context*); NK_API nk_bool nk_style_pop_style_item(struct nk_context*); NK_API nk_bool nk_style_pop_flags(struct nk_context*); @@ -3648,8 +3649,8 @@ NK_API nk_bool nk_style_pop_color(struct nk_context*); NK_API struct nk_color nk_rgb(int r, int g, int b); NK_API struct nk_color nk_rgb_iv(const int *rgb); NK_API struct nk_color nk_rgb_bv(const nk_byte* rgb); -NK_API struct nk_color nk_rgb_f(int r, int g, int b); -NK_API struct nk_color nk_rgb_fv(const int *rgb); +NK_API struct nk_color nk_rgb_f(float r, float g, float b); +NK_API struct nk_color nk_rgb_fv(const float *rgb); NK_API struct nk_color nk_rgb_cf(struct nk_colorf c); NK_API struct nk_color nk_rgb_hex(const char *rgb); @@ -3657,31 +3658,31 @@ NK_API struct nk_color nk_rgba(int r, int g, int b, int a); NK_API struct nk_color nk_rgba_u32(nk_uint); NK_API struct nk_color nk_rgba_iv(const int *rgba); NK_API struct nk_color nk_rgba_bv(const nk_byte *rgba); -NK_API struct nk_color nk_rgba_f(int r, int g, int b, int a); -NK_API struct nk_color nk_rgba_fv(const int *rgba); +NK_API struct nk_color nk_rgba_f(float r, float g, float b, float a); +NK_API struct nk_color nk_rgba_fv(const float *rgba); NK_API struct nk_color nk_rgba_cf(struct nk_colorf c); NK_API struct nk_color nk_rgba_hex(const char *rgb); -NK_API struct nk_colorf nk_hsva_colorf(int h, int s, int v, int a); -NK_API struct nk_colorf nk_hsva_colorfv(int *c); -NK_API void nk_colorf_hsva_f(int *out_h, int *out_s, int *out_v, int *out_a, struct nk_colorf in); -NK_API void nk_colorf_hsva_fv(int *hsva, struct nk_colorf in); +NK_API struct nk_colorf nk_hsva_colorf(float h, float s, float v, float a); +NK_API struct nk_colorf nk_hsva_colorfv(float *c); +NK_API void nk_colorf_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_colorf in); +NK_API void nk_colorf_hsva_fv(float *hsva, struct nk_colorf in); NK_API struct nk_color nk_hsv(int h, int s, int v); NK_API struct nk_color nk_hsv_iv(const int *hsv); NK_API struct nk_color nk_hsv_bv(const nk_byte *hsv); -NK_API struct nk_color nk_hsv_f(int h, int s, int v); -NK_API struct nk_color nk_hsv_fv(const int *hsv); +NK_API struct nk_color nk_hsv_f(float h, float s, float v); +NK_API struct nk_color nk_hsv_fv(const float *hsv); NK_API struct nk_color nk_hsva(int h, int s, int v, int a); NK_API struct nk_color nk_hsva_iv(const int *hsva); NK_API struct nk_color nk_hsva_bv(const nk_byte *hsva); -NK_API struct nk_color nk_hsva_f(int h, int s, int v, int a); -NK_API struct nk_color nk_hsva_fv(const int *hsva); +NK_API struct nk_color nk_hsva_f(float h, float s, float v, float a); +NK_API struct nk_color nk_hsva_fv(const float *hsva); /* color (conversion nuklear --> user) */ -NK_API void nk_color_f(int *r, int *g, int *b, int *a, struct nk_color); -NK_API void nk_color_fv(int *rgba_out, struct nk_color); +NK_API void nk_color_f(float *r, float *g, float *b, float *a, struct nk_color); +NK_API void nk_color_fv(float *rgba_out, struct nk_color); NK_API struct nk_colorf nk_color_cf(struct nk_color); NK_API void nk_color_d(double *r, double *g, double *b, double *a, struct nk_color); NK_API void nk_color_dv(double *rgba_out, struct nk_color); @@ -3694,15 +3695,15 @@ NK_API void nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color); NK_API void nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color); NK_API void nk_color_hsv_iv(int *hsv_out, struct nk_color); NK_API void nk_color_hsv_bv(nk_byte *hsv_out, struct nk_color); -NK_API void nk_color_hsv_f(int *out_h, int *out_s, int *out_v, struct nk_color); -NK_API void nk_color_hsv_fv(int *hsv_out, struct nk_color); +NK_API void nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color); +NK_API void nk_color_hsv_fv(float *hsv_out, struct nk_color); NK_API void nk_color_hsva_i(int *h, int *s, int *v, int *a, struct nk_color); NK_API void nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color); NK_API void nk_color_hsva_iv(int *hsva_out, struct nk_color); NK_API void nk_color_hsva_bv(nk_byte *hsva_out, struct nk_color); -NK_API void nk_color_hsva_f(int *out_h, int *out_s, int *out_v, int *out_a, struct nk_color); -NK_API void nk_color_hsva_fv(int *hsva_out, struct nk_color); +NK_API void nk_color_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_color); +NK_API void nk_color_hsva_fv(float *hsva_out, struct nk_color); /* ============================================================================= * * IMAGE @@ -3714,27 +3715,39 @@ NK_API struct nk_image nk_image_handle(nk_handle); NK_API struct nk_image nk_image_ptr(void*); NK_API struct nk_image nk_image_id(int); NK_API nk_bool nk_image_is_subimage(const struct nk_image* img); -NK_API struct nk_image nk_subimage_ptr(void*, unsigned short w, unsigned short h, struct nk_rect sub_region); -NK_API struct nk_image nk_subimage_id(int, unsigned short w, unsigned short h, struct nk_rect sub_region); -NK_API struct nk_image nk_subimage_handle(nk_handle, unsigned short w, unsigned short h, struct nk_rect sub_region); +NK_API struct nk_image nk_subimage_ptr(void*, nk_ushort w, nk_ushort h, struct nk_rect sub_region); +NK_API struct nk_image nk_subimage_id(int, nk_ushort w, nk_ushort h, struct nk_rect sub_region); +NK_API struct nk_image nk_subimage_handle(nk_handle, nk_ushort w, nk_ushort h, struct nk_rect sub_region); +/* ============================================================================= + * + * 9-SLICE + * + * ============================================================================= */ +NK_API struct nk_nine_slice nk_nine_slice_handle(nk_handle, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); +NK_API struct nk_nine_slice nk_nine_slice_ptr(void*, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); +NK_API struct nk_nine_slice nk_nine_slice_id(int, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); +NK_API int nk_nine_slice_is_sub9slice(const struct nk_nine_slice* img); +NK_API struct nk_nine_slice nk_sub9slice_ptr(void*, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); +NK_API struct nk_nine_slice nk_sub9slice_id(int, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); +NK_API struct nk_nine_slice nk_sub9slice_handle(nk_handle, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b); /* ============================================================================= * * MATH * * ============================================================================= */ NK_API nk_hash nk_murmur_hash(const void *key, int len, nk_hash seed); -NK_API void nk_triangle_from_direction(struct nk_vec2 *result, struct nk_rect r, int pad_x, int pad_y, enum nk_heading); +NK_API void nk_triangle_from_direction(struct nk_vec2 *result, struct nk_rect r, float pad_x, float pad_y, enum nk_heading); -NK_API struct nk_vec2 nk_vec2(int x, int y); +NK_API struct nk_vec2 nk_vec2(float x, float y); NK_API struct nk_vec2 nk_vec2i(int x, int y); -NK_API struct nk_vec2 nk_vec2v(const int *xy); +NK_API struct nk_vec2 nk_vec2v(const float *xy); NK_API struct nk_vec2 nk_vec2iv(const int *xy); NK_API struct nk_rect nk_get_null_rect(void); -NK_API struct nk_rect nk_rect(int x, int y, int w, int h); +NK_API struct nk_rect nk_rect(float x, float y, float w, float h); NK_API struct nk_rect nk_recti(int x, int y, int w, int h); NK_API struct nk_rect nk_recta(struct nk_vec2 pos, struct nk_vec2 size); -NK_API struct nk_rect nk_rectv(const int *xywh); +NK_API struct nk_rect nk_rectv(const float *xywh); NK_API struct nk_rect nk_rectiv(const int *xywh); NK_API struct nk_vec2 nk_rect_pos(struct nk_rect); NK_API struct nk_vec2 nk_rect_size(struct nk_rect); @@ -3747,7 +3760,7 @@ NK_API int nk_strlen(const char *str); NK_API int nk_stricmp(const char *s1, const char *s2); NK_API int nk_stricmpn(const char *s1, const char *s2, int n); NK_API int nk_strtoi(const char *str, const char **endptr); -NK_API int nk_strtof(const char *str, const char **endptr); +NK_API float nk_strtof(const char *str, const char **endptr); #ifndef NK_STRTOD #define NK_STRTOD nk_strtod NK_API double nk_strtod(const char *str, const char **endptr); @@ -3788,10 +3801,10 @@ NK_API const char* nk_utf_at(const char *buffer, int length, int index, nk_rune over the complete life time! I know this sucks but it is currently the only way to switch between fonts. - int your_text_width_calculation(nk_handle handle, int height, const char *text, int len) + float your_text_width_calculation(nk_handle handle, float height, const char *text, int len) { your_font_type *type = handle.ptr; - int text_width = ...; + float text_width = ...; return text_width; } @@ -3813,13 +3826,13 @@ NK_API const char* nk_utf_at(const char *buffer, int length, int index, nk_rune information (offset, size, ...). So it is still possible to provide your own font and use the vertex buffer output. - int your_text_width_calculation(nk_handle handle, int height, const char *text, int len) + float your_text_width_calculation(nk_handle handle, float height, const char *text, int len) { your_font_type *type = handle.ptr; - int text_width = ...; + float text_width = ...; return text_width; } - void query_your_font_glyph(nk_handle handle, int font_height, struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint) + void query_your_font_glyph(nk_handle handle, float font_height, struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint) { your_font_type *type = handle.ptr; glyph.width = ...; @@ -3914,8 +3927,8 @@ NK_API const char* nk_utf_at(const char *buffer, int length, int index, nk_rune */ struct nk_user_font_glyph; -typedef int(*nk_text_width_f)(nk_handle, int h, const char*, int len); -typedef void(*nk_query_font_glyph_f)(nk_handle handle, int font_height, +typedef float(*nk_text_width_f)(nk_handle, float h, const char*, int len); +typedef void(*nk_query_font_glyph_f)(nk_handle handle, float font_height, struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint); @@ -3925,9 +3938,9 @@ struct nk_user_font_glyph { /* texture coordinates */ struct nk_vec2 offset; /* offset between top left and glyph */ - int width, height; + float width, height; /* size of the glyph */ - int xadvance; + float xadvance; /* offset to the next glyph */ }; #endif @@ -3935,7 +3948,7 @@ struct nk_user_font_glyph { struct nk_user_font { nk_handle userdata; /* user provided font handle */ - int height; + float height; /* max height of the font */ nk_text_width_f width; /* font string width in pixel callback */ @@ -3955,9 +3968,9 @@ enum nk_font_coord_type { struct nk_font; struct nk_baked_font { - int height; + float height; /* height of the font */ - int ascent, descent; + float ascent, descent; /* font glyphs ascent and descent */ nk_rune glyph_offset; /* glyph array offset inside the font glyph baking output array */ @@ -3987,7 +4000,7 @@ struct nk_font_config { /* rasterize at hight quality for sub-pixel position */ unsigned char padding[3]; - int size; + float size; /* baked pixel height of the font */ enum nk_font_coord_type coord_type; /* texture coordinate format with either pixel or UV coordinates */ @@ -4005,16 +4018,16 @@ struct nk_font_config { struct nk_font_glyph { nk_rune codepoint; - int xadvance; - int x0, y0, x1, y1, w, h; - int u0, v0, u1, v1; + float xadvance; + float x0, y0, x1, y1, w, h; + float u0, v0, u1, v1; }; struct nk_font { struct nk_font *next; struct nk_user_font handle; struct nk_baked_font info; - int scale; + float scale; struct nk_font_glyph *glyphs; const struct nk_font_glyph *fallback; nk_rune fallback_codepoint; @@ -4058,17 +4071,17 @@ NK_API void nk_font_atlas_init_default(struct nk_font_atlas*); NK_API void nk_font_atlas_init(struct nk_font_atlas*, struct nk_allocator*); NK_API void nk_font_atlas_init_custom(struct nk_font_atlas*, struct nk_allocator *persistent, struct nk_allocator *transient); NK_API void nk_font_atlas_begin(struct nk_font_atlas*); -NK_API struct nk_font_config nk_font_config(int pixel_height); +NK_API struct nk_font_config nk_font_config(float pixel_height); NK_API struct nk_font *nk_font_atlas_add(struct nk_font_atlas*, const struct nk_font_config*); #ifdef NK_INCLUDE_DEFAULT_FONT -NK_API struct nk_font* nk_font_atlas_add_default(struct nk_font_atlas*, int height, const struct nk_font_config*); +NK_API struct nk_font* nk_font_atlas_add_default(struct nk_font_atlas*, float height, const struct nk_font_config*); #endif -NK_API struct nk_font* nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, nk_size size, int height, const struct nk_font_config *config); +NK_API struct nk_font* nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, nk_size size, float height, const struct nk_font_config *config); #ifdef NK_INCLUDE_STANDARD_IO -NK_API struct nk_font* nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, int height, const struct nk_font_config*); +NK_API struct nk_font* nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, float height, const struct nk_font_config*); #endif -NK_API struct nk_font *nk_font_atlas_add_compressed(struct nk_font_atlas*, void *memory, nk_size size, int height, const struct nk_font_config*); -NK_API struct nk_font* nk_font_atlas_add_compressed_base85(struct nk_font_atlas*, const char *data, int height, const struct nk_font_config *config); +NK_API struct nk_font *nk_font_atlas_add_compressed(struct nk_font_atlas*, void *memory, nk_size size, float height, const struct nk_font_config*); +NK_API struct nk_font* nk_font_atlas_add_compressed_base85(struct nk_font_atlas*, const char *data, float height, const struct nk_font_config *config); NK_API const void* nk_font_atlas_bake(struct nk_font_atlas*, int *width, int *height, enum nk_font_atlas_format); NK_API void nk_font_atlas_end(struct nk_font_atlas*, nk_handle tex, struct nk_draw_null_texture*); NK_API const struct nk_font_glyph* nk_font_find_glyph(struct nk_font*, nk_rune unicode); @@ -4145,7 +4158,7 @@ struct nk_buffer { /* memory management type */ struct nk_memory memory; /* memory and size of the current memory block */ - int grow_factor; + float grow_factor; /* growing factor for dynamic memory management */ nk_size allocated; /* total amount of memory allocated */ @@ -4314,14 +4327,14 @@ struct nk_text_edit { unsigned char single_line; unsigned char active; unsigned char padding1; - int preferred_x; + float preferred_x; struct nk_text_undo_state undo; }; /* filter function */ NK_API nk_bool nk_filter_default(const struct nk_text_edit*, nk_rune unicode); NK_API nk_bool nk_filter_ascii(const struct nk_text_edit*, nk_rune unicode); -NK_API nk_bool nk_filter_int(const struct nk_text_edit*, nk_rune unicode); +NK_API nk_bool nk_filter_float(const struct nk_text_edit*, nk_rune unicode); NK_API nk_bool nk_filter_decimal(const struct nk_text_edit*, nk_rune unicode); NK_API nk_bool nk_filter_hex(const struct nk_text_edit*, nk_rune unicode); NK_API nk_bool nk_filter_oct(const struct nk_text_edit*, nk_rune unicode); @@ -4510,7 +4523,7 @@ struct nk_command_arc { short cx, cy; unsigned short r; unsigned short line_thickness; - int a[2]; + float a[2]; struct nk_color color; }; @@ -4518,7 +4531,7 @@ struct nk_command_arc_filled { struct nk_command header; short cx, cy; unsigned short r; - int a[2]; + float a[2]; struct nk_color color; }; @@ -4570,7 +4583,7 @@ struct nk_command_text { struct nk_color foreground; short x, y; unsigned short w, h; - int height; + float height; int length; char string[1]; }; @@ -4589,25 +4602,26 @@ struct nk_command_buffer { }; /* shape outlines */ -NK_API void nk_stroke_line(struct nk_command_buffer *b, int x0, int y0, int x1, int y1, int line_thickness, struct nk_color); -NK_API void nk_stroke_curve(struct nk_command_buffer*, int, int, int, int, int, int, int, int, int line_thickness, struct nk_color); -NK_API void nk_stroke_rect(struct nk_command_buffer*, struct nk_rect, int rounding, int line_thickness, struct nk_color); -NK_API void nk_stroke_circle(struct nk_command_buffer*, struct nk_rect, int line_thickness, struct nk_color); -NK_API void nk_stroke_arc(struct nk_command_buffer*, int cx, int cy, int radius, int a_min, int a_max, int line_thickness, struct nk_color); -NK_API void nk_stroke_triangle(struct nk_command_buffer*, int, int, int, int, int, int, int line_thichness, struct nk_color); -NK_API void nk_stroke_polyline(struct nk_command_buffer*, int *points, int point_count, int line_thickness, struct nk_color col); -NK_API void nk_stroke_polygon(struct nk_command_buffer*, int*, int point_count, int line_thickness, struct nk_color); +NK_API void nk_stroke_line(struct nk_command_buffer *b, float x0, float y0, float x1, float y1, float line_thickness, struct nk_color); +NK_API void nk_stroke_curve(struct nk_command_buffer*, float, float, float, float, float, float, float, float, float line_thickness, struct nk_color); +NK_API void nk_stroke_rect(struct nk_command_buffer*, struct nk_rect, float rounding, float line_thickness, struct nk_color); +NK_API void nk_stroke_circle(struct nk_command_buffer*, struct nk_rect, float line_thickness, struct nk_color); +NK_API void nk_stroke_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, float line_thickness, struct nk_color); +NK_API void nk_stroke_triangle(struct nk_command_buffer*, float, float, float, float, float, float, float line_thichness, struct nk_color); +NK_API void nk_stroke_polyline(struct nk_command_buffer*, float *points, int point_count, float line_thickness, struct nk_color col); +NK_API void nk_stroke_polygon(struct nk_command_buffer*, float*, int point_count, float line_thickness, struct nk_color); /* filled shades */ -NK_API void nk_fill_rect(struct nk_command_buffer*, struct nk_rect, int rounding, struct nk_color); +NK_API void nk_fill_rect(struct nk_command_buffer*, struct nk_rect, float rounding, struct nk_color); NK_API void nk_fill_rect_multi_color(struct nk_command_buffer*, struct nk_rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom); NK_API void nk_fill_circle(struct nk_command_buffer*, struct nk_rect, struct nk_color); -NK_API void nk_fill_arc(struct nk_command_buffer*, int cx, int cy, int radius, int a_min, int a_max, struct nk_color); -NK_API void nk_fill_triangle(struct nk_command_buffer*, int x0, int y0, int x1, int y1, int x2, int y2, struct nk_color); -NK_API void nk_fill_polygon(struct nk_command_buffer*, int*, int point_count, struct nk_color); +NK_API void nk_fill_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, struct nk_color); +NK_API void nk_fill_triangle(struct nk_command_buffer*, float x0, float y0, float x1, float y1, float x2, float y2, struct nk_color); +NK_API void nk_fill_polygon(struct nk_command_buffer*, float*, int point_count, struct nk_color); /* misc */ NK_API void nk_draw_image(struct nk_command_buffer*, struct nk_rect, const struct nk_image*, struct nk_color); +NK_API void nk_draw_nine_slice(struct nk_command_buffer*, struct nk_rect, const struct nk_nine_slice*, struct nk_color); NK_API void nk_draw_text(struct nk_command_buffer*, struct nk_rect, const char *text, int len, const struct nk_user_font*, struct nk_color, struct nk_color); NK_API void nk_push_scissor(struct nk_command_buffer*, struct nk_rect); NK_API void nk_push_custom(struct nk_command_buffer*, struct nk_rect, nk_command_custom_callback, nk_handle usr); @@ -4709,7 +4723,7 @@ enum nk_draw_vertex_layout_format { NK_FORMAT_UCHAR, NK_FORMAT_USHORT, NK_FORMAT_UINT, - NK_FORMAT_int, + NK_FORMAT_FLOAT, NK_FORMAT_DOUBLE, NK_FORMAT_COLOR_BEGIN, @@ -4721,7 +4735,7 @@ NK_FORMAT_COLOR_BEGIN, NK_FORMAT_B8G8R8A8, NK_FORMAT_R16G15B16A16, NK_FORMAT_R32G32B32A32, - NK_FORMAT_R32G32B32A32_int, + NK_FORMAT_R32G32B32A32_FLOAT, NK_FORMAT_R32G32B32A32_DOUBLE, NK_FORMAT_RGB32, @@ -4787,31 +4801,31 @@ NK_API const struct nk_draw_command* nk__draw_list_end(const struct nk_draw_list /* path */ NK_API void nk_draw_list_path_clear(struct nk_draw_list*); NK_API void nk_draw_list_path_line_to(struct nk_draw_list*, struct nk_vec2 pos); -NK_API void nk_draw_list_path_arc_to_fast(struct nk_draw_list*, struct nk_vec2 center, int radius, int a_min, int a_max); -NK_API void nk_draw_list_path_arc_to(struct nk_draw_list*, struct nk_vec2 center, int radius, int a_min, int a_max, unsigned int segments); -NK_API void nk_draw_list_path_rect_to(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, int rounding); +NK_API void nk_draw_list_path_arc_to_fast(struct nk_draw_list*, struct nk_vec2 center, float radius, int a_min, int a_max); +NK_API void nk_draw_list_path_arc_to(struct nk_draw_list*, struct nk_vec2 center, float radius, float a_min, float a_max, unsigned int segments); +NK_API void nk_draw_list_path_rect_to(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, float rounding); NK_API void nk_draw_list_path_curve_to(struct nk_draw_list*, struct nk_vec2 p2, struct nk_vec2 p3, struct nk_vec2 p4, unsigned int num_segments); NK_API void nk_draw_list_path_fill(struct nk_draw_list*, struct nk_color); -NK_API void nk_draw_list_path_stroke(struct nk_draw_list*, struct nk_color, enum nk_draw_list_stroke closed, int thickness); +NK_API void nk_draw_list_path_stroke(struct nk_draw_list*, struct nk_color, enum nk_draw_list_stroke closed, float thickness); /* stroke */ -NK_API void nk_draw_list_stroke_line(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_color, int thickness); -NK_API void nk_draw_list_stroke_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, int rounding, int thickness); -NK_API void nk_draw_list_stroke_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color, int thickness); -NK_API void nk_draw_list_stroke_circle(struct nk_draw_list*, struct nk_vec2 center, int radius, struct nk_color, unsigned int segs, int thickness); -NK_API void nk_draw_list_stroke_curve(struct nk_draw_list*, struct nk_vec2 p0, struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, struct nk_color, unsigned int segments, int thickness); -NK_API void nk_draw_list_stroke_poly_line(struct nk_draw_list*, const struct nk_vec2 *pnts, const unsigned int cnt, struct nk_color, enum nk_draw_list_stroke, int thickness, enum nk_anti_aliasing); +NK_API void nk_draw_list_stroke_line(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_color, float thickness); +NK_API void nk_draw_list_stroke_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding, float thickness); +NK_API void nk_draw_list_stroke_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color, float thickness); +NK_API void nk_draw_list_stroke_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color, unsigned int segs, float thickness); +NK_API void nk_draw_list_stroke_curve(struct nk_draw_list*, struct nk_vec2 p0, struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, struct nk_color, unsigned int segments, float thickness); +NK_API void nk_draw_list_stroke_poly_line(struct nk_draw_list*, const struct nk_vec2 *pnts, const unsigned int cnt, struct nk_color, enum nk_draw_list_stroke, float thickness, enum nk_anti_aliasing); /* fill */ -NK_API void nk_draw_list_fill_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, int rounding); +NK_API void nk_draw_list_fill_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding); NK_API void nk_draw_list_fill_rect_multi_color(struct nk_draw_list*, struct nk_rect rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom); NK_API void nk_draw_list_fill_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color); -NK_API void nk_draw_list_fill_circle(struct nk_draw_list*, struct nk_vec2 center, int radius, struct nk_color col, unsigned int segs); +NK_API void nk_draw_list_fill_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color col, unsigned int segs); NK_API void nk_draw_list_fill_poly_convex(struct nk_draw_list*, const struct nk_vec2 *points, const unsigned int count, struct nk_color, enum nk_anti_aliasing); /* misc */ NK_API void nk_draw_list_add_image(struct nk_draw_list*, struct nk_image texture, struct nk_rect rect, struct nk_color); -NK_API void nk_draw_list_add_text(struct nk_draw_list*, const struct nk_user_font*, struct nk_rect, const char *text, int len, int font_height, struct nk_color); +NK_API void nk_draw_list_add_text(struct nk_draw_list*, const struct nk_user_font*, struct nk_rect, const char *text, int len, float font_height, struct nk_color); #ifdef NK_INCLUDE_COMMAND_USERDATA NK_API void nk_draw_list_push_userdata(struct nk_draw_list*, nk_handle userdata); #endif @@ -4825,12 +4839,14 @@ NK_API void nk_draw_list_push_userdata(struct nk_draw_list*, nk_handle userdata) * ===============================================================*/ enum nk_style_item_type { NK_STYLE_ITEM_COLOR, - NK_STYLE_ITEM_IMAGE + NK_STYLE_ITEM_IMAGE, + NK_STYLE_ITEM_NINE_SLICE }; union nk_style_item_data { - struct nk_image image; struct nk_color color; + struct nk_image image; + struct nk_nine_slice slice; }; struct nk_style_item { @@ -4858,8 +4874,8 @@ struct nk_style_button { nk_flags text_alignment; /* properties */ - int border; - int rounding; + float border; + float rounding; struct nk_vec2 padding; struct nk_vec2 image_padding; struct nk_vec2 touch_padding; @@ -4891,8 +4907,8 @@ struct nk_style_toggle { /* properties */ struct nk_vec2 padding; struct nk_vec2 touch_padding; - int spacing; - int border; + float spacing; + float border; /* optional user callbacks */ nk_handle userdata; @@ -4924,7 +4940,7 @@ struct nk_style_selectable { nk_flags text_alignment; /* properties */ - int rounding; + float rounding; struct nk_vec2 padding; struct nk_vec2 touch_padding; struct nk_vec2 image_padding; @@ -4954,9 +4970,9 @@ struct nk_style_slider { struct nk_style_item cursor_active; /* properties */ - int border; - int rounding; - int bar_height; + float border; + float rounding; + float bar_height; struct nk_vec2 padding; struct nk_vec2 spacing; struct nk_vec2 cursor_size; @@ -4988,10 +5004,10 @@ struct nk_style_progress { struct nk_color cursor_border_color; /* properties */ - int rounding; - int border; - int cursor_border; - int cursor_rounding; + float rounding; + float border; + float cursor_border; + float cursor_rounding; struct nk_vec2 padding; /* optional user callbacks */ @@ -5014,10 +5030,10 @@ struct nk_style_scrollbar { struct nk_color cursor_border_color; /* properties */ - int border; - int rounding; - int border_cursor; - int rounding_cursor; + float border; + float rounding; + float border_cursor; + float rounding_cursor; struct nk_vec2 padding; /* optional buttons */ @@ -5059,12 +5075,12 @@ struct nk_style_edit { struct nk_color selected_text_hover; /* properties */ - int border; - int rounding; - int cursor_size; + float border; + float rounding; + float cursor_size; struct nk_vec2 scrollbar_size; struct nk_vec2 padding; - int row_padding; + float row_padding; }; struct nk_style_property { @@ -5084,8 +5100,8 @@ struct nk_style_property { enum nk_symbol_type sym_right; /* properties */ - int border; - int rounding; + float border; + float rounding; struct nk_vec2 padding; struct nk_style_edit edit; @@ -5106,8 +5122,8 @@ struct nk_style_chart { struct nk_color color; /* properties */ - int border; - int rounding; + float border; + float rounding; struct nk_vec2 padding; }; @@ -5135,8 +5151,8 @@ struct nk_style_combo { enum nk_symbol_type sym_active; /* properties */ - int border; - int rounding; + float border; + float rounding; struct nk_vec2 content_padding; struct nk_vec2 button_padding; struct nk_vec2 spacing; @@ -5157,9 +5173,9 @@ struct nk_style_tab { enum nk_symbol_type sym_maximize; /* properties */ - int border; - int rounding; - int indent; + float border; + float rounding; + float indent; struct nk_vec2 padding; struct nk_vec2 spacing; }; @@ -5207,16 +5223,16 @@ struct nk_style_window { struct nk_color tooltip_border_color; struct nk_style_item scaler; - int border; - int combo_border; - int contextual_border; - int menu_border; - int group_border; - int tooltip_border; - int popup_border; - int min_row_height_padding; + float border; + float combo_border; + float contextual_border; + float menu_border; + float group_border; + float tooltip_border; + float popup_border; + float min_row_height_padding; - int rounding; + float rounding; struct nk_vec2 spacing; struct nk_vec2 scrollbar_size; struct nk_vec2 min_size; @@ -5256,8 +5272,9 @@ struct nk_style { struct nk_style_window window; }; -NK_API struct nk_style_item nk_style_item_image(struct nk_image img); NK_API struct nk_style_item nk_style_item_color(struct nk_color); +NK_API struct nk_style_item nk_style_item_image(struct nk_image img); +NK_API struct nk_style_item nk_style_item_nine_slice(struct nk_nine_slice slice); NK_API struct nk_style_item nk_style_item_hide(void); /*============================================================== @@ -5290,7 +5307,7 @@ struct nk_chart_slot { enum nk_chart_type type; struct nk_color color; struct nk_color highlight; - int min, max, range; + float min, max, range; int count; struct nk_vec2 last; int index; @@ -5298,7 +5315,7 @@ struct nk_chart_slot { struct nk_chart { int slot; - int x, y, w, h; + float x, y, w, h; struct nk_chart_slot slots[NK_CHART_MAX_SLOT]; }; @@ -5317,17 +5334,17 @@ enum nk_panel_row_layout_type { struct nk_row_layout { enum nk_panel_row_layout_type type; int index; - int height; - int min_height; + float height; + float min_height; int columns; - const int *ratio; - int item_width; - int item_height; - int item_offset; - int filled; + const float *ratio; + float item_width; + float item_height; + float item_offset; + float filled; struct nk_rect item; int tree_depth; - int templates[NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS]; + float templates[NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS]; }; struct nk_popup_buffer { @@ -5339,7 +5356,7 @@ struct nk_popup_buffer { }; struct nk_menu_state { - int x, y, w, h; + float x, y, w, h; struct nk_scroll offset; }; @@ -5349,10 +5366,10 @@ struct nk_panel { struct nk_rect bounds; nk_uint *offset_x; nk_uint *offset_y; - int at_x, at_y, max_x; - int footer_height; - int header_height; - int border; + float at_x, at_y, max_x; + float footer_height; + float header_height; + float border; unsigned int has_scrolling; struct nk_rect clip; struct nk_menu_state menu; @@ -5436,7 +5453,7 @@ struct nk_window { struct nk_scroll scrollbar; struct nk_command_buffer buffer; struct nk_panel *layout; - int scrollbar_hiding_timer; + float scrollbar_hiding_timer; /* persistent widget state */ struct nk_property_state property; @@ -5474,7 +5491,7 @@ struct nk_window { * nk_style_pop_style_item(ctx); * nk_style_pop_vec2(ctx); * - * Nuklear has a stack for style_items, int properties, vector properties, + * Nuklear has a stack for style_items, float properties, vector properties, * flags, colors, fonts and for button_behavior. Each has it's own fixed size stack * which can be changed at compile time. */ @@ -5490,8 +5507,8 @@ struct nk_window { #define NK_STYLE_ITEM_STACK_SIZE 16 #endif -#ifndef NK_int_STACK_SIZE -#define NK_int_STACK_SIZE 32 +#ifndef NK_FLOAT_STACK_SIZE +#define NK_FLOAT_STACK_SIZE 32 #endif #ifndef NK_VECTOR_STACK_SIZE @@ -5517,9 +5534,9 @@ struct nk_window { struct nk_config_stack_##type##_element elements[size];\ } -#define nk_int int +#define nk_float float NK_CONFIGURATION_STACK_TYPE(struct nk, style_item, style_item); -NK_CONFIGURATION_STACK_TYPE(nk ,int, int); +NK_CONFIGURATION_STACK_TYPE(nk ,float, float); NK_CONFIGURATION_STACK_TYPE(struct nk, vec2, vec2); NK_CONFIGURATION_STACK_TYPE(nk ,flags, flags); NK_CONFIGURATION_STACK_TYPE(struct nk, color, color); @@ -5527,7 +5544,7 @@ NK_CONFIGURATION_STACK_TYPE(const struct nk, user_font, user_font*); NK_CONFIGURATION_STACK_TYPE(enum nk, button_behavior, button_behavior); NK_CONFIG_STACK(style_item, NK_STYLE_ITEM_STACK_SIZE); -NK_CONFIG_STACK(int, NK_int_STACK_SIZE); +NK_CONFIG_STACK(float, NK_FLOAT_STACK_SIZE); NK_CONFIG_STACK(vec2, NK_VECTOR_STACK_SIZE); NK_CONFIG_STACK(flags, NK_FLAGS_STACK_SIZE); NK_CONFIG_STACK(color, NK_COLOR_STACK_SIZE); @@ -5536,7 +5553,7 @@ NK_CONFIG_STACK(button_behavior, NK_BUTTON_BEHAVIOR_STACK_SIZE); struct nk_configuration_stacks { struct nk_config_stack_style_item style_items; - struct nk_config_stack_int ints; + struct nk_config_stack_float floats; struct nk_config_stack_vec2 vectors; struct nk_config_stack_flags flags; struct nk_config_stack_color colors; @@ -5596,7 +5613,7 @@ struct nk_context { nk_flags last_widget_state; enum nk_button_behavior button_behavior; struct nk_configuration_stacks stacks; - int delta_time_seconds; + float delta_time_seconds; /* private: should only be accessed if you @@ -5633,7 +5650,7 @@ struct nk_context { * =============================================================== */ #define NK_PI 3.141592654f #define NK_UTF_INVALID 0xFFFD -#define NK_MAX_int_PRECISION 2 +#define NK_MAX_FLOAT_PRECISION 2 #define NK_UNUSED(x) ((void)(x)) #define NK_SATURATE(x) (NK_MAX(0, NK_MIN(1.0f, x))) @@ -5680,9 +5697,11 @@ struct nk_context { #define NK_ALIGN_PTR_BACK(x, mask)\ (NK_UINT_TO_PTR((NK_PTR_TO_UINT((nk_byte*)(x)) & ~(mask-1)))) +#if defined(__GNUC__) || defined(__clang__) +#define NK_OFFSETOF(st,m) (__builtin_offsetof(st,m)) +#else #define NK_OFFSETOF(st,m) ((nk_ptr)&(((st*)0)->m)) -#define NK_CONTAINER_OF(ptr,type,member)\ - (type*)((void*)((char*)(1 ? (ptr): &((type*)0)->member) - NK_OFFSETOF(type, member))) +#endif #ifdef __cplusplus } @@ -5695,12 +5714,15 @@ template struct nk_helper{enum {value = nk_alignof::value};} template struct nk_alignof{struct Big {T x; char c;}; enum { diff = sizeof(Big) - sizeof(T), value = nk_helper::value};}; #define NK_ALIGNOF(t) (nk_alignof::value) -#elif defined(_MSC_VER) -#define NK_ALIGNOF(t) (__alignof(t)) #else -#define NK_ALIGNOF(t) ((char*)(&((struct {char c; t _h;}*)0)->_h) - (char*)0) +#define NK_ALIGNOF(t) NK_OFFSETOF(struct {char c; t _h;}, _h) #endif +#define NK_CONTAINER_OF(ptr,type,member)\ + (type*)((void*)((char*)(1 ? (ptr): &((type*)0)->member) - NK_OFFSETOF(type, member))) + + + #endif /* NK_NUKLEAR_H_ */ #ifdef NK_IMPLEMENTATION @@ -5785,7 +5807,7 @@ NK_STATIC_ASSERT(sizeof(nk_bool) == 4); #endif NK_GLOBAL const struct nk_rect nk_null_rect = {-8192.0f, -8192.0f, 16384, 16384}; -#define NK_int_PRECISION 0.00000000000001 +#define NK_FLOAT_PRECISION 0.00000000000001 NK_GLOBAL const struct nk_color nk_red = {255,0,0,255}; NK_GLOBAL const struct nk_color nk_green = {0,255,0,255}; @@ -5801,21 +5823,21 @@ NK_GLOBAL const struct nk_color nk_yellow = {255,255,0,255}; else (*(s)) = NK_WIDGET_STATE_INACTIVE; /* math */ -NK_LIB int nk_inv_sqrt(int n); +NK_LIB float nk_inv_sqrt(float n); #ifndef NK_SIN -NK_LIB int nk_sin(int x); +NK_LIB float nk_sin(float x); #endif #ifndef NK_COS -NK_LIB int nk_cos(int x); +NK_LIB float nk_cos(float x); #endif NK_LIB nk_uint nk_round_up_pow2(nk_uint v); -NK_LIB struct nk_rect nk_shrink_rect(struct nk_rect r, int amount); +NK_LIB struct nk_rect nk_shrink_rect(struct nk_rect r, float amount); NK_LIB struct nk_rect nk_pad_rect(struct nk_rect r, struct nk_vec2 pad); -NK_LIB void nk_unify(struct nk_rect *clip, const struct nk_rect *a, int x0, int y0, int x1, int y1); +NK_LIB void nk_unify(struct nk_rect *clip, const struct nk_rect *a, float x0, float y0, float x1, float y1); NK_LIB double nk_pow(double x, int n); NK_LIB int nk_ifloord(double x); -NK_LIB int nk_ifloorf(int x); -NK_LIB int nk_iceilf(int x); +NK_LIB int nk_ifloorf(float x); +NK_LIB int nk_iceilf(float x); NK_LIB int nk_log10(double n); /* util */ @@ -5833,12 +5855,12 @@ NK_LIB void nk_memset(void *ptr, int c0, nk_size size); #endif NK_LIB void nk_zero(void *ptr, nk_size size); NK_LIB char *nk_itoa(char *s, long n); -NK_LIB int nk_string_int_limit(char *string, int prec); +NK_LIB int nk_string_float_limit(char *string, int prec); #ifndef NK_DTOA NK_LIB char *nk_dtoa(char *s, double n); #endif -NK_LIB int nk_text_clamp(const struct nk_user_font *font, const char *text, int text_len, int space, int *glyphs, int *text_width, nk_rune *sep_list, int sep_count); -NK_LIB struct nk_vec2 nk_text_calculate_text_bounds(const struct nk_user_font *font, const char *begin, int byte_len, int row_height, const char **remaining, struct nk_vec2 *out_offset, int *glyphs, int op); +NK_LIB int nk_text_clamp(const struct nk_user_font *font, const char *text, int text_len, float space, int *glyphs, float *text_width, nk_rune *sep_list, int sep_count); +NK_LIB struct nk_vec2 nk_text_calculate_text_bounds(const struct nk_user_font *font, const char *begin, int byte_len, float row_height, const char **remaining, struct nk_vec2 *out_offset, int *glyphs, int op); #ifdef NK_INCLUDE_STANDARD_VARARGS NK_LIB int nk_strfmt(char *buf, int buf_size, const char *fmt, va_list args); #endif @@ -5859,7 +5881,7 @@ NK_LIB void* nk_buffer_realloc(struct nk_buffer *b, nk_size capacity, nk_size *s NK_LIB void nk_command_buffer_init(struct nk_command_buffer *cb, struct nk_buffer *b, enum nk_command_clipping clip); NK_LIB void nk_command_buffer_reset(struct nk_command_buffer *b); NK_LIB void* nk_command_buffer_push(struct nk_command_buffer* b, enum nk_command_type t, nk_size size); -NK_LIB void nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type, struct nk_rect content, struct nk_color background, struct nk_color foreground, int border_width, const struct nk_user_font *font); +NK_LIB void nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type, struct nk_rect content, struct nk_color background, struct nk_color foreground, float border_width, const struct nk_user_font *font); /* buffering */ NK_LIB void nk_start_buffer(struct nk_context *ctx, struct nk_command_buffer *b); @@ -5872,9 +5894,9 @@ NK_LIB void nk_build(struct nk_context *ctx); /* text editor */ NK_LIB void nk_textedit_clear_state(struct nk_text_edit *state, enum nk_text_edit_type type, nk_plugin_filter filter); -NK_LIB void nk_textedit_click(struct nk_text_edit *state, int x, int y, const struct nk_user_font *font, int row_height); -NK_LIB void nk_textedit_drag(struct nk_text_edit *state, int x, int y, const struct nk_user_font *font, int row_height); -NK_LIB void nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod, const struct nk_user_font *font, int row_height); +NK_LIB void nk_textedit_click(struct nk_text_edit *state, float x, float y, const struct nk_user_font *font, float row_height); +NK_LIB void nk_textedit_drag(struct nk_text_edit *state, float x, float y, const struct nk_user_font *font, float row_height); +NK_LIB void nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod, const struct nk_user_font *font, float row_height); /* window */ enum nk_window_insert_location { @@ -5911,7 +5933,7 @@ NK_LIB void *nk_create_panel(struct nk_context *ctx); NK_LIB void nk_free_panel(struct nk_context*, struct nk_panel *pan); NK_LIB nk_bool nk_panel_has_header(nk_flags flags, const char *title); NK_LIB struct nk_vec2 nk_panel_get_padding(const struct nk_style *style, enum nk_panel_type type); -NK_LIB int nk_panel_get_border(const struct nk_style *style, nk_flags flags, enum nk_panel_type type); +NK_LIB float nk_panel_get_border(const struct nk_style *style, nk_flags flags, enum nk_panel_type type); NK_LIB struct nk_color nk_panel_get_border_color(const struct nk_style *style, enum nk_panel_type type); NK_LIB nk_bool nk_panel_is_sub(enum nk_panel_type type); NK_LIB nk_bool nk_panel_is_nonblock(enum nk_panel_type type); @@ -5919,9 +5941,9 @@ NK_LIB nk_bool nk_panel_begin(struct nk_context *ctx, const char *title, enum nk NK_LIB void nk_panel_end(struct nk_context *ctx); /* layout */ -NK_LIB int nk_layout_row_calculate_usable_space(const struct nk_style *style, enum nk_panel_type type, int total_space, int columns); -NK_LIB void nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, int height, int cols); -NK_LIB void nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, int height, int cols, int width); +NK_LIB float nk_layout_row_calculate_usable_space(const struct nk_style *style, enum nk_panel_type type, float total_space, int columns); +NK_LIB void nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, float height, int cols); +NK_LIB void nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, float height, int cols, int width); NK_LIB void nk_panel_alloc_row(const struct nk_context *ctx, struct nk_window *win); NK_LIB void nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, struct nk_window *win, int modify); NK_LIB void nk_panel_alloc_space(struct nk_rect *bounds, const struct nk_context *ctx); @@ -5970,15 +5992,15 @@ NK_LIB void nk_draw_progress(struct nk_command_buffer *out, nk_flags state, cons NK_LIB nk_size nk_do_progress(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, nk_size value, nk_size max, nk_bool modifiable, const struct nk_style_progress *style, struct nk_input *in); /* slider */ -NK_LIB int nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, struct nk_rect *visual_cursor, struct nk_input *in, struct nk_rect bounds, int slider_min, int slider_max, int slider_value, int slider_step, int slider_steps); -NK_LIB void nk_draw_slider(struct nk_command_buffer *out, nk_flags state, const struct nk_style_slider *style, const struct nk_rect *bounds, const struct nk_rect *visual_cursor, int min, int value, int max); -NK_LIB int nk_do_slider(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, int min, int val, int max, int step, const struct nk_style_slider *style, struct nk_input *in, const struct nk_user_font *font); +NK_LIB float nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, struct nk_rect *visual_cursor, struct nk_input *in, struct nk_rect bounds, float slider_min, float slider_max, float slider_value, float slider_step, float slider_steps); +NK_LIB void nk_draw_slider(struct nk_command_buffer *out, nk_flags state, const struct nk_style_slider *style, const struct nk_rect *bounds, const struct nk_rect *visual_cursor, float min, float value, float max); +NK_LIB float nk_do_slider(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, float min, float val, float max, float step, const struct nk_style_slider *style, struct nk_input *in, const struct nk_user_font *font); /* scrollbar */ -NK_LIB int nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, int has_scrolling, const struct nk_rect *scroll, const struct nk_rect *cursor, const struct nk_rect *empty0, const struct nk_rect *empty1, int scroll_offset, int target, int scroll_step, enum nk_orientation o); +NK_LIB float nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, int has_scrolling, const struct nk_rect *scroll, const struct nk_rect *cursor, const struct nk_rect *empty0, const struct nk_rect *empty1, float scroll_offset, float target, float scroll_step, enum nk_orientation o); NK_LIB void nk_draw_scrollbar(struct nk_command_buffer *out, nk_flags state, const struct nk_style_scrollbar *style, const struct nk_rect *bounds, const struct nk_rect *scroll); -NK_LIB int nk_do_scrollbarv(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, int offset, int target, int step, int button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); -NK_LIB int nk_do_scrollbarh(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, int offset, int target, int step, int button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); +NK_LIB float nk_do_scrollbarv(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); +NK_LIB float nk_do_scrollbarh(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font); /* selectable */ NK_LIB void nk_draw_selectable(struct nk_command_buffer *out, nk_flags state, const struct nk_style_selectable *style, nk_bool active, const struct nk_rect *bounds, const struct nk_rect *icon, const struct nk_image *img, enum nk_symbol_type sym, const char *string, int len, nk_flags align, const struct nk_user_font *font); @@ -5986,7 +6008,7 @@ NK_LIB nk_bool nk_do_selectable(nk_flags *state, struct nk_command_buffer *out, NK_LIB nk_bool nk_do_selectable_image(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, const char *str, int len, nk_flags align, nk_bool *value, const struct nk_image *img, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font); /* edit */ -NK_LIB void nk_edit_draw_text(struct nk_command_buffer *out, const struct nk_style_edit *style, int pos_x, int pos_y, int x_offset, const char *text, int byte_len, int row_height, const struct nk_user_font *font, struct nk_color background, struct nk_color foreground, nk_bool is_selected); +NK_LIB void nk_edit_draw_text(struct nk_command_buffer *out, const struct nk_style_edit *style, float pos_x, float pos_y, float x_offset, const char *text, int byte_len, float row_height, const struct nk_user_font *font, struct nk_color background, struct nk_color foreground, nk_bool is_selected); NK_LIB nk_flags nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, nk_flags flags, nk_plugin_filter filter, struct nk_text_edit *edit, const struct nk_style_edit *style, struct nk_input *in, const struct nk_user_font *font); /* color-picker */ @@ -6002,16 +6024,16 @@ enum nk_property_status { }; enum nk_property_filter { NK_FILTER_INT, - NK_FILTER_int + NK_FILTER_FLOAT }; enum nk_property_kind { NK_PROPERTY_INT, - NK_PROPERTY_int, + NK_PROPERTY_FLOAT, NK_PROPERTY_DOUBLE }; union nk_property { int i; - int f; + float f; double d; }; struct nk_property_variant { @@ -6022,14 +6044,14 @@ struct nk_property_variant { union nk_property step; }; NK_LIB struct nk_property_variant nk_property_variant_int(int value, int min_value, int max_value, int step); -// NK_LIB struct nk_property_variant nk_property_variant_int(int value, int min_value, int max_value, int step); +NK_LIB struct nk_property_variant nk_property_variant_float(float value, float min_value, float max_value, float step); NK_LIB struct nk_property_variant nk_property_variant_double(double value, double min_value, double max_value, double step); -NK_LIB void nk_drag_behavior(nk_flags *state, const struct nk_input *in, struct nk_rect drag, struct nk_property_variant *variant, int inc_per_pixel); -NK_LIB void nk_property_behavior(nk_flags *ws, const struct nk_input *in, struct nk_rect property, struct nk_rect label, struct nk_rect edit, struct nk_rect empty, int *state, struct nk_property_variant *variant, int inc_per_pixel); +NK_LIB void nk_drag_behavior(nk_flags *state, const struct nk_input *in, struct nk_rect drag, struct nk_property_variant *variant, float inc_per_pixel); +NK_LIB void nk_property_behavior(nk_flags *ws, const struct nk_input *in, struct nk_rect property, struct nk_rect label, struct nk_rect edit, struct nk_rect empty, int *state, struct nk_property_variant *variant, float inc_per_pixel); NK_LIB void nk_draw_property(struct nk_command_buffer *out, const struct nk_style_property *style, const struct nk_rect *bounds, const struct nk_rect *label, nk_flags state, const char *name, int len, const struct nk_user_font *font); -NK_LIB void nk_do_property(nk_flags *ws, struct nk_command_buffer *out, struct nk_rect property, const char *name, struct nk_property_variant *variant, int inc_per_pixel, char *buffer, int *len, int *state, int *cursor, int *select_begin, int *select_end, const struct nk_style_property *style, enum nk_property_filter filter, struct nk_input *in, const struct nk_user_font *font, struct nk_text_edit *text_edit, enum nk_button_behavior behavior); -NK_LIB void nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant *variant, int inc_per_pixel, const enum nk_property_filter filter); +NK_LIB void nk_do_property(nk_flags *ws, struct nk_command_buffer *out, struct nk_rect property, const char *name, struct nk_property_variant *variant, float inc_per_pixel, char *buffer, int *len, int *state, int *cursor, int *select_begin, int *select_end, const struct nk_style_property *style, enum nk_property_filter filter, struct nk_input *in, const struct nk_user_font *font, struct nk_text_edit *text_edit, enum nk_button_behavior behavior); +NK_LIB void nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant *variant, float inc_per_pixel, const enum nk_property_filter filter); #ifdef NK_INCLUDE_FONT_BAKING @@ -6068,7 +6090,7 @@ nk_stbtt_free(void *ptr, void *user_data) { * MATH * * ===============================================================*/ -/* Since nuklear is supposed to work on all systems providing inting point +/* Since nuklear is supposed to work on all systems providing floating point math without any dependencies I also had to implement my own math functions for sqrt, sin and cos. Since the actual highly accurate implementations for the standard library functions are quite complex and I do not need high @@ -6080,7 +6102,7 @@ nk_stbtt_free(void *ptr, void *user_data) { https://en.wikipedia.org/wiki/Fast_inverse_square_root with slightly tweaked magic constant. While on today's hardware it is probably not faster it is still fast and accurate enough for - nuklear's use cases. IMPORTANT: this requires int format IEEE 754 + nuklear's use cases. IMPORTANT: this requires float format IEEE 754 Sine/Cosine ----------- @@ -6095,13 +6117,12 @@ nk_stbtt_free(void *ptr, void *user_data) { (it can actually approximate a lot more functions) can be found here: www.lolengine.net/wiki/oss/lolremez */ -NK_LIB int -nk_inv_sqrt(int n) +NK_LIB float +nk_inv_sqrt(float n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - n / nk_inv_sqrt"); - int x2; - const int threehalfs = 1.5f; - union {nk_uint i; int f;} conv = {0}; + float x2; + const float threehalfs = 1.5f; + union {nk_uint i; float f;} conv = {0}; conv.f = n; x2 = n * 0.5f; conv.i = 0x5f375A84 - (conv.i >> 1); @@ -6110,45 +6131,42 @@ nk_inv_sqrt(int n) } #ifndef NK_SIN #define NK_SIN nk_sin -NK_LIB int -nk_sin(int x) +NK_LIB float +nk_sin(float x) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_sin"); - NK_STORAGE const int a0 = +1.91059300966915117e-31f; - NK_STORAGE const int a1 = +1.00086760103908896f; - NK_STORAGE const int a2 = -1.21276126894734565e-2f; - NK_STORAGE const int a3 = -1.38078780785773762e-1f; - NK_STORAGE const int a4 = -2.67353392911981221e-2f; - NK_STORAGE const int a5 = +2.08026600266304389e-2f; - NK_STORAGE const int a6 = -3.03996055049204407e-3f; - NK_STORAGE const int a7 = +1.38235642404333740e-4f; + NK_STORAGE const float a0 = +1.91059300966915117e-31f; + NK_STORAGE const float a1 = +1.00086760103908896f; + NK_STORAGE const float a2 = -1.21276126894734565e-2f; + NK_STORAGE const float a3 = -1.38078780785773762e-1f; + NK_STORAGE const float a4 = -2.67353392911981221e-2f; + NK_STORAGE const float a5 = +2.08026600266304389e-2f; + NK_STORAGE const float a6 = -3.03996055049204407e-3f; + NK_STORAGE const float a7 = +1.38235642404333740e-4f; return a0 + x*(a1 + x*(a2 + x*(a3 + x*(a4 + x*(a5 + x*(a6 + x*a7)))))); } #endif #ifndef NK_COS #define NK_COS nk_cos -NK_LIB int -nk_cos(int x) +NK_LIB float +nk_cos(float x) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_cos"); /* New implementation. Also generated using lolremez. */ /* Old version significantly deviated from expected results. */ - NK_STORAGE const int a0 = 9.9995999154986614e-1f; - NK_STORAGE const int a1 = 1.2548995793001028e-3f; - NK_STORAGE const int a2 = -5.0648546280678015e-1f; - NK_STORAGE const int a3 = 1.2942246466519995e-2f; - NK_STORAGE const int a4 = 2.8668384702547972e-2f; - NK_STORAGE const int a5 = 7.3726485210586547e-3f; - NK_STORAGE const int a6 = -3.8510875386947414e-3f; - NK_STORAGE const int a7 = 4.7196604604366623e-4f; - NK_STORAGE const int a8 = -1.8776444013090451e-5f; + NK_STORAGE const float a0 = 9.9995999154986614e-1f; + NK_STORAGE const float a1 = 1.2548995793001028e-3f; + NK_STORAGE const float a2 = -5.0648546280678015e-1f; + NK_STORAGE const float a3 = 1.2942246466519995e-2f; + NK_STORAGE const float a4 = 2.8668384702547972e-2f; + NK_STORAGE const float a5 = 7.3726485210586547e-3f; + NK_STORAGE const float a6 = -3.8510875386947414e-3f; + NK_STORAGE const float a7 = 4.7196604604366623e-4f; + NK_STORAGE const float a8 = -1.8776444013090451e-5f; return a0 + x*(a1 + x*(a2 + x*(a3 + x*(a4 + x*(a5 + x*(a6 + x*(a7 + x*a8))))))); } #endif NK_LIB nk_uint nk_round_up_pow2(nk_uint v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - v / nk_round_up_pow2"); v--; v |= v >> 1; v |= v >> 2; @@ -6161,7 +6179,6 @@ nk_round_up_pow2(nk_uint v) NK_LIB double nk_pow(double x, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_pow"); /* check the sign of n */ double r = 1; int plus = n >= 0; @@ -6177,34 +6194,30 @@ nk_pow(double x, int n) NK_LIB int nk_ifloord(double x) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_ifloord"); x = (double)((int)x - ((x < 0.0) ? 1 : 0)); return (int)x; } NK_LIB int -nk_ifloorf(int x) +nk_ifloorf(float x) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_ifloorf"); - x = (int)((int)x - ((x < 0.0f) ? 1 : 0)); + x = (float)((int)x - ((x < 0.0f) ? 1 : 0)); return (int)x; } NK_LIB int -nk_iceilf(int x) +nk_iceilf(float x) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_iceilf"); if (x >= 0) { int i = (int)x; return (x > i) ? i+1: i; } else { int t = (int)x; - int r = x - (int)t; + float r = x - (float)t; return (r > 0.0f) ? t+1: t; } } NK_LIB int nk_log10(double n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - n / nk_log10"); int neg; int ret; int exp = 0; @@ -6221,13 +6234,11 @@ nk_log10(double n) NK_API struct nk_rect nk_get_null_rect(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_get_null_rect"); return nk_null_rect; } NK_API struct nk_rect -nk_rect(int x, int y, int w, int h) +nk_rect(float x, float y, float w, float h) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_rect"); struct nk_rect r; r.x = x; r.y = y; r.w = w; r.h = h; @@ -6236,36 +6247,31 @@ nk_rect(int x, int y, int w, int h) NK_API struct nk_rect nk_recti(int x, int y, int w, int h) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_recti"); struct nk_rect r; - r.x = (int)x; - r.y = (int)y; - r.w = (int)w; - r.h = (int)h; + r.x = (float)x; + r.y = (float)y; + r.w = (float)w; + r.h = (float)h; return r; } NK_API struct nk_rect nk_recta(struct nk_vec2 pos, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_vec2 / nk_recta"); return nk_rect(pos.x, pos.y, size.x, size.y); } NK_API struct nk_rect -nk_rectv(const int *r) +nk_rectv(const float *r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rectv"); return nk_rect(r[0], r[1], r[2], r[3]); } NK_API struct nk_rect nk_rectiv(const int *r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rectiv"); return nk_recti(r[0], r[1], r[2], r[3]); } NK_API struct nk_vec2 nk_rect_pos(struct nk_rect r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_rect_pos"); struct nk_vec2 ret; ret.x = r.x; ret.y = r.y; return ret; @@ -6273,15 +6279,13 @@ nk_rect_pos(struct nk_rect r) NK_API struct nk_vec2 nk_rect_size(struct nk_rect r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_rect_size"); struct nk_vec2 ret; ret.x = r.w; ret.y = r.h; return ret; } NK_LIB struct nk_rect -nk_shrink_rect(struct nk_rect r, int amount) +nk_shrink_rect(struct nk_rect r, float amount) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_shrink_rect"); struct nk_rect res; r.w = NK_MAX(r.w, 2 * amount); r.h = NK_MAX(r.h, 2 * amount); @@ -6294,7 +6298,6 @@ nk_shrink_rect(struct nk_rect r, int amount) NK_LIB struct nk_rect nk_pad_rect(struct nk_rect r, struct nk_vec2 pad) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_pad_rect"); r.w = NK_MAX(r.w, 2 * pad.x); r.h = NK_MAX(r.h, 2 * pad.y); r.x += pad.x; r.y += pad.y; @@ -6303,9 +6306,8 @@ nk_pad_rect(struct nk_rect r, struct nk_vec2 pad) return r; } NK_API struct nk_vec2 -nk_vec2(int x, int y) +nk_vec2(float x, float y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_vec2"); struct nk_vec2 ret; ret.x = x; ret.y = y; return ret; @@ -6313,31 +6315,27 @@ nk_vec2(int x, int y) NK_API struct nk_vec2 nk_vec2i(int x, int y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x / nk_vec2i"); struct nk_vec2 ret; - ret.x = (int)x; - ret.y = (int)y; + ret.x = (float)x; + ret.y = (float)y; return ret; } NK_API struct nk_vec2 -nk_vec2v(const int *v) +nk_vec2v(const float *v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_vec2v"); return nk_vec2(v[0], v[1]); } NK_API struct nk_vec2 nk_vec2iv(const int *v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_vec2iv"); return nk_vec2i(v[0], v[1]); } NK_LIB void -nk_unify(struct nk_rect *clip, const struct nk_rect *a, int x0, int y0, - int x1, int y1) +nk_unify(struct nk_rect *clip, const struct nk_rect *a, float x0, float y0, + float x1, float y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x1, / int"); - // NK_ASSERT(a); - // NK_ASSERT(clip); + NK_ASSERT(a); + NK_ASSERT(clip); clip->x = NK_MAX(a->x, x0); clip->y = NK_MAX(a->y, y0); clip->w = NK_MIN(a->x + a->w, x1) - clip->x; @@ -6348,11 +6346,10 @@ nk_unify(struct nk_rect *clip, const struct nk_rect *a, int x0, int y0, NK_API void nk_triangle_from_direction(struct nk_vec2 *result, struct nk_rect r, - int pad_x, int pad_y, enum nk_heading direction) + float pad_x, float pad_y, enum nk_heading direction) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pad_x, / int"); - int w_half, h_half; - // NK_ASSERT(result); + float w_half, h_half; + NK_ASSERT(result); r.w = NK_MAX(2 * pad_x, r.w); r.h = NK_MAX(2 * pad_y, r.h); @@ -6405,7 +6402,6 @@ NK_LIB int nk_to_lower(int c) {return (c >= 'A' && c <= 'Z') ? (c - ('a' + 'A')) NK_LIB void* nk_memcopy(void *dst0, const void *src0, nk_size length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - dst0 / nk_memcopy"); nk_ptr t; char *dst = (char*)dst0; const char *src = (const char*)src0; @@ -6465,7 +6461,6 @@ done: NK_LIB void nk_memset(void *ptr, int c0, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - ptr / nk_memset"); #define nk_word unsigned #define nk_wsize sizeof(nk_word) #define nk_wmask (nk_wsize - 1) @@ -6518,28 +6513,25 @@ nk_memset(void *ptr, int c0, nk_size size) NK_LIB void nk_zero(void *ptr, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - ptr / nk_zero"); - // NK_ASSERT(ptr); + NK_ASSERT(ptr); NK_MEMSET(ptr, 0, size); } NK_API int nk_strlen(const char *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_strlen"); int siz = 0; - // NK_ASSERT(str); + NK_ASSERT(str); while (str && *str++ != '\0') siz++; return siz; } NK_API int nk_strtoi(const char *str, const char **endptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_strtoi"); int neg = 1; const char *p = str; int value = 0; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str) return 0; /* skip whitespace */ @@ -6559,14 +6551,13 @@ nk_strtoi(const char *str, const char **endptr) NK_API double nk_strtod(const char *str, const char **endptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_strtod"); double m; double neg = 1.0; const char *p = str; double value = 0; double number = 0; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str) return 0; /* skip whitespace */ @@ -6614,20 +6605,18 @@ nk_strtod(const char *str, const char **endptr) *endptr = p; return number; } -NK_API int +NK_API float nk_strtof(const char *str, const char **endptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_strtof"); - int int_value; + float float_value; double double_value; double_value = NK_STRTOD(str, endptr); - int_value = (int)double_value; - return int_value; + float_value = (float)double_value; + return float_value; } NK_API int nk_stricmp(const char *s1, const char *s2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_stricmp"); nk_int c1,c2,d; do { c1 = *s1++; @@ -6650,9 +6639,8 @@ nk_stricmp(const char *s1, const char *s2) NK_API int nk_stricmpn(const char *s1, const char *s2, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_stricmpn"); int c1,c2,d; - // NK_ASSERT(n >= 0); + NK_ASSERT(n >= 0); do { c1 = *s1++; c2 = *s2++; @@ -6676,7 +6664,6 @@ nk_stricmpn(const char *s1, const char *s2, int n) NK_INTERN int nk_str_match_here(const char *regexp, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_str_match_here"); if (regexp[0] == '\0') return 1; if (regexp[1] == '*') @@ -6690,7 +6677,6 @@ nk_str_match_here(const char *regexp, const char *text) NK_INTERN int nk_str_match_star(int c, const char *regexp, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_str_match_star"); do {/* a '* matches zero or more instances */ if (nk_str_match_here(regexp, text)) return 1; @@ -6700,7 +6686,6 @@ nk_str_match_star(int c, const char *regexp, const char *text) NK_API int nk_strfilter(const char *text, const char *regexp) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_strfilter"); /* c matches any literal character c . matches any single character @@ -6719,7 +6704,6 @@ NK_API int nk_strmatch_fuzzy_text(const char *str, int str_len, const char *pattern, int *out_score) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pattern / const"); /* Returns true if each character in pattern is found sequentially within str * if found then out_score is also set. Score value has no intrinsic meaning. * Range varies with pattern. Can only compare scores with same search pattern. */ @@ -6751,20 +6735,22 @@ nk_strmatch_fuzzy_text(const char *str, int str_len, int best_letter_score = 0; /* loop over strings */ - // NK_ASSERT(str); - // NK_ASSERT(pattern); + NK_ASSERT(str); + NK_ASSERT(pattern); if (!str || !str_len || !pattern) return 0; while (str_iter < str_len) { const char pattern_letter = *pattern_iter; const char str_letter = str[str_iter]; - int next_match = *pattern_iter != '\0' && nk_to_lower(pattern_letter) == nk_to_lower(str_letter); + int next_match = *pattern_iter != '\0' && + nk_to_lower(pattern_letter) == nk_to_lower(str_letter); int rematch = best_letter && nk_to_upper(*best_letter) == nk_to_upper(str_letter); int advanced = next_match && best_letter; int pattern_repeat = best_letter && *pattern_iter != '\0'; - pattern_repeat = pattern_repeat && nk_to_lower(*best_letter) == nk_to_lower(pattern_letter); + pattern_repeat = pattern_repeat && + nk_to_lower(*best_letter) == nk_to_lower(pattern_letter); if (advanced || pattern_repeat) { score += best_letter_score; @@ -6838,13 +6824,11 @@ nk_strmatch_fuzzy_text(const char *str, int str_len, NK_API int nk_strmatch_fuzzy_string(char const *str, char const *pattern, int *out_score) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - const / nk_strmatch_fuzzy_string"); - return nk_strmatch_fuzzy_text(str, strlen(str), pattern, out_score); + return nk_strmatch_fuzzy_text(str, nk_strlen(str), pattern, out_score); } NK_LIB int -nk_string_int_limit(char *string, int prec) +nk_string_float_limit(char *string, int prec) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - string / nk_string_int_limit"); int dot = 0; char *c = string; while (*c) { @@ -6865,8 +6849,7 @@ nk_string_int_limit(char *string, int prec) NK_INTERN void nk_strrev_ascii(char *s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - s / nk_strrev_ascii"); - int len = strlen(s); + int len = nk_strlen(s); int end = len / 2; int i = 0; char t; @@ -6879,7 +6862,6 @@ nk_strrev_ascii(char *s) NK_LIB char* nk_itoa(char *s, long n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - s / nk_itoa"); long i = 0; if (n == 0) { s[i++] = '0'; @@ -6906,13 +6888,12 @@ nk_itoa(char *s, long n) NK_LIB char* nk_dtoa(char *s, double n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - s / nk_dtoa"); int useExp = 0; int digit = 0, m = 0, m1 = 0; char *c = s; int neg = 0; - // NK_ASSERT(s); + NK_ASSERT(s); if (!s) return 0; if (n == 0.0) { @@ -6941,7 +6922,7 @@ nk_dtoa(char *s, double n) } /* convert the number */ - while (n > NK_int_PRECISION || m >= 0) { + while (n > NK_FLOAT_PRECISION || m >= 0) { double weight = nk_pow(10.0, m); if (weight > 0) { double t = (double)n / weight; @@ -6988,8 +6969,6 @@ nk_dtoa(char *s, double n) NK_INTERN int nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - buf / nk_vsnprintf"); - //writeSerialPort(boutRefNum, "nk_vsnprintf"); enum nk_arg_type { NK_ARG_TYPE_CHAR, NK_ARG_TYPE_SHORT, @@ -7014,8 +6993,8 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) int result = -1; const char *iter = fmt; - // NK_ASSERT(buf); - // NK_ASSERT(buf_size); + NK_ASSERT(buf); + NK_ASSERT(buf_size); if (!buf || !buf_size || !fmt) return 0; for (iter = fmt; *iter && len < buf_size; iter++) { /* copy all non-format characters */ @@ -7078,27 +7057,27 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) /* specifier */ if (*iter == '%') { - // NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); - // NK_ASSERT(precision == NK_DEFAULT); - // NK_ASSERT(width == NK_DEFAULT); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); if (len < buf_size) buf[len++] = '%'; } else if (*iter == 's') { /* string */ const char *str = va_arg(args, const char*); - // NK_ASSERT(str != buf && "buffer and argument are not allowed to overlap!"); - // NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); - // NK_ASSERT(precision == NK_DEFAULT); - // NK_ASSERT(width == NK_DEFAULT); + NK_ASSERT(str != buf && "buffer and argument are not allowed to overlap!"); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); if (str == buf) return -1; while (str && *str && len < buf_size) buf[len++] = *str++; } else if (*iter == 'n') { /* current length callback */ signed int *n = va_arg(args, int*); - // NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); - // NK_ASSERT(precision == NK_DEFAULT); - // NK_ASSERT(width == NK_DEFAULT); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(precision == NK_DEFAULT); + NK_ASSERT(width == NK_DEFAULT); if (n) *n = len; } else if (*iter == 'c' || *iter == 'i' || *iter == 'd') { /* signed integer */ @@ -7121,7 +7100,7 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) /* convert number to string */ nk_itoa(number_buffer, value); - num_len = strlen(number_buffer); + num_len = nk_strlen(number_buffer); padding = NK_MAX(cur_width - NK_MAX(cur_precision, num_len), 0); if ((flag & NK_ARG_FLAG_PLUS) || (flag & NK_ARG_FLAG_SPACE)) padding = NK_MAX(padding-1, 0); @@ -7233,7 +7212,7 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) buf[len++] = ' '; } } else if (*iter == 'f') { - /* inting point */ + /* floating point */ const char *num_iter; int cur_precision = (precision < 0) ? 6: precision; int prefix, cur_width = NK_MAX(width, 0); @@ -7241,9 +7220,9 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) int num_len = 0, frac_len = 0, dot = 0; int padding = 0; - // NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); + NK_ASSERT(arg_type == NK_ARG_TYPE_DEFAULT); NK_DTOA(number_buffer, value); - num_len = strlen(number_buffer); + num_len = nk_strlen(number_buffer); /* calculate padding */ num_iter = number_buffer; @@ -7297,7 +7276,7 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) } } else { /* Specifier not supported: g,G,e,E,p,z */ - // NK_ASSERT(0 && "specifier is not supported!"); + NK_ASSERT(0 && "specifier is not supported!"); return result; } } @@ -7309,10 +7288,9 @@ nk_vsnprintf(char *buf, int buf_size, const char *fmt, va_list args) NK_LIB int nk_strfmt(char *buf, int buf_size, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - buf / nk_strfmt"); int result = -1; - // NK_ASSERT(buf); - // NK_ASSERT(buf_size); + NK_ASSERT(buf); + NK_ASSERT(buf_size); if (!buf || !buf_size || !fmt) return 0; #ifdef NK_INCLUDE_STANDARD_IO result = NK_VSNPRINTF(buf, (nk_size)buf_size, fmt, args); @@ -7324,102 +7302,81 @@ nk_strfmt(char *buf, int buf_size, const char *fmt, va_list args) return result; } #endif - -#define get16bits(d) (*((const uint16_t *) (d))) NK_API nk_hash nk_murmur_hash(const void * key, int len, nk_hash seed) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void / nk_murmur_hash"); - const nk_byte *s = key; - nk_hash hash = 0; + /* 32-Bit MurmurHash3: https://code.google.com/p/smhasher/wiki/MurmurHash3*/ + #define NK_ROTL(x,r) ((x) << (r) | ((x) >> (32 - r))) - for(; *s; ++s) - { - hash += *s; - hash += (hash << 10); - hash ^= (hash >> 6); + nk_uint h1 = seed; + nk_uint k1; + const nk_byte *data = (const nk_byte*)key; + const nk_byte *keyptr = data; + nk_byte *k1ptr; + const int bsize = sizeof(k1); + const int nblocks = len/4; + + const nk_uint c1 = 0xcc9e2d51; + const nk_uint c2 = 0x1b873593; + const nk_byte *tail; + int i; + + /* body */ + if (!key) return 0; + for (i = 0; i < nblocks; ++i, keyptr += bsize) { + k1ptr = (nk_byte*)&k1; + k1ptr[0] = keyptr[0]; + k1ptr[1] = keyptr[1]; + k1ptr[2] = keyptr[2]; + k1ptr[3] = keyptr[3]; + + k1 *= c1; + k1 = NK_ROTL(k1,15); + k1 *= c2; + + h1 ^= k1; + h1 = NK_ROTL(h1,13); + h1 = h1*5+0xe6546b64; } - hash += (hash << 3); - hash ^= (hash >> 11); - hash += (hash << 15); + /* tail */ + tail = (const nk_byte*)(data + nblocks*4); + k1 = 0; + switch (len & 3) { + case 3: k1 ^= (nk_uint)(tail[2] << 16); /* fallthrough */ + case 2: k1 ^= (nk_uint)(tail[1] << 8u); /* fallthrough */ + case 1: k1 ^= tail[0]; + k1 *= c1; + k1 = NK_ROTL(k1,15); + k1 *= c2; + h1 ^= k1; + break; + default: break; + } - return hash; - /* 32-Bit MurmurHash3: https://code.google.com/p/smhasher/wiki/MurmurHash3*/ - // #define NK_ROTL(x,r) ((x) << (r) | ((x) >> (32 - r))) + /* finalization */ + h1 ^= (nk_uint)len; + /* fmix32 */ + h1 ^= h1 >> 16; + h1 *= 0x85ebca6b; + h1 ^= h1 >> 13; + h1 *= 0xc2b2ae35; + h1 ^= h1 >> 16; - // nk_uint h1 = seed; - // nk_uint k1; - // const nk_byte *data = (const nk_byte*)key; - // const nk_byte *keyptr = data; - // nk_byte *k1ptr; - // const int bsize = sizeof(k1); - // const int nblocks = len/4; - - // const nk_uint c1 = 0xcc9e2d51; - // const nk_uint c2 = 0x1b873593; - // const nk_byte *tail; - // int i; - - // /* body */ - // if (!key) return 0; - // for (i = 0; i < nblocks; ++i, keyptr += bsize) { - // k1ptr = (nk_byte*)&k1; - // k1ptr[0] = keyptr[0]; - // k1ptr[1] = keyptr[1]; - // k1ptr[2] = keyptr[2]; - // k1ptr[3] = keyptr[3]; - - // k1 *= c1; - // k1 = NK_ROTL(k1,15); - // k1 *= c2; - - // h1 ^= k1; - // h1 = NK_ROTL(h1,13); - // h1 = h1*5+0xe6546b64; - // } - - // /* tail */ - // tail = (const nk_byte*)(data + nblocks*4); - // k1 = 0; - // switch (len & 3) { - // case 3: k1 ^= (nk_uint)(tail[2] << 16); /* fallthrough */ - // case 2: k1 ^= (nk_uint)(tail[1] << 8u); /* fallthrough */ - // case 1: k1 ^= tail[0]; - // k1 *= c1; - // k1 = NK_ROTL(k1,15); - // k1 *= c2; - // h1 ^= k1; - // break; - // default: break; - // } - - // /* finalization */ - // h1 ^= (nk_uint)len; - // /* fmix32 */ - // h1 ^= h1 >> 16; - // h1 *= 0x85ebca6b; - // h1 ^= h1 >> 13; - // h1 *= 0xc2b2ae35; - // h1 ^= h1 >> 16; - - // #undef NK_ROTL - // return h1; + #undef NK_ROTL + return h1; } - - #ifdef NK_INCLUDE_STANDARD_IO NK_LIB char* nk_file_load(const char* path, nk_size* siz, struct nk_allocator *alloc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_file_load"); char *buf; FILE *fd; long ret; - // NK_ASSERT(path); - // NK_ASSERT(siz); - // NK_ASSERT(alloc); + NK_ASSERT(path); + NK_ASSERT(siz); + NK_ASSERT(alloc); if (!path || !siz || !alloc) return 0; @@ -7434,7 +7391,7 @@ nk_file_load(const char* path, nk_size* siz, struct nk_allocator *alloc) *siz = (nk_size)ret; fseek(fd, 0, SEEK_SET); buf = (char*)alloc->alloc(alloc->userdata,0, *siz); - // NK_ASSERT(buf); + NK_ASSERT(buf); if (!buf) { fclose(fd); return 0; @@ -7446,40 +7403,27 @@ nk_file_load(const char* path, nk_size* siz, struct nk_allocator *alloc) #endif NK_LIB int nk_text_clamp(const struct nk_user_font *font, const char *text, - int text_len, int space, int *glyphs, int *text_width, + int text_len, float space, int *glyphs, float *text_width, nk_rune *sep_list, int sep_count) { - - - long start; - long end; - long total; - long eventTime0; - - start = TickCount(); - - //writeSerialPort(boutRefNum, "FUNCTION CALL - sep_list, / nk_rune"); - //writeSerialPort(boutRefNum, "nk_text_clamp"); - // TODO:: pretty sure this function is slow, figure out what is up - // we at least need to figure out how to cache the return value int i = 0; - int last_width = 0; + int glyph_len = 0; + float last_width = 0; nk_rune unicode = 0; - int width = 0; + float width = 0; int len = 0; int g = 0; - int s; + float s; int sep_len = 0; int sep_g = 0; - int sep_width = 0; + float sep_width = 0; sep_count = NK_MAX(sep_count,0); - unicode = text[0]; - - while ((width < space) && (len < text_len)) { - len += 1; - s = font->width(font->userdata, font->height, text, len); // has to get cached quickdraw width values + glyph_len = nk_utf_decode(text, &unicode, text_len); + while (glyph_len && (width < space) && (len < text_len)) { + len += glyph_len; + s = font->width(font->userdata, font->height, text, len); for (i = 0; i < sep_count; ++i) { if (unicode != sep_list[i]) continue; sep_width = last_width = width; @@ -7492,7 +7436,7 @@ nk_text_clamp(const struct nk_user_font *font, const char *text, sep_g = g+1; } width = s; - unicode = text[len]; + glyph_len = nk_utf_decode(&text[len], &unicode, text_len - len); g++; } if (len >= text_len) { @@ -7504,27 +7448,17 @@ nk_text_clamp(const struct nk_user_font *font, const char *text, *text_width = sep_width; return (!sep_len) ? len: sep_len; } - end = TickCount(); - - total = end - start; - eventTime0 = total;// / 60.0; - - //char logx[255]; - //sprintf(logx, "text clamp time() eventTime0 (clamp text) %ld\n", eventTime0); - //writeSerialPort(boutRefNum, logx); } NK_LIB struct nk_vec2 nk_text_calculate_text_bounds(const struct nk_user_font *font, - const char *begin, int byte_len, int row_height, const char **remaining, + const char *begin, int byte_len, float row_height, const char **remaining, struct nk_vec2 *out_offset, int *glyphs, int op) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_offset / struct"); - //writeSerialPort(boutRefNum, "nk_text_calculate_text_bounds"); - int line_height = row_height; + float line_height = row_height; struct nk_vec2 text_size = nk_vec2(0,0); - int line_width = 0.0f; + float line_width = 0.0f; - int glyph_width; + float glyph_width; int glyph_len = 0; nk_rune unicode = 0; int text_len = 0; @@ -7559,7 +7493,7 @@ nk_text_calculate_text_bounds(const struct nk_user_font *font, *glyphs = *glyphs + 1; text_len += glyph_len; - line_width += (int)glyph_width; + line_width += (float)glyph_width; glyph_len = nk_utf_decode(begin + text_len, &unicode, byte_len-text_len); glyph_width = font->width(font->userdata, font->height, begin+text_len, glyph_len); continue; @@ -7588,8 +7522,6 @@ nk_text_calculate_text_bounds(const struct nk_user_font *font, NK_INTERN int nk_parse_hex(const char *p, int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_parse_hex"); - //writeSerialPort(boutRefNum, "nk_parse_hex"); int i = 0; int len = 0; while (len < length) { @@ -7606,7 +7538,6 @@ nk_parse_hex(const char *p, int length) NK_API struct nk_color nk_rgba(int r, int g, int b, int a) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_rgba"); struct nk_color ret; ret.r = (nk_byte)NK_CLAMP(0, r, 255); ret.g = (nk_byte)NK_CLAMP(0, g, 255); @@ -7617,7 +7548,6 @@ nk_rgba(int r, int g, int b, int a) NK_API struct nk_color nk_rgb_hex(const char *rgb) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_rgb_hex"); struct nk_color col; const char *c = rgb; if (*c == '#') c++; @@ -7630,7 +7560,6 @@ nk_rgb_hex(const char *rgb) NK_API struct nk_color nk_rgba_hex(const char *rgb) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_rgba_hex"); struct nk_color col; const char *c = rgb; if (*c == '#') c++; @@ -7643,7 +7572,6 @@ nk_rgba_hex(const char *rgb) NK_API void nk_color_hex_rgba(char *output, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - output / nk_color_hex_rgba"); #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i)) output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4); output[1] = (char)NK_TO_HEX((col.r & 0x0F)); @@ -7659,7 +7587,6 @@ nk_color_hex_rgba(char *output, struct nk_color col) NK_API void nk_color_hex_rgb(char *output, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - output / nk_color_hex_rgb"); #define NK_TO_HEX(i) ((i) <= 9 ? '0' + (i): 'A' - 10 + (i)) output[0] = (char)NK_TO_HEX((col.r & 0xF0) >> 4); output[1] = (char)NK_TO_HEX((col.r & 0x0F)); @@ -7673,19 +7600,16 @@ nk_color_hex_rgb(char *output, struct nk_color col) NK_API struct nk_color nk_rgba_iv(const int *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rgba_iv"); return nk_rgba(c[0], c[1], c[2], c[3]); } NK_API struct nk_color nk_rgba_bv(const nk_byte *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_byte / nk_rgba_bv"); return nk_rgba(c[0], c[1], c[2], c[3]); } NK_API struct nk_color nk_rgb(int r, int g, int b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_rgb"); struct nk_color ret; ret.r = (nk_byte)NK_CLAMP(0, r, 255); ret.g = (nk_byte)NK_CLAMP(0, g, 255); @@ -7696,19 +7620,16 @@ nk_rgb(int r, int g, int b) NK_API struct nk_color nk_rgb_iv(const int *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rgb_iv"); return nk_rgb(c[0], c[1], c[2]); } NK_API struct nk_color nk_rgb_bv(const nk_byte* c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_byte / nk_rgb_bv"); return nk_rgb(c[0], c[1], c[2]); } NK_API struct nk_color nk_rgba_u32(nk_uint in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - in / nk_rgba_u32"); struct nk_color ret; ret.r = (in & 0xFF); ret.g = ((in >> 8) & 0xFF); @@ -7717,9 +7638,8 @@ nk_rgba_u32(nk_uint in) return ret; } NK_API struct nk_color -nk_rgba_f(int r, int g, int b, int a) +nk_rgba_f(float r, float g, float b, float a) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_rgba_f"); struct nk_color ret; ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f); ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f); @@ -7728,21 +7648,18 @@ nk_rgba_f(int r, int g, int b, int a) return ret; } NK_API struct nk_color -nk_rgba_fv(const int *c) +nk_rgba_fv(const float *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rgba_fv"); return nk_rgba_f(c[0], c[1], c[2], c[3]); } NK_API struct nk_color nk_rgba_cf(struct nk_colorf c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_colorf / nk_rgba_cf"); return nk_rgba_f(c.r, c.g, c.b, c.a); } NK_API struct nk_color -nk_rgb_f(int r, int g, int b) +nk_rgb_f(float r, float g, float b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_rgb_f"); struct nk_color ret; ret.r = (nk_byte)(NK_SATURATE(r) * 255.0f); ret.g = (nk_byte)(NK_SATURATE(g) * 255.0f); @@ -7751,75 +7668,64 @@ nk_rgb_f(int r, int g, int b) return ret; } NK_API struct nk_color -nk_rgb_fv(const int *c) +nk_rgb_fv(const float *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_rgb_fv"); return nk_rgb_f(c[0], c[1], c[2]); } NK_API struct nk_color nk_rgb_cf(struct nk_colorf c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_colorf / nk_rgb_cf"); return nk_rgb_f(c.r, c.g, c.b); } NK_API struct nk_color nk_hsv(int h, int s, int v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_hsv"); return nk_hsva(h, s, v, 255); } NK_API struct nk_color nk_hsv_iv(const int *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_hsv_iv"); return nk_hsv(c[0], c[1], c[2]); } NK_API struct nk_color nk_hsv_bv(const nk_byte *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_byte / nk_hsv_bv"); return nk_hsv(c[0], c[1], c[2]); } NK_API struct nk_color -nk_hsv_f(int h, int s, int v) +nk_hsv_f(float h, float s, float v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_hsv_f"); return nk_hsva_f(h, s, v, 1.0f); } NK_API struct nk_color -nk_hsv_fv(const int *c) +nk_hsv_fv(const float *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_hsv_fv"); return nk_hsv_f(c[0], c[1], c[2]); } NK_API struct nk_color nk_hsva(int h, int s, int v, int a) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_hsva"); - int hf = ((int)NK_CLAMP(0, h, 255)) / 255.0f; - int sf = ((int)NK_CLAMP(0, s, 255)) / 255.0f; - int vf = ((int)NK_CLAMP(0, v, 255)) / 255.0f; - int af = ((int)NK_CLAMP(0, a, 255)) / 255.0f; + float hf = ((float)NK_CLAMP(0, h, 255)) / 255.0f; + float sf = ((float)NK_CLAMP(0, s, 255)) / 255.0f; + float vf = ((float)NK_CLAMP(0, v, 255)) / 255.0f; + float af = ((float)NK_CLAMP(0, a, 255)) / 255.0f; return nk_hsva_f(hf, sf, vf, af); } NK_API struct nk_color nk_hsva_iv(const int *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_hsva_iv"); return nk_hsva(c[0], c[1], c[2], c[3]); } NK_API struct nk_color nk_hsva_bv(const nk_byte *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_byte / nk_hsva_bv"); return nk_hsva(c[0], c[1], c[2], c[3]); } NK_API struct nk_colorf -nk_hsva_colorf(int h, int s, int v, int a) +nk_hsva_colorf(float h, float s, float v, float a) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_hsva_colorf"); int i; - int p, q, t, f; + float p, q, t, f; struct nk_colorf out = {0,0,0,0}; if (s <= 0.0f) { out.r = v; out.g = v; out.b = v; out.a = a; @@ -7827,7 +7733,7 @@ nk_hsva_colorf(int h, int s, int v, int a) } h = h / (60.0f/360.0f); i = (int)h; - f = h - (int)i; + f = h - (float)i; p = v * (1.0f - s); q = v * (1.0f - (s * f)); t = v * (1.0f - s * (1.0f - f)); @@ -7843,28 +7749,24 @@ nk_hsva_colorf(int h, int s, int v, int a) return out; } NK_API struct nk_colorf -nk_hsva_colorfv(int *c) +nk_hsva_colorfv(float *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_hsva_colorfv"); return nk_hsva_colorf(c[0], c[1], c[2], c[3]); } NK_API struct nk_color -nk_hsva_f(int h, int s, int v, int a) +nk_hsva_f(float h, float s, float v, float a) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_hsva_f"); struct nk_colorf c = nk_hsva_colorf(h, s, v, a); return nk_rgba_f(c.r, c.g, c.b, c.a); } NK_API struct nk_color -nk_hsva_fv(const int *c) +nk_hsva_fv(const float *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_hsva_fv"); return nk_hsva_f(c[0], c[1], c[2], c[3]); } NK_API nk_uint nk_color_u32(struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_color / nk_color_u32"); nk_uint out = (nk_uint)in.r; out |= ((nk_uint)in.g << 8); out |= ((nk_uint)in.b << 16); @@ -7872,25 +7774,22 @@ nk_color_u32(struct nk_color in) return out; } NK_API void -nk_color_f(int *r, int *g, int *b, int *a, struct nk_color in) +nk_color_f(float *r, float *g, float *b, float *a, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_color_f"); - NK_STORAGE const int s = 1.0f/255.0f; - *r = (int)in.r * s; - *g = (int)in.g * s; - *b = (int)in.b * s; - *a = (int)in.a * s; + NK_STORAGE const float s = 1.0f/255.0f; + *r = (float)in.r * s; + *g = (float)in.g * s; + *b = (float)in.b * s; + *a = (float)in.a * s; } NK_API void -nk_color_fv(int *c, struct nk_color in) +nk_color_fv(float *c, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_color_fv"); nk_color_f(&c[0], &c[1], &c[2], &c[3], in); } NK_API struct nk_colorf nk_color_cf(struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_color / nk_color_cf"); struct nk_colorf o; nk_color_f(&o.r, &o.g, &o.b, &o.a, in); return o; @@ -7898,7 +7797,6 @@ nk_color_cf(struct nk_color in) NK_API void nk_color_d(double *r, double *g, double *b, double *a, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / nk_color_d"); NK_STORAGE const double s = 1.0/255.0; *r = (double)in.r * s; *g = (double)in.g * s; @@ -7908,36 +7806,32 @@ nk_color_d(double *r, double *g, double *b, double *a, struct nk_color in) NK_API void nk_color_dv(double *c, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_color_dv"); nk_color_d(&c[0], &c[1], &c[2], &c[3], in); } NK_API void -nk_color_hsv_f(int *out_h, int *out_s, int *out_v, struct nk_color in) +nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_h / nk_color_hsv_f"); - int a; + float a; nk_color_hsva_f(out_h, out_s, out_v, &a, in); } NK_API void -nk_color_hsv_fv(int *out, struct nk_color in) +nk_color_hsv_fv(float *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsv_fv"); - int a; + float a; nk_color_hsva_f(&out[0], &out[1], &out[2], &a, in); } NK_API void -nk_colorf_hsva_f(int *out_h, int *out_s, - int *out_v, int *out_a, struct nk_colorf in) +nk_colorf_hsva_f(float *out_h, float *out_s, + float *out_v, float *out_a, struct nk_colorf in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_v, / int"); - int chroma; - int K = 0.0f; + float chroma; + float K = 0.0f; if (in.g < in.b) { - const int t = in.g; in.g = in.b; in.b = t; + const float t = in.g; in.g = in.b; in.b = t; K = -1.f; } if (in.r < in.g) { - const int t = in.r; in.r = in.g; in.g = t; + const float t = in.r; in.r = in.g; in.g = t; K = -2.f/6.0f - K; } chroma = in.r - ((in.g < in.b) ? in.g: in.b); @@ -7948,32 +7842,28 @@ nk_colorf_hsva_f(int *out_h, int *out_s, } NK_API void -nk_colorf_hsva_fv(int *hsva, struct nk_colorf in) +nk_colorf_hsva_fv(float *hsva, struct nk_colorf in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - hsva / nk_colorf_hsva_fv"); nk_colorf_hsva_f(&hsva[0], &hsva[1], &hsva[2], &hsva[3], in); } NK_API void -nk_color_hsva_f(int *out_h, int *out_s, - int *out_v, int *out_a, struct nk_color in) +nk_color_hsva_f(float *out_h, float *out_s, + float *out_v, float *out_a, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_v, / int"); struct nk_colorf col; nk_color_f(&col.r,&col.g,&col.b,&col.a, in); nk_colorf_hsva_f(out_h, out_s, out_v, out_a, col); } NK_API void -nk_color_hsva_fv(int *out, struct nk_color in) +nk_color_hsva_fv(float *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsva_fv"); nk_color_hsva_f(&out[0], &out[1], &out[2], &out[3], in); } NK_API void nk_color_hsva_i(int *out_h, int *out_s, int *out_v, int *out_a, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_a, / int"); - int h,s,v,a; + float h,s,v,a; nk_color_hsva_f(&h, &s, &v, &a, in); *out_h = (nk_byte)(h * 255.0f); *out_s = (nk_byte)(s * 255.0f); @@ -7983,13 +7873,11 @@ nk_color_hsva_i(int *out_h, int *out_s, int *out_v, NK_API void nk_color_hsva_iv(int *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsva_iv"); nk_color_hsva_i(&out[0], &out[1], &out[2], &out[3], in); } NK_API void nk_color_hsva_bv(nk_byte *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsva_bv"); int tmp[4]; nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); out[0] = (nk_byte)tmp[0]; @@ -8000,7 +7888,6 @@ nk_color_hsva_bv(nk_byte *out, struct nk_color in) NK_API void nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - h / nk_color_hsva_b"); int tmp[4]; nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); *h = (nk_byte)tmp[0]; @@ -8011,14 +7898,12 @@ nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color NK_API void nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_h / nk_color_hsv_i"); int a; nk_color_hsva_i(out_h, out_s, out_v, &a, in); } NK_API void nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out_h / nk_color_hsv_b"); int tmp[4]; nk_color_hsva_i(&tmp[0], &tmp[1], &tmp[2], &tmp[3], in); *out_h = (nk_byte)tmp[0]; @@ -8028,13 +7913,11 @@ nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color i NK_API void nk_color_hsv_iv(int *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsv_iv"); nk_color_hsv_i(&out[0], &out[1], &out[2], in); } NK_API void nk_color_hsv_bv(nk_byte *out, struct nk_color in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - out / nk_color_hsv_bv"); int tmp[4]; nk_color_hsv_i(&tmp[0], &tmp[1], &tmp[2], in); out[0] = (nk_byte)tmp[0]; @@ -8059,8 +7942,7 @@ NK_GLOBAL const nk_uint nk_utfmax[NK_UTF_SIZE+1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFF NK_INTERN int nk_utf_validate(nk_rune *u, int i) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - u / nk_utf_validate"); - // NK_ASSERT(u); + NK_ASSERT(u); if (!u) return 0; if (!NK_BETWEEN(*u, nk_utfmin[i], nk_utfmax[i]) || NK_BETWEEN(*u, 0xD800, 0xDFFF)) @@ -8071,8 +7953,7 @@ nk_utf_validate(nk_rune *u, int i) NK_INTERN nk_rune nk_utf_decode_byte(char c, int *i) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_utf_decode_byte"); - // NK_ASSERT(i); + NK_ASSERT(i); if (!i) return 0; for(*i = 0; *i < (int)NK_LEN(nk_utfmask); ++(*i)) { if (((nk_byte)c & nk_utfmask[*i]) == nk_utfbyte[*i]) @@ -8083,56 +7964,87 @@ nk_utf_decode_byte(char c, int *i) NK_API int nk_utf_decode(const char *c, nk_rune *u, int clen) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_utf_decode"); + int i, j, len, type=0; + nk_rune udecoded; - if (!c || !u) { + NK_ASSERT(c); + NK_ASSERT(u); - return 0; + if (!c || !u) return 0; + if (!clen) return 0; + *u = NK_UTF_INVALID; + + udecoded = nk_utf_decode_byte(c[0], &len); + if (!NK_BETWEEN(len, 1, NK_UTF_SIZE)) + return 1; + + for (i = 1, j = 1; i < clen && j < len; ++i, ++j) { + udecoded = (udecoded << 6) | nk_utf_decode_byte(c[i], &type); + if (type != 0) + return j; } - if (!clen) { - - return 0; - } - - *u = c[0]; - - return 1; + if (j < len) + return 0; + *u = udecoded; + nk_utf_validate(u, len); + return len; } NK_INTERN char nk_utf_encode_byte(nk_rune u, int i) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - u / nk_utf_encode_byte"); return (char)((nk_utfbyte[i]) | ((nk_byte)u & ~nk_utfmask[i])); } NK_API int nk_utf_encode(nk_rune u, char *c, int clen) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - u / nk_utf_encode"); - c[0] = u; - return 1; + int len, i; + len = nk_utf_validate(&u, 0); + if (clen < len || !len || len > NK_UTF_SIZE) + return 0; + + for (i = len - 1; i != 0; --i) { + c[i] = nk_utf_encode_byte(u, 0); + u >>= 6; + } + c[0] = nk_utf_encode_byte(u, len); + return len; } NK_API int nk_utf_len(const char *str, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_utf_len"); - return len; + const char *text; + int glyphs = 0; + int text_len; + int glyph_len; + int src_len = 0; + nk_rune unicode; + + NK_ASSERT(str); + if (!str || !len) return 0; + + text = str; + text_len = len; + glyph_len = nk_utf_decode(text, &unicode, text_len); + while (glyph_len && src_len < len) { + glyphs++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, &unicode, text_len - src_len); + } + return glyphs; } NK_API const char* nk_utf_at(const char *buffer, int length, int index, nk_rune *unicode, int *len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - unicode, / nk_rune"); - - //writeSerialPort(boutRefNum, "nk_utf_at"); int i = 0; int src_len = 0; int glyph_len = 0; const char *text; int text_len; - // NK_ASSERT(buffer); - // NK_ASSERT(unicode); - // NK_ASSERT(len); + NK_ASSERT(buffer); + NK_ASSERT(unicode); + NK_ASSERT(len); if (!buffer || !unicode || !len) return 0; if (index < 0) { @@ -8171,7 +8083,6 @@ nk_utf_at(const char *buffer, int length, int index, NK_LIB void* nk_malloc(nk_handle unused, void *old,nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - unused / nk_malloc"); NK_UNUSED(unused); NK_UNUSED(old); return malloc(size); @@ -8179,14 +8090,12 @@ nk_malloc(nk_handle unused, void *old,nk_size size) NK_LIB void nk_mfree(nk_handle unused, void *ptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - unused / nk_mfree"); NK_UNUSED(unused); free(ptr); } NK_API void nk_buffer_init_default(struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_init_default"); struct nk_allocator alloc; alloc.userdata.ptr = 0; alloc.alloc = nk_malloc; @@ -8199,10 +8108,9 @@ NK_API void nk_buffer_init(struct nk_buffer *b, const struct nk_allocator *a, nk_size initial_size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - initial_size) / nk_size"); - // NK_ASSERT(b); - // NK_ASSERT(a); - // NK_ASSERT(initial_size); + NK_ASSERT(b); + NK_ASSERT(a); + NK_ASSERT(initial_size); if (!b || !a || !initial_size) return; nk_zero(b, sizeof(*b)); @@ -8216,10 +8124,9 @@ nk_buffer_init(struct nk_buffer *b, const struct nk_allocator *a, NK_API void nk_buffer_init_fixed(struct nk_buffer *b, void *m, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_init_fixed"); - // NK_ASSERT(b); - // NK_ASSERT(m); - // NK_ASSERT(size); + NK_ASSERT(b); + NK_ASSERT(m); + NK_ASSERT(size); if (!b || !m || !size) return; nk_zero(b, sizeof(*b)); @@ -8233,7 +8140,6 @@ nk_buffer_align(void *unaligned, nk_size align, nk_size *alignment, enum nk_buffer_allocation_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer_align"); void *memory = 0; switch (type) { default: @@ -8262,18 +8168,17 @@ nk_buffer_align(void *unaligned, NK_LIB void* nk_buffer_realloc(struct nk_buffer *b, nk_size capacity, nk_size *size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_realloc"); void *temp; nk_size buffer_size; - // NK_ASSERT(b); - // NK_ASSERT(size); + NK_ASSERT(b); + NK_ASSERT(size); if (!b || !size || !b->pool.alloc || !b->pool.free) return 0; buffer_size = b->memory.size; temp = b->pool.alloc(b->pool.userdata, b->memory.ptr, capacity); - // NK_ASSERT(temp); + NK_ASSERT(temp); if (!temp) return 0; *size = capacity; @@ -8302,14 +8207,13 @@ NK_LIB void* nk_buffer_alloc(struct nk_buffer *b, enum nk_buffer_allocation_type type, nk_size size, nk_size align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer_alloc"); int full; nk_size alignment; void *unaligned; void *memory; - // NK_ASSERT(b); - // NK_ASSERT(size); + NK_ASSERT(b); + NK_ASSERT(size); if (!b || !size) return 0; b->needed += size; @@ -8328,12 +8232,12 @@ nk_buffer_alloc(struct nk_buffer *b, enum nk_buffer_allocation_type type, nk_size capacity; if (b->type != NK_BUFFER_DYNAMIC) return 0; - // NK_ASSERT(b->pool.alloc && b->pool.free); + NK_ASSERT(b->pool.alloc && b->pool.free); if (b->type != NK_BUFFER_DYNAMIC || !b->pool.alloc || !b->pool.free) return 0; /* buffer is full so allocate bigger buffer if dynamic */ - capacity = (nk_size)((int)b->memory.size * b->grow_factor); + capacity = (nk_size)((float)b->memory.size * b->grow_factor); capacity = NK_MAX(capacity, nk_round_up_pow2((nk_uint)(b->allocated + size))); b->memory.ptr = nk_buffer_realloc(b, capacity, &b->memory.size); if (!b->memory.ptr) return 0; @@ -8355,7 +8259,6 @@ NK_API void nk_buffer_push(struct nk_buffer *b, enum nk_buffer_allocation_type type, const void *memory, nk_size size, nk_size align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer_push"); void *mem = nk_buffer_alloc(b, type, size, align); if (!mem) return; NK_MEMCPY(mem, memory, size); @@ -8363,8 +8266,7 @@ nk_buffer_push(struct nk_buffer *b, enum nk_buffer_allocation_type type, NK_API void nk_buffer_mark(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_mark"); - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer) return; buffer->marker[type].active = nk_true; if (type == NK_BUFFER_BACK) @@ -8374,8 +8276,7 @@ nk_buffer_mark(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) NK_API void nk_buffer_reset(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_reset"); - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer) return; if (type == NK_BUFFER_BACK) { /* reset back buffer either back to marker or empty */ @@ -8396,8 +8297,7 @@ nk_buffer_reset(struct nk_buffer *buffer, enum nk_buffer_allocation_type type) NK_API void nk_buffer_clear(struct nk_buffer *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_clear"); - // NK_ASSERT(b); + NK_ASSERT(b); if (!b) return; b->allocated = 0; b->size = b->memory.size; @@ -8407,20 +8307,18 @@ nk_buffer_clear(struct nk_buffer *b) NK_API void nk_buffer_free(struct nk_buffer *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_free"); - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || !b->memory.ptr) return; if (b->type == NK_BUFFER_FIXED) return; if (!b->pool.free) return; - // NK_ASSERT(b->pool.free); + NK_ASSERT(b->pool.free); b->pool.free(b->pool.userdata, b->memory.ptr); } NK_API void nk_buffer_info(struct nk_memory_status *s, struct nk_buffer *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_memory_status / nk_buffer_info"); - // NK_ASSERT(b); - // NK_ASSERT(s); + NK_ASSERT(b); + NK_ASSERT(s); if (!s || !b) return; s->allocated = b->allocated; s->size = b->memory.size; @@ -8431,24 +8329,21 @@ nk_buffer_info(struct nk_memory_status *s, struct nk_buffer *b) NK_API void* nk_buffer_memory(struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_memory"); - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer) return 0; return buffer->memory.ptr; } NK_API const void* nk_buffer_memory_const(const struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_buffer_memory_const"); - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer) return 0; return buffer->memory.ptr; } NK_API nk_size nk_buffer_total(struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / nk_buffer_total"); - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer) return 0; return buffer->memory.size; } @@ -8466,7 +8361,6 @@ nk_buffer_total(struct nk_buffer *buffer) NK_API void nk_str_init_default(struct nk_str *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_init_default"); struct nk_allocator alloc; alloc.userdata.ptr = 0; alloc.alloc = nk_malloc; @@ -8479,24 +8373,21 @@ nk_str_init_default(struct nk_str *str) NK_API void nk_str_init(struct nk_str *str, const struct nk_allocator *alloc, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_init"); nk_buffer_init(&str->buffer, alloc, size); str->len = 0; } NK_API void nk_str_init_fixed(struct nk_str *str, void *memory, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_init_fixed"); nk_buffer_init_fixed(&str->buffer, memory, size); str->len = 0; } NK_API int nk_str_append_text_char(struct nk_str *s, const char *str, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_text_char"); char *mem; - // NK_ASSERT(s); - // NK_ASSERT(str); + NK_ASSERT(s); + NK_ASSERT(str); if (!s || !str || !len) return 0; mem = (char*)nk_buffer_alloc(&s->buffer, NK_BUFFER_FRONT, (nk_size)len * sizeof(char), 0); if (!mem) return 0; @@ -8507,13 +8398,11 @@ nk_str_append_text_char(struct nk_str *s, const char *str, int len) NK_API int nk_str_append_str_char(struct nk_str *s, const char *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_str_char"); - return nk_str_append_text_char(s, str, strlen(str)); + return nk_str_append_text_char(s, str, nk_strlen(str)); } NK_API int nk_str_append_text_utf8(struct nk_str *str, const char *text, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_text_utf8"); int i = 0; int byte_len = 0; nk_rune unicode; @@ -8526,8 +8415,6 @@ nk_str_append_text_utf8(struct nk_str *str, const char *text, int len) NK_API int nk_str_append_str_utf8(struct nk_str *str, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_str_utf8"); - //writeSerialPort(boutRefNum, "nk_str_append_str_utf8"); int runes = 0; int byte_len = 0; int num_runes = 0; @@ -8547,12 +8434,11 @@ nk_str_append_str_utf8(struct nk_str *str, const char *text) NK_API int nk_str_append_text_runes(struct nk_str *str, const nk_rune *text, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_text_runes"); int i = 0; int byte_len = 0; nk_glyph glyph; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str || !text || !len) return 0; for (i = 0; i < len; ++i) { byte_len = nk_utf_encode(text[i], glyph, NK_UTF_SIZE); @@ -8564,12 +8450,10 @@ nk_str_append_text_runes(struct nk_str *str, const nk_rune *text, int len) NK_API int nk_str_append_str_runes(struct nk_str *str, const nk_rune *runes) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_append_str_runes"); - //writeSerialPort(boutRefNum, "nk_str_append_str_runes"); int i = 0; nk_glyph glyph; int byte_len; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str || !runes) return 0; while (runes[i] != '\0') { byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); @@ -8581,18 +8465,18 @@ nk_str_append_str_runes(struct nk_str *str, const nk_rune *runes) NK_API int nk_str_insert_at_char(struct nk_str *s, int pos, const char *str, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_at_char"); int i; void *mem; char *src; char *dst; int copylen; - // NK_ASSERT(s); - // NK_ASSERT(str); - // NK_ASSERT(len >= 0); + NK_ASSERT(s); + NK_ASSERT(str); + NK_ASSERT(len >= 0); if (!s || !str || !len || (nk_size)pos > s->buffer.allocated) return 0; - if ((s->buffer.allocated + (nk_size)len >= s->buffer.memory.size) && (s->buffer.type == NK_BUFFER_FIXED)) return 0; + if ((s->buffer.allocated + (nk_size)len >= s->buffer.memory.size) && + (s->buffer.type == NK_BUFFER_FIXED)) return 0; copylen = (int)s->buffer.allocated - pos; if (!copylen) { @@ -8603,8 +8487,8 @@ nk_str_insert_at_char(struct nk_str *s, int pos, const char *str, int len) if (!mem) return 0; /* memmove */ - // NK_ASSERT(((int)pos + (int)len + ((int)copylen - 1)) >= 0); - // NK_ASSERT(((int)pos + ((int)copylen - 1)) >= 0); + NK_ASSERT(((int)pos + (int)len + ((int)copylen - 1)) >= 0); + NK_ASSERT(((int)pos + ((int)copylen - 1)) >= 0); dst = nk_ptr_add(char, s->buffer.memory.ptr, pos + len + (copylen - 1)); src = nk_ptr_add(char, s->buffer.memory.ptr, pos + (copylen-1)); for (i = 0; i < copylen; ++i) *dst-- = *src--; @@ -8616,15 +8500,14 @@ nk_str_insert_at_char(struct nk_str *s, int pos, const char *str, int len) NK_API int nk_str_insert_at_rune(struct nk_str *str, int pos, const char *cstr, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_at_rune"); int glyph_len; nk_rune unicode; const char *begin; const char *buffer; - // NK_ASSERT(str); - // NK_ASSERT(cstr); - // NK_ASSERT(len); + NK_ASSERT(str); + NK_ASSERT(cstr); + NK_ASSERT(len); if (!str || !cstr || !len) return 0; begin = nk_str_at_rune(str, pos, &unicode, &glyph_len); if (!str->len) @@ -8636,25 +8519,22 @@ nk_str_insert_at_rune(struct nk_str *str, int pos, const char *cstr, int len) NK_API int nk_str_insert_text_char(struct nk_str *str, int pos, const char *text, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_text_char"); return nk_str_insert_text_utf8(str, pos, text, len); } NK_API int nk_str_insert_str_char(struct nk_str *str, int pos, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_str_char"); - return nk_str_insert_text_utf8(str, pos, text, strlen(text)); + return nk_str_insert_text_utf8(str, pos, text, nk_strlen(text)); } NK_API int nk_str_insert_text_utf8(struct nk_str *str, int pos, const char *text, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_text_utf8"); int i = 0; int byte_len = 0; nk_rune unicode; - // NK_ASSERT(str); - // NK_ASSERT(text); + NK_ASSERT(str); + NK_ASSERT(text); if (!str || !text || !len) return 0; for (i = 0; i < len; ++i) byte_len += nk_utf_decode(text+byte_len, &unicode, 4); @@ -8664,7 +8544,6 @@ nk_str_insert_text_utf8(struct nk_str *str, int pos, const char *text, int len) NK_API int nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_str_utf8"); int runes = 0; int byte_len = 0; int num_runes = 0; @@ -8673,7 +8552,6 @@ nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) if (!str || !text) return 0; glyph_len = byte_len = nk_utf_decode(text+byte_len, &unicode, 4); - //writeSerialPort(boutRefNum, "nk_str_insert_str_utf8"); while (unicode != '\0' && glyph_len) { glyph_len = nk_utf_decode(text+byte_len, &unicode, 4); byte_len += glyph_len; @@ -8685,12 +8563,11 @@ nk_str_insert_str_utf8(struct nk_str *str, int pos, const char *text) NK_API int nk_str_insert_text_runes(struct nk_str *str, int pos, const nk_rune *runes, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_text_runes"); int i = 0; int byte_len = 0; nk_glyph glyph; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str || !runes || !len) return 0; for (i = 0; i < len; ++i) { byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); @@ -8702,13 +8579,11 @@ nk_str_insert_text_runes(struct nk_str *str, int pos, const nk_rune *runes, int NK_API int nk_str_insert_str_runes(struct nk_str *str, int pos, const nk_rune *runes) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_insert_str_runes"); int i = 0; nk_glyph glyph; int byte_len; - // NK_ASSERT(str); + NK_ASSERT(str); if (!str || !runes) return 0; - //writeSerialPort(boutRefNum, "nk_str_insert_str_runes"); while (runes[i] != '\0') { byte_len = nk_utf_encode(runes[i], glyph, NK_UTF_SIZE); nk_str_insert_at_rune(str, pos+i, glyph, byte_len); @@ -8719,25 +8594,23 @@ nk_str_insert_str_runes(struct nk_str *str, int pos, const nk_rune *runes) NK_API void nk_str_remove_chars(struct nk_str *s, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_remove_chars"); - // NK_ASSERT(s); - // NK_ASSERT(len >= 0); + NK_ASSERT(s); + NK_ASSERT(len >= 0); if (!s || len < 0 || (nk_size)len > s->buffer.allocated) return; - // NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); + NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); s->buffer.allocated -= (nk_size)len; s->len = nk_utf_len((char *)s->buffer.memory.ptr, (int)s->buffer.allocated); } NK_API void nk_str_remove_runes(struct nk_str *str, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_remove_runes"); int index; const char *begin; const char *end; nk_rune unicode; - // NK_ASSERT(str); - // NK_ASSERT(len >= 0); + NK_ASSERT(str); + NK_ASSERT(len >= 0); if (!str || len < 0) return; if (len >= str->len) { str->len = 0; @@ -8752,8 +8625,7 @@ nk_str_remove_runes(struct nk_str *str, int len) NK_API void nk_str_delete_chars(struct nk_str *s, int pos, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_delete_chars"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || !len || (nk_size)pos > s->buffer.allocated || (nk_size)(pos + len) > s->buffer.allocated) return; @@ -8762,7 +8634,7 @@ nk_str_delete_chars(struct nk_str *s, int pos, int len) char *dst = nk_ptr_add(char, s->buffer.memory.ptr, pos); char *src = nk_ptr_add(char, s->buffer.memory.ptr, pos + len); NK_MEMCPY(dst, src, s->buffer.allocated - (nk_size)(pos + len)); - // NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); + NK_ASSERT(((int)s->buffer.allocated - (int)len) >= 0); s->buffer.allocated -= (nk_size)len; } else nk_str_remove_chars(s, len); s->len = nk_utf_len((char *)s->buffer.memory.ptr, (int)s->buffer.allocated); @@ -8770,15 +8642,14 @@ nk_str_delete_chars(struct nk_str *s, int pos, int len) NK_API void nk_str_delete_runes(struct nk_str *s, int pos, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_delete_runes"); char *temp; nk_rune unicode; char *begin; char *end; int unused; - // NK_ASSERT(s); - // NK_ASSERT(s->len >= pos + len); + NK_ASSERT(s); + NK_ASSERT(s->len >= pos + len); if (s->len < pos + len) len = NK_CLAMP(0, (s->len - pos), s->len); if (!len) return; @@ -8795,38 +8666,65 @@ nk_str_delete_runes(struct nk_str *s, int pos, int len) NK_API char* nk_str_at_char(struct nk_str *s, int pos) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_at_char"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || pos > (int)s->buffer.allocated) return 0; return nk_ptr_add(char, s->buffer.memory.ptr, pos); } NK_API char* nk_str_at_rune(struct nk_str *str, int pos, nk_rune *unicode, int *len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_at_rune"); - return (char*)str->buffer.memory.ptr + strlen((char*)str->buffer.memory.ptr); -} -NK_API const char* -nk_str_at_char_const(const struct nk_str *s, int pos) -{ - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_str_at_char_const"); - // NK_ASSERT(s); - if (!s || pos > (int)s->buffer.allocated) return 0; - return nk_ptr_add(char, s->buffer.memory.ptr, pos); -} -NK_API const char* -nk_str_at_const(const struct nk_str *str, int pos, nk_rune *unicode, int *len) -{ - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_str_at_const"); int i = 0; int src_len = 0; int glyph_len = 0; char *text; int text_len; - // NK_ASSERT(str); - // NK_ASSERT(unicode); - // NK_ASSERT(len); + NK_ASSERT(str); + NK_ASSERT(unicode); + NK_ASSERT(len); + + if (!str || !unicode || !len) return 0; + if (pos < 0) { + *unicode = 0; + *len = 0; + return 0; + } + + text = (char*)str->buffer.memory.ptr; + text_len = (int)str->buffer.allocated; + glyph_len = nk_utf_decode(text, unicode, text_len); + while (glyph_len) { + if (i == pos) { + *len = glyph_len; + break; + } + + i++; + src_len = src_len + glyph_len; + glyph_len = nk_utf_decode(text + src_len, unicode, text_len - src_len); + } + if (i != pos) return 0; + return text + src_len; +} +NK_API const char* +nk_str_at_char_const(const struct nk_str *s, int pos) +{ + NK_ASSERT(s); + if (!s || pos > (int)s->buffer.allocated) return 0; + return nk_ptr_add(char, s->buffer.memory.ptr, pos); +} +NK_API const char* +nk_str_at_const(const struct nk_str *str, int pos, nk_rune *unicode, int *len) +{ + int i = 0; + int src_len = 0; + int glyph_len = 0; + char *text; + int text_len; + + NK_ASSERT(str); + NK_ASSERT(unicode); + NK_ASSERT(len); if (!str || !unicode || !len) return 0; if (pos < 0) { @@ -8838,7 +8736,6 @@ nk_str_at_const(const struct nk_str *str, int pos, nk_rune *unicode, int *len) text = (char*)str->buffer.memory.ptr; text_len = (int)str->buffer.allocated; glyph_len = nk_utf_decode(text, unicode, text_len); - //writeSerialPort(boutRefNum, "nk_str_at_const"); while (glyph_len) { if (i == pos) { *len = glyph_len; @@ -8855,7 +8752,6 @@ nk_str_at_const(const struct nk_str *str, int pos, nk_rune *unicode, int *len) NK_API nk_rune nk_str_rune_at(const struct nk_str *str, int pos) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_str_rune_at"); int len; nk_rune unicode = 0; nk_str_at_const(str, pos, &unicode, &len); @@ -8864,48 +8760,42 @@ nk_str_rune_at(const struct nk_str *str, int pos) NK_API char* nk_str_get(struct nk_str *s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_get"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || !s->len || !s->buffer.allocated) return 0; return (char*)s->buffer.memory.ptr; } NK_API const char* nk_str_get_const(const struct nk_str *s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_str_get_const"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || !s->len || !s->buffer.allocated) return 0; return (const char*)s->buffer.memory.ptr; } NK_API int nk_str_len(struct nk_str *s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_len"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || !s->len || !s->buffer.allocated) return 0; return s->len; } NK_API int nk_str_len_char(struct nk_str *s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_len_char"); - // NK_ASSERT(s); + NK_ASSERT(s); if (!s || !s->len || !s->buffer.allocated) return 0; return (int)s->buffer.allocated; } NK_API void nk_str_clear(struct nk_str *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_clear"); - // NK_ASSERT(str); + NK_ASSERT(str); nk_buffer_clear(&str->buffer); str->len = 0; } NK_API void nk_str_free(struct nk_str *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_str / nk_str_free"); - // NK_ASSERT(str); + NK_ASSERT(str); nk_buffer_free(&str->buffer); str->len = 0; } @@ -8923,9 +8813,8 @@ NK_LIB void nk_command_buffer_init(struct nk_command_buffer *cb, struct nk_buffer *b, enum nk_command_clipping clip) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_command_buffer_init"); - // NK_ASSERT(cb); - // NK_ASSERT(b); + NK_ASSERT(cb); + NK_ASSERT(b); if (!cb || !b) return; cb->base = b; cb->use_clipping = (int)clip; @@ -8936,8 +8825,7 @@ nk_command_buffer_init(struct nk_command_buffer *cb, NK_LIB void nk_command_buffer_reset(struct nk_command_buffer *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_command_buffer / nk_command_buffer_reset"); - // NK_ASSERT(b); + NK_ASSERT(b); if (!b) return; b->begin = 0; b->end = 0; @@ -8951,13 +8839,14 @@ NK_LIB void* nk_command_buffer_push(struct nk_command_buffer* b, enum nk_command_type t, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_command_buffer_push"); NK_STORAGE const nk_size align = NK_ALIGNOF(struct nk_command); struct nk_command *cmd; nk_size alignment; void *unaligned; void *memory; + NK_ASSERT(b); + NK_ASSERT(b->base); if (!b) return 0; cmd = (struct nk_command*)nk_buffer_alloc(b->base,NK_BUFFER_FRONT,size,align); if (!cmd) return 0; @@ -8982,9 +8871,8 @@ nk_command_buffer_push(struct nk_command_buffer* b, NK_API void nk_push_scissor(struct nk_command_buffer *b, struct nk_rect r) { - // //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_command_buffer / nk_push_scissor"); struct nk_command_scissor *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b) return; b->clip.x = r.x; @@ -9001,12 +8889,11 @@ nk_push_scissor(struct nk_command_buffer *b, struct nk_rect r) cmd->h = (unsigned short)NK_MAX(0, r.h); } NK_API void -nk_stroke_line(struct nk_command_buffer *b, int x0, int y0, - int x1, int y1, int line_thickness, struct nk_color c) +nk_stroke_line(struct nk_command_buffer *b, float x0, float y0, + float x1, float y1, float line_thickness, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_line"); struct nk_command_line *cmd; - + NK_ASSERT(b); if (!b || line_thickness <= 0) return; cmd = (struct nk_command_line*) nk_command_buffer_push(b, NK_COMMAND_LINE, sizeof(*cmd)); @@ -9019,13 +8906,12 @@ nk_stroke_line(struct nk_command_buffer *b, int x0, int y0, cmd->color = c; } NK_API void -nk_stroke_curve(struct nk_command_buffer *b, int ax, int ay, - int ctrl0x, int ctrl0y, int ctrl1x, int ctrl1y, - int bx, int by, int line_thickness, struct nk_color col) +nk_stroke_curve(struct nk_command_buffer *b, float ax, float ay, + float ctrl0x, float ctrl0y, float ctrl1x, float ctrl1y, + float bx, float by, float line_thickness, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - bx, / int"); struct nk_command_curve *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || col.a == 0 || line_thickness <= 0) return; cmd = (struct nk_command_curve*) @@ -9044,11 +8930,10 @@ nk_stroke_curve(struct nk_command_buffer *b, int ax, int ay, } NK_API void nk_stroke_rect(struct nk_command_buffer *b, struct nk_rect rect, - int rounding, int line_thickness, struct nk_color c) + float rounding, float line_thickness, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_rect"); struct nk_command_rect *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0 || rect.w == 0 || rect.h == 0 || line_thickness <= 0) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; @@ -9058,6 +8943,7 @@ nk_stroke_rect(struct nk_command_buffer *b, struct nk_rect rect, cmd = (struct nk_command_rect*) nk_command_buffer_push(b, NK_COMMAND_RECT, sizeof(*cmd)); if (!cmd) return; + cmd->rounding = (unsigned short)rounding; cmd->line_thickness = (unsigned short)line_thickness; cmd->x = (short)rect.x; cmd->y = (short)rect.y; @@ -9067,11 +8953,10 @@ nk_stroke_rect(struct nk_command_buffer *b, struct nk_rect rect, } NK_API void nk_fill_rect(struct nk_command_buffer *b, struct nk_rect rect, - int rounding, struct nk_color c) + float rounding, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_fill_rect"); struct nk_command_rect_filled *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0 || rect.w == 0 || rect.h == 0) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; @@ -9082,6 +8967,7 @@ nk_fill_rect(struct nk_command_buffer *b, struct nk_rect rect, cmd = (struct nk_command_rect_filled*) nk_command_buffer_push(b, NK_COMMAND_RECT_FILLED, sizeof(*cmd)); if (!cmd) return; + cmd->rounding = (unsigned short)rounding; cmd->x = (short)rect.x; cmd->y = (short)rect.y; cmd->w = (unsigned short)NK_MAX(0, rect.w); @@ -9093,9 +8979,8 @@ nk_fill_rect_multi_color(struct nk_command_buffer *b, struct nk_rect rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_fill_rect_multi_color"); struct nk_command_rect_multi_color *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || rect.w == 0 || rect.h == 0) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; @@ -9117,9 +9002,8 @@ nk_fill_rect_multi_color(struct nk_command_buffer *b, struct nk_rect rect, } NK_API void nk_stroke_circle(struct nk_command_buffer *b, struct nk_rect r, - int line_thickness, struct nk_color c) + float line_thickness, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_circle"); struct nk_command_circle *cmd; if (!b || r.w == 0 || r.h == 0 || line_thickness <= 0) return; if (b->use_clipping) { @@ -9141,9 +9025,8 @@ nk_stroke_circle(struct nk_command_buffer *b, struct nk_rect r, NK_API void nk_fill_circle(struct nk_command_buffer *b, struct nk_rect r, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL -nk_fill_circlee"); struct nk_command_circle_filled *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0 || r.w == 0 || r.h == 0) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; @@ -9161,10 +9044,9 @@ nk_fill_circle(struct nk_command_buffer *b, struct nk_rect r, struct nk_color c) cmd->color = c; } NK_API void -nk_stroke_arc(struct nk_command_buffer *b, int cx, int cy, int radius, - int a_min, int a_max, int line_thickness, struct nk_color c) +nk_stroke_arc(struct nk_command_buffer *b, float cx, float cy, float radius, + float a_min, float a_max, float line_thickness, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_arc"); struct nk_command_arc *cmd; if (!b || c.a == 0 || line_thickness <= 0) return; cmd = (struct nk_command_arc*) @@ -9179,12 +9061,11 @@ nk_stroke_arc(struct nk_command_buffer *b, int cx, int cy, int radius, cmd->color = c; } NK_API void -nk_fill_arc(struct nk_command_buffer *b, int cx, int cy, int radius, - int a_min, int a_max, struct nk_color c) +nk_fill_arc(struct nk_command_buffer *b, float cx, float cy, float radius, + float a_min, float a_max, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_fill_arc"); struct nk_command_arc_filled *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0) return; cmd = (struct nk_command_arc_filled*) nk_command_buffer_push(b, NK_COMMAND_ARC_FILLED, sizeof(*cmd)); @@ -9197,16 +9078,17 @@ nk_fill_arc(struct nk_command_buffer *b, int cx, int cy, int radius, cmd->color = c; } NK_API void -nk_stroke_triangle(struct nk_command_buffer *b, int x0, int y0, int x1, - int y1, int x2, int y2, int line_thickness, struct nk_color c) +nk_stroke_triangle(struct nk_command_buffer *b, float x0, float y0, float x1, + float y1, float x2, float y2, float line_thickness, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_triangle"); struct nk_command_triangle *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0 || line_thickness <= 0) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; - if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) + if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) return; } @@ -9223,17 +9105,18 @@ nk_stroke_triangle(struct nk_command_buffer *b, int x0, int y0, int x1, cmd->color = c; } NK_API void -nk_fill_triangle(struct nk_command_buffer *b, int x0, int y0, int x1, - int y1, int x2, int y2, struct nk_color c) +nk_fill_triangle(struct nk_command_buffer *b, float x0, float y0, float x1, + float y1, float x2, float y2, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_fill_triangle"); struct nk_command_triangle_filled *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || c.a == 0) return; if (!b) return; if (b->use_clipping) { const struct nk_rect *clip = &b->clip; - if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) + if (!NK_INBOX(x0, y0, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x1, y1, clip->x, clip->y, clip->w, clip->h) && + !NK_INBOX(x2, y2, clip->x, clip->y, clip->w, clip->h)) return; } @@ -9249,15 +9132,14 @@ nk_fill_triangle(struct nk_command_buffer *b, int x0, int y0, int x1, cmd->color = c; } NK_API void -nk_stroke_polygon(struct nk_command_buffer *b, int *points, int point_count, - int line_thickness, struct nk_color col) +nk_stroke_polygon(struct nk_command_buffer *b, float *points, int point_count, + float line_thickness, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - line_thickness, / int"); int i; nk_size size = 0; struct nk_command_polygon *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || col.a == 0 || line_thickness <= 0) return; size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; cmd = (struct nk_command_polygon*) nk_command_buffer_push(b, NK_COMMAND_POLYGON, size); @@ -9271,15 +9153,14 @@ nk_stroke_polygon(struct nk_command_buffer *b, int *points, int point_count, } } NK_API void -nk_fill_polygon(struct nk_command_buffer *b, int *points, int point_count, +nk_fill_polygon(struct nk_command_buffer *b, float *points, int point_count, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_fill_polygon"); int i; nk_size size = 0; struct nk_command_polygon_filled *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || col.a == 0) return; size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; cmd = (struct nk_command_polygon_filled*) @@ -9293,15 +9174,14 @@ nk_fill_polygon(struct nk_command_buffer *b, int *points, int point_count, } } NK_API void -nk_stroke_polyline(struct nk_command_buffer *b, int *points, int point_count, - int line_thickness, struct nk_color col) +nk_stroke_polyline(struct nk_command_buffer *b, float *points, int point_count, + float line_thickness, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_stroke_polyline"); int i; nk_size size = 0; struct nk_command_polyline *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b || col.a == 0 || line_thickness <= 0) return; size = sizeof(*cmd) + sizeof(short) * 2 * (nk_size)point_count; cmd = (struct nk_command_polyline*) nk_command_buffer_push(b, NK_COMMAND_POLYLINE, size); @@ -9318,9 +9198,8 @@ NK_API void nk_draw_image(struct nk_command_buffer *b, struct nk_rect r, const struct nk_image *img, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_image"); struct nk_command_image *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b) return; if (b->use_clipping) { const struct nk_rect *c = &b->clip; @@ -9339,12 +9218,88 @@ nk_draw_image(struct nk_command_buffer *b, struct nk_rect r, cmd->col = col; } NK_API void +nk_draw_nine_slice(struct nk_command_buffer *b, struct nk_rect r, + const struct nk_nine_slice *slc, struct nk_color col) +{ + struct nk_image img; + const struct nk_image *slcimg = (const struct nk_image*)slc; + nk_ushort rgnX, rgnY, rgnW, rgnH; + rgnX = slcimg->region[0]; + rgnY = slcimg->region[1]; + rgnW = slcimg->region[2]; + rgnH = slcimg->region[3]; + + /* top-left */ + img.handle = slcimg->handle; + img.w = slcimg->w; + img.h = slcimg->h; + img.region[0] = rgnX; + img.region[1] = rgnY; + img.region[2] = slc->l; + img.region[3] = slc->t; + + nk_draw_image(b, + nk_rect(r.x, r.y, (float)slc->l, (float)slc->t), + &img, col); + +#define IMG_RGN(x, y, w, h) img.region[0] = (nk_ushort)(x); img.region[1] = (nk_ushort)(y); img.region[2] = (nk_ushort)(w); img.region[3] = (nk_ushort)(h); + + /* top-center */ + IMG_RGN(rgnX + slc->l, rgnY, rgnW - slc->l - slc->r, slc->t); + nk_draw_image(b, + nk_rect(r.x + (float)slc->l, r.y, (float)(r.w - slc->l - slc->r), (float)slc->t), + &img, col); + + /* top-right */ + IMG_RGN(rgnX + rgnW - slc->r, rgnY, slc->r, slc->t); + nk_draw_image(b, + nk_rect(r.x + r.w - (float)slc->r, r.y, (float)slc->r, (float)slc->t), + &img, col); + + /* center-left */ + IMG_RGN(rgnX, rgnY + slc->t, slc->l, rgnH - slc->t - slc->b); + nk_draw_image(b, + nk_rect(r.x, r.y + (float)slc->t, (float)slc->l, (float)(r.h - slc->t - slc->b)), + &img, col); + + /* center */ + IMG_RGN(rgnX + slc->l, rgnY + slc->t, rgnW - slc->l - slc->r, rgnH - slc->t - slc->b); + nk_draw_image(b, + nk_rect(r.x + (float)slc->l, r.y + (float)slc->t, (float)(r.w - slc->l - slc->r), (float)(r.h - slc->t - slc->b)), + &img, col); + + /* center-right */ + IMG_RGN(rgnX + rgnW - slc->r, rgnY + slc->t, slc->r, rgnH - slc->t - slc->b); + nk_draw_image(b, + nk_rect(r.x + r.w - (float)slc->r, r.y + (float)slc->t, (float)slc->r, (float)(r.h - slc->t - slc->b)), + &img, col); + + /* bottom-left */ + IMG_RGN(rgnX, rgnY + rgnH - slc->b, slc->l, slc->b); + nk_draw_image(b, + nk_rect(r.x, r.y + r.h - (float)slc->b, (float)slc->l, (float)slc->b), + &img, col); + + /* bottom-center */ + IMG_RGN(rgnX + slc->l, rgnY + rgnH - slc->b, rgnW - slc->l - slc->r, slc->b); + nk_draw_image(b, + nk_rect(r.x + (float)slc->l, r.y + r.h - (float)slc->b, (float)(r.w - slc->l - slc->r), (float)slc->b), + &img, col); + + /* bottom-right */ + IMG_RGN(rgnX + rgnW - slc->r, rgnY + rgnH - slc->b, slc->r, slc->b); + nk_draw_image(b, + nk_rect(r.x + r.w - (float)slc->r, r.y + r.h - (float)slc->b, (float)slc->r, (float)slc->b), + &img, col); + +#undef IMG_RGN +} +NK_API void nk_push_custom(struct nk_command_buffer *b, struct nk_rect r, nk_command_custom_callback cb, nk_handle usr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_push_custom"); struct nk_command_custom *cmd; - // NK_ASSERT(b); + NK_ASSERT(b); if (!b) return; if (b->use_clipping) { const struct nk_rect *c = &b->clip; @@ -9367,21 +9322,11 @@ nk_draw_text(struct nk_command_buffer *b, struct nk_rect r, const char *string, int length, const struct nk_user_font *font, struct nk_color bg, struct nk_color fg) { - - - // long start; - // long end; - // long total; - // long eventTime0; - - // start = TickCount(); - - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_text"); - int text_width = 0; + float text_width = 0; struct nk_command_text *cmd; - // NK_ASSERT(b); - // NK_ASSERT(font); + NK_ASSERT(b); + NK_ASSERT(font); if (!b || !string || !length || (bg.a == 0 && fg.a == 0)) return; if (b->use_clipping) { const struct nk_rect *c = &b->clip; @@ -9393,7 +9338,7 @@ nk_draw_text(struct nk_command_buffer *b, struct nk_rect r, text_width = font->width(font->userdata, font->height, string, length); if (text_width > r.w){ int glyphs = 0; - int txt_width = (int)text_width; + float txt_width = (float)text_width; length = nk_text_clamp(font, string, length, r.w, &glyphs, &txt_width, 0,0); } @@ -9412,14 +9357,6 @@ nk_draw_text(struct nk_command_buffer *b, struct nk_rect r, cmd->height = font->height; NK_MEMCPY(cmd->string, string, (nk_size)length); cmd->string[length] = '\0'; - // end = TickCount(); - - // total = end - start; - // eventTime0 = total;// / 60.0; - - //// char logx[255]; - //// sprintf(logx, "text draw time() eventTime0 (draw text) %ld\n", eventTime0); - // // writeSerialPort(boutRefNum, logx); } @@ -9435,15 +9372,14 @@ nk_draw_text(struct nk_command_buffer *b, struct nk_rect r, NK_API void nk_draw_list_init(struct nk_draw_list *list) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_init"); nk_size i = 0; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; nk_zero(list, sizeof(*list)); for (i = 0; i < NK_LEN(list->circle_vtx); ++i) { - const int a = ((int)i / (int)NK_LEN(list->circle_vtx)) * 2 * NK_PI; - list->circle_vtx[i].x = (int)NK_COS(a); - list->circle_vtx[i].y = (int)NK_SIN(a); + const float a = ((float)i / (float)NK_LEN(list->circle_vtx)) * 2 * NK_PI; + list->circle_vtx[i].x = (float)NK_COS(a); + list->circle_vtx[i].y = (float)NK_SIN(a); } } NK_API void @@ -9451,12 +9387,11 @@ nk_draw_list_setup(struct nk_draw_list *canvas, const struct nk_convert_config * struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, enum nk_anti_aliasing line_aa, enum nk_anti_aliasing shape_aa) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list_setup"); - // NK_ASSERT(canvas); - // NK_ASSERT(config); - // NK_ASSERT(cmds); - // NK_ASSERT(vertices); - // NK_ASSERT(elements); + NK_ASSERT(canvas); + NK_ASSERT(config); + NK_ASSERT(cmds); + NK_ASSERT(vertices); + NK_ASSERT(elements); if (!canvas || !config || !cmds || !vertices || !elements) return; @@ -9478,12 +9413,11 @@ nk_draw_list_setup(struct nk_draw_list *canvas, const struct nk_convert_config * NK_API const struct nk_draw_command* nk__draw_list_begin(const struct nk_draw_list *canvas, const struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk__draw_list_begin"); nk_byte *memory; nk_size offset; const struct nk_draw_command *cmd; - // NK_ASSERT(buffer); + NK_ASSERT(buffer); if (!buffer || !buffer->size || !canvas->cmd_count) return 0; @@ -9495,14 +9429,13 @@ nk__draw_list_begin(const struct nk_draw_list *canvas, const struct nk_buffer *b NK_API const struct nk_draw_command* nk__draw_list_end(const struct nk_draw_list *canvas, const struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk__draw_list_end"); nk_size size; nk_size offset; nk_byte *memory; const struct nk_draw_command *end; - // NK_ASSERT(buffer); - // NK_ASSERT(canvas); + NK_ASSERT(buffer); + NK_ASSERT(canvas); if (!buffer || !canvas) return 0; @@ -9517,10 +9450,9 @@ NK_API const struct nk_draw_command* nk__draw_list_next(const struct nk_draw_command *cmd, const struct nk_buffer *buffer, const struct nk_draw_list *canvas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / const"); const struct nk_draw_command *end; - // NK_ASSERT(buffer); - // NK_ASSERT(canvas); + NK_ASSERT(buffer); + NK_ASSERT(canvas); if (!cmd || !buffer || !canvas) return 0; @@ -9531,7 +9463,6 @@ nk__draw_list_next(const struct nk_draw_command *cmd, NK_INTERN struct nk_vec2* nk_draw_list_alloc_path(struct nk_draw_list *list, int count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_alloc_path"); struct nk_vec2 *points; NK_STORAGE const nk_size point_align = NK_ALIGNOF(struct nk_vec2); NK_STORAGE const nk_size point_size = sizeof(struct nk_vec2); @@ -9550,10 +9481,9 @@ nk_draw_list_alloc_path(struct nk_draw_list *list, int count) NK_INTERN struct nk_vec2 nk_draw_list_path_last(struct nk_draw_list *list) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_path_last"); void *memory; struct nk_vec2 *point; - // NK_ASSERT(list->path_count); + NK_ASSERT(list->path_count); memory = nk_buffer_memory(list->buffer); point = nk_ptr_add(struct nk_vec2, memory, list->path_offset); point += (list->path_count-1); @@ -9563,12 +9493,11 @@ NK_INTERN struct nk_draw_command* nk_draw_list_push_command(struct nk_draw_list *list, struct nk_rect clip, nk_handle texture) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - texture) / nk_handle"); NK_STORAGE const nk_size cmd_align = NK_ALIGNOF(struct nk_draw_command); NK_STORAGE const nk_size cmd_size = sizeof(struct nk_draw_command); struct nk_draw_command *cmd; - // NK_ASSERT(list); + NK_ASSERT(list); cmd = (struct nk_draw_command*) nk_buffer_alloc(list->buffer, NK_BUFFER_BACK, cmd_size, cmd_align); @@ -9594,11 +9523,10 @@ nk_draw_list_push_command(struct nk_draw_list *list, struct nk_rect clip, NK_INTERN struct nk_draw_command* nk_draw_list_command_last(struct nk_draw_list *list) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_command_last"); void *memory; nk_size size; struct nk_draw_command *cmd; - // NK_ASSERT(list->cmd_count); + NK_ASSERT(list->cmd_count); memory = nk_buffer_memory(list->buffer); size = nk_buffer_total(list->buffer); @@ -9608,8 +9536,7 @@ nk_draw_list_command_last(struct nk_draw_list *list) NK_INTERN void nk_draw_list_add_clip(struct nk_draw_list *list, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_add_clip"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; if (!list->cmd_count) { nk_draw_list_push_command(list, rect, list->config.null.texture); @@ -9623,8 +9550,7 @@ nk_draw_list_add_clip(struct nk_draw_list *list, struct nk_rect rect) NK_INTERN void nk_draw_list_push_image(struct nk_draw_list *list, nk_handle texture) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_push_image"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; if (!list->cmd_count) { nk_draw_list_push_command(list, nk_null_rect, texture); @@ -9646,16 +9572,14 @@ nk_draw_list_push_image(struct nk_draw_list *list, nk_handle texture) NK_API void nk_draw_list_push_userdata(struct nk_draw_list *list, nk_handle userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_push_userdata"); list->userdata = userdata; } #endif NK_INTERN void* nk_draw_list_alloc_vertices(struct nk_draw_list *list, nk_size count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_alloc_vertices"); void *vtx; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return 0; vtx = nk_buffer_alloc(list->vertices, NK_BUFFER_FRONT, list->config.vertex_size*count, list->config.vertex_alignment); @@ -9671,18 +9595,18 @@ nk_draw_list_alloc_vertices(struct nk_draw_list *list, nk_size count) * backend (OpenGL, DirectX, ...). For example in OpenGL for `glDrawElements` * instead of specifing `GL_UNSIGNED_SHORT` you have to define `GL_UNSIGNED_INT`. * Sorry for the inconvenience. */ - if(sizeof(nk_draw_index)==2) // NK_ASSERT((list->vertex_count < NK_USHORT_MAX && "To many verticies for 16-bit vertex indicies. Please read comment above on how to solve this problem")); + if(sizeof(nk_draw_index)==2) NK_ASSERT((list->vertex_count < NK_USHORT_MAX && + "To many verticies for 16-bit vertex indicies. Please read comment above on how to solve this problem")); return vtx; } NK_INTERN nk_draw_index* nk_draw_list_alloc_elements(struct nk_draw_list *list, nk_size count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_alloc_elements"); nk_draw_index *ids; struct nk_draw_command *cmd; NK_STORAGE const nk_size elem_align = NK_ALIGNOF(nk_draw_index); NK_STORAGE const nk_size elem_size = sizeof(nk_draw_index); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return 0; ids = (nk_draw_index*) @@ -9697,19 +9621,17 @@ NK_INTERN int nk_draw_vertex_layout_element_is_end_of_layout( const struct nk_draw_vertex_layout_element *element) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_vertex_layout_element / const"); return (element->attribute == NK_VERTEX_ATTRIBUTE_COUNT || element->format == NK_FORMAT_COUNT); } NK_INTERN void -nk_draw_vertex_color(void *attr, const int *vals, +nk_draw_vertex_color(void *attr, const float *vals, enum nk_draw_vertex_layout_format format) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - format / enum"); /* if this triggers you tried to provide a value format for a color */ - int val[4]; - // NK_ASSERT(format >= NK_FORMAT_COLOR_BEGIN); - // NK_ASSERT(format <= NK_FORMAT_COLOR_END); + float val[4]; + NK_ASSERT(format >= NK_FORMAT_COLOR_BEGIN); + NK_ASSERT(format <= NK_FORMAT_COLOR_END); if (format < NK_FORMAT_COLOR_BEGIN || format > NK_FORMAT_COLOR_END) return; val[0] = NK_SATURATE(vals[0]); @@ -9718,7 +9640,7 @@ nk_draw_vertex_color(void *attr, const int *vals, val[3] = NK_SATURATE(vals[3]); switch (format) { - default: break;// NK_ASSERT(0 && "Invalid vertex layout color format"); break; + default: NK_ASSERT(0 && "Invalid vertex layout color format"); break; case NK_FORMAT_R8G8B8A8: case NK_FORMAT_R8G8B8: { struct nk_color col = nk_rgba_fv(val); @@ -9731,36 +9653,36 @@ nk_draw_vertex_color(void *attr, const int *vals, } break; case NK_FORMAT_R16G15B16: { nk_ushort col[3]; - col[0] = (nk_ushort)(val[0]*(int)NK_USHORT_MAX); - col[1] = (nk_ushort)(val[1]*(int)NK_USHORT_MAX); - col[2] = (nk_ushort)(val[2]*(int)NK_USHORT_MAX); + col[0] = (nk_ushort)(val[0]*(float)NK_USHORT_MAX); + col[1] = (nk_ushort)(val[1]*(float)NK_USHORT_MAX); + col[2] = (nk_ushort)(val[2]*(float)NK_USHORT_MAX); NK_MEMCPY(attr, col, sizeof(col)); } break; case NK_FORMAT_R16G15B16A16: { nk_ushort col[4]; - col[0] = (nk_ushort)(val[0]*(int)NK_USHORT_MAX); - col[1] = (nk_ushort)(val[1]*(int)NK_USHORT_MAX); - col[2] = (nk_ushort)(val[2]*(int)NK_USHORT_MAX); - col[3] = (nk_ushort)(val[3]*(int)NK_USHORT_MAX); + col[0] = (nk_ushort)(val[0]*(float)NK_USHORT_MAX); + col[1] = (nk_ushort)(val[1]*(float)NK_USHORT_MAX); + col[2] = (nk_ushort)(val[2]*(float)NK_USHORT_MAX); + col[3] = (nk_ushort)(val[3]*(float)NK_USHORT_MAX); NK_MEMCPY(attr, col, sizeof(col)); } break; case NK_FORMAT_R32G32B32: { nk_uint col[3]; - col[0] = (nk_uint)(val[0]*(int)NK_UINT_MAX); - col[1] = (nk_uint)(val[1]*(int)NK_UINT_MAX); - col[2] = (nk_uint)(val[2]*(int)NK_UINT_MAX); + col[0] = (nk_uint)(val[0]*(float)NK_UINT_MAX); + col[1] = (nk_uint)(val[1]*(float)NK_UINT_MAX); + col[2] = (nk_uint)(val[2]*(float)NK_UINT_MAX); NK_MEMCPY(attr, col, sizeof(col)); } break; case NK_FORMAT_R32G32B32A32: { nk_uint col[4]; - col[0] = (nk_uint)(val[0]*(int)NK_UINT_MAX); - col[1] = (nk_uint)(val[1]*(int)NK_UINT_MAX); - col[2] = (nk_uint)(val[2]*(int)NK_UINT_MAX); - col[3] = (nk_uint)(val[3]*(int)NK_UINT_MAX); + col[0] = (nk_uint)(val[0]*(float)NK_UINT_MAX); + col[1] = (nk_uint)(val[1]*(float)NK_UINT_MAX); + col[2] = (nk_uint)(val[2]*(float)NK_UINT_MAX); + col[3] = (nk_uint)(val[3]*(float)NK_UINT_MAX); NK_MEMCPY(attr, col, sizeof(col)); } break; - case NK_FORMAT_R32G32B32A32_int: - NK_MEMCPY(attr, val, sizeof(int)*4); + case NK_FORMAT_R32G32B32A32_FLOAT: + NK_MEMCPY(attr, val, sizeof(float)*4); break; case NK_FORMAT_R32G32B32A32_DOUBLE: { double col[4]; @@ -9778,51 +9700,50 @@ nk_draw_vertex_color(void *attr, const int *vals, } break; } } NK_INTERN void -nk_draw_vertex_element(void *dst, const int *values, int value_count, +nk_draw_vertex_element(void *dst, const float *values, int value_count, enum nk_draw_vertex_layout_format format) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - format / enum"); int value_index; void *attribute = dst; /* if this triggers you tried to provide a color format for a value */ - // NK_ASSERT(format < NK_FORMAT_COLOR_BEGIN); + NK_ASSERT(format < NK_FORMAT_COLOR_BEGIN); if (format >= NK_FORMAT_COLOR_BEGIN && format <= NK_FORMAT_COLOR_END) return; for (value_index = 0; value_index < value_count; ++value_index) { switch (format) { - default: // NK_ASSERT(0 && "invalid vertex layout format"); break; + default: NK_ASSERT(0 && "invalid vertex layout format"); break; case NK_FORMAT_SCHAR: { - char value = (char)NK_CLAMP((int)NK_SCHAR_MIN, values[value_index], (int)NK_SCHAR_MAX); + char value = (char)NK_CLAMP((float)NK_SCHAR_MIN, values[value_index], (float)NK_SCHAR_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(char)); } break; case NK_FORMAT_SSHORT: { - nk_short value = (nk_short)NK_CLAMP((int)NK_SSHORT_MIN, values[value_index], (int)NK_SSHORT_MAX); + nk_short value = (nk_short)NK_CLAMP((float)NK_SSHORT_MIN, values[value_index], (float)NK_SSHORT_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(value)); } break; case NK_FORMAT_SINT: { - nk_int value = (nk_int)NK_CLAMP((int)NK_SINT_MIN, values[value_index], (int)NK_SINT_MAX); + nk_int value = (nk_int)NK_CLAMP((float)NK_SINT_MIN, values[value_index], (float)NK_SINT_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(nk_int)); } break; case NK_FORMAT_UCHAR: { - unsigned char value = (unsigned char)NK_CLAMP((int)NK_UCHAR_MIN, values[value_index], (int)NK_UCHAR_MAX); + unsigned char value = (unsigned char)NK_CLAMP((float)NK_UCHAR_MIN, values[value_index], (float)NK_UCHAR_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(unsigned char)); } break; case NK_FORMAT_USHORT: { - nk_ushort value = (nk_ushort)NK_CLAMP((int)NK_USHORT_MIN, values[value_index], (int)NK_USHORT_MAX); + nk_ushort value = (nk_ushort)NK_CLAMP((float)NK_USHORT_MIN, values[value_index], (float)NK_USHORT_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(value)); } break; case NK_FORMAT_UINT: { - nk_uint value = (nk_uint)NK_CLAMP((int)NK_UINT_MIN, values[value_index], (int)NK_UINT_MAX); + nk_uint value = (nk_uint)NK_CLAMP((float)NK_UINT_MIN, values[value_index], (float)NK_UINT_MAX); NK_MEMCPY(attribute, &value, sizeof(value)); attribute = (void*)((char*)attribute + sizeof(nk_uint)); } break; - case NK_FORMAT_int: + case NK_FORMAT_FLOAT: NK_MEMCPY(attribute, &values[value_index], sizeof(values[value_index])); - attribute = (void*)((char*)attribute + sizeof(int)); + attribute = (void*)((char*)attribute + sizeof(float)); break; case NK_FORMAT_DOUBLE: { double value = (double)values[value_index]; @@ -9836,15 +9757,13 @@ NK_INTERN void* nk_draw_vertex(void *dst, const struct nk_convert_config *config, struct nk_vec2 pos, struct nk_vec2 uv, struct nk_colorf color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pos / struct"); void *result = (void*)((char*)dst + config->vertex_size); const struct nk_draw_vertex_layout_element *elem_iter = config->vertex_layout; - //writeSerialPort(boutRefNum, "nk_draw_vertex"); while (!nk_draw_vertex_layout_element_is_end_of_layout(elem_iter)) { void *address = (void*)((char*)dst + elem_iter->offset); switch (elem_iter->attribute) { case NK_VERTEX_ATTRIBUTE_COUNT: - default: // NK_ASSERT(0 && "wrong element attribute"); break; + default: NK_ASSERT(0 && "wrong element attribute"); break; case NK_VERTEX_POSITION: nk_draw_vertex_element(address, &pos.x, 2, elem_iter->format); break; case NK_VERTEX_TEXCOORD: nk_draw_vertex_element(address, &uv.x, 2, elem_iter->format); break; case NK_VERTEX_COLOR: nk_draw_vertex_color(address, &color.r, elem_iter->format); break; @@ -9856,17 +9775,16 @@ nk_draw_vertex(void *dst, const struct nk_convert_config *config, NK_API void nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *points, const unsigned int points_count, struct nk_color color, enum nk_draw_list_stroke closed, - int thickness, enum nk_anti_aliasing aliasing) + float thickness, enum nk_anti_aliasing aliasing) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - thickness, / int"); nk_size count; int thick_line; struct nk_colorf col; struct nk_colorf col_trans; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || points_count < 2) return; - color.a = (nk_byte)((int)color.a * list->config.global_alpha); + color.a = (nk_byte)((float)color.a * list->config.global_alpha); count = points_count; if (!closed) count = points_count-1; thick_line = thickness > 1.0f; @@ -9875,14 +9793,14 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p nk_draw_list_push_userdata(list, list->userdata); #endif - color.a = (nk_byte)((int)color.a * list->config.global_alpha); + color.a = (nk_byte)((float)color.a * list->config.global_alpha); nk_color_fv(&col.r, color); col_trans = col; col_trans.a = 0; if (aliasing == NK_ANTI_ALIASING_ON) { /* ANTI-ALIASED STROKE */ - const int AA_SIZE = 1.0f; + const float AA_SIZE = 1.0f; NK_STORAGE const nk_size pnt_align = NK_ALIGNOF(struct nk_vec2); NK_STORAGE const nk_size pnt_size = sizeof(struct nk_vec2); @@ -9916,7 +9834,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p for (i1 = 0; i1 < count; ++i1) { const nk_size i2 = ((i1 + 1) == points_count) ? 0 : (i1 + 1); struct nk_vec2 diff = nk_vec2_sub(points[i2], points[i1]); - int len; + float len; /* vec2 inverted length */ len = nk_vec2_len_sqr(diff); @@ -9947,7 +9865,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p idx1 = index; for (i1 = 0; i1 < count; i1++) { struct nk_vec2 dm; - int dmr2; + float dmr2; nk_size i2 = ((i1 + 1) == points_count) ? 0 : (i1 + 1); nk_size idx2 = ((i1+1) == points_count) ? index: (idx1 + 3); @@ -9955,7 +9873,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p dm = nk_vec2_muls(nk_vec2_add(normals[i1], normals[i2]), 0.5f); dmr2 = dm.x * dm.x + dm.y* dm.y; if (dmr2 > 0.000001f) { - int scale = 1.0f/dmr2; + float scale = 1.0f/dmr2; scale = NK_MIN(100.0f, scale); dm = nk_vec2_muls(dm, scale); } @@ -9983,7 +9901,7 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p } } else { nk_size idx1, i; - const int half_inner_thickness = (thickness - AA_SIZE) * 0.5f; + const float half_inner_thickness = (thickness - AA_SIZE) * 0.5f; if (!closed) { struct nk_vec2 d1 = nk_vec2_muls(normals[0], half_inner_thickness + AA_SIZE); struct nk_vec2 d2 = nk_vec2_muls(normals[0], half_inner_thickness); @@ -10011,9 +9929,9 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p /* average normals */ struct nk_vec2 dm = nk_vec2_muls(nk_vec2_add(normals[i1], normals[i2]), 0.5f); - int dmr2 = dm.x * dm.x + dm.y* dm.y; + float dmr2 = dm.x * dm.x + dm.y* dm.y; if (dmr2 > 0.000001f) { - int scale = 1.0f/dmr2; + float scale = 1.0f/dmr2; scale = NK_MIN(100.0f, scale); dm = nk_vec2_muls(dm, scale); } @@ -10061,13 +9979,13 @@ nk_draw_list_stroke_poly_line(struct nk_draw_list *list, const struct nk_vec2 *p if (!vtx || !ids) return; for (i1 = 0; i1 < count; ++i1) { - int dx, dy; + float dx, dy; const struct nk_vec2 uv = list->config.null.uv; const nk_size i2 = ((i1+1) == points_count) ? 0 : i1 + 1; const struct nk_vec2 p1 = points[i1]; const struct nk_vec2 p2 = points[i2]; struct nk_vec2 diff = nk_vec2_sub(p2, p1); - int len; + float len; /* vec2 inverted length */ len = nk_vec2_len_sqr(diff); @@ -10099,20 +10017,19 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, const struct nk_vec2 *points, const unsigned int points_count, struct nk_color color, enum nk_anti_aliasing aliasing) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); struct nk_colorf col; struct nk_colorf col_trans; NK_STORAGE const nk_size pnt_align = NK_ALIGNOF(struct nk_vec2); NK_STORAGE const nk_size pnt_size = sizeof(struct nk_vec2); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || points_count < 3) return; #ifdef NK_INCLUDE_COMMAND_USERDATA nk_draw_list_push_userdata(list, list->userdata); #endif - color.a = (nk_byte)((int)color.a * list->config.global_alpha); + color.a = (nk_byte)((float)color.a * list->config.global_alpha); nk_color_fv(&col.r, color); col_trans = col; col_trans.a = 0; @@ -10122,7 +10039,7 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, nk_size i0 = 0; nk_size i1 = 0; - const int AA_SIZE = 1.0f; + const float AA_SIZE = 1.0f; nk_size vertex_offset = 0; nk_size index = list->vertex_count; @@ -10161,7 +10078,7 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, struct nk_vec2 diff = nk_vec2_sub(p1, p0); /* vec2 inverted length */ - int len = nk_vec2_len_sqr(diff); + float len = nk_vec2_len_sqr(diff); if (len != 0.0f) len = nk_inv_sqrt(len); else len = 1.0f; @@ -10177,9 +10094,9 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, struct nk_vec2 n0 = normals[i0]; struct nk_vec2 n1 = normals[i1]; struct nk_vec2 dm = nk_vec2_muls(nk_vec2_add(n0, n1), 0.5f); - int dmr2 = dm.x*dm.x + dm.y*dm.y; + float dmr2 = dm.x*dm.x + dm.y*dm.y; if (dmr2 > 0.000001f) { - int scale = 1.0f / dmr2; + float scale = 1.0f / dmr2; scale = NK_MIN(scale, 100.0f); dm = nk_vec2_muls(dm, scale); } @@ -10222,8 +10139,7 @@ nk_draw_list_fill_poly_convex(struct nk_draw_list *list, NK_API void nk_draw_list_path_clear(struct nk_draw_list *list) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_path_clear"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; nk_buffer_reset(list->buffer, NK_BUFFER_FRONT); list->path_count = 0; @@ -10232,10 +10148,9 @@ nk_draw_list_path_clear(struct nk_draw_list *list) NK_API void nk_draw_list_path_line_to(struct nk_draw_list *list, struct nk_vec2 pos) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_path_line_to"); struct nk_vec2 *points = 0; struct nk_draw_command *cmd = 0; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; if (!list->cmd_count) nk_draw_list_add_clip(list, nk_null_rect); @@ -10250,28 +10165,26 @@ nk_draw_list_path_line_to(struct nk_draw_list *list, struct nk_vec2 pos) } NK_API void nk_draw_list_path_arc_to_fast(struct nk_draw_list *list, struct nk_vec2 center, - int radius, int a_min, int a_max) + float radius, int a_min, int a_max) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - radius, / int"); int a = 0; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; if (a_min <= a_max) { for (a = a_min; a <= a_max; a++) { const struct nk_vec2 c = list->circle_vtx[(nk_size)a % NK_LEN(list->circle_vtx)]; - const int x = center.x + c.x * radius; - const int y = center.y + c.y * radius; + const float x = center.x + c.x * radius; + const float y = center.y + c.y * radius; nk_draw_list_path_line_to(list, nk_vec2(x, y)); } } } NK_API void nk_draw_list_path_arc_to(struct nk_draw_list *list, struct nk_vec2 center, - int radius, int a_min, int a_max, unsigned int segments) + float radius, float a_min, float a_max, unsigned int segments) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - radius, / int"); unsigned int i = 0; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; if (radius == 0.0f) return; @@ -10293,16 +10206,16 @@ nk_draw_list_path_arc_to(struct nk_draw_list *list, struct nk_vec2 center, [1] https://en.wikipedia.org/wiki/List_of_trigonometric_identities#Angle_sum_and_difference_identities */ - {const int d_angle = (a_max - a_min) / (int)segments; - const int sin_d = (int)NK_SIN(d_angle); - const int cos_d = (int)NK_COS(d_angle); + {const float d_angle = (a_max - a_min) / (float)segments; + const float sin_d = (float)NK_SIN(d_angle); + const float cos_d = (float)NK_COS(d_angle); - int cx = (int)NK_COS(a_min) * radius; - int cy = (int)NK_SIN(a_min) * radius; + float cx = (float)NK_COS(a_min) * radius; + float cy = (float)NK_SIN(a_min) * radius; for(i = 0; i <= segments; ++i) { - int new_cx, new_cy; - const int x = center.x + cx; - const int y = center.y + cy; + float new_cx, new_cy; + const float x = center.x + cx; + const float y = center.y + cy; nk_draw_list_path_line_to(list, nk_vec2(x, y)); new_cx = cx * cos_d - cy * sin_d; @@ -10313,11 +10226,10 @@ nk_draw_list_path_arc_to(struct nk_draw_list *list, struct nk_vec2 center, } NK_API void nk_draw_list_path_rect_to(struct nk_draw_list *list, struct nk_vec2 a, - struct nk_vec2 b, int rounding) + struct nk_vec2 b, float rounding) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list_path_rect_to"); - int r; - // NK_ASSERT(list); + float r; + NK_ASSERT(list); if (!list) return; r = rounding; r = NK_MIN(r, ((b.x-a.x) < 0) ? -(b.x-a.x): (b.x-a.x)); @@ -10339,36 +10251,34 @@ NK_API void nk_draw_list_path_curve_to(struct nk_draw_list *list, struct nk_vec2 p2, struct nk_vec2 p3, struct nk_vec2 p4, unsigned int num_segments) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - p3 / struct"); - int t_step; + float t_step; unsigned int i_step; struct nk_vec2 p1; - // NK_ASSERT(list); - // NK_ASSERT(list->path_count); + NK_ASSERT(list); + NK_ASSERT(list->path_count); if (!list || !list->path_count) return; num_segments = NK_MAX(num_segments, 1); p1 = nk_draw_list_path_last(list); - t_step = 1.0f/(int)num_segments; + t_step = 1.0f/(float)num_segments; for (i_step = 1; i_step <= num_segments; ++i_step) { - int t = t_step * (int)i_step; - int u = 1.0f - t; - int w1 = u*u*u; - int w2 = 3*u*u*t; - int w3 = 3*u*t*t; - int w4 = t * t *t; - int x = w1 * p1.x + w2 * p2.x + w3 * p3.x + w4 * p4.x; - int y = w1 * p1.y + w2 * p2.y + w3 * p3.y + w4 * p4.y; + float t = t_step * (float)i_step; + float u = 1.0f - t; + float w1 = u*u*u; + float w2 = 3*u*u*t; + float w3 = 3*u*t*t; + float w4 = t * t *t; + float x = w1 * p1.x + w2 * p2.x + w3 * p3.x + w4 * p4.x; + float y = w1 * p1.y + w2 * p2.y + w3 * p3.y + w4 * p4.y; nk_draw_list_path_line_to(list, nk_vec2(x,y)); } } NK_API void nk_draw_list_path_fill(struct nk_draw_list *list, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list / nk_draw_list_path_fill"); struct nk_vec2 *points; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; points = (struct nk_vec2*)nk_buffer_memory(list->buffer); nk_draw_list_fill_poly_convex(list, points, list->path_count, color, list->config.shape_AA); @@ -10376,11 +10286,10 @@ nk_draw_list_path_fill(struct nk_draw_list *list, struct nk_color color) } NK_API void nk_draw_list_path_stroke(struct nk_draw_list *list, struct nk_color color, - enum nk_draw_list_stroke closed, int thickness) + enum nk_draw_list_stroke closed, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - closed / enum"); struct nk_vec2 *points; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; points = (struct nk_vec2*)nk_buffer_memory(list->buffer); nk_draw_list_stroke_poly_line(list, points, list->path_count, color, @@ -10389,10 +10298,9 @@ nk_draw_list_path_stroke(struct nk_draw_list *list, struct nk_color color, } NK_API void nk_draw_list_stroke_line(struct nk_draw_list *list, struct nk_vec2 a, - struct nk_vec2 b, struct nk_color col, int thickness) + struct nk_vec2 b, struct nk_color col, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list_stroke_line"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; if (list->line_AA == NK_ANTI_ALIASING_ON) { nk_draw_list_path_line_to(list, a); @@ -10405,10 +10313,9 @@ nk_draw_list_stroke_line(struct nk_draw_list *list, struct nk_vec2 a, } NK_API void nk_draw_list_fill_rect(struct nk_draw_list *list, struct nk_rect rect, - struct nk_color col, int rounding) + struct nk_color col, float rounding) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - col / struct"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; if (list->line_AA == NK_ANTI_ALIASING_ON) { @@ -10421,10 +10328,9 @@ nk_draw_list_fill_rect(struct nk_draw_list *list, struct nk_rect rect, } NK_API void nk_draw_list_stroke_rect(struct nk_draw_list *list, struct nk_rect rect, - struct nk_color col, int rounding, int thickness) + struct nk_color col, float rounding, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - col / struct"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; if (list->line_AA == NK_ANTI_ALIASING_ON) { nk_draw_list_path_rect_to(list, nk_vec2(rect.x, rect.y), @@ -10439,7 +10345,6 @@ nk_draw_list_fill_rect_multi_color(struct nk_draw_list *list, struct nk_rect rec struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - bottom / struct"); void *vtx; struct nk_colorf col_left, col_top; struct nk_colorf col_right, col_bottom; @@ -10451,7 +10356,7 @@ nk_draw_list_fill_rect_multi_color(struct nk_draw_list *list, struct nk_rect rec nk_color_fv(&col_top.r, top); nk_color_fv(&col_bottom.r, bottom); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; nk_draw_list_push_image(list, list->config.null.texture); @@ -10473,8 +10378,7 @@ NK_API void nk_draw_list_fill_triangle(struct nk_draw_list *list, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list_fill_triangle"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; nk_draw_list_path_line_to(list, a); nk_draw_list_path_line_to(list, b); @@ -10483,10 +10387,9 @@ nk_draw_list_fill_triangle(struct nk_draw_list *list, struct nk_vec2 a, } NK_API void nk_draw_list_stroke_triangle(struct nk_draw_list *list, struct nk_vec2 a, - struct nk_vec2 b, struct nk_vec2 c, struct nk_color col, int thickness) + struct nk_vec2 b, struct nk_vec2 c, struct nk_color col, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_list_stroke_triangle"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; nk_draw_list_path_line_to(list, a); nk_draw_list_path_line_to(list, b); @@ -10495,35 +10398,32 @@ nk_draw_list_stroke_triangle(struct nk_draw_list *list, struct nk_vec2 a, } NK_API void nk_draw_list_fill_circle(struct nk_draw_list *list, struct nk_vec2 center, - int radius, struct nk_color col, unsigned int segs) + float radius, struct nk_color col, unsigned int segs) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - radius, / int"); - int a_max; - // NK_ASSERT(list); + float a_max; + NK_ASSERT(list); if (!list || !col.a) return; - a_max = NK_PI * 2.0f * ((int)segs - 1.0f) / (int)segs; + a_max = NK_PI * 2.0f * ((float)segs - 1.0f) / (float)segs; nk_draw_list_path_arc_to(list, center, radius, 0.0f, a_max, segs); nk_draw_list_path_fill(list, col); } NK_API void nk_draw_list_stroke_circle(struct nk_draw_list *list, struct nk_vec2 center, - int radius, struct nk_color col, unsigned int segs, int thickness) + float radius, struct nk_color col, unsigned int segs, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - radius, / int"); - int a_max; - // NK_ASSERT(list); + float a_max; + NK_ASSERT(list); if (!list || !col.a) return; - a_max = NK_PI * 2.0f * ((int)segs - 1.0f) / (int)segs; + a_max = NK_PI * 2.0f * ((float)segs - 1.0f) / (float)segs; nk_draw_list_path_arc_to(list, center, radius, 0.0f, a_max, segs); nk_draw_list_path_stroke(list, col, NK_STROKE_CLOSED, thickness); } NK_API void nk_draw_list_stroke_curve(struct nk_draw_list *list, struct nk_vec2 p0, struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, - struct nk_color col, unsigned int segments, int thickness) + struct nk_color col, unsigned int segments, float thickness) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - col / struct"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !col.a) return; nk_draw_list_path_line_to(list, p0); nk_draw_list_path_curve_to(list, cp0, cp1, p1, segments); @@ -10534,7 +10434,6 @@ nk_draw_list_push_rect_uv(struct nk_draw_list *list, struct nk_vec2 a, struct nk_vec2 c, struct nk_vec2 uva, struct nk_vec2 uvc, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); void *vtx; struct nk_vec2 uvb; struct nk_vec2 uvd; @@ -10544,7 +10443,7 @@ nk_draw_list_push_rect_uv(struct nk_draw_list *list, struct nk_vec2 a, struct nk_colorf col; nk_draw_index *idx; nk_draw_index index; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; nk_color_fv(&col.r, color); @@ -10571,18 +10470,17 @@ NK_API void nk_draw_list_add_image(struct nk_draw_list *list, struct nk_image texture, struct nk_rect rect, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - rect / struct"); - // NK_ASSERT(list); + NK_ASSERT(list); if (!list) return; /* push new command with given texture */ nk_draw_list_push_image(list, texture.handle); if (nk_image_is_subimage(&texture)) { /* add region inside of the texture */ struct nk_vec2 uv[2]; - uv[0].x = (int)texture.region[0]/(int)texture.w; - uv[0].y = (int)texture.region[1]/(int)texture.h; - uv[1].x = (int)(texture.region[0] + texture.region[2])/(int)texture.w; - uv[1].y = (int)(texture.region[1] + texture.region[3])/(int)texture.h; + uv[0].x = (float)texture.region[0]/(float)texture.w; + uv[0].y = (float)texture.region[1]/(float)texture.h; + uv[1].x = (float)(texture.region[0] + texture.region[2])/(float)texture.w; + uv[1].y = (float)(texture.region[1] + texture.region[3])/(float)texture.h; nk_draw_list_push_rect_uv(list, nk_vec2(rect.x, rect.y), nk_vec2(rect.x + rect.w, rect.y + rect.h), uv[0], uv[1], color); } else nk_draw_list_push_rect_uv(list, nk_vec2(rect.x, rect.y), @@ -10591,11 +10489,10 @@ nk_draw_list_add_image(struct nk_draw_list *list, struct nk_image texture, } NK_API void nk_draw_list_add_text(struct nk_draw_list *list, const struct nk_user_font *font, - struct nk_rect rect, const char *text, int len, int font_height, + struct nk_rect rect, const char *text, int len, float font_height, struct nk_color fg) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fg / struct"); - int x = 0; + float x = 0; int text_len = 0; nk_rune unicode = 0; nk_rune next = 0; @@ -10603,7 +10500,7 @@ nk_draw_list_add_text(struct nk_draw_list *list, const struct nk_user_font *font int next_glyph_len = 0; struct nk_user_font_glyph g; - // NK_ASSERT(list); + NK_ASSERT(list); if (!list || !len || !text) return; if (!NK_INTERSECT(rect.x, rect.y, rect.w, rect.h, list->clip_rect.x, list->clip_rect.y, list->clip_rect.w, list->clip_rect.h)) return; @@ -10614,11 +10511,10 @@ nk_draw_list_add_text(struct nk_draw_list *list, const struct nk_user_font *font if (!glyph_len) return; /* draw every glyph image */ - fg.a = (nk_byte)((int)fg.a * list->config.global_alpha); - //writeSerialPort(boutRefNum, "nk_draw_list_add_text"); + fg.a = (nk_byte)((float)fg.a * list->config.global_alpha); while (text_len < len && glyph_len) { - int gx, gy, gh, gw; - int char_width = 0; + float gx, gy, gh, gw; + float char_width = 0; if (unicode == NK_UTF_INVALID) break; /* query currently drawn glyph information */ @@ -10646,16 +10542,15 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, const struct nk_convert_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_convert_config / const"); nk_flags res = NK_CONVERT_SUCCESS; const struct nk_command *cmd; - // NK_ASSERT(ctx); - // NK_ASSERT(cmds); - // NK_ASSERT(vertices); - // NK_ASSERT(elements); - // NK_ASSERT(config); - // NK_ASSERT(config->vertex_layout); - // NK_ASSERT(config->vertex_size); + NK_ASSERT(ctx); + NK_ASSERT(cmds); + NK_ASSERT(vertices); + NK_ASSERT(elements); + NK_ASSERT(config); + NK_ASSERT(config->vertex_layout); + NK_ASSERT(config->vertex_size); if (!ctx || !cmds || !vertices || !elements || !config || !config->vertex_layout) return NK_CONVERT_INVALID_PARAM; @@ -10687,12 +10582,12 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, case NK_COMMAND_RECT: { const struct nk_command_rect *r = (const struct nk_command_rect*)cmd; nk_draw_list_stroke_rect(&ctx->draw_list, nk_rect(r->x, r->y, r->w, r->h), - r->color, (int)r->rounding, r->line_thickness); + r->color, (float)r->rounding, r->line_thickness); } break; case NK_COMMAND_RECT_FILLED: { const struct nk_command_rect_filled *r = (const struct nk_command_rect_filled*)cmd; nk_draw_list_fill_rect(&ctx->draw_list, nk_rect(r->x, r->y, r->w, r->h), - r->color, (int)r->rounding); + r->color, (float)r->rounding); } break; case NK_COMMAND_RECT_MULTI_COLOR: { const struct nk_command_rect_multi_color *r = (const struct nk_command_rect_multi_color*)cmd; @@ -10701,14 +10596,14 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, } break; case NK_COMMAND_CIRCLE: { const struct nk_command_circle *c = (const struct nk_command_circle*)cmd; - nk_draw_list_stroke_circle(&ctx->draw_list, nk_vec2((int)c->x + (int)c->w/2, - (int)c->y + (int)c->h/2), (int)c->w/2, c->color, + nk_draw_list_stroke_circle(&ctx->draw_list, nk_vec2((float)c->x + (float)c->w/2, + (float)c->y + (float)c->h/2), (float)c->w/2, c->color, config->circle_segment_count, c->line_thickness); } break; case NK_COMMAND_CIRCLE_FILLED: { const struct nk_command_circle_filled *c = (const struct nk_command_circle_filled *)cmd; - nk_draw_list_fill_circle(&ctx->draw_list, nk_vec2((int)c->x + (int)c->w/2, - (int)c->y + (int)c->h/2), (int)c->w/2, c->color, + nk_draw_list_fill_circle(&ctx->draw_list, nk_vec2((float)c->x + (float)c->w/2, + (float)c->y + (float)c->h/2), (float)c->w/2, c->color, config->circle_segment_count); } break; case NK_COMMAND_ARC: { @@ -10740,7 +10635,7 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, int i; const struct nk_command_polygon*p = (const struct nk_command_polygon*)cmd; for (i = 0; i < p->point_count; ++i) { - struct nk_vec2 pnt = nk_vec2((int)p->points[i].x, (int)p->points[i].y); + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); nk_draw_list_path_line_to(&ctx->draw_list, pnt); } nk_draw_list_path_stroke(&ctx->draw_list, p->color, NK_STROKE_CLOSED, p->line_thickness); @@ -10749,7 +10644,7 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, int i; const struct nk_command_polygon_filled *p = (const struct nk_command_polygon_filled*)cmd; for (i = 0; i < p->point_count; ++i) { - struct nk_vec2 pnt = nk_vec2((int)p->points[i].x, (int)p->points[i].y); + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); nk_draw_list_path_line_to(&ctx->draw_list, pnt); } nk_draw_list_path_fill(&ctx->draw_list, p->color); @@ -10758,7 +10653,7 @@ nk_convert(struct nk_context *ctx, struct nk_buffer *cmds, int i; const struct nk_command_polyline *p = (const struct nk_command_polyline*)cmd; for (i = 0; i < p->point_count; ++i) { - struct nk_vec2 pnt = nk_vec2((int)p->points[i].x, (int)p->points[i].y); + struct nk_vec2 pnt = nk_vec2((float)p->points[i].x, (float)p->points[i].y); nk_draw_list_path_line_to(&ctx->draw_list, pnt); } nk_draw_list_path_stroke(&ctx->draw_list, p->color, NK_STROKE_OPEN, p->line_thickness); @@ -10788,20 +10683,17 @@ NK_API const struct nk_draw_command* nk__draw_begin(const struct nk_context *ctx, const struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / const"); return nk__draw_list_begin(&ctx->draw_list, buffer); } NK_API const struct nk_draw_command* nk__draw_end(const struct nk_context *ctx, const struct nk_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk__draw_end"); return nk__draw_list_end(&ctx->draw_list, buffer); } NK_API const struct nk_draw_command* nk__draw_next(const struct nk_draw_command *cmd, const struct nk_buffer *buffer, const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_buffer / const"); return nk__draw_list_next(cmd, buffer, &ctx->draw_list); } #endif @@ -11029,7 +10921,6 @@ enum STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_setup_heuristic / STBRP_DEF"); switch (context->init_mode) { case STBRP__INIT_skyline: STBRP_ASSERT(heuristic == STBRP_HEURISTIC_Skyline_BL_sortHeight || heuristic == STBRP_HEURISTIC_Skyline_BF_sortHeight); @@ -11042,7 +10933,6 @@ STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic) STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_out_of_mem) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_setup_allow_out_of_mem / STBRP_DEF"); if (allow_out_of_mem) /* if it's ok to run out of memory, then don't bother aligning them; */ /* this gives better packing, but may fail due to OOM (even though */ @@ -11063,7 +10953,6 @@ STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int allow_ou STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, stbrp_node *nodes, int num_nodes) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_init_target / STBRP_DEF"); int i; #ifndef STBRP_LARGE_RECTS STBRP_ASSERT(width <= 0xffff && height <= 0xffff); @@ -11097,7 +10986,6 @@ STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height, /* find minimum y position if it starts at x1 */ static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0, int width, int *pwaste) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp__skyline_find_min_y / static"); stbrp_node *node = first; int x1 = x0 + width; int min_y, visited_width, waste_area; @@ -11119,7 +11007,6 @@ static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0 min_y = 0; waste_area = 0; visited_width = 0; - //writeSerialPort(boutRefNum, "stbrp__skyline_find_min_y"); while (node->x < x1) { if (node->y > min_y) { /* raise min_y higher. */ @@ -11155,8 +11042,6 @@ typedef struct static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int width, int height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp__skyline_find_best_pos / static"); - //writeSerialPort(boutRefNum, "stbrp__skyline_find_best_pos"); int best_waste = (1<<30), best_x, best_y = (1 << 30); stbrp__findresult fr; stbrp_node **prev, *node, *tail, **best = NULL; @@ -11175,8 +11060,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt node = c->active_head; prev = &c->active_head; - - //writeSerialPort(boutRefNum, "stbrp__skyline_find_best_pos"); while (node->x + width <= c->width) { int y,waste; y = stbrp__skyline_find_min_y(c, node, node->x, width, &waste); @@ -11261,7 +11144,6 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, int width, int height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp__skyline_pack_rectangle / static"); /* find best position according to heuristic */ stbrp__findresult res = stbrp__skyline_find_best_pos(context, width, height); stbrp_node *node, *cur; @@ -11296,7 +11178,6 @@ static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, i *res.prev_link = node; } - //writeSerialPort(boutRefNum, "stbrp__skyline_pack_rectangle"); /* from here, traverse cur and free the nodes, until we get to one */ /* that shouldn't be freed */ while (cur->next && cur->next->x <= res.x + width) { @@ -11342,7 +11223,6 @@ static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, i static int rect_height_compare(const void *a, const void *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - rect_height_compare / static"); const stbrp_rect *p = (const stbrp_rect *) a; const stbrp_rect *q = (const stbrp_rect *) b; if (p->h > q->h) @@ -11354,7 +11234,6 @@ static int rect_height_compare(const void *a, const void *b) static int rect_original_order(const void *a, const void *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - rect_original_order / static"); const stbrp_rect *p = (const stbrp_rect *) a; const stbrp_rect *q = (const stbrp_rect *) b; return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed); @@ -11368,7 +11247,6 @@ static int rect_original_order(const void *a, const void *b) STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_pack_rects / STBRP_DEF"); int i, all_rects_packed = 1; /* we use the 'was_packed' field internally to allow sorting/unsorting */ @@ -11736,7 +11614,6 @@ GLuint ftex; void my_stbtt_initfont(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void / void"); fread(ttf_buffer, 1, 1<<20, fopen("c:/windows/fonts/times.ttf", "rb")); stbtt_BakeFontBitmap(ttf_buffer,0, 32.0, temp_bitmap,512,512, 32,96, cdata); /* no guarantee this fits! */ /* can free ttf_buffer at this point */ @@ -11747,9 +11624,8 @@ void my_stbtt_initfont(void) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } -void my_stbtt_print(int x, int y, char *text) +void my_stbtt_print(float x, float y, char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / void"); /* assume orthographic projection with units = screen pixels, origin at top left */ glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, ftex); @@ -11783,7 +11659,6 @@ char ttf_buffer[1<<25]; int main(int argc, char **argv) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / int"); stbtt_fontinfo font; unsigned char *bitmap; int w,h,i,j,c = (argc > 1 ? atoi(argv[1]) : 'a'), s = (argc > 2 ? atoi(argv[2]) : 20); @@ -11825,10 +11700,9 @@ unsigned char screen[20][79]; int main(int arg, char **argv) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / int"); stbtt_fontinfo font; int i,j,ascent,baseline,ch=0; - int scale, xpos=2; /* leave a little padding in case the character extends left */ + float scale, xpos=2; /* leave a little padding in case the character extends left */ char *text = "Heljo World!"; /* intentionally misspelled to show 'lj' brokenness */ fread(buffer, 1, 1000000, fopen("c:/windows/fonts/arialbd.ttf", "rb")); @@ -11840,7 +11714,7 @@ int main(int arg, char **argv) while (text[ch]) { int advance,lsb,x0,y0,x1,y1; - int x_shift = xpos - (int) floor(xpos); + float x_shift = xpos - (float) floor(xpos); stbtt_GetCodepointHMetrics(&font, text[ch], &advance, &lsb); stbtt_GetCodepointBitmapBoxSubpixel(&font, text[ch], scale,scale,x_shift,0, &x0,&y0,&x1,&y1); stbtt_MakeCodepointBitmapSubpixel(&font, &screen[baseline + y0][(int) xpos + x0], x1-x0,y1-y0, 79, scale,scale,x_shift,0, text[ch]); @@ -11979,11 +11853,11 @@ typedef struct typedef struct { unsigned short x0,y0,x1,y1; /* coordinates of bbox in bitmap */ - int xoff,yoff,xadvance; + float xoff,yoff,xadvance; } stbtt_bakedchar; STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, /* font location (use offset=0 for plain .ttf) */ - int pixel_height, /* height of font in pixels */ + float pixel_height, /* height of font in pixels */ unsigned char *pixels, int pw, int ph, /* bitmap to be filled in */ int first_char, int num_chars, /* characters to bake */ stbtt_bakedchar *chardata); /* you allocate this, it's num_chars long */ @@ -11994,13 +11868,13 @@ STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, /* f typedef struct { - int x0,y0,s0,t0; /* top-left */ - int x1,y1,s1,t1; /* bottom-right */ + float x0,y0,s0,t0; /* top-left */ + float x1,y1,s1,t1; /* bottom-right */ } stbtt_aligned_quad; STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, /* same data as above */ int char_index, /* character to display */ - int *xpos, int *ypos, /* pointers to current position in screen pixel space */ + float *xpos, float *ypos, /* pointers to current position in screen pixel space */ stbtt_aligned_quad *q, /* output: quad to draw */ int opengl_fillrule); /* true if opengl fill rule; false if DX9 or earlier */ /* Call GetBakedQuad with char_index = 'character - first_char', and it */ @@ -12013,7 +11887,7 @@ STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int p /* */ /* It's inefficient; you might want to c&p it and optimize it. */ -STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, int size, int *ascent, int *descent, int *lineGap); +STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, float size, float *ascent, float *descent, float *lineGap); /* Query the font vertical metrics without having to create a font first. */ @@ -12027,8 +11901,8 @@ STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int in typedef struct { unsigned short x0,y0,x1,y1; /* coordinates of bbox in bitmap */ - int xoff,yoff,xadvance; - int xoff2,yoff2; + float xoff,yoff,xadvance; + float xoff2,yoff2; } stbtt_packedchar; typedef struct stbtt_pack_context stbtt_pack_context; @@ -12053,7 +11927,7 @@ STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc); #define STBTT_POINT_SIZE(x) (-(x)) -STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, int font_size, +STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size, int first_unicode_char_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range); /* Creates character bitmaps from the font_index'th font found in fontdata (use */ /* font_index=0 if you don't know what that is). It creates num_chars_in_range */ @@ -12070,7 +11944,7 @@ STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char typedef struct { - int font_size; + float font_size; int first_unicode_codepoint_in_range; /* if non-zero, then the chars are continuous, and this is the first codepoint */ int *array_of_unicode_codepoints; /* if non-zero, then this is an array of unicode codepoints */ int num_chars; @@ -12108,7 +11982,7 @@ STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *spc, int s STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, /* same data as above */ int char_index, /* character to display */ - int *xpos, int *ypos, /* pointers to current position in screen pixel space */ + float *xpos, float *ypos, /* pointers to current position in screen pixel space */ stbtt_aligned_quad *q, /* output: quad to draw */ int align_to_integer); @@ -12207,7 +12081,7 @@ STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codep /* CHARACTER PROPERTIES */ /* */ -STBTT_DEF int stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, int pixels); +STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float pixels); /* computes a scale factor to produce a font whose "height" is 'pixels' tall. */ /* Height is measured as the distance from the highest ascender to the lowest */ /* descender; in other words, it's equivalent to calling stbtt_GetFontVMetrics */ @@ -12215,7 +12089,7 @@ STBTT_DEF int stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, int pixels); /* scale = pixels / (ascent - descent) */ /* so if you prefer to measure height by the ascent only, use a similar calculation. */ -STBTT_DEF int stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, int pixels); +STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels); /* computes a scale factor to produce a font whose EM size is mapped to */ /* 'pixels' tall. This is probably what traditional APIs compute, but */ /* I'm not positive. */ @@ -12322,7 +12196,7 @@ STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char * STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata); /* frees the bitmap allocated below */ -STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, int scale_x, int scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff); /* allocates a large-enough single-channel 8bpp bitmap and renders the */ /* specified character/glyph at the specified scale into it, with */ /* antialiasing. 0 is no coverage (transparent), 255 is fully covered (opaque). */ @@ -12331,44 +12205,44 @@ STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, in /* */ /* xoff/yoff are the offset it pixel space from the glyph origin to the top-left of the bitmap */ -STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, int scale_x, int scale_y, int shift_x, int shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff); /* the same as stbtt_GetCodepoitnBitmap, but you can specify a subpixel */ /* shift for the character */ -STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int codepoint); +STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint); /* the same as stbtt_GetCodepointBitmap, but you pass in storage for the bitmap */ /* in the form of 'output', with row spacing of 'out_stride' bytes. the bitmap */ /* is clipped to out_w/out_h bytes. Call stbtt_GetCodepointBitmapBox to get the */ /* width and height and positioning info for it first. */ -STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int codepoint); +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint); /* same as stbtt_MakeCodepointBitmap, but you can specify a subpixel */ /* shift for the character */ -STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int oversample_x, int oversample_y, int *sub_x, int *sub_y, int codepoint); +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint); /* same as stbtt_MakeCodepointBitmapSubpixel, but prefiltering */ /* is performed (see stbtt_PackSetOversampling) */ -STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, int scale_x, int scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); /* get the bbox of the bitmap centered around the glyph origin; so the */ /* bitmap width is ix1-ix0, height is iy1-iy0, and location to place */ /* the bitmap top left is (leftSideBearing*scale,iy0). */ /* (Note that the bitmap uses y-increases-down, but the shape uses */ /* y-increases-up, so CodepointBitmapBox and CodepointBox are inverted.) */ -STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, int scale_x, int scale_y, int shift_x, int shift_y, int *ix0, int *iy0, int *ix1, int *iy1); +STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); /* same as stbtt_GetCodepointBitmapBox, but you can specify a subpixel */ /* shift for the character */ /* the following functions are equivalent to the above functions, but operate */ /* on glyph indices instead of Unicode codepoints (for efficiency) */ -STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, int scale_x, int scale_y, int glyph, int *width, int *height, int *xoff, int *yoff); -STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, int scale_x, int scale_y, int shift_x, int shift_y, int glyph, int *width, int *height, int *xoff, int *yoff); -STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int glyph); -STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int glyph); -STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int oversample_x, int oversample_y, int *sub_x, int *sub_y, int glyph); -STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, int scale_x, int scale_y, int *ix0, int *iy0, int *ix1, int *iy1); -STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, int scale_x, int scale_y,int shift_x, int shift_y, int *ix0, int *iy0, int *ix1, int *iy1); +STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph); +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph); +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int glyph); +STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1); +STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1); /* @TODO: don't expose this structure */ @@ -12380,11 +12254,11 @@ typedef struct /* rasterize a shape with quadratic beziers into a bitmap */ STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, /* 1-channel bitmap to draw into */ - int flatness_in_pixels, /* allowable error of curve in pixels */ + float flatness_in_pixels, /* allowable error of curve in pixels */ stbtt_vertex *vertices, /* array of vertices defining shape */ int num_verts, /* number of vertices in above array */ - int scale_x, int scale_y, /* scale applied to input vertices */ - int shift_x, int shift_y, /* translation applied to input vertices */ + float scale_x, float scale_y, /* scale applied to input vertices */ + float shift_x, float shift_y, /* translation applied to input vertices */ int x_off, int y_off, /* another translation applied to input */ int invert, /* if non-zero, vertically flip shape */ void *userdata); /* context for to STBTT_MALLOC */ @@ -12396,8 +12270,8 @@ STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, /* 1-channel bitma STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata); /* frees the SDF bitmap allocated below */ -STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scale, int glyph, int padding, unsigned char onedge_value, int pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); -STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, int scale, int codepoint, int padding, unsigned char onedge_value, int pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); +STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff); /* These functions compute a discretized SDF field for a single character, suitable for storing */ /* in a single-channel texture, sampling with bilinear filtering, and testing against */ /* larger than some threshold to produce scalable fonts. */ @@ -12583,7 +12457,6 @@ typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERS static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_get8 / static"); if (b->cursor >= b->size) return 0; return b->data[b->cursor++]; @@ -12591,7 +12464,6 @@ static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b) static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_peek8 / static"); if (b->cursor >= b->size) return 0; return b->data[b->cursor]; @@ -12599,20 +12471,17 @@ static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b) static void stbtt__buf_seek(stbtt__buf *b, int o) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_seek / static"); STBTT_assert(!(o > b->size || o < 0)); b->cursor = (o > b->size || o < 0) ? b->size : o; } static void stbtt__buf_skip(stbtt__buf *b, int o) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_skip / static"); stbtt__buf_seek(b, b->cursor + o); } static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_get / static"); stbtt_uint32 v = 0; int i; STBTT_assert(n >= 1 && n <= 4); @@ -12623,7 +12492,6 @@ static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n) static stbtt__buf stbtt__new_buf(const void *p, size_t size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__new_buf / static"); stbtt__buf r; STBTT_assert(size < 0x40000000); r.data = (stbtt_uint8*) p; @@ -12637,7 +12505,6 @@ static stbtt__buf stbtt__new_buf(const void *p, size_t size) static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__buf_range / static"); stbtt__buf r = stbtt__new_buf(NULL, 0); if (o < 0 || s < 0 || o > b->size || s > b->size - o) return r; r.data = b->data + o; @@ -12647,7 +12514,6 @@ static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s) static stbtt__buf stbtt__cff_get_index(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cff_get_index / static"); int count, start, offsize; start = b->cursor; count = stbtt__buf_get16(b); @@ -12662,7 +12528,6 @@ static stbtt__buf stbtt__cff_get_index(stbtt__buf *b) static stbtt_uint32 stbtt__cff_int(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cff_int / static"); int b0 = stbtt__buf_get8(b); if (b0 >= 32 && b0 <= 246) return b0 - 139; else if (b0 >= 247 && b0 <= 250) return (b0 - 247)*256 + stbtt__buf_get8(b) + 108; @@ -12674,7 +12539,6 @@ static stbtt_uint32 stbtt__cff_int(stbtt__buf *b) } static void stbtt__cff_skip_operand(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "stbtt__cff_skip_operand"); int v, b0 = stbtt__buf_peek8(b); STBTT_assert(b0 >= 28); if (b0 == 30) { @@ -12691,8 +12555,6 @@ static void stbtt__cff_skip_operand(stbtt__buf *b) { static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__dict_get / static"); - //writeSerialPort(boutRefNum, "stbtt__dict_get"); stbtt__buf_seek(b, 0); while (b->cursor < b->size) { int start = b->cursor, end, op; @@ -12708,7 +12570,6 @@ static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key) static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, stbtt_uint32 *out) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__dict_get_ints / static"); int i; stbtt__buf operands = stbtt__dict_get(b, key); for (i = 0; i < outcount && operands.cursor < operands.size; i++) @@ -12717,14 +12578,12 @@ static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, stbtt_uin static int stbtt__cff_index_count(stbtt__buf *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cff_index_count / static"); stbtt__buf_seek(b, 0); return stbtt__buf_get16(b); } static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cff_index_get / static"); int count, offsize, start, end; stbtt__buf_seek(&b, 0); count = stbtt__buf_get16(&b); @@ -12759,7 +12618,6 @@ static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + static int stbtt__isfont(stbtt_uint8 *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__isfont / static"); /* check the version number */ if (stbtt_tag4(font, '1',0,0,0)) return 1; /* TrueType 1 */ if (stbtt_tag(font, "typ1")) return 1; /* TrueType with type 1 font -- we don't support this! */ @@ -12772,7 +12630,6 @@ static int stbtt__isfont(stbtt_uint8 *font) /* @OPTIMIZE: binary search */ static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart, const char *tag) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__find_table / static"); stbtt_int32 num_tables = ttUSHORT(data+fontstart+4); stbtt_uint32 tabledir = fontstart + 12; stbtt_int32 i; @@ -12786,7 +12643,6 @@ static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart, static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, int index) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetFontOffsetForIndex_internal / static"); /* if it's just a font, there's only one valid index */ if (stbtt__isfont(font_collection)) return index == 0 ? 0 : -1; @@ -12806,7 +12662,6 @@ static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetNumberOfFonts_internal / static"); /* if it's just a font, there's only one valid font */ if (stbtt__isfont(font_collection)) return 1; @@ -12823,7 +12678,6 @@ static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection) static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__get_subrs / static"); stbtt_uint32 subrsoff = 0, private_loc[2] = { 0, 0 }; stbtt__buf pdict; stbtt__dict_get_ints(&fontdict, 18, 2, private_loc); @@ -12838,7 +12692,6 @@ static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict) /* since most people won't use this, find this table the first time it's needed */ static int stbtt__get_svg(stbtt_fontinfo *info) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__get_svg / static"); stbtt_uint32 t; if (info->svg < 0) { t = stbtt__find_table(info->data, info->fontstart, "SVG "); @@ -12854,7 +12707,6 @@ static int stbtt__get_svg(stbtt_fontinfo *info) static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_InitFont_internal / static"); stbtt_uint32 cmap, t; stbtt_int32 i,numTables; @@ -12968,9 +12820,6 @@ static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, in STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codepoint) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FindGlyphIndex / STBTT_DEF"); - - //writeSerialPort(boutRefNum, "stbtt_FindGlyphIndex"); stbtt_uint8 *data = info->data; stbtt_uint32 index_map = info->index_map; @@ -13064,13 +12913,11 @@ STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unicode_codep STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int unicode_codepoint, stbtt_vertex **vertices) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointShape / STBTT_DEF"); return stbtt_GetGlyphShape(info, stbtt_FindGlyphIndex(info, unicode_codepoint), vertices); } static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_setvertex / static"); v->type = type; v->x = (stbtt_int16) x; v->y = (stbtt_int16) y; @@ -13080,7 +12927,6 @@ static void stbtt_setvertex(stbtt_vertex *v, stbtt_uint8 type, stbtt_int32 x, st static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyfOffset / static"); int g1,g2; STBTT_assert(!info->cff.size); @@ -13103,7 +12949,6 @@ static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, in STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphBox / STBTT_DEF"); if (info->cff.size) { stbtt__GetGlyphInfoT2(info, glyph_index, x0, y0, x1, y1); } else { @@ -13120,13 +12965,11 @@ STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, int *x0, int *y0, int *x1, int *y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointBox / STBTT_DEF"); return stbtt_GetGlyphBox(info, stbtt_FindGlyphIndex(info,codepoint), x0,y0,x1,y1); } STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_IsGlyphEmpty / STBTT_DEF"); stbtt_int16 numberOfContours; int g; if (info->cff.size) @@ -13140,7 +12983,6 @@ STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index) static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, int was_off, int start_off, stbtt_int32 sx, stbtt_int32 sy, stbtt_int32 scx, stbtt_int32 scy, stbtt_int32 cx, stbtt_int32 cy) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - sx, / stbtt_int32"); if (start_off) { if (was_off) stbtt_setvertex(&vertices[num_vertices++], STBTT_vcurve, (cx+scx)>>1, (cy+scy)>>1, cx,cy); @@ -13156,7 +12998,6 @@ static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, int was_ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphShapeTT / static"); stbtt_int16 numberOfContours; stbtt_uint8 *endPtsOfContours; stbtt_uint8 *data = info->data; @@ -13303,7 +13144,7 @@ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, s stbtt_uint16 flags, gidx; int comp_num_verts = 0, i; stbtt_vertex *comp_verts = 0, *tmp = 0; - int mtx[6] = {1,0,0,1,0,0}, m, n; + float mtx[6] = {1,0,0,1,0,0}, m, n; flags = ttSHORT(comp); comp+=2; gidx = ttSHORT(comp); comp+=2; @@ -13336,8 +13177,8 @@ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, s } /* Find transformation scales. */ - m = (int) STBTT_sqrt(mtx[0]*mtx[0] + mtx[1]*mtx[1]); - n = (int) STBTT_sqrt(mtx[2]*mtx[2] + mtx[3]*mtx[3]); + m = (float) STBTT_sqrt(mtx[0]*mtx[0] + mtx[1]*mtx[1]); + n = (float) STBTT_sqrt(mtx[2]*mtx[2] + mtx[3]*mtx[3]); /* Get indexed glyph. */ comp_num_verts = stbtt_GetGlyphShape(info, gidx, &comp_verts); @@ -13382,8 +13223,8 @@ typedef struct { int bounds; int started; - int first_x, first_y; - int x, y; + float first_x, first_y; + float x, y; stbtt_int32 min_x, max_x, min_y, max_y; stbtt_vertex *pvertices; @@ -13394,7 +13235,6 @@ typedef struct static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_int32 y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__track_vertex / static"); if (x > c->max_x || !c->started) c->max_x = x; if (y > c->max_y || !c->started) c->max_y = y; if (x < c->min_x || !c->started) c->min_x = x; @@ -13404,7 +13244,6 @@ static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_int32 y) static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy, stbtt_int32 cx1, stbtt_int32 cy1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__csctx_v / static"); if (c->bounds) { stbtt__track_vertex(c, x, y); if (type == STBTT_vcubic) { @@ -13421,35 +13260,31 @@ static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int32 x, stb static void stbtt__csctx_close_shape(stbtt__csctx *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__csctx_close_shape / static"); if (ctx->first_x != ctx->x || ctx->first_y != ctx->y) stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->first_x, (int)ctx->first_y, 0, 0, 0, 0); } -static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, int dx, int dy) +static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, float dx, float dy) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__csctx_rmove_to / static"); stbtt__csctx_close_shape(ctx); ctx->first_x = ctx->x = ctx->x + dx; ctx->first_y = ctx->y = ctx->y + dy; stbtt__csctx_v(ctx, STBTT_vmove, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); } -static void stbtt__csctx_rline_to(stbtt__csctx *ctx, int dx, int dy) +static void stbtt__csctx_rline_to(stbtt__csctx *ctx, float dx, float dy) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__csctx_rline_to / static"); ctx->x += dx; ctx->y += dy; stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0); } -static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3) +static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, float dx1, float dy1, float dx2, float dy2, float dx3, float dy3) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__csctx_rccurve_to / static"); - int cx1 = ctx->x + dx1; - int cy1 = ctx->y + dy1; - int cx2 = cx1 + dx2; - int cy2 = cy1 + dy2; + float cx1 = ctx->x + dx1; + float cy1 = ctx->y + dy1; + float cx2 = cx1 + dx2; + float cy2 = cy1 + dy2; ctx->x = cx2 + dx3; ctx->y = cy2 + dy3; stbtt__csctx_v(ctx, STBTT_vcubic, (int)ctx->x, (int)ctx->y, (int)cx1, (int)cy1, (int)cx2, (int)cy2); @@ -13457,7 +13292,6 @@ static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, int dx1, int dy1, int dx2 static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__get_subr / static"); int count = stbtt__cff_index_count(&idx); int bias = 107; if (count >= 33900) @@ -13472,7 +13306,6 @@ static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n) static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info, int glyph_index) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cid_get_glyph_subrs / static"); stbtt__buf fdselect = info->fdselect; int nranges, start, end, v, fmt, fdselector = -1, i; @@ -13501,14 +13334,12 @@ static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info, int gly static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, stbtt__csctx *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__run_charstring / static"); int in_header = 1, maskbits = 0, subr_stack_height = 0, sp = 0, v, i, b0; int has_subrs = 0, clear_stack; - int s[48]; + float s[48]; stbtt__buf subr_stack[10], subrs = info->subrs, b; - int f; + float f; - //writeSerialPort(boutRefNum, "stbtt__run_charstring"); #define STBTT__CSERR(s) (0) /* this currently ignores the initial width value, which isn't needed if we have hmtx */ @@ -13656,8 +13487,8 @@ static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, st return 1; case 0x0C: { /* two-byte escape */ - int dx1, dx2, dx3, dx4, dx5, dx6, dy1, dy2, dy3, dy4, dy5, dy6; - int dx, dy; + float dx1, dx2, dx3, dx4, dx5, dx6, dy1, dy2, dy3, dy4, dy5, dy6; + float dx, dy; int b1 = stbtt__buf_get8(&b); switch (b1) { /* @TODO These "flex" implementations ignore the flex-depth and resolution, */ @@ -13743,10 +13574,10 @@ static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, st /* push immediate */ if (b0 == 255) { - f = (int)(stbtt_int32)stbtt__buf_get32(&b) / 0x10000; + f = (float)(stbtt_int32)stbtt__buf_get32(&b) / 0x10000; } else { stbtt__buf_skip(&b, -1); - f = (int)(stbtt_int16)stbtt__cff_int(&b); + f = (float)(stbtt_int16)stbtt__cff_int(&b); } if (sp >= 48) return STBTT__CSERR("push stack overflow"); s[sp++] = f; @@ -13762,7 +13593,6 @@ static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, st static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphShapeT2 / static"); /* runs the charstring twice, once to count and once to output (to avoid realloc) */ stbtt__csctx count_ctx = STBTT__CSCTX_INIT(1); stbtt__csctx output_ctx = STBTT__CSCTX_INIT(0); @@ -13780,7 +13610,6 @@ static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_index, s static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphInfoT2 / static"); stbtt__csctx c = STBTT__CSCTX_INIT(1); int r = stbtt__run_charstring(info, glyph_index, &c); if (x0) *x0 = r ? c.min_x : 0; @@ -13792,7 +13621,6 @@ static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, in STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphShape / STBTT_DEF"); if (!info->cff.size) return stbtt__GetGlyphShapeTT(info, glyph_index, pvertices); else @@ -13801,7 +13629,6 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphHMetrics / STBTT_DEF"); stbtt_uint16 numOfLongHorMetrics = ttUSHORT(info->data+info->hhea + 34); if (glyph_index < numOfLongHorMetrics) { if (advanceWidth) *advanceWidth = ttSHORT(info->data + info->hmtx + 4*glyph_index); @@ -13814,7 +13641,6 @@ STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_inde STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetKerningTableLength / STBTT_DEF"); stbtt_uint8 *data = info->data + info->kern; /* we only look at the first table. it must be 'horizontal' and format 0. */ @@ -13830,7 +13656,6 @@ STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info) STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningentry* table, int table_length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetKerningTable / STBTT_DEF"); stbtt_uint8 *data = info->data + info->kern; int k, length; @@ -13858,7 +13683,6 @@ STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningent static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphKernInfoAdvance / static"); stbtt_uint8 *data = info->data + info->kern; stbtt_uint32 needle, straw; int l, r, m; @@ -13889,7 +13713,6 @@ static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, int glyph static stbtt_int32 stbtt__GetCoverageIndex(stbtt_uint8 *coverageTable, int glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetCoverageIndex / static"); stbtt_uint16 coverageFormat = ttUSHORT(coverageTable); switch(coverageFormat) { case 1: { @@ -13949,7 +13772,6 @@ static stbtt_int32 stbtt__GetCoverageIndex(stbtt_uint8 *coverageTable, int glyp static stbtt_int32 stbtt__GetGlyphClass(stbtt_uint8 *classDefTable, int glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphClass / static"); stbtt_uint16 classDefFormat = ttUSHORT(classDefTable); switch(classDefFormat) { @@ -14002,7 +13824,6 @@ static stbtt_int32 stbtt__GetGlyphClass(stbtt_uint8 *classDefTable, int glyph) static stbtt_int32 stbtt__GetGlyphGPOSInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__GetGlyphGPOSInfoAdvance / static"); stbtt_uint16 lookupListOffset; stbtt_uint8 *lookupList; stbtt_uint16 lookupCount; @@ -14131,7 +13952,6 @@ static stbtt_int32 stbtt__GetGlyphGPOSInfoAdvance(const stbtt_fontinfo *info, i STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int g1, int g2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphKernAdvance / STBTT_DEF"); int xAdvance = 0; if (info->gpos) @@ -14144,7 +13964,6 @@ STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int g1, int STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1, int ch2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointKernAdvance / STBTT_DEF"); if (!info->kern && !info->gpos) /* if no kerning table, don't waste time looking up both codepoint->glyphs */ return 0; return stbtt_GetGlyphKernAdvance(info, stbtt_FindGlyphIndex(info,ch1), stbtt_FindGlyphIndex(info,ch2)); @@ -14152,13 +13971,11 @@ STBTT_DEF int stbtt_GetCodepointKernAdvance(const stbtt_fontinfo *info, int ch1 STBTT_DEF void stbtt_GetCodepointHMetrics(const stbtt_fontinfo *info, int codepoint, int *advanceWidth, int *leftSideBearing) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointHMetrics / STBTT_DEF"); stbtt_GetGlyphHMetrics(info, stbtt_FindGlyphIndex(info,codepoint), advanceWidth, leftSideBearing); } STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, int *descent, int *lineGap) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetFontVMetrics / STBTT_DEF"); if (ascent ) *ascent = ttSHORT(info->data+info->hhea + 4); if (descent) *descent = ttSHORT(info->data+info->hhea + 6); if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8); @@ -14166,7 +13983,6 @@ STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, in STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetFontVMetricsOS2 / STBTT_DEF"); int tab = stbtt__find_table(info->data, info->fontstart, "OS/2"); if (!tab) return 0; @@ -14178,36 +13994,31 @@ STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAsc STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetFontBoundingBox / STBTT_DEF"); *x0 = ttSHORT(info->data + info->head + 36); *y0 = ttSHORT(info->data + info->head + 38); *x1 = ttSHORT(info->data + info->head + 40); *y1 = ttSHORT(info->data + info->head + 42); } -STBTT_DEF int stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, int height) +STBTT_DEF float stbtt_ScaleForPixelHeight(const stbtt_fontinfo *info, float height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_ScaleForPixelHeight / STBTT_DEF"); int fheight = ttSHORT(info->data + info->hhea + 4) - ttSHORT(info->data + info->hhea + 6); - return (int) height / fheight; + return (float) height / fheight; } -STBTT_DEF int stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, int pixels) +STBTT_DEF float stbtt_ScaleForMappingEmToPixels(const stbtt_fontinfo *info, float pixels) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_ScaleForMappingEmToPixels / STBTT_DEF"); int unitsPerEm = ttUSHORT(info->data + info->head + 18); return pixels / unitsPerEm; } STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *v) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FreeShape / STBTT_DEF"); STBTT_free(v, info->userdata); } STBTT_DEF stbtt_uint8 *stbtt_FindSVGDoc(const stbtt_fontinfo *info, int gl) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FindSVGDoc / STBTT_DEF"); int i; stbtt_uint8 *data = info->data; stbtt_uint8 *svg_doc_list = data + stbtt__get_svg((stbtt_fontinfo *) info); @@ -14225,7 +14036,6 @@ STBTT_DEF stbtt_uint8 *stbtt_FindSVGDoc(const stbtt_fontinfo *info, int gl) STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char **svg) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphSVG / STBTT_DEF"); stbtt_uint8 *data = info->data; stbtt_uint8 *svg_doc; @@ -14243,7 +14053,6 @@ STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char * STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_codepoint, const char **svg) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointSVG / STBTT_DEF"); return stbtt_GetGlyphSVG(info, stbtt_FindGlyphIndex(info, unicode_codepoint), svg); } @@ -14252,9 +14061,8 @@ STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_code /* antialiasing software rasterizer */ /* */ -STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, int scale_x, int scale_y,int shift_x, int shift_y, int *ix0, int *iy0, int *ix1, int *iy1) +STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphBitmapBoxSubpixel / STBTT_DEF"); int x0=0,y0=0,x1,y1; /* =0 suppresses compiler warning */ if (!stbtt_GetGlyphBox(font, glyph, &x0,&y0,&x1,&y1)) { /* e.g. space character */ @@ -14271,21 +14079,18 @@ STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int g } } -STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, int scale_x, int scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetGlyphBitmapBox / STBTT_DEF"); stbtt_GetGlyphBitmapBoxSubpixel(font, glyph, scale_x, scale_y,0.0f,0.0f, ix0, iy0, ix1, iy1); } -STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, int scale_x, int scale_y, int shift_x, int shift_y, int *ix0, int *iy0, int *ix1, int *iy1) +STBTT_DEF void stbtt_GetCodepointBitmapBoxSubpixel(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointBitmapBoxSubpixel / STBTT_DEF"); stbtt_GetGlyphBitmapBoxSubpixel(font, stbtt_FindGlyphIndex(font,codepoint), scale_x, scale_y,shift_x,shift_y, ix0,iy0,ix1,iy1); } -STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, int scale_x, int scale_y, int *ix0, int *iy0, int *ix1, int *iy1) +STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetCodepointBitmapBox / STBTT_DEF"); stbtt_GetCodepointBitmapBoxSubpixel(font, codepoint, scale_x, scale_y,0.0f,0.0f, ix0,iy0,ix1,iy1); } @@ -14307,7 +14112,6 @@ typedef struct stbtt__hheap static void *stbtt__hheap_alloc(stbtt__hheap *hh, size_t size, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__hheap_alloc / static"); if (hh->first_free) { void *p = hh->first_free; hh->first_free = * (void **) p; @@ -14329,14 +14133,12 @@ static void *stbtt__hheap_alloc(stbtt__hheap *hh, size_t size, void *userdata) static void stbtt__hheap_free(stbtt__hheap *hh, void *p) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__hheap_free / static"); *(void **) p = hh->first_free; hh->first_free = p; } static void stbtt__hheap_cleanup(stbtt__hheap *hh, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__hheap_cleanup / static"); stbtt__hheap_chunk *c = hh->head; while (c) { stbtt__hheap_chunk *n = c->next; @@ -14346,7 +14148,7 @@ static void stbtt__hheap_cleanup(stbtt__hheap *hh, void *userdata) } typedef struct stbtt__edge { - int x0,y0, x1,y1; + float x0,y0, x1,y1; int invert; } stbtt__edge; @@ -14356,13 +14158,13 @@ typedef struct stbtt__active_edge struct stbtt__active_edge *next; #if STBTT_RASTERIZER_VERSION==1 int x,dx; - int ey; + float ey; int direction; #elif STBTT_RASTERIZER_VERSION==2 - int fx,fdx,fdy; - int direction; - int sy; - int ey; + float fx,fdx,fdy; + float direction; + float sy; + float ey; #else #error "Unrecognized value of STBTT_RASTERIZER_VERSION" #endif @@ -14373,11 +14175,10 @@ typedef struct stbtt__active_edge #define STBTT_FIX (1 << STBTT_FIXSHIFT) #define STBTT_FIXMASK (STBTT_FIX-1) -static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, int start_point, void *userdata) +static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__new_active / static"); stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); - int dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); STBTT_assert(z != NULL); if (!z) return z; @@ -14396,11 +14197,10 @@ static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, i return z; } #elif STBTT_RASTERIZER_VERSION == 2 -static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, int start_point, void *userdata) +static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, int off_x, float start_point, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__new_active / static"); stbtt__active_edge *z = (stbtt__active_edge *) stbtt__hheap_alloc(hh, sizeof(*z), userdata); - int dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); + float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0); STBTT_assert(z != NULL); /* STBTT_assert(e->y0 <= start_point); */ if (!z) return z; @@ -14424,7 +14224,6 @@ static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, i /* are wrong, or if the user supplies a too-small bitmap */ static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__active_edge *e, int max_weight) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__fill_active_edges / static"); /* non-zero winding fill */ int x0=0, w=0; @@ -14467,7 +14266,6 @@ static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__ac static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__rasterize_sorted_edges / static"); stbtt__hheap hh = { 0, 0, 0 }; stbtt__active_edge *active = NULL; int y,j=0; @@ -14481,13 +14279,13 @@ static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, scanline = scanline_data; y = off_y * vsubsample; - e[n].y0 = (off_y + result->h) * (int) vsubsample + 1; + e[n].y0 = (off_y + result->h) * (float) vsubsample + 1; while (j < result->h) { STBTT_memset(scanline, 0, result->w); for (s=0; s < vsubsample; ++s) { /* find center of pixel for this scanline */ - int scan_y = y + 0.5f; + float scan_y = y + 0.5f; stbtt__active_edge **step = &active; /* update all active edges; */ @@ -14570,9 +14368,8 @@ static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, /* the edge passed in here does not cross the vertical line at x or the vertical line at x+1 */ /* (i.e. it has already been clipped to those) */ -static void stbtt__handle_clipped_edge(int *scanline, int x, stbtt__active_edge *e, int x0, int y0, int x1, int y1) +static void stbtt__handle_clipped_edge(float *scanline, int x, stbtt__active_edge *e, float x0, float y0, float x1, float y1) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__handle_clipped_edge / static"); if (y0 == y1) return; STBTT_assert(y0 < y1); STBTT_assert(e->sy <= e->ey); @@ -14608,10 +14405,9 @@ static void stbtt__handle_clipped_edge(int *scanline, int x, stbtt__active_edge } } -static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int len, stbtt__active_edge *e, int y_top) +static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill, int len, stbtt__active_edge *e, float y_top) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__fill_active_edges_new / static"); - int y_bottom = y_top+1; + float y_bottom = y_top+1; while (e) { /* brute force every pixel */ @@ -14620,7 +14416,7 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int STBTT_assert(e->ey >= y_top); if (e->fdx == 0) { - int x0 = e->fx; + float x0 = e->fx; if (x0 < len) { if (x0 >= 0) { stbtt__handle_clipped_edge(scanline,(int) x0,e, x0,y_top, x0,y_bottom); @@ -14630,12 +14426,12 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int } } } else { - int x0 = e->fx; - int dx = e->fdx; - int xb = x0 + dx; - int x_top, x_bottom; - int sy0,sy1; - int dy = e->fdy; + float x0 = e->fx; + float dx = e->fdx; + float xb = x0 + dx; + float x_top, x_bottom; + float sy0,sy1; + float dy = e->fdy; STBTT_assert(e->sy <= y_bottom && e->ey >= y_top); /* compute endpoints of line segment clipped to this scanline (if the */ @@ -14660,7 +14456,7 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int /* from here on, we don't have to range check x values */ if ((int) x_top == (int) x_bottom) { - int height; + float height; /* simple case, only spans one pixel */ int x = (int) x_top; height = sy1 - sy0; @@ -14669,11 +14465,11 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int scanline_fill[x] += e->direction * height; /* everything right of this pixel is filled */ } else { int x,x1,x2; - int y_crossing, step, sign, area; + float y_crossing, step, sign, area; /* covers 2+ pixels */ if (x_top > x_bottom) { /* flip scanline vertically; signed area is the same */ - int t; + float t; sy0 = y_bottom - (sy0 - y_top); sy1 = y_bottom - (sy1 - y_top); t = sy0, sy0 = sy1, sy1 = t; @@ -14728,17 +14524,17 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int /* that, we need to explicitly produce segments based on x positions. */ /* rename variables to clearly-defined pairs */ - int y0 = y_top; - int x1 = (int) (x); - int x2 = (int) (x+1); - int x3 = xb; - int y3 = y_bottom; + float y0 = y_top; + float x1 = (float) (x); + float x2 = (float) (x+1); + float x3 = xb; + float y3 = y_bottom; /* x = e->x + e->dx * (y-y_top) */ /* (y-y_top) = (x - e->x) / e->dx */ /* y = (x - e->x) / e->dx + y_top */ - int y1 = (x - x0) / dx + y_top; - int y2 = (x+1 - x0) / dx + y_top; + float y1 = (x - x0) / dx + y_top; + float y2 = (x+1 - x0) / dx + y_top; if (x0 < x1 && x3 > x2) { /* three segments descending down-right */ stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1); @@ -14773,28 +14569,27 @@ static void stbtt__fill_active_edges_new(int *scanline, int *scanline_fill, int /* directly AA rasterize edges w/o supersampling */ static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__rasterize_sorted_edges / static"); stbtt__hheap hh = { 0, 0, 0 }; stbtt__active_edge *active = NULL; int y,j=0, i; - int scanline_data[129], *scanline, *scanline2; + float scanline_data[129], *scanline, *scanline2; STBTT__NOTUSED(vsubsample); if (result->w > 64) - scanline = (int *) STBTT_malloc((result->w*2+1) * sizeof(int), userdata); + scanline = (float *) STBTT_malloc((result->w*2+1) * sizeof(float), userdata); else scanline = scanline_data; scanline2 = scanline + result->w; y = off_y; - e[n].y0 = (int) (off_y + result->h) + 1; + e[n].y0 = (float) (off_y + result->h) + 1; while (j < result->h) { /* find center of pixel for this scanline */ - int scan_y_top = y + 0.0f; - int scan_y_bottom = y + 1.0f; + float scan_y_top = y + 0.0f; + float scan_y_bottom = y + 1.0f; stbtt__active_edge **step = &active; STBTT_memset(scanline , 0, result->w*sizeof(scanline[0])); @@ -14839,13 +14634,13 @@ static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, stbtt__fill_active_edges_new(scanline, scanline2+1, result->w, active, scan_y_top); { - int sum = 0; + float sum = 0; for (i=0; i < result->w; ++i) { - int k; + float k; int m; sum += scanline2[i]; k = scanline[i] + sum; - k = (int) STBTT_fabs(k)*255 + 0.5f; + k = (float) STBTT_fabs(k)*255 + 0.5f; m = (int) k; if (m > 255) m = 255; result->pixels[j*result->stride + i] = (unsigned char) m; @@ -14876,7 +14671,6 @@ static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__sort_edges_ins_sort / static"); int i,j; for (i=1; i < n; ++i) { stbtt__edge t = p[i], *a = &t; @@ -14895,7 +14689,6 @@ static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__sort_edges_quicksort / static"); /* threshold for transitioning to insertion sort */ while (n > 12) { stbtt__edge t; @@ -14958,20 +14751,18 @@ static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) static void stbtt__sort_edges(stbtt__edge *p, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__sort_edges / static"); stbtt__sort_edges_quicksort(p, n); stbtt__sort_edges_ins_sort(p, n); } typedef struct { - int x,y; + float x,y; } stbtt__point; -static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcount, int windings, int scale_x, int scale_y, int shift_x, int shift_y, int off_x, int off_y, int invert, void *userdata) +static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcount, int windings, float scale_x, float scale_y, float shift_x, float shift_y, int off_x, int off_y, int invert, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__rasterize / static"); - int y_scale_inv = invert ? -scale_y : scale_y; + float y_scale_inv = invert ? -scale_y : scale_y; stbtt__edge *e; int n,i,j,k,m; #if STBTT_RASTERIZER_VERSION == 1 @@ -15026,24 +14817,22 @@ static void stbtt__rasterize(stbtt__bitmap *result, stbtt__point *pts, int *wcou STBTT_free(e, userdata); } -static void stbtt__add_point(stbtt__point *points, int n, int x, int y) +static void stbtt__add_point(stbtt__point *points, int n, float x, float y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__add_point / static"); if (!points) return; /* during first pass, it's unallocated */ points[n].x = x; points[n].y = y; } /* tessellate until threshold p is happy... @TODO warped to compensate for non-linear stretching */ -static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, int x0, int y0, int x1, int y1, int x2, int y2, int objspace_flatness_squared, int n) +static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float objspace_flatness_squared, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__tesselate_curve / static"); /* midpoint */ - int mx = (x0 + 2*x1 + x2)/4; - int my = (y0 + 2*y1 + y2)/4; + float mx = (x0 + 2*x1 + x2)/4; + float my = (y0 + 2*y1 + y2)/4; /* versus directly drawn line */ - int dx = (x0+x2)/2 - mx; - int dy = (y0+y2)/2 - my; + float dx = (x0+x2)/2 - mx; + float dy = (y0+y2)/2 - my; if (n > 16) /* 65536 segments on one curve better be enough! */ return 1; if (dx*dx+dy*dy > objspace_flatness_squared) { /* half-pixel error allowed... need to be smaller if AA */ @@ -15056,40 +14845,39 @@ static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, int x0, return 1; } -static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int objspace_flatness_squared, int n) +static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float objspace_flatness_squared, int n) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__tesselate_cubic / static"); /* @TODO this "flatness" calculation is just made-up nonsense that seems to work well enough */ - int dx0 = x1-x0; - int dy0 = y1-y0; - int dx1 = x2-x1; - int dy1 = y2-y1; - int dx2 = x3-x2; - int dy2 = y3-y2; - int dx = x3-x0; - int dy = y3-y0; - int longlen = (int) (STBTT_sqrt(dx0*dx0+dy0*dy0)+STBTT_sqrt(dx1*dx1+dy1*dy1)+STBTT_sqrt(dx2*dx2+dy2*dy2)); - int shortlen = (int) STBTT_sqrt(dx*dx+dy*dy); - int flatness_squared = longlen*longlen-shortlen*shortlen; + float dx0 = x1-x0; + float dy0 = y1-y0; + float dx1 = x2-x1; + float dy1 = y2-y1; + float dx2 = x3-x2; + float dy2 = y3-y2; + float dx = x3-x0; + float dy = y3-y0; + float longlen = (float) (STBTT_sqrt(dx0*dx0+dy0*dy0)+STBTT_sqrt(dx1*dx1+dy1*dy1)+STBTT_sqrt(dx2*dx2+dy2*dy2)); + float shortlen = (float) STBTT_sqrt(dx*dx+dy*dy); + float flatness_squared = longlen*longlen-shortlen*shortlen; if (n > 16) /* 65536 segments on one curve better be enough! */ return; if (flatness_squared > objspace_flatness_squared) { - int x01 = (x0+x1)/2; - int y01 = (y0+y1)/2; - int x12 = (x1+x2)/2; - int y12 = (y1+y2)/2; - int x23 = (x2+x3)/2; - int y23 = (y2+y3)/2; + float x01 = (x0+x1)/2; + float y01 = (y0+y1)/2; + float x12 = (x1+x2)/2; + float y12 = (y1+y2)/2; + float x23 = (x2+x3)/2; + float y23 = (y2+y3)/2; - int xa = (x01+x12)/2; - int ya = (y01+y12)/2; - int xb = (x12+x23)/2; - int yb = (y12+y23)/2; + float xa = (x01+x12)/2; + float ya = (y01+y12)/2; + float xb = (x12+x23)/2; + float yb = (y12+y23)/2; - int mx = (xa+xb)/2; - int my = (ya+yb)/2; + float mx = (xa+xb)/2; + float my = (ya+yb)/2; stbtt__tesselate_cubic(points, num_points, x0,y0, x01,y01, xa,ya, mx,my, objspace_flatness_squared,n+1); stbtt__tesselate_cubic(points, num_points, mx,my, xb,yb, x23,y23, x3,y3, objspace_flatness_squared,n+1); @@ -15100,13 +14888,12 @@ static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, int x0 } /* returns number of contours */ -static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, int objspace_flatness, int **contour_lengths, int *num_contours, void *userdata) +static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, float objspace_flatness, int **contour_lengths, int *num_contours, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FlattenCurves / static"); stbtt__point *points=0; int num_points=0; - int objspace_flatness_squared = objspace_flatness * objspace_flatness; + float objspace_flatness_squared = objspace_flatness * objspace_flatness; int i,n=0,start=0, pass; /* count how many "moves" there are to get the contour count */ @@ -15126,7 +14913,7 @@ static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, /* make two passes through the points so we don't need to realloc */ for (pass=0; pass < 2; ++pass) { - int x=0,y=0; + float x=0,y=0; if (pass == 1) { points = (stbtt__point *) STBTT_malloc(num_points * sizeof(points[0]), userdata); if (points == NULL) goto error; @@ -15178,10 +14965,9 @@ error: return NULL; } -STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, int flatness_in_pixels, stbtt_vertex *vertices, int num_verts, int scale_x, int scale_y, int shift_x, int shift_y, int x_off, int y_off, int invert, void *userdata) +STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, float flatness_in_pixels, stbtt_vertex *vertices, int num_verts, float scale_x, float scale_y, float shift_x, float shift_y, int x_off, int y_off, int invert, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_Rasterize / STBTT_DEF"); - int scale = scale_x > scale_y ? scale_y : scale_x; + float scale = scale_x > scale_y ? scale_y : scale_x; int winding_count = 0; int *winding_lengths = NULL; stbtt__point *windings = stbtt_FlattenCurves(vertices, num_verts, flatness_in_pixels / scale, &winding_lengths, &winding_count, userdata); @@ -15194,13 +14980,11 @@ STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, int flatness_in_pixels, st STBTT_DEF void stbtt_FreeBitmap(unsigned char *bitmap, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FreeBitmap / STBTT_DEF"); STBTT_free(bitmap, userdata); } -STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, int scale_x, int scale_y, int shift_x, int shift_y, int glyph, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); int ix0,iy0,ix1,iy1; stbtt__bitmap gbm; stbtt_vertex *vertices; @@ -15239,15 +15023,13 @@ STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info return gbm.pixels; } -STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, int scale_x, int scale_y, int glyph, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y, 0.0f, 0.0f, glyph, width, height, xoff, yoff); } -STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int glyph) +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeGlyphBitmapSubpixel / STBTT_DEF"); int ix0,iy0; stbtt_vertex *vertices; int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices); @@ -15265,39 +15047,33 @@ STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigne STBTT_free(vertices, info->userdata); } -STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int glyph) +STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeGlyphBitmap / STBTT_DEF"); stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, glyph); } -STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, int scale_x, int scale_y, int shift_x, int shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y,shift_x,shift_y, stbtt_FindGlyphIndex(info,codepoint), width,height,xoff,yoff); } -STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int oversample_x, int oversample_y, int *sub_x, int *sub_y, int codepoint) +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeCodepointBitmapSubpixelPrefilter / STBTT_DEF"); stbtt_MakeGlyphBitmapSubpixelPrefilter(info, output, out_w, out_h, out_stride, scale_x, scale_y, shift_x, shift_y, oversample_x, oversample_y, sub_x, sub_y, stbtt_FindGlyphIndex(info,codepoint)); } -STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int codepoint) +STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeCodepointBitmapSubpixel / STBTT_DEF"); stbtt_MakeGlyphBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, shift_x, shift_y, stbtt_FindGlyphIndex(info,codepoint)); } -STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, int scale_x, int scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); return stbtt_GetCodepointBitmapSubpixel(info, scale_x, scale_y, 0.0f,0.0f, codepoint, width,height,xoff,yoff); } -STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int codepoint) +STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeCodepointBitmap / STBTT_DEF"); stbtt_MakeCodepointBitmapSubpixel(info, output, out_w, out_h, out_stride, scale_x, scale_y, 0.0f,0.0f, codepoint); } @@ -15308,13 +15084,12 @@ STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned ch /* This is SUPER-CRAPPY packing to keep source code small */ static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, /* font location (use offset=0 for plain .ttf) */ - int pixel_height, /* height of font in pixels */ + float pixel_height, /* height of font in pixels */ unsigned char *pixels, int pw, int ph, /* bitmap to be filled in */ int first_char, int num_chars, /* characters to bake */ stbtt_bakedchar *chardata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - chardata) / stbtt_bakedchar"); - int scale; + float scale; int x,y,bottom_y, i; stbtt_fontinfo f; f.userdata = NULL; @@ -15345,8 +15120,8 @@ static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, /* f chardata[i].x1 = (stbtt_int16) (x + gw); chardata[i].y1 = (stbtt_int16) (y + gh); chardata[i].xadvance = scale * advance; - chardata[i].xoff = (int) x0; - chardata[i].yoff = (int) y0; + chardata[i].xoff = (float) x0; + chardata[i].yoff = (float) y0; x = x + gw + 1; if (y+gh+1 > bottom_y) bottom_y = y+gh+1; @@ -15354,11 +15129,10 @@ static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, /* f return bottom_y; } -STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, int char_index, int *xpos, int *ypos, stbtt_aligned_quad *q, int opengl_fillrule) +STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetBakedQuad / STBTT_DEF"); - int d3d_bias = opengl_fillrule ? 0 : -0.5f; - int ipw = 1.0f / pw, iph = 1.0f / ph; + float d3d_bias = opengl_fillrule ? 0 : -0.5f; + float ipw = 1.0f / pw, iph = 1.0f / ph; const stbtt_bakedchar *b = chardata + char_index; int round_x = STBTT_ifloor((*xpos + b->xoff) + 0.5f); int round_y = STBTT_ifloor((*ypos + b->yoff) + 0.5f); @@ -15415,7 +15189,6 @@ struct stbrp_rect static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_node *nodes, int num_nodes) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_init_target / static"); con->width = pw; con->height = ph; con->x = 0; @@ -15427,7 +15200,6 @@ static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_node *no static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int num_rects) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbrp_pack_rects / static"); int i; for (i=0; i < num_rects; ++i) { if (con->x + rects[i].w > con->width) { @@ -15457,7 +15229,6 @@ static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int num_rect STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int pw, int ph, int stride_in_bytes, int padding, void *alloc_context) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackBegin / STBTT_DEF"); stbrp_context *context = (stbrp_context *) STBTT_malloc(sizeof(*context) ,alloc_context); int num_nodes = pw - padding; stbrp_node *nodes = (stbrp_node *) STBTT_malloc(sizeof(*nodes ) * num_nodes,alloc_context); @@ -15490,14 +15261,12 @@ STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, in STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackEnd / STBTT_DEF"); STBTT_free(spc->nodes , spc->user_allocator_context); STBTT_free(spc->pack_info, spc->user_allocator_context); } STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h_oversample, unsigned int v_oversample) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackSetOversampling / STBTT_DEF"); STBTT_assert(h_oversample <= STBTT_MAX_OVERSAMPLE); STBTT_assert(v_oversample <= STBTT_MAX_OVERSAMPLE); if (h_oversample <= STBTT_MAX_OVERSAMPLE) @@ -15508,7 +15277,6 @@ STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *spc, int skip) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackSetSkipMissingCodepoints / STBTT_DEF"); spc->skip_missing = skip; } @@ -15516,7 +15284,6 @@ STBTT_DEF void stbtt_PackSetSkipMissingCodepoints(stbtt_pack_context *spc, int s static void stbtt__h_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__h_prefilter / static"); unsigned char buffer[STBTT_MAX_OVERSAMPLE]; int safe_w = w - kernel_width; int j; @@ -15579,7 +15346,6 @@ static void stbtt__h_prefilter(unsigned char *pixels, int w, int h, int stride_i static void stbtt__v_prefilter(unsigned char *pixels, int w, int h, int stride_in_bytes, unsigned int kernel_width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__v_prefilter / static"); unsigned char buffer[STBTT_MAX_OVERSAMPLE]; int safe_h = h - kernel_width; int j; @@ -15640,9 +15406,8 @@ static void stbtt__v_prefilter(unsigned char *pixels, int w, int h, int stride_i } } -static int stbtt__oversample_shift(int oversample) +static float stbtt__oversample_shift(int oversample) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__oversample_shift / static"); if (!oversample) return 0.0f; @@ -15650,20 +15415,19 @@ static int stbtt__oversample_shift(int oversample) /* which shifts phase by (oversample - 1)/2 pixels in */ /* oversampled space. We want to shift in the opposite */ /* direction to counter this. */ - return (int)-(oversample - 1) / (2.0f * (int)oversample); + return (float)-(oversample - 1) / (2.0f * (float)oversample); } /* rects array must be big enough to accommodate all characters in the given ranges */ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackFontRangesGatherRects / STBTT_DEF"); int i,j,k; int missing_glyph_added = 0; k=0; for (i=0; i < num_ranges; ++i) { - int fh = ranges[i].font_size; - int scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); + float fh = ranges[i].font_size; + float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); ranges[i].h_oversample = (unsigned char) spc->h_oversample; ranges[i].v_oversample = (unsigned char) spc->v_oversample; for (j=0; j < ranges[i].num_chars; ++j) { @@ -15690,9 +15454,8 @@ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stb return k; } -STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, int scale_x, int scale_y, int shift_x, int shift_y, int prefilter_x, int prefilter_y, int *sub_x, int *sub_y, int glyph) +STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int prefilter_x, int prefilter_y, float *sub_x, float *sub_y, int glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_MakeGlyphBitmapSubpixelPrefilter / STBTT_DEF"); stbtt_MakeGlyphBitmapSubpixel(info, output, out_w - (prefilter_x - 1), @@ -15717,7 +15480,6 @@ STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info /* rects array must be big enough to accommodate all characters in the given ranges */ STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackFontRangesRenderIntoRects / STBTT_DEF"); int i,j,k, missing_glyph = -1, return_value = 1; /* save current values */ @@ -15726,9 +15488,9 @@ STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const k = 0; for (i=0; i < num_ranges; ++i) { - int fh = ranges[i].font_size; - int scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); - int recip_h,recip_v,sub_x,sub_y; + float fh = ranges[i].font_size; + float scale = fh > 0 ? stbtt_ScaleForPixelHeight(info, fh) : stbtt_ScaleForMappingEmToPixels(info, -fh); + float recip_h,recip_v,sub_x,sub_y; spc->h_oversample = ranges[i].h_oversample; spc->v_oversample = ranges[i].v_oversample; recip_h = 1.0f / spc->h_oversample; @@ -15779,8 +15541,8 @@ STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const bc->x1 = (stbtt_int16) (r->x + r->w); bc->y1 = (stbtt_int16) (r->y + r->h); bc->xadvance = scale * advance; - bc->xoff = (int) x0 * recip_h + sub_x; - bc->yoff = (int) y0 * recip_v + sub_y; + bc->xoff = (float) x0 * recip_h + sub_x; + bc->yoff = (float) y0 * recip_v + sub_y; bc->xoff2 = (x0 + r->w) * recip_h + sub_x; bc->yoff2 = (y0 + r->h) * recip_v + sub_y; @@ -15807,13 +15569,11 @@ STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackFontRangesPackRects / STBTT_DEF"); stbrp_pack_rects((stbrp_context *) spc->pack_info, rects, num_rects); } STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_PackFontRanges / STBTT_DEF"); stbtt_fontinfo info; int i,j,n, return_value = 1; /* stbrp_context *context = (stbrp_context *) spc->pack_info; */ @@ -15848,10 +15608,9 @@ STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char return return_value; } -STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, int font_size, +STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size, int first_unicode_codepoint_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - first_unicode_codepoint_in_range, / int"); stbtt_pack_range range; range.first_unicode_codepoint_in_range = first_unicode_codepoint_in_range; range.array_of_unicode_codepoints = NULL; @@ -15861,29 +15620,27 @@ STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char * return stbtt_PackFontRanges(spc, fontdata, font_index, &range, 1); } -STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, int size, int *ascent, int *descent, int *lineGap) +STBTT_DEF void stbtt_GetScaledFontVMetrics(const unsigned char *fontdata, int index, float size, float *ascent, float *descent, float *lineGap) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetScaledFontVMetrics / STBTT_DEF"); int i_ascent, i_descent, i_lineGap; - int scale; + float scale; stbtt_fontinfo info; stbtt_InitFont(&info, fontdata, stbtt_GetFontOffsetForIndex(fontdata, index)); scale = size > 0 ? stbtt_ScaleForPixelHeight(&info, size) : stbtt_ScaleForMappingEmToPixels(&info, -size); stbtt_GetFontVMetrics(&info, &i_ascent, &i_descent, &i_lineGap); - *ascent = (int) i_ascent * scale; - *descent = (int) i_descent * scale; - *lineGap = (int) i_lineGap * scale; + *ascent = (float) i_ascent * scale; + *descent = (float) i_descent * scale; + *lineGap = (float) i_lineGap * scale; } -STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, int char_index, int *xpos, int *ypos, stbtt_aligned_quad *q, int align_to_integer) +STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int align_to_integer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetPackedQuad / STBTT_DEF"); - int ipw = 1.0f / pw, iph = 1.0f / ph; + float ipw = 1.0f / pw, iph = 1.0f / ph; const stbtt_packedchar *b = chardata + char_index; if (align_to_integer) { - int x = (int) STBTT_ifloor((*xpos + b->xoff) + 0.5f); - int y = (int) STBTT_ifloor((*ypos + b->yoff) + 0.5f); + float x = (float) STBTT_ifloor((*xpos + b->xoff) + 0.5f); + float y = (float) STBTT_ifloor((*ypos + b->yoff) + 0.5f); q->x0 = x; q->y0 = y; q->x1 = x + b->xoff2 - b->xoff; @@ -15911,26 +15668,25 @@ STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int #define STBTT_min(a,b) ((a) < (b) ? (a) : (b)) #define STBTT_max(a,b) ((a) < (b) ? (b) : (a)) -static int stbtt__ray_intersect_bezier(int orig[2], int ray[2], int q0[2], int q1[2], int q2[2], int hits[2][2]) +static int stbtt__ray_intersect_bezier(float orig[2], float ray[2], float q0[2], float q1[2], float q2[2], float hits[2][2]) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__ray_intersect_bezier / static"); - int q0perp = q0[1]*ray[0] - q0[0]*ray[1]; - int q1perp = q1[1]*ray[0] - q1[0]*ray[1]; - int q2perp = q2[1]*ray[0] - q2[0]*ray[1]; - int roperp = orig[1]*ray[0] - orig[0]*ray[1]; + float q0perp = q0[1]*ray[0] - q0[0]*ray[1]; + float q1perp = q1[1]*ray[0] - q1[0]*ray[1]; + float q2perp = q2[1]*ray[0] - q2[0]*ray[1]; + float roperp = orig[1]*ray[0] - orig[0]*ray[1]; - int a = q0perp - 2*q1perp + q2perp; - int b = q1perp - q0perp; - int c = q0perp - roperp; + float a = q0perp - 2*q1perp + q2perp; + float b = q1perp - q0perp; + float c = q0perp - roperp; - int s0 = 0., s1 = 0.; + float s0 = 0., s1 = 0.; int num_s = 0; if (a != 0.0) { - int discr = b*b - a*c; + float discr = b*b - a*c; if (discr > 0.0) { - int rcpna = -1 / a; - int d = (int) STBTT_sqrt(discr); + float rcpna = -1 / a; + float d = (float) STBTT_sqrt(discr); s0 = (b+d) * rcpna; s1 = (b-d) * rcpna; if (s0 >= 0.0 && s0 <= 1.0) @@ -15951,17 +15707,17 @@ static int stbtt__ray_intersect_bezier(int orig[2], int ray[2], int q0[2], int q if (num_s == 0) return 0; else { - int rcp_len2 = 1 / (ray[0]*ray[0] + ray[1]*ray[1]); - int rayn_x = ray[0] * rcp_len2, rayn_y = ray[1] * rcp_len2; + float rcp_len2 = 1 / (ray[0]*ray[0] + ray[1]*ray[1]); + float rayn_x = ray[0] * rcp_len2, rayn_y = ray[1] * rcp_len2; - int q0d = q0[0]*rayn_x + q0[1]*rayn_y; - int q1d = q1[0]*rayn_x + q1[1]*rayn_y; - int q2d = q2[0]*rayn_x + q2[1]*rayn_y; - int rod = orig[0]*rayn_x + orig[1]*rayn_y; + float q0d = q0[0]*rayn_x + q0[1]*rayn_y; + float q1d = q1[0]*rayn_x + q1[1]*rayn_y; + float q2d = q2[0]*rayn_x + q2[1]*rayn_y; + float rod = orig[0]*rayn_x + orig[1]*rayn_y; - int q10d = q1d - q0d; - int q20d = q2d - q0d; - int q0rd = q0d - rod; + float q10d = q1d - q0d; + float q20d = q2d - q0d; + float q0rd = q0d - rod; hits[0][0] = q0rd + s0*(2.0f - 2.0f*s0)*q10d + s0*s0*q20d; hits[0][1] = a*s0+b; @@ -15976,25 +15732,23 @@ static int stbtt__ray_intersect_bezier(int orig[2], int ray[2], int q0[2], int q } } -static int equal(int *a, int *b) +static int equal(float *a, float *b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - equal / static"); return (a[0] == b[0] && a[1] == b[1]); } -static int stbtt__compute_crossings_x(int x, int y, int nverts, stbtt_vertex *verts) +static int stbtt__compute_crossings_x(float x, float y, int nverts, stbtt_vertex *verts) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__compute_crossings_x / static"); int i; - int orig[2], ray[2] = { 1, 0 }; - int y_frac; + float orig[2], ray[2] = { 1, 0 }; + float y_frac; int winding = 0; orig[0] = x; orig[1] = y; /* make sure y never passes through a vertex of the shape */ - y_frac = (int) STBTT_fmod(y, 1.0f); + y_frac = (float) STBTT_fmod(y, 1.0f); if (y_frac < 0.01f) y += 0.01f; else if (y_frac > 0.99f) @@ -16007,7 +15761,7 @@ static int stbtt__compute_crossings_x(int x, int y, int nverts, stbtt_vertex *ve int x0 = (int) verts[i-1].x, y0 = (int) verts[i-1].y; int x1 = (int) verts[i ].x, y1 = (int) verts[i ].y; if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { - int x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; + float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; if (x_inter < x) winding += (y0 < y1) ? 1 : -1; } @@ -16019,21 +15773,21 @@ static int stbtt__compute_crossings_x(int x, int y, int nverts, stbtt_vertex *ve int ax = STBTT_min(x0,STBTT_min(x1,x2)), ay = STBTT_min(y0,STBTT_min(y1,y2)); int by = STBTT_max(y0,STBTT_max(y1,y2)); if (y > ay && y < by && x > ax) { - int q0[2],q1[2],q2[2]; - int hits[2][2]; - q0[0] = (int)x0; - q0[1] = (int)y0; - q1[0] = (int)x1; - q1[1] = (int)y1; - q2[0] = (int)x2; - q2[1] = (int)y2; + float q0[2],q1[2],q2[2]; + float hits[2][2]; + q0[0] = (float)x0; + q0[1] = (float)y0; + q1[0] = (float)x1; + q1[1] = (float)y1; + q2[0] = (float)x2; + q2[1] = (float)y2; if (equal(q0,q1) || equal(q1,q2)) { x0 = (int)verts[i-1].x; y0 = (int)verts[i-1].y; x1 = (int)verts[i ].x; y1 = (int)verts[i ].y; if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) { - int x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; + float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0; if (x_inter < x) winding += (y0 < y1) ? 1 : -1; } @@ -16052,37 +15806,35 @@ static int stbtt__compute_crossings_x(int x, int y, int nverts, stbtt_vertex *ve return winding; } -static int stbtt__cuberoot( int x ) +static float stbtt__cuberoot( float x ) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__cuberoot / static"); if (x<0) - return -(int) STBTT_pow(-x,1.0f/3.0f); + return -(float) STBTT_pow(-x,1.0f/3.0f); else - return (int) STBTT_pow( x,1.0f/3.0f); + return (float) STBTT_pow( x,1.0f/3.0f); } /* x^3 + c*x^2 + b*x + a = 0 */ -static int stbtt__solve_cubic(int a, int b, int c, int* r) +static int stbtt__solve_cubic(float a, float b, float c, float* r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__solve_cubic / static"); - int s = -a / 3; - int p = b - a*a / 3; - int q = a * (2*a*a - 9*b) / 27 + c; - int p3 = p*p*p; - int d = q*q + 4*p3 / 27; + float s = -a / 3; + float p = b - a*a / 3; + float q = a * (2*a*a - 9*b) / 27 + c; + float p3 = p*p*p; + float d = q*q + 4*p3 / 27; if (d >= 0) { - int z = (int) STBTT_sqrt(d); - int u = (-q + z) / 2; - int v = (-q - z) / 2; + float z = (float) STBTT_sqrt(d); + float u = (-q + z) / 2; + float v = (-q - z) / 2; u = stbtt__cuberoot(u); v = stbtt__cuberoot(v); r[0] = s + u + v; return 1; } else { - int u = (int) STBTT_sqrt(-p/3); - int v = (int) STBTT_acos(-STBTT_sqrt(-27/p3) * q / 2) / 3; /* p3 must be negative, since d is negative */ - int m = (int) STBTT_cos(v); - int n = (int) STBTT_cos(v-3.141592/2)*1.732050808f; + float u = (float) STBTT_sqrt(-p/3); + float v = (float) STBTT_acos(-STBTT_sqrt(-27/p3) * q / 2) / 3; /* p3 must be negative, since d is negative */ + float m = (float) STBTT_cos(v); + float n = (float) STBTT_cos(v-3.141592/2)*1.732050808f; r[0] = s + u * 2 * m; r[1] = s - u * (m + n); r[2] = s - u * (m - n); @@ -16094,10 +15846,9 @@ static int stbtt__solve_cubic(int a, int b, int c, int* r) } } -STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scale, int glyph, int padding, unsigned char onedge_value, int pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); - int scale_x = scale, scale_y = scale; + float scale_x = scale, scale_y = scale; int ix0,iy0,ix1,iy1; int w,h; unsigned char *data; @@ -16128,24 +15879,24 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal { int x,y,i,j; - int *precompute; + float *precompute; stbtt_vertex *verts; int num_verts = stbtt_GetGlyphShape(info, glyph, &verts); data = (unsigned char *) STBTT_malloc(w * h, info->userdata); - precompute = (int *) STBTT_malloc(num_verts * sizeof(int), info->userdata); + precompute = (float *) STBTT_malloc(num_verts * sizeof(float), info->userdata); for (i=0,j=num_verts-1; i < num_verts; j=i++) { if (verts[i].type == STBTT_vline) { - int x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; - int x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y; - int dist = (int) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)); + float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; + float x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y; + float dist = (float) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)); precompute[i] = (dist == 0) ? 0.0f : 1.0f / dist; } else if (verts[i].type == STBTT_vcurve) { - int x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y; - int x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y; - int x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y; - int bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; - int len2 = bx*bx + by*by; + float x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y; + float x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y; + float x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y; + float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; + float len2 = bx*bx + by*by; if (len2 != 0.0f) precompute[i] = 1.0f / (bx*bx + by*by); else @@ -16156,81 +15907,81 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal for (y=iy0; y < iy1; ++y) { for (x=ix0; x < ix1; ++x) { - int val; - int min_dist = 999999.0f; - int sx = (int) x + 0.5f; - int sy = (int) y + 0.5f; - int x_gspace = (sx / scale_x); - int y_gspace = (sy / scale_y); + float val; + float min_dist = 999999.0f; + float sx = (float) x + 0.5f; + float sy = (float) y + 0.5f; + float x_gspace = (sx / scale_x); + float y_gspace = (sy / scale_y); int winding = stbtt__compute_crossings_x(x_gspace, y_gspace, num_verts, verts); /* @OPTIMIZE: this could just be a rasterization, but needs to be line vs. non-tesselated curves so a new path */ for (i=0; i < num_verts; ++i) { - int x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; + float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y; /* check against every point here rather than inside line/curve primitives -- @TODO: wrong if multiple 'moves' in a row produce a garbage point, and given culling, probably more efficient to do within line/curve */ - int dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy); + float dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy); if (dist2 < min_dist*min_dist) - min_dist = (int) STBTT_sqrt(dist2); + min_dist = (float) STBTT_sqrt(dist2); if (verts[i].type == STBTT_vline) { - int x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y; + float x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y; /* coarse culling against bbox */ /* if (sx > STBTT_min(x0,x1)-min_dist && sx < STBTT_max(x0,x1)+min_dist && */ /* sy > STBTT_min(y0,y1)-min_dist && sy < STBTT_max(y0,y1)+min_dist) */ - int dist = (int) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i]; + float dist = (float) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i]; STBTT_assert(i != 0); if (dist < min_dist) { /* check position along line */ /* x' = x0 + t*(x1-x0), y' = y0 + t*(y1-y0) */ /* minimize (x'-sx)*(x'-sx)+(y'-sy)*(y'-sy) */ - int dx = x1-x0, dy = y1-y0; - int px = x0-sx, py = y0-sy; + float dx = x1-x0, dy = y1-y0; + float px = x0-sx, py = y0-sy; /* minimize (px+t*dx)^2 + (py+t*dy)^2 = px*px + 2*px*dx*t + t^2*dx*dx + py*py + 2*py*dy*t + t^2*dy*dy */ /* derivative: 2*px*dx + 2*py*dy + (2*dx*dx+2*dy*dy)*t, set to 0 and solve */ - int t = -(px*dx + py*dy) / (dx*dx + dy*dy); + float t = -(px*dx + py*dy) / (dx*dx + dy*dy); if (t >= 0.0f && t <= 1.0f) min_dist = dist; } } else if (verts[i].type == STBTT_vcurve) { - int x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y; - int x1 = verts[i ].cx*scale_x, y1 = verts[i ].cy*scale_y; - int box_x0 = STBTT_min(STBTT_min(x0,x1),x2); - int box_y0 = STBTT_min(STBTT_min(y0,y1),y2); - int box_x1 = STBTT_max(STBTT_max(x0,x1),x2); - int box_y1 = STBTT_max(STBTT_max(y0,y1),y2); + float x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y; + float x1 = verts[i ].cx*scale_x, y1 = verts[i ].cy*scale_y; + float box_x0 = STBTT_min(STBTT_min(x0,x1),x2); + float box_y0 = STBTT_min(STBTT_min(y0,y1),y2); + float box_x1 = STBTT_max(STBTT_max(x0,x1),x2); + float box_y1 = STBTT_max(STBTT_max(y0,y1),y2); /* coarse culling against bbox to avoid computing cubic unnecessarily */ if (sx > box_x0-min_dist && sx < box_x1+min_dist && sy > box_y0-min_dist && sy < box_y1+min_dist) { int num=0; - int ax = x1-x0, ay = y1-y0; - int bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; - int mx = x0 - sx, my = y0 - sy; - int res[3],px,py,t,it; - int a_inv = precompute[i]; + float ax = x1-x0, ay = y1-y0; + float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2; + float mx = x0 - sx, my = y0 - sy; + float res[3],px,py,t,it; + float a_inv = precompute[i]; if (a_inv == 0.0) { /* if a_inv is 0, it's 2nd degree so use quadratic formula */ - int a = 3*(ax*bx + ay*by); - int b = 2*(ax*ax + ay*ay) + (mx*bx+my*by); - int c = mx*ax+my*ay; + float a = 3*(ax*bx + ay*by); + float b = 2*(ax*ax + ay*ay) + (mx*bx+my*by); + float c = mx*ax+my*ay; if (a == 0.0) { /* if a is 0, it's linear */ if (b != 0.0) { res[num++] = -c/b; } } else { - int discriminant = b*b - 4*a*c; + float discriminant = b*b - 4*a*c; if (discriminant < 0) num = 0; else { - int root = (int) STBTT_sqrt(discriminant); + float root = (float) STBTT_sqrt(discriminant); res[0] = (-b - root)/(2*a); res[1] = (-b + root)/(2*a); num = 2; /* don't bother distinguishing 1-solution case, as code below will still work */ } } } else { - int b = 3*(ax*bx + ay*by) * a_inv; /* could precompute this as it doesn't depend on sample point */ - int c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv; - int d = (mx*ax+my*ay) * a_inv; + float b = 3*(ax*bx + ay*by) * a_inv; /* could precompute this as it doesn't depend on sample point */ + float c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv; + float d = (mx*ax+my*ay) * a_inv; num = stbtt__solve_cubic(b, c, d, res); } if (num >= 1 && res[0] >= 0.0f && res[0] <= 1.0f) { @@ -16239,7 +15990,7 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) - min_dist = (int) STBTT_sqrt(dist2); + min_dist = (float) STBTT_sqrt(dist2); } if (num >= 2 && res[1] >= 0.0f && res[1] <= 1.0f) { t = res[1], it = 1.0f - t; @@ -16247,7 +15998,7 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) - min_dist = (int) STBTT_sqrt(dist2); + min_dist = (float) STBTT_sqrt(dist2); } if (num >= 3 && res[2] >= 0.0f && res[2] <= 1.0f) { t = res[2], it = 1.0f - t; @@ -16255,7 +16006,7 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal py = it*it*y0 + 2*t*it*y1 + t*t*y2; dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy); if (dist2 < min_dist * min_dist) - min_dist = (int) STBTT_sqrt(dist2); + min_dist = (float) STBTT_sqrt(dist2); } } } @@ -16276,15 +16027,13 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, int scal return data; } -STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, int scale, int codepoint, int padding, unsigned char onedge_value, int pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) +STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); return stbtt_GetGlyphSDF(info, scale, stbtt_FindGlyphIndex(info, codepoint), padding, onedge_value, pixel_dist_scale, width, height, xoff, yoff); } STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FreeSDF / STBTT_DEF"); STBTT_free(bitmap, userdata); } @@ -16296,7 +16045,6 @@ STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata) /* check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string */ static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__CompareUTF8toUTF16_bigendian_prefix / static"); stbtt_int32 i=0; /* convert utf16 to utf8 and compare the results while converting */ @@ -16336,7 +16084,6 @@ static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, s static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char *s2, int len2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_CompareUTF8toUTF16_bigendian_internal / static"); return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2); } @@ -16344,7 +16091,6 @@ static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char /* will be BIG-ENDIAN... use stbtt_CompareUTF8toUTF16_bigendian() to compare */ STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *length, int platformID, int encodingID, int languageID, int nameID) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / STBTT_DEF"); stbtt_int32 i,count,stringOffset; stbtt_uint8 *fc = font->data; stbtt_uint32 offset = font->fontstart; @@ -16366,7 +16112,6 @@ STBTT_DEF const char *stbtt_GetFontNameString(const stbtt_fontinfo *font, int *l static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name, stbtt_int32 nlen, stbtt_int32 target_id, stbtt_int32 next_id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__matchpair / static"); stbtt_int32 i; stbtt_int32 count = ttUSHORT(fc+nm+2); stbtt_int32 stringOffset = nm + ttUSHORT(fc+nm+4); @@ -16414,7 +16159,6 @@ static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name, static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *name, stbtt_int32 flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt__matches / static"); stbtt_int32 nlen = (stbtt_int32) STBTT_strlen((char *) name); stbtt_uint32 nm,hd; if (!stbtt__isfont(fc+offset)) return 0; @@ -16444,7 +16188,6 @@ static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *nam static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char *name_utf8, stbtt_int32 flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FindMatchingFont_internal / static"); stbtt_int32 i; for (i=0;;++i) { stbtt_int32 off = stbtt_GetFontOffsetForIndex(font_collection, i); @@ -16460,40 +16203,34 @@ static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char #endif STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, - int pixel_height, unsigned char *pixels, int pw, int ph, + float pixel_height, unsigned char *pixels, int pw, int ph, int first_char, int num_chars, stbtt_bakedchar *chardata) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - first_char, / int"); return stbtt_BakeFontBitmap_internal((unsigned char *) data, offset, pixel_height, pixels, pw, ph, first_char, num_chars, chardata); } STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetFontOffsetForIndex / STBTT_DEF"); return stbtt_GetFontOffsetForIndex_internal((unsigned char *) data, index); } STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_GetNumberOfFonts / STBTT_DEF"); return stbtt_GetNumberOfFonts_internal((unsigned char *) data); } STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_InitFont / STBTT_DEF"); return stbtt_InitFont_internal(info, (unsigned char *) data, offset); } STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_FindMatchingFont / STBTT_DEF"); return stbtt_FindMatchingFont_internal((unsigned char *) fontdata, (char *) name, flags); } STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - stbtt_CompareUTF8toUTF16_bigendian / STBTT_DEF"); return stbtt_CompareUTF8toUTF16_bigendian_internal((char *) s1, len1, (char *) s2, len2); } @@ -16655,9 +16392,8 @@ NK_GLOBAL const nk_size nk_baker_align = NK_ALIGNOF(struct nk_font_baker); NK_INTERN int nk_range_count(const nk_rune *range) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rune / nk_range_count"); const nk_rune *iter = range; - // NK_ASSERT(range); + NK_ASSERT(range); if (!range) return 0; while (*(iter++) != 0); return (iter == range) ? 0 : (int)((iter - range)/2); @@ -16665,14 +16401,13 @@ nk_range_count(const nk_rune *range) NK_INTERN int nk_range_glyph_count(const nk_rune *range, int count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rune / nk_range_glyph_count"); int i = 0; int total_glyphs = 0; for (i = 0; i < count; ++i) { int diff; nk_rune f = range[(i*2)+0]; nk_rune t = range[(i*2)+1]; - // NK_ASSERT(t >= f); + NK_ASSERT(t >= f); diff = (int)((t - f) + 1); total_glyphs += diff; } @@ -16681,14 +16416,12 @@ nk_range_glyph_count(const nk_rune *range, int count) NK_API const nk_rune* nk_font_default_glyph_ranges(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_font_default_glyph_ranges"); NK_STORAGE const nk_rune ranges[] = {0x0020, 0x00FF, 0}; return ranges; } NK_API const nk_rune* nk_font_chinese_glyph_ranges(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_font_chinese_glyph_ranges"); NK_STORAGE const nk_rune ranges[] = { 0x0020, 0x00FF, 0x3000, 0x30FF, @@ -16702,7 +16435,6 @@ nk_font_chinese_glyph_ranges(void) NK_API const nk_rune* nk_font_cyrillic_glyph_ranges(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_font_cyrillic_glyph_ranges"); NK_STORAGE const nk_rune ranges[] = { 0x0020, 0x00FF, 0x0400, 0x052F, @@ -16715,7 +16447,6 @@ nk_font_cyrillic_glyph_ranges(void) NK_API const nk_rune* nk_font_korean_glyph_ranges(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_font_korean_glyph_ranges"); NK_STORAGE const nk_rune ranges[] = { 0x0020, 0x00FF, 0x3131, 0x3163, @@ -16728,13 +16459,12 @@ NK_INTERN void nk_font_baker_memory(nk_size *temp, int *glyph_count, struct nk_font_config *config_list, int count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - config_list / struct"); int range_count = 0; int total_range_count = 0; struct nk_font_config *iter, *i; - // NK_ASSERT(config_list); - // NK_ASSERT(glyph_count); + NK_ASSERT(config_list); + NK_ASSERT(glyph_count); if (!config_list) { *temp = 0; *glyph_count = 0; @@ -16760,7 +16490,6 @@ nk_font_baker_memory(nk_size *temp, int *glyph_count, NK_INTERN struct nk_font_baker* nk_font_baker(void *memory, int glyph_count, int count, struct nk_allocator *alloc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - memory / nk_font_baker"); struct nk_font_baker *baker; if (!memory) return 0; /* setup baker inside a memory block */ @@ -16778,7 +16507,6 @@ nk_font_bake_pack(struct nk_font_baker *baker, const struct nk_font_config *config_list, int count, struct nk_allocator *alloc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - alloc / struct"); NK_STORAGE const nk_size max_height = 1024 * 32; const struct nk_font_config *config_iter, *it; int total_glyph_count = 0; @@ -16786,12 +16514,12 @@ nk_font_bake_pack(struct nk_font_baker *baker, int range_count = 0; int i = 0; - // NK_ASSERT(image_memory); - // NK_ASSERT(width); - // NK_ASSERT(height); - // NK_ASSERT(config_list); - // NK_ASSERT(count); - // NK_ASSERT(alloc); + NK_ASSERT(image_memory); + NK_ASSERT(width); + NK_ASSERT(height); + NK_ASSERT(config_list); + NK_ASSERT(count); + NK_ASSERT(alloc); if (!image_memory || !width || !height || !config_list || !count) return nk_false; for (config_iter = config_list; config_iter; config_iter = config_iter->next) { @@ -16803,11 +16531,13 @@ nk_font_bake_pack(struct nk_font_baker *baker, } /* setup font baker from temporary memory */ for (config_iter = config_list; config_iter; config_iter = config_iter->next) { - struct stbtt_fontinfo *font_info = &baker->build[i++].info; it = config_iter; - font_info->userdata = alloc; - do {if (!stbtt_InitFont(font_info, (const unsigned char*)it->ttf_blob, 0)) - return nk_false; + do { + struct stbtt_fontinfo *font_info = &baker->build[i++].info; + font_info->userdata = alloc; + + if (!stbtt_InitFont(font_info, (const unsigned char*)it->ttf_blob, 0)) + return nk_false; } while ((it = it->n) != config_iter); } *height = 0; @@ -16881,9 +16611,9 @@ nk_font_bake_pack(struct nk_font_baker *baker, } } while ((it = it->n) != config_iter); } - // NK_ASSERT(rect_n == total_glyph_count); - // NK_ASSERT(char_n == total_glyph_count); - // NK_ASSERT(range_n == total_range_count); + NK_ASSERT(rect_n == total_glyph_count); + NK_ASSERT(char_n == total_glyph_count); + NK_ASSERT(range_n == total_range_count); } *height = (int)nk_round_up_pow2((nk_uint)*height); *image_memory = (nk_size)(*width) * (nk_size)(*height); @@ -16894,19 +16624,18 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei struct nk_font_glyph *glyphs, int glyphs_count, const struct nk_font_config *config_list, int font_count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_config / const"); int input_i = 0; nk_rune glyph_n = 0; const struct nk_font_config *config_iter; const struct nk_font_config *it; - // NK_ASSERT(image_memory); - // NK_ASSERT(width); - // NK_ASSERT(height); - // NK_ASSERT(config_list); - // NK_ASSERT(baker); - // NK_ASSERT(font_count); - // NK_ASSERT(glyphs_count); + NK_ASSERT(image_memory); + NK_ASSERT(width); + NK_ASSERT(height); + NK_ASSERT(config_list); + NK_ASSERT(baker); + NK_ASSERT(font_count); + NK_ASSERT(glyphs_count); if (!image_memory || !width || !height || !config_list || !font_count || !glyphs || !glyphs_count) return; @@ -16936,7 +16665,7 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei struct nk_font_bake_data *tmp = &baker->build[input_i++]; struct nk_baked_font *dst_font = cfg->font; - int font_scale = stbtt_ScaleForPixelHeight(&tmp->info, cfg->size); + float font_scale = stbtt_ScaleForPixelHeight(&tmp->info, cfg->size); int unscaled_ascent, unscaled_descent, unscaled_line_gap; stbtt_GetFontVMetrics(&tmp->info, &unscaled_ascent, &unscaled_descent, &unscaled_line_gap); @@ -16945,8 +16674,8 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei if (!cfg->merge_mode) { dst_font->ranges = cfg->range; dst_font->height = cfg->size; - dst_font->ascent = ((int)unscaled_ascent * font_scale); - dst_font->descent = ((int)unscaled_descent * font_scale); + dst_font->ascent = ((float)unscaled_ascent * font_scale); + dst_font->descent = ((float)unscaled_descent * font_scale); dst_font->glyph_offset = glyph_n; /* Need to zero this, or it will carry over from a previous @@ -16961,7 +16690,7 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei for (char_idx = 0; char_idx < range->num_chars; char_idx++) { nk_rune codepoint = 0; - int dummy_x = 0, dummy_y = 0; + float dummy_x = 0, dummy_y = 0; stbtt_aligned_quad q; struct nk_font_glyph *glyph; @@ -16983,10 +16712,10 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei glyph->h = glyph->y1 - glyph->y0; if (cfg->coord_type == NK_COORD_PIXEL) { - glyph->u0 = q.s0 * (int)width; - glyph->v0 = q.t0 * (int)height; - glyph->u1 = q.s1 * (int)width; - glyph->v1 = q.t1 * (int)height; + glyph->u0 = q.s0 * (float)width; + glyph->v0 = q.t0 * (float)height; + glyph->u1 = q.s1 * (float)width; + glyph->v1 = q.t1 * (float)height; } else { glyph->u0 = q.s0; glyph->v0 = q.t0; @@ -16995,7 +16724,7 @@ nk_font_bake(struct nk_font_baker *baker, void *image_memory, int width, int hei } glyph->xadvance = (pc->xadvance + cfg->spacing.x); if (cfg->pixel_snap) - glyph->xadvance = (int)(int)(glyph->xadvance + 0.5f); + glyph->xadvance = (float)(int)(glyph->xadvance + 0.5f); glyph_count++; } } @@ -17009,16 +16738,15 @@ nk_font_bake_custom_data(void *img_memory, int img_width, int img_height, struct nk_recti img_dst, const char *texture_data_mask, int tex_width, int tex_height, char white, char black) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - tex_height, / int"); nk_byte *pixels; int y = 0; int x = 0; int n = 0; - // NK_ASSERT(img_memory); - // NK_ASSERT(img_width); - // NK_ASSERT(img_height); - // NK_ASSERT(texture_data_mask); + NK_ASSERT(img_memory); + NK_ASSERT(img_width); + NK_ASSERT(img_height); + NK_ASSERT(texture_data_mask); NK_UNUSED(tex_height); if (!img_memory || !img_width || !img_height || !texture_data_mask) return; @@ -17037,15 +16765,14 @@ NK_INTERN void nk_font_bake_convert(void *out_memory, int img_width, int img_height, const void *in_memory) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - in_memory / const"); int n = 0; nk_rune *dst; const nk_byte *src; - // NK_ASSERT(out_memory); - // NK_ASSERT(in_memory); - // NK_ASSERT(img_width); - // NK_ASSERT(img_height); + NK_ASSERT(out_memory); + NK_ASSERT(in_memory); + NK_ASSERT(img_width); + NK_ASSERT(img_height); if (!out_memory || !in_memory || !img_height || !img_width) return; dst = (nk_rune*)out_memory; @@ -17059,19 +16786,18 @@ nk_font_bake_convert(void *out_memory, int img_width, int img_height, * FONT * * --------------------------------------------------------------*/ -NK_INTERN int -nk_font_text_width(nk_handle handle, int height, const char *text, int len) +NK_INTERN float +nk_font_text_width(nk_handle handle, float height, const char *text, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - handle / nk_font_text_width"); nk_rune unicode; int text_len = 0; - int text_width = 0; + float text_width = 0; int glyph_len = 0; - int scale = 0; + float scale = 0; struct nk_font *font = (struct nk_font*)handle.ptr; - // NK_ASSERT(font); - // NK_ASSERT(font->glyphs); + NK_ASSERT(font); + NK_ASSERT(font->glyphs); if (!font || !text || !len) return 0; @@ -17094,20 +16820,19 @@ nk_font_text_width(nk_handle handle, int height, const char *text, int len) } #ifdef NK_INCLUDE_VERTEX_BUFFER_OUTPUT NK_INTERN void -nk_font_query_font_glyph(nk_handle handle, int height, +nk_font_query_font_glyph(nk_handle handle, float height, struct nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - glyph / struct"); - int scale; + float scale; const struct nk_font_glyph *g; struct nk_font *font; - // NK_ASSERT(glyph); + NK_ASSERT(glyph); NK_UNUSED(next_codepoint); font = (struct nk_font*)handle.ptr; - // NK_ASSERT(font); - // NK_ASSERT(font->glyphs); + NK_ASSERT(font); + NK_ASSERT(font->glyphs); if (!font || !glyph) return; @@ -17124,16 +16849,15 @@ nk_font_query_font_glyph(nk_handle handle, int height, NK_API const struct nk_font_glyph* nk_font_find_glyph(struct nk_font *font, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font / nk_font_find_glyph"); int i = 0; int count; int total_glyphs = 0; const struct nk_font_glyph *glyph = 0; const struct nk_font_config *iter = 0; - // NK_ASSERT(font); - // NK_ASSERT(font->glyphs); - // NK_ASSERT(font->info.ranges); + NK_ASSERT(font); + NK_ASSERT(font->glyphs); + NK_ASSERT(font->info.ranges); if (!font || !font->glyphs) return 0; glyph = font->fallback; @@ -17151,22 +16875,21 @@ nk_font_find_glyph(struct nk_font *font, nk_rune unicode) return glyph; } NK_INTERN void -nk_font_init(struct nk_font *font, int pixel_height, +nk_font_init(struct nk_font *font, float pixel_height, nk_rune fallback_codepoint, struct nk_font_glyph *glyphs, const struct nk_baked_font *baked_font, nk_handle atlas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_baked_font / const"); struct nk_baked_font baked; - // NK_ASSERT(font); - // NK_ASSERT(glyphs); - // NK_ASSERT(baked_font); + NK_ASSERT(font); + NK_ASSERT(glyphs); + NK_ASSERT(baked_font); if (!font || !glyphs || !baked_font) return; baked = *baked_font; font->fallback = 0; font->info = baked; - font->scale = (int)pixel_height / (int)font->info.height; + font->scale = (float)pixel_height / (float)font->info.height; font->glyphs = &glyphs[baked_font->glyph_offset]; font->texture = atlas; font->fallback_codepoint = fallback_codepoint; @@ -17338,15 +17061,13 @@ NK_GLOBAL unsigned char *nk__dout; NK_INTERN unsigned int nk_decompress_length(unsigned char *input) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_decompress_length"); return (unsigned int)((input[8] << 24) + (input[9] << 16) + (input[10] << 8) + input[11]); } NK_INTERN void nk__match(unsigned char *data, unsigned int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk__match"); /* INVERSE of memmove... write each byte before copying the next...*/ - // NK_ASSERT (nk__dout + length <= nk__barrier); + NK_ASSERT (nk__dout + length <= nk__barrier); if (nk__dout + length > nk__barrier) { nk__dout += length; return; } if (data < nk__barrier4) { nk__dout = nk__barrier+1; return; } while (length--) *nk__dout++ = *data++; @@ -17354,8 +17075,7 @@ nk__match(unsigned char *data, unsigned int length) NK_INTERN void nk__lit(unsigned char *data, unsigned int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk__lit"); - // NK_ASSERT (nk__dout + length <= nk__barrier); + NK_ASSERT (nk__dout + length <= nk__barrier); if (nk__dout + length > nk__barrier) { nk__dout += length; return; } if (data < nk__barrier2) { nk__dout = nk__barrier+1; return; } NK_MEMCPY(nk__dout, data, length); @@ -17364,7 +17084,6 @@ nk__lit(unsigned char *data, unsigned int length) NK_INTERN unsigned char* nk_decompress_token(unsigned char *i) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_decompress_token"); #define nk__in2(x) ((i[x] << 8) + i[(x)+1]) #define nk__in3(x) ((i[x] << 16) + nk__in2((x)+1)) #define nk__in4(x) ((i[x] << 24) + nk__in3((x)+1)) @@ -17386,7 +17105,6 @@ nk_decompress_token(unsigned char *i) NK_INTERN unsigned int nk_adler32(unsigned int adler32, unsigned char *buffer, unsigned int buflen) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - int / nk_adler32"); const unsigned long ADLER_MOD = 65521; unsigned long s1 = adler32 & 0xffff, s2 = adler32 >> 16; unsigned long blocklen, i; @@ -17417,7 +17135,6 @@ nk_adler32(unsigned int adler32, unsigned char *buffer, unsigned int buflen) NK_INTERN unsigned int nk_decompress(unsigned char *output, unsigned char *i, unsigned int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_decompress"); unsigned int olen; if (nk__in4(0) != 0x57bC0000) return 0; if (nk__in4(4) != 0) return 0; /* error! stream is > 4GB */ @@ -17434,17 +17151,17 @@ nk_decompress(unsigned char *output, unsigned char *i, unsigned int length) i = nk_decompress_token(i); if (i == old_i) { if (*i == 0x05 && i[1] == 0xfa) { - // NK_ASSERT(nk__dout == output + olen); + NK_ASSERT(nk__dout == output + olen); if (nk__dout != output + olen) return 0; if (nk_adler32(1, output, olen) != (unsigned int) nk__in4(2)) return 0; return olen; } else { - // NK_ASSERT(0); /* NOTREACHED */ + NK_ASSERT(0); /* NOTREACHED */ return 0; } } - // NK_ASSERT(nk__dout <= output + olen); + NK_ASSERT(nk__dout <= output + olen); if (nk__dout > output + olen) return 0; } @@ -17452,13 +17169,11 @@ nk_decompress(unsigned char *output, unsigned char *i, unsigned int length) NK_INTERN unsigned int nk_decode_85_byte(char c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / nk_decode_85_byte"); return (unsigned int)((c >= '\\') ? c-36 : c-35); } NK_INTERN void nk_decode_85(unsigned char* dst, const unsigned char* src) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char / nk_decode_85"); while (*src) { unsigned int tmp = @@ -17485,9 +17200,8 @@ nk_decode_85(unsigned char* dst, const unsigned char* src) * * --------------------------------------------------------------*/ NK_API struct nk_font_config -nk_font_config(int pixel_height) +nk_font_config(float pixel_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pixel_height / nk_font_config"); struct nk_font_config cfg; nk_zero_struct(cfg); cfg.ttf_blob = 0; @@ -17510,8 +17224,7 @@ nk_font_config(int pixel_height) NK_API void nk_font_atlas_init_default(struct nk_font_atlas *atlas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_init_default"); - // NK_ASSERT(atlas); + NK_ASSERT(atlas); if (!atlas) return; nk_zero_struct(*atlas); atlas->temporary.userdata.ptr = 0; @@ -17525,9 +17238,8 @@ nk_font_atlas_init_default(struct nk_font_atlas *atlas) NK_API void nk_font_atlas_init(struct nk_font_atlas *atlas, struct nk_allocator *alloc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_init"); - // NK_ASSERT(atlas); - // NK_ASSERT(alloc); + NK_ASSERT(atlas); + NK_ASSERT(alloc); if (!atlas || !alloc) return; nk_zero_struct(*atlas); atlas->permanent = *alloc; @@ -17537,10 +17249,9 @@ NK_API void nk_font_atlas_init_custom(struct nk_font_atlas *atlas, struct nk_allocator *permanent, struct nk_allocator *temporary) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - permanent / struct"); - // NK_ASSERT(atlas); - // NK_ASSERT(permanent); - // NK_ASSERT(temporary); + NK_ASSERT(atlas); + NK_ASSERT(permanent); + NK_ASSERT(temporary); if (!atlas || !permanent || !temporary) return; nk_zero_struct(*atlas); atlas->permanent = *permanent; @@ -17549,10 +17260,9 @@ nk_font_atlas_init_custom(struct nk_font_atlas *atlas, NK_API void nk_font_atlas_begin(struct nk_font_atlas *atlas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_begin"); - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc && atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc && atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc && atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc && atlas->permanent.free); if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free || !atlas->temporary.alloc || !atlas->temporary.free) return; if (atlas->glyphs) { @@ -17567,20 +17277,19 @@ nk_font_atlas_begin(struct nk_font_atlas *atlas) NK_API struct nk_font* nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_add"); struct nk_font *font = 0; struct nk_font_config *cfg; - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(config); - // NK_ASSERT(config->ttf_blob); - // NK_ASSERT(config->ttf_size); - // NK_ASSERT(config->size > 0.0f); + NK_ASSERT(config); + NK_ASSERT(config->ttf_blob); + NK_ASSERT(config->ttf_size); + NK_ASSERT(config->size > 0.0f); if (!atlas || !config || !config->ttf_blob || !config->ttf_size || config->size <= 0.0f|| !atlas->permanent.alloc || !atlas->permanent.free || @@ -17608,7 +17317,7 @@ nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *conf /* allocate new font */ font = (struct nk_font*) atlas->permanent.alloc(atlas->permanent.userdata,0, sizeof(struct nk_font)); - // NK_ASSERT(font); + NK_ASSERT(font); nk_zero(font, sizeof(*font)); if (!font) return 0; font->config = cfg; @@ -17628,7 +17337,7 @@ nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *conf /* extend previously added font */ struct nk_font *f = 0; struct nk_font_config *c = 0; - // NK_ASSERT(atlas->font_num); + NK_ASSERT(atlas->font_num); f = atlas->fonts; c = f->config; cfg->font = &f->info; @@ -17641,7 +17350,7 @@ nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *conf /* create own copy of .TTF font blob */ if (!config->ttf_data_owned_by_atlas) { cfg->ttf_blob = atlas->permanent.alloc(atlas->permanent.userdata,0, cfg->ttf_size); - // NK_ASSERT(cfg->ttf_blob); + NK_ASSERT(cfg->ttf_blob); if (!cfg->ttf_blob) { atlas->font_num++; return 0; @@ -17654,18 +17363,17 @@ nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *conf } NK_API struct nk_font* nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, - nk_size size, int height, const struct nk_font_config *config) + nk_size size, float height, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - size, / nk_size"); struct nk_font_config cfg; - // NK_ASSERT(memory); - // NK_ASSERT(size); + NK_ASSERT(memory); + NK_ASSERT(size); - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); if (!atlas || !atlas->temporary.alloc || !atlas->temporary.free || !memory || !size || !atlas->permanent.alloc || !atlas->permanent.free) return 0; @@ -17680,18 +17388,17 @@ nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, #ifdef NK_INCLUDE_STANDARD_IO NK_API struct nk_font* nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, - int height, const struct nk_font_config *config) + float height, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - height, / int"); nk_size size; char *memory; struct nk_font_config cfg; - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); if (!atlas || !file_path) return 0; memory = nk_file_load(file_path, &size, &atlas->permanent); @@ -17707,29 +17414,28 @@ nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, #endif NK_API struct nk_font* nk_font_atlas_add_compressed(struct nk_font_atlas *atlas, - void *compressed_data, nk_size compressed_size, int height, + void *compressed_data, nk_size compressed_size, float height, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_config / const"); unsigned int decompressed_size; void *decompressed_data; struct nk_font_config cfg; - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); - // NK_ASSERT(compressed_data); - // NK_ASSERT(compressed_size); + NK_ASSERT(compressed_data); + NK_ASSERT(compressed_size); if (!atlas || !compressed_data || !atlas->temporary.alloc || !atlas->temporary.free || !atlas->permanent.alloc || !atlas->permanent.free) return 0; decompressed_size = nk_decompress_length((unsigned char*)compressed_data); decompressed_data = atlas->permanent.alloc(atlas->permanent.userdata,0,decompressed_size); - // NK_ASSERT(decompressed_data); + NK_ASSERT(decompressed_data); if (!decompressed_data) return 0; nk_decompress((unsigned char*)decompressed_data, (unsigned char*)compressed_data, (unsigned int)compressed_size); @@ -17743,27 +17449,26 @@ nk_font_atlas_add_compressed(struct nk_font_atlas *atlas, } NK_API struct nk_font* nk_font_atlas_add_compressed_base85(struct nk_font_atlas *atlas, - const char *data_base85, int height, const struct nk_font_config *config) + const char *data_base85, float height, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - data_base85 / const"); int compressed_size; void *compressed_data; struct nk_font *font; - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); - // NK_ASSERT(data_base85); + NK_ASSERT(data_base85); if (!atlas || !data_base85 || !atlas->temporary.alloc || !atlas->temporary.free || !atlas->permanent.alloc || !atlas->permanent.free) return 0; - compressed_size = (((int)strlen(data_base85) + 4) / 5) * 4; + compressed_size = (((int)nk_strlen(data_base85) + 4) / 5) * 4; compressed_data = atlas->temporary.alloc(atlas->temporary.userdata,0, (nk_size)compressed_size); - // NK_ASSERT(compressed_data); + NK_ASSERT(compressed_data); if (!compressed_data) return 0; nk_decode_85((unsigned char*)compressed_data, (const unsigned char*)data_base85); font = nk_font_atlas_add_compressed(atlas, compressed_data, @@ -17775,14 +17480,13 @@ nk_font_atlas_add_compressed_base85(struct nk_font_atlas *atlas, #ifdef NK_INCLUDE_DEFAULT_FONT NK_API struct nk_font* nk_font_atlas_add_default(struct nk_font_atlas *atlas, - int pixel_height, const struct nk_font_config *config) + float pixel_height, const struct nk_font_config *config) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pixel_height, / int"); - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); return nk_font_atlas_add_compressed_base85(atlas, nk_proggy_clean_ttf_compressed_data_base85, pixel_height, config); } @@ -17791,21 +17495,20 @@ NK_API const void* nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, enum nk_font_atlas_format fmt) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fmt / enum"); int i = 0; void *tmp = 0; nk_size tmp_size, img_size; struct nk_font *font_iter; struct nk_font_baker *baker; - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); - // NK_ASSERT(width); - // NK_ASSERT(height); + NK_ASSERT(width); + NK_ASSERT(height); if (!atlas || !width || !height || !atlas->temporary.alloc || !atlas->temporary.free || !atlas->permanent.alloc || !atlas->permanent.free) @@ -17816,21 +17519,21 @@ nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, if (!atlas->font_num) atlas->default_font = nk_font_atlas_add_default(atlas, 13.0f, 0); #endif - // NK_ASSERT(atlas->font_num); + NK_ASSERT(atlas->font_num); if (!atlas->font_num) return 0; /* allocate temporary baker memory required for the baking process */ nk_font_baker_memory(&tmp_size, &atlas->glyph_count, atlas->config, atlas->font_num); tmp = atlas->temporary.alloc(atlas->temporary.userdata,0, tmp_size); - // NK_ASSERT(tmp); + NK_ASSERT(tmp); if (!tmp) goto failed; - memset(tmp,0,tmp_size); + NK_MEMSET(tmp,0,tmp_size); /* allocate glyph memory for all fonts */ baker = nk_font_baker(tmp, atlas->glyph_count, atlas->font_num, &atlas->temporary); atlas->glyphs = (struct nk_font_glyph*)atlas->permanent.alloc( atlas->permanent.userdata,0, sizeof(struct nk_font_glyph)*(nk_size)atlas->glyph_count); - // NK_ASSERT(atlas->glyphs); + NK_ASSERT(atlas->glyphs); if (!atlas->glyphs) goto failed; @@ -17843,7 +17546,7 @@ nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, /* allocate memory for the baked image font atlas */ atlas->pixel = atlas->temporary.alloc(atlas->temporary.userdata,0, img_size); - // NK_ASSERT(atlas->pixel); + NK_ASSERT(atlas->pixel); if (!atlas->pixel) goto failed; @@ -17857,7 +17560,7 @@ nk_font_atlas_bake(struct nk_font_atlas *atlas, int *width, int *height, /* convert alpha8 image into rgba32 image */ void *img_rgba = atlas->temporary.alloc(atlas->temporary.userdata,0, (nk_size)(*width * *height * 4)); - // NK_ASSERT(img_rgba); + NK_ASSERT(img_rgba); if (!img_rgba) goto failed; nk_font_bake_convert(img_rgba, *width, *height, atlas->pixel); atlas->temporary.free(atlas->temporary.userdata, atlas->pixel); @@ -17917,10 +17620,9 @@ NK_API void nk_font_atlas_end(struct nk_font_atlas *atlas, nk_handle texture, struct nk_draw_null_texture *null) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - null / struct"); int i = 0; struct nk_font *font_iter; - // NK_ASSERT(atlas); + NK_ASSERT(atlas); if (!atlas) { if (!null) return; null->texture = texture; @@ -17928,8 +17630,8 @@ nk_font_atlas_end(struct nk_font_atlas *atlas, nk_handle texture, } if (null) { null->texture = texture; - null->uv.x = (atlas->custom.x + 0.5f)/(int)atlas->tex_width; - null->uv.y = (atlas->custom.y + 0.5f)/(int)atlas->tex_height; + null->uv.x = (atlas->custom.x + 0.5f)/(float)atlas->tex_width; + null->uv.y = (atlas->custom.y + 0.5f)/(float)atlas->tex_height; } for (font_iter = atlas->fonts; font_iter; font_iter = font_iter->next) { font_iter->texture = texture; @@ -17952,12 +17654,11 @@ nk_font_atlas_end(struct nk_font_atlas *atlas, nk_handle texture, NK_API void nk_font_atlas_cleanup(struct nk_font_atlas *atlas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_cleanup"); - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free) return; if (atlas->config) { struct nk_font_config *iter; @@ -17975,12 +17676,11 @@ nk_font_atlas_cleanup(struct nk_font_atlas *atlas) NK_API void nk_font_atlas_clear(struct nk_font_atlas *atlas) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_font_atlas / nk_font_atlas_clear"); - // NK_ASSERT(atlas); - // NK_ASSERT(atlas->temporary.alloc); - // NK_ASSERT(atlas->temporary.free); - // NK_ASSERT(atlas->permanent.alloc); - // NK_ASSERT(atlas->permanent.free); + NK_ASSERT(atlas); + NK_ASSERT(atlas->temporary.alloc); + NK_ASSERT(atlas->temporary.free); + NK_ASSERT(atlas->permanent.alloc); + NK_ASSERT(atlas->permanent.free); if (!atlas || !atlas->permanent.alloc || !atlas->permanent.free) return; if (atlas->config) { @@ -18026,10 +17726,9 @@ nk_font_atlas_clear(struct nk_font_atlas *atlas) NK_API void nk_input_begin(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_begin"); int i; struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; for (i = 0; i < NK_BUTTON_MAX; ++i) @@ -18047,9 +17746,8 @@ nk_input_begin(struct nk_context *ctx) NK_API void nk_input_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_end"); struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; if (in->mouse.grab) @@ -18063,22 +17761,20 @@ nk_input_end(struct nk_context *ctx) NK_API void nk_input_motion(struct nk_context *ctx, int x, int y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_motion"); struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; - in->mouse.pos.x = (int)x; - in->mouse.pos.y = (int)y; + in->mouse.pos.x = (float)x; + in->mouse.pos.y = (float)y; in->mouse.delta.x = in->mouse.pos.x - in->mouse.prev.x; in->mouse.delta.y = in->mouse.pos.y - in->mouse.prev.y; } NK_API void nk_input_key(struct nk_context *ctx, enum nk_keys key, nk_bool down) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_key"); struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; #ifdef NK_KEYSTATE_BASED_INPUT @@ -18092,25 +17788,23 @@ nk_input_key(struct nk_context *ctx, enum nk_keys key, nk_bool down) NK_API void nk_input_button(struct nk_context *ctx, enum nk_buttons id, int x, int y, nk_bool down) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_button"); struct nk_mouse_button *btn; struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; if (in->mouse.buttons[id].down == down) return; btn = &in->mouse.buttons[id]; - btn->clicked_pos.x = (int)x; - btn->clicked_pos.y = (int)y; + btn->clicked_pos.x = (float)x; + btn->clicked_pos.y = (float)y; btn->down = down; btn->clicked++; } NK_API void nk_input_scroll(struct nk_context *ctx, struct nk_vec2 val) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_scroll"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; ctx->input.mouse.scroll_delta.x += val.x; ctx->input.mouse.scroll_delta.y += val.y; @@ -18118,12 +17812,11 @@ nk_input_scroll(struct nk_context *ctx, struct nk_vec2 val) NK_API void nk_input_glyph(struct nk_context *ctx, const nk_glyph glyph) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_glyph"); int len = 0; nk_rune unicode; struct nk_input *in; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; in = &ctx->input; @@ -18137,9 +17830,8 @@ nk_input_glyph(struct nk_context *ctx, const nk_glyph glyph) NK_API void nk_input_char(struct nk_context *ctx, char c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_char"); nk_glyph glyph; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; glyph[0] = c; nk_input_glyph(ctx, glyph); @@ -18147,9 +17839,8 @@ nk_input_char(struct nk_context *ctx, char c) NK_API void nk_input_unicode(struct nk_context *ctx, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_input_unicode"); nk_glyph rune; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; nk_utf_encode(unicode, rune, NK_UTF_SIZE); nk_input_glyph(ctx, rune); @@ -18157,7 +17848,6 @@ nk_input_unicode(struct nk_context *ctx, nk_rune unicode) NK_API nk_bool nk_input_has_mouse_click(const struct nk_input *i, enum nk_buttons id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_has_mouse_click"); const struct nk_mouse_button *btn; if (!i) return nk_false; btn = &i->mouse.buttons[id]; @@ -18167,7 +17857,6 @@ NK_API nk_bool nk_input_has_mouse_click_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input_has_mouse_click_in_rect"); const struct nk_mouse_button *btn; if (!i) return nk_false; btn = &i->mouse.buttons[id]; @@ -18179,7 +17868,6 @@ NK_API nk_bool nk_input_has_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b, nk_bool down) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input_has_mouse_click_down_in_rect"); const struct nk_mouse_button *btn; if (!i) return nk_false; btn = &i->mouse.buttons[id]; @@ -18189,26 +17877,25 @@ NK_API nk_bool nk_input_is_mouse_click_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input_is_mouse_click_in_rect"); const struct nk_mouse_button *btn; if (!i) return nk_false; btn = &i->mouse.buttons[id]; - return (nk_input_has_mouse_click_down_in_rect(i, id, b, nk_false) && btn->clicked) ? nk_true : nk_false; + return (nk_input_has_mouse_click_down_in_rect(i, id, b, nk_false) && + btn->clicked) ? nk_true : nk_false; } NK_API nk_bool nk_input_is_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b, nk_bool down) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input_is_mouse_click_down_in_rect"); const struct nk_mouse_button *btn; if (!i) return nk_false; btn = &i->mouse.buttons[id]; - return (nk_input_has_mouse_click_down_in_rect(i, id, b, down) && btn->clicked) ? nk_true : nk_false; + return (nk_input_has_mouse_click_down_in_rect(i, id, b, down) && + btn->clicked) ? nk_true : nk_false; } NK_API nk_bool nk_input_any_mouse_click_in_rect(const struct nk_input *in, struct nk_rect b) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_any_mouse_click_in_rect"); int i, down = 0; for (i = 0; i < NK_BUTTON_MAX; ++i) down = down || nk_input_is_mouse_click_in_rect(in, (enum nk_buttons)i, b); @@ -18217,21 +17904,18 @@ nk_input_any_mouse_click_in_rect(const struct nk_input *in, struct nk_rect b) NK_API nk_bool nk_input_is_mouse_hovering_rect(const struct nk_input *i, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_mouse_hovering_rect"); if (!i) return nk_false; return NK_INBOX(i->mouse.pos.x, i->mouse.pos.y, rect.x, rect.y, rect.w, rect.h); } NK_API nk_bool nk_input_is_mouse_prev_hovering_rect(const struct nk_input *i, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_mouse_prev_hovering_rect"); if (!i) return nk_false; return NK_INBOX(i->mouse.prev.x, i->mouse.prev.y, rect.x, rect.y, rect.w, rect.h); } NK_API nk_bool nk_input_mouse_clicked(const struct nk_input *i, enum nk_buttons id, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_mouse_clicked"); if (!i) return nk_false; if (!nk_input_is_mouse_hovering_rect(i, rect)) return nk_false; return nk_input_is_mouse_click_in_rect(i, id, rect); @@ -18239,14 +17923,12 @@ nk_input_mouse_clicked(const struct nk_input *i, enum nk_buttons id, struct nk_r NK_API nk_bool nk_input_is_mouse_down(const struct nk_input *i, enum nk_buttons id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_mouse_down"); if (!i) return nk_false; return i->mouse.buttons[id].down; } NK_API nk_bool nk_input_is_mouse_pressed(const struct nk_input *i, enum nk_buttons id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_mouse_pressed"); const struct nk_mouse_button *b; if (!i) return nk_false; b = &i->mouse.buttons[id]; @@ -18257,18 +17939,15 @@ nk_input_is_mouse_pressed(const struct nk_input *i, enum nk_buttons id) NK_API nk_bool nk_input_is_mouse_released(const struct nk_input *i, enum nk_buttons id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_mouse_released"); if (!i) return nk_false; return (!i->mouse.buttons[id].down && i->mouse.buttons[id].clicked); } NK_API nk_bool nk_input_is_key_pressed(const struct nk_input *i, enum nk_keys key) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_key_pressed"); const struct nk_key *k; if (!i) return nk_false; k = &i->keyboard.keys[key]; - if ((k->down && k->clicked) || (!k->down && k->clicked >= 2)) return nk_true; return nk_false; @@ -18276,7 +17955,6 @@ nk_input_is_key_pressed(const struct nk_input *i, enum nk_keys key) NK_API nk_bool nk_input_is_key_released(const struct nk_input *i, enum nk_keys key) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_key_released"); const struct nk_key *k; if (!i) return nk_false; k = &i->keyboard.keys[key]; @@ -18287,7 +17965,6 @@ nk_input_is_key_released(const struct nk_input *i, enum nk_keys key) NK_API nk_bool nk_input_is_key_down(const struct nk_input *i, enum nk_keys key) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_input_is_key_down"); const struct nk_key *k; if (!i) return nk_false; k = &i->keyboard.keys[key]; @@ -18350,31 +18027,35 @@ NK_GLOBAL const char *nk_color_names[NK_COLOR_COUNT] = { NK_API const char* nk_style_get_color_by_name(enum nk_style_colors c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_colors / nk_style_get_color_by_name"); return nk_color_names[c]; } NK_API struct nk_style_item -nk_style_item_image(struct nk_image img) -{ - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_image / nk_style_item_image"); - struct nk_style_item i; - i.type = NK_STYLE_ITEM_IMAGE; - i.data.image = img; - return i; -} -NK_API struct nk_style_item nk_style_item_color(struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_color / nk_style_item_color"); struct nk_style_item i; i.type = NK_STYLE_ITEM_COLOR; i.data.color = col; return i; } NK_API struct nk_style_item +nk_style_item_image(struct nk_image img) +{ + struct nk_style_item i; + i.type = NK_STYLE_ITEM_IMAGE; + i.data.image = img; + return i; +} +NK_API struct nk_style_item +nk_style_item_nine_slice(struct nk_nine_slice slice) +{ + struct nk_style_item i; + i.type = NK_STYLE_ITEM_NINE_SLICE; + i.data.slice = slice; + return i; +} +NK_API struct nk_style_item nk_style_item_hide(void) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - void) / nk_style_item_hide"); struct nk_style_item i; i.type = NK_STYLE_ITEM_COLOR; i.data.color = nk_rgba(0,0,0,0); @@ -18383,7 +18064,6 @@ nk_style_item_hide(void) NK_API void nk_style_from_table(struct nk_context *ctx, const struct nk_color *table) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_from_table"); struct nk_style *style; struct nk_style_text *text; struct nk_style_button *button; @@ -18399,7 +18079,7 @@ nk_style_from_table(struct nk_context *ctx, const struct nk_color *table) struct nk_style_tab *tab; struct nk_style_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; style = &ctx->style; table = (!table) ? nk_default_color_style: table; @@ -18908,13 +18588,13 @@ nk_style_from_table(struct nk_context *ctx, const struct nk_color *table) win->scrollbar_size = nk_vec2(10,10); win->min_size = nk_vec2(64,64); - win->combo_border = 1; - win->contextual_border = 1; - win->menu_border = 1; - win->group_border = 1; - win->tooltip_border = 1; - win->popup_border = 1; - win->border = 2; + win->combo_border = 1.0f; + win->contextual_border = 1.0f; + win->menu_border = 1.0f; + win->group_border = 1.0f; + win->tooltip_border = 1.0f; + win->popup_border = 1.0f; + win->border = 2.0f; win->min_row_height_padding = 8; win->padding = nk_vec2(4,4); @@ -18928,9 +18608,8 @@ nk_style_from_table(struct nk_context *ctx, const struct nk_color *table) NK_API void nk_style_set_font(struct nk_context *ctx, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_set_font"); struct nk_style *style; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; style = &ctx->style; @@ -18942,15 +18621,14 @@ nk_style_set_font(struct nk_context *ctx, const struct nk_user_font *font) NK_API nk_bool nk_style_push_font(struct nk_context *ctx, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_push_font"); struct nk_config_stack_user_font *font_stack; struct nk_config_stack_user_font_element *element; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; font_stack = &ctx->stacks.fonts; - // NK_ASSERT(font_stack->head < (int)NK_LEN(font_stack->elements)); + NK_ASSERT(font_stack->head < (int)NK_LEN(font_stack->elements)); if (font_stack->head >= (int)NK_LEN(font_stack->elements)) return 0; @@ -18963,15 +18641,14 @@ nk_style_push_font(struct nk_context *ctx, const struct nk_user_font *font) NK_API nk_bool nk_style_pop_font(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_pop_font"); struct nk_config_stack_user_font *font_stack; struct nk_config_stack_user_font_element *element; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; font_stack = &ctx->stacks.fonts; - // NK_ASSERT(font_stack->head > 0); + NK_ASSERT(font_stack->head > 0); if (font_stack->head < 1) return 0; @@ -18979,56 +18656,55 @@ nk_style_pop_font(struct nk_context *ctx) *element->address = element->old_value; return 1; } -// #define NK_STYLE_PUSH_IMPLEMENATION(prefix, type, stack) \ -// nk_style_push_##type(struct nk_context *ctx, prefix##_##type *address, prefix##_##type value)\ -// {\ -// struct nk_config_stack_##type * type_stack;\ -// struct nk_config_stack_##type##_element *element;\ -// NK_ASSERT(ctx);\ -// if (!ctx) return 0;\ -// type_stack = &ctx->stacks.stack;\ -// NK_ASSERT(type_stack->head < (int)NK_LEN(type_stack->elements));\ -// if (type_stack->head >= (int)NK_LEN(type_stack->elements))\ -// return 0;\ -// element = &type_stack->elements[type_stack->head++];\ -// element->address = address;\ -// element->old_value = *address;\ -// *address = value;\ -// return 1;\ -// } -// #define NK_STYLE_POP_IMPLEMENATION(type, stack) \ -// nk_style_pop_##type(struct nk_context *ctx)\ -// {\ -// struct nk_config_stack_##type *type_stack;\ -// struct nk_config_stack_##type##_element *element;\ -// NK_ASSERT(ctx);\ -// if (!ctx) return 0;\ -// type_stack = &ctx->stacks.stack;\ -// NK_ASSERT(type_stack->head > 0);\ -// if (type_stack->head < 1)\ -// return 0;\ -// element = &type_stack->elements[--type_stack->head];\ -// *element->address = element->old_value;\ -// return 1;\ -// } -// NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk, style_item, style_items) -// NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(nk,int, ints) -// NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk, vec2, vectors) -// NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(nk,flags, flags) -// NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk,color, colors) +#define NK_STYLE_PUSH_IMPLEMENATION(prefix, type, stack) \ +nk_style_push_##type(struct nk_context *ctx, prefix##_##type *address, prefix##_##type value)\ +{\ + struct nk_config_stack_##type * type_stack;\ + struct nk_config_stack_##type##_element *element;\ + NK_ASSERT(ctx);\ + if (!ctx) return 0;\ + type_stack = &ctx->stacks.stack;\ + NK_ASSERT(type_stack->head < (int)NK_LEN(type_stack->elements));\ + if (type_stack->head >= (int)NK_LEN(type_stack->elements))\ + return 0;\ + element = &type_stack->elements[type_stack->head++];\ + element->address = address;\ + element->old_value = *address;\ + *address = value;\ + return 1;\ +} +#define NK_STYLE_POP_IMPLEMENATION(type, stack) \ +nk_style_pop_##type(struct nk_context *ctx)\ +{\ + struct nk_config_stack_##type *type_stack;\ + struct nk_config_stack_##type##_element *element;\ + NK_ASSERT(ctx);\ + if (!ctx) return 0;\ + type_stack = &ctx->stacks.stack;\ + NK_ASSERT(type_stack->head > 0);\ + if (type_stack->head < 1)\ + return 0;\ + element = &type_stack->elements[--type_stack->head];\ + *element->address = element->old_value;\ + return 1;\ +} +NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk, style_item, style_items) +NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(nk,float, floats) +NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk, vec2, vectors) +NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(nk,flags, flags) +NK_API nk_bool NK_STYLE_PUSH_IMPLEMENATION(struct nk,color, colors) -// NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(style_item, style_items) -// NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(int,ints) -// NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(vec2, vectors) -// NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(flags,flags) -// NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(color,colors) +NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(style_item, style_items) +NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(float,floats) +NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(vec2, vectors) +NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(flags,flags) +NK_API nk_bool NK_STYLE_POP_IMPLEMENATION(color,colors) NK_API nk_bool nk_style_set_cursor(struct nk_context *ctx, enum nk_style_cursor c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_set_cursor"); struct nk_style *style; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; style = &ctx->style; if (style->cursors[c]) { @@ -19040,22 +18716,19 @@ nk_style_set_cursor(struct nk_context *ctx, enum nk_style_cursor c) NK_API void nk_style_show_cursor(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_show_cursor"); ctx->style.cursor_visible = nk_true; } NK_API void nk_style_hide_cursor(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_hide_cursor"); ctx->style.cursor_visible = nk_false; } NK_API void nk_style_load_cursor(struct nk_context *ctx, enum nk_style_cursor cursor, const struct nk_cursor *c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_cursor / const"); struct nk_style *style; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; style = &ctx->style; style->cursors[cursor] = c; @@ -19063,10 +18736,9 @@ nk_style_load_cursor(struct nk_context *ctx, enum nk_style_cursor cursor, NK_API void nk_style_load_all_cursors(struct nk_context *ctx, struct nk_cursor *cursors) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_style_load_all_cursors"); int i = 0; struct nk_style *style; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; style = &ctx->style; for (i = 0; i < NK_CURSOR_COUNT; ++i) @@ -19086,8 +18758,7 @@ nk_style_load_all_cursors(struct nk_context *ctx, struct nk_cursor *cursors) NK_INTERN void nk_setup(struct nk_context *ctx, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_setup"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; nk_zero_struct(*ctx); nk_style_default(ctx); @@ -19101,7 +18772,6 @@ nk_setup(struct nk_context *ctx, const struct nk_user_font *font) NK_API nk_bool nk_init_default(struct nk_context *ctx, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_init_default"); struct nk_allocator alloc; alloc.userdata.ptr = 0; alloc.alloc = nk_malloc; @@ -19113,8 +18783,7 @@ NK_API nk_bool nk_init_fixed(struct nk_context *ctx, void *memory, nk_size size, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); - // NK_ASSERT(memory); + NK_ASSERT(memory); if (!memory) return 0; nk_setup(ctx, font); nk_buffer_init_fixed(&ctx->memory, memory, size); @@ -19125,9 +18794,8 @@ NK_API nk_bool nk_init_custom(struct nk_context *ctx, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - pool / struct"); - // NK_ASSERT(cmds); - // NK_ASSERT(pool); + NK_ASSERT(cmds); + NK_ASSERT(pool); if (!cmds || !pool) return 0; nk_setup(ctx, font); @@ -19147,8 +18815,7 @@ NK_API nk_bool nk_init(struct nk_context *ctx, struct nk_allocator *alloc, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); - // NK_ASSERT(alloc); + NK_ASSERT(alloc); if (!alloc) return 0; nk_setup(ctx, font); nk_buffer_init(&ctx->memory, alloc, NK_DEFAULT_COMMAND_BUFFER_SIZE); @@ -19160,7 +18827,6 @@ nk_init(struct nk_context *ctx, struct nk_allocator *alloc, NK_API void nk_set_user_data(struct nk_context *ctx, nk_handle handle) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_set_user_data"); if (!ctx) return; ctx->userdata = handle; if (ctx->current) @@ -19170,8 +18836,7 @@ nk_set_user_data(struct nk_context *ctx, nk_handle handle) NK_API void nk_free(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_free"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; nk_buffer_free(&ctx->memory); if (ctx->use_pool) @@ -19193,10 +18858,9 @@ nk_free(struct nk_context *ctx) NK_API void nk_clear(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_clear"); struct nk_window *iter; struct nk_window *next; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; if (ctx->use_pool) @@ -19213,13 +18877,16 @@ nk_clear(struct nk_context *ctx) iter = ctx->begin; while (iter) { /* make sure valid minimized windows do not get removed */ - if ((iter->flags & NK_WINDOW_MINIMIZED) && !(iter->flags & NK_WINDOW_CLOSED) && iter->seq == ctx->seq) { + if ((iter->flags & NK_WINDOW_MINIMIZED) && + !(iter->flags & NK_WINDOW_CLOSED) && + iter->seq == ctx->seq) { iter = iter->next; continue; } /* remove hotness from hidden or closed windows*/ if (((iter->flags & NK_WINDOW_HIDDEN) || - (iter->flags & NK_WINDOW_CLOSED)) && iter == ctx->active) { + (iter->flags & NK_WINDOW_CLOSED)) && + iter == ctx->active) { ctx->active = iter->prev; ctx->end = iter->prev; if (!ctx->end) @@ -19257,9 +18924,8 @@ nk_clear(struct nk_context *ctx) NK_LIB void nk_start_buffer(struct nk_context *ctx, struct nk_command_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_start_buffer"); - // NK_ASSERT(ctx); - // NK_ASSERT(buffer); + NK_ASSERT(ctx); + NK_ASSERT(buffer); if (!ctx || !buffer) return; buffer->begin = ctx->memory.allocated; buffer->end = buffer->begin; @@ -19269,18 +18935,16 @@ nk_start_buffer(struct nk_context *ctx, struct nk_command_buffer *buffer) NK_LIB void nk_start(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_start"); - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); nk_start_buffer(ctx, &win->buffer); } NK_LIB void nk_start_popup(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_start_popup"); struct nk_popup_buffer *buf; - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); if (!ctx || !win) return; /* save buffer fill state for popup */ @@ -19294,10 +18958,9 @@ nk_start_popup(struct nk_context *ctx, struct nk_window *win) NK_LIB void nk_finish_popup(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_finish_popup"); struct nk_popup_buffer *buf; - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); if (!ctx || !win) return; buf = &win->popup.buf; @@ -19307,22 +18970,20 @@ nk_finish_popup(struct nk_context *ctx, struct nk_window *win) NK_LIB void nk_finish_buffer(struct nk_context *ctx, struct nk_command_buffer *buffer) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_finish_buffer"); - // NK_ASSERT(ctx); - // NK_ASSERT(buffer); + NK_ASSERT(ctx); + NK_ASSERT(buffer); if (!ctx || !buffer) return; buffer->end = ctx->memory.allocated; } NK_LIB void nk_finish(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_finish"); struct nk_popup_buffer *buf; struct nk_command *parent_last; void *memory; - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); if (!ctx || !win) return; nk_finish_buffer(ctx, &win->buffer); if (!win->popup.buf.active) return; @@ -19335,7 +18996,6 @@ nk_finish(struct nk_context *ctx, struct nk_window *win) NK_LIB void nk_build(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_build"); struct nk_window *it = 0; struct nk_command *cmd = 0; nk_byte *buffer = 0; @@ -19398,10 +19058,9 @@ nk_build(struct nk_context *ctx) NK_API const struct nk_command* nk__begin(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk__begin"); struct nk_window *iter; nk_byte *buffer; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; if (!ctx->count) return 0; @@ -19421,10 +19080,9 @@ nk__begin(struct nk_context *ctx) NK_API const struct nk_command* nk__next(struct nk_context *ctx, const struct nk_command *cmd) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk__next"); nk_byte *buffer; const struct nk_command *next; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx || !cmd || !ctx->count) return 0; if (cmd->next >= ctx->memory.allocated) return 0; buffer = (nk_byte*)ctx->memory.memory.ptr; @@ -19446,8 +19104,7 @@ NK_LIB void nk_pool_init(struct nk_pool *pool, struct nk_allocator *alloc, unsigned int capacity) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - capacity / unsigned"); - // NK_ASSERT(capacity >= 1); + NK_ASSERT(capacity >= 1); nk_zero(pool, sizeof(*pool)); pool->alloc = *alloc; pool->capacity = capacity; @@ -19457,7 +19114,6 @@ nk_pool_init(struct nk_pool *pool, struct nk_allocator *alloc, NK_LIB void nk_pool_free(struct nk_pool *pool) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_pool / nk_pool_free"); struct nk_page *iter; if (!pool) return; iter = pool->pages; @@ -19471,12 +19127,11 @@ nk_pool_free(struct nk_pool *pool) NK_LIB void nk_pool_init_fixed(struct nk_pool *pool, void *memory, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_pool / nk_pool_init_fixed"); nk_zero(pool, sizeof(*pool)); - // NK_ASSERT(size >= sizeof(struct nk_page)); + NK_ASSERT(size >= sizeof(struct nk_page)); if (size < sizeof(struct nk_page)) return; /* first nk_page_element is embedded in nk_page, additional elements follow in adjacent space */ - pool->capacity = 1 + (unsigned)(size - sizeof(struct nk_page)) / sizeof(struct nk_page_element); + pool->capacity = (unsigned)(1 + (size - sizeof(struct nk_page)) / sizeof(struct nk_page_element)); pool->pages = (struct nk_page*)memory; pool->type = NK_BUFFER_FIXED; pool->size = size; @@ -19484,14 +19139,13 @@ nk_pool_init_fixed(struct nk_pool *pool, void *memory, nk_size size) NK_LIB struct nk_page_element* nk_pool_alloc(struct nk_pool *pool) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_pool / nk_pool_alloc"); if (!pool->pages || pool->pages->size >= pool->capacity) { /* allocate new page */ struct nk_page *page; if (pool->type == NK_BUFFER_FIXED) { - // NK_ASSERT(pool->pages); + NK_ASSERT(pool->pages); if (!pool->pages) return 0; - // NK_ASSERT(pool->pages->size < pool->capacity); + NK_ASSERT(pool->pages->size < pool->capacity); return 0; } else { nk_size size = sizeof(struct nk_page); @@ -19516,7 +19170,6 @@ nk_pool_alloc(struct nk_pool *pool) NK_LIB struct nk_page_element* nk_create_page_element(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_create_page_element"); struct nk_page_element *elem; if (ctx->freelist) { /* unlink page element from free list */ @@ -19525,14 +19178,14 @@ nk_create_page_element(struct nk_context *ctx) } else if (ctx->use_pool) { /* allocate page element from memory pool */ elem = nk_pool_alloc(&ctx->pool); - // NK_ASSERT(elem); + NK_ASSERT(elem); if (!elem) return 0; } else { /* allocate new page element from back of fixed size memory buffer */ NK_STORAGE const nk_size size = sizeof(struct nk_page_element); NK_STORAGE const nk_size align = NK_ALIGNOF(struct nk_page_element); elem = (struct nk_page_element*)nk_buffer_alloc(&ctx->memory, NK_BUFFER_BACK, size, align); - // NK_ASSERT(elem); + NK_ASSERT(elem); if (!elem) return 0; } nk_zero_struct(*elem); @@ -19544,7 +19197,6 @@ NK_LIB void nk_link_page_element_into_freelist(struct nk_context *ctx, struct nk_page_element *elem) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - elem / struct"); /* link table into freelist */ if (!ctx->freelist) { ctx->freelist = elem; @@ -19556,7 +19208,6 @@ nk_link_page_element_into_freelist(struct nk_context *ctx, NK_LIB void nk_free_page_element(struct nk_context *ctx, struct nk_page_element *elem) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_free_page_element"); /* we have a pool so just add to free list */ if (ctx->use_pool) { nk_link_page_element_into_freelist(ctx, elem); @@ -19582,7 +19233,6 @@ nk_free_page_element(struct nk_context *ctx, struct nk_page_element *elem) NK_LIB struct nk_table* nk_create_table(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_create_table"); struct nk_page_element *elem; elem = nk_create_page_element(ctx); if (!elem) return 0; @@ -19592,7 +19242,6 @@ nk_create_table(struct nk_context *ctx) NK_LIB void nk_free_table(struct nk_context *ctx, struct nk_table *tbl) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_free_table"); union nk_page_data *pd = NK_CONTAINER_OF(tbl, union nk_page_data, tbl); struct nk_page_element *pe = NK_CONTAINER_OF(pd, struct nk_page_element, data); nk_free_page_element(ctx, pe); @@ -19600,7 +19249,6 @@ nk_free_table(struct nk_context *ctx, struct nk_table *tbl) NK_LIB void nk_push_table(struct nk_window *win, struct nk_table *tbl) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_window / nk_push_table"); if (!win->tables) { win->tables = tbl; tbl->next = 0; @@ -19619,7 +19267,6 @@ nk_push_table(struct nk_window *win, struct nk_table *tbl) NK_LIB void nk_remove_table(struct nk_window *win, struct nk_table *tbl) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_window / nk_remove_table"); if (win->tables == tbl) win->tables = tbl->next; if (tbl->next) @@ -19633,13 +19280,12 @@ NK_LIB nk_uint* nk_add_value(struct nk_context *ctx, struct nk_window *win, nk_hash name, nk_uint value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - name, / nk_hash"); - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); if (!win || !ctx) return 0; if (!win->tables || win->tables->size >= NK_VALUE_PAGE_CAPACITY) { struct nk_table *tbl = nk_create_table(ctx); - // NK_ASSERT(tbl); + NK_ASSERT(tbl); if (!tbl) return 0; nk_push_table(win, tbl); } @@ -19651,7 +19297,6 @@ nk_add_value(struct nk_context *ctx, struct nk_window *win, NK_LIB nk_uint* nk_find_value(struct nk_window *win, nk_hash name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_window / nk_find_value"); struct nk_table *iter = win->tables; while (iter) { unsigned int i = 0; @@ -19679,7 +19324,6 @@ nk_find_value(struct nk_window *win, nk_hash name) NK_LIB void* nk_create_panel(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_create_panel"); struct nk_page_element *elem; elem = nk_create_page_element(ctx); if (!elem) return 0; @@ -19689,7 +19333,6 @@ nk_create_panel(struct nk_context *ctx) NK_LIB void nk_free_panel(struct nk_context *ctx, struct nk_panel *pan) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_free_panel"); union nk_page_data *pd = NK_CONTAINER_OF(pan, union nk_page_data, pan); struct nk_page_element *pe = NK_CONTAINER_OF(pd, struct nk_page_element, data); nk_free_page_element(ctx, pe); @@ -19697,7 +19340,6 @@ nk_free_panel(struct nk_context *ctx, struct nk_panel *pan) NK_LIB nk_bool nk_panel_has_header(nk_flags flags, const char *title) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - flags / nk_panel_has_header"); nk_bool active = 0; active = (flags & (NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE)); active = active || (flags & NK_WINDOW_TITLE); @@ -19707,7 +19349,6 @@ nk_panel_has_header(nk_flags flags, const char *title) NK_LIB struct nk_vec2 nk_panel_get_padding(const struct nk_style *style, enum nk_panel_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_panel_get_padding"); switch (type) { default: case NK_PANEL_WINDOW: return style->window.padding; @@ -19718,11 +19359,10 @@ nk_panel_get_padding(const struct nk_style *style, enum nk_panel_type type) case NK_PANEL_MENU: return style->window.menu_padding; case NK_PANEL_TOOLTIP: return style->window.menu_padding;} } -NK_LIB int +NK_LIB float nk_panel_get_border(const struct nk_style *style, nk_flags flags, enum nk_panel_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_panel_get_border"); if (flags & NK_WINDOW_BORDER) { switch (type) { default: @@ -19738,7 +19378,6 @@ nk_panel_get_border(const struct nk_style *style, nk_flags flags, NK_LIB struct nk_color nk_panel_get_border_color(const struct nk_style *style, enum nk_panel_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_panel_get_border_color"); switch (type) { default: case NK_PANEL_WINDOW: return style->window.border_color; @@ -19752,27 +19391,16 @@ nk_panel_get_border_color(const struct nk_style *style, enum nk_panel_type type) NK_LIB nk_bool nk_panel_is_sub(enum nk_panel_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_panel_type / nk_panel_is_sub"); return (type & NK_PANEL_SET_SUB)?1:0; } NK_LIB nk_bool nk_panel_is_nonblock(enum nk_panel_type type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_panel_type / nk_panel_is_nonblock"); return (type & NK_PANEL_SET_NONBLOCK)?1:0; } NK_LIB nk_bool nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type panel_type) { - - - long start; - long end; - long total; - long eventTime0; - - start = TickCount(); - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_panel_begin"); struct nk_input *in; struct nk_window *win; struct nk_panel *layout; @@ -19783,9 +19411,9 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan struct nk_vec2 scrollbar_size; struct nk_vec2 panel_padding; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; nk_zero(ctx->current->layout, sizeof(*ctx->current->layout)); if ((ctx->current->flags & NK_WINDOW_HIDDEN) || (ctx->current->flags & NK_WINDOW_CLOSED)) { @@ -19809,8 +19437,8 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan /* window movement */ if ((win->flags & NK_WINDOW_MOVABLE) && !(win->flags & NK_WINDOW_ROM)) { - int left_mouse_down; - int left_mouse_clicked; + nk_bool left_mouse_down; + unsigned int left_mouse_clicked; int left_mouse_click_in_cursor; /* calculate draggable window space */ @@ -19825,7 +19453,7 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan /* window movement by dragging */ left_mouse_down = in->mouse.buttons[NK_BUTTON_LEFT].down; - left_mouse_clicked = (int)in->mouse.buttons[NK_BUTTON_LEFT].clicked; + left_mouse_clicked = in->mouse.buttons[NK_BUTTON_LEFT].clicked; left_mouse_click_in_cursor = nk_input_has_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, header, nk_true); if (left_mouse_down && left_mouse_click_in_cursor && !left_mouse_clicked) { @@ -19844,7 +19472,7 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan layout->bounds.x += panel_padding.x; layout->bounds.w -= 2*panel_padding.x; if (win->flags & NK_WINDOW_BORDER) { - layout->border = 1;//= nk_panel_get_border(style, win->flags, panel_type); + layout->border = nk_panel_get_border(style, win->flags, panel_type); layout->bounds = nk_shrink_rect(layout->bounds, layout->border); } else layout->border = 0; layout->at_y = layout->bounds.y; @@ -19903,12 +19531,20 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan /* draw header background */ header.h += 1.0f; - if (background->type == NK_STYLE_ITEM_IMAGE) { - text.background = nk_rgba(0,0,0,0); - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - text.background = background->data.color; - nk_fill_rect(out, header, 0, background->data.color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0,0,0,0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(out, header, 0, background->data.color); + break; } /* window close button */ @@ -19958,9 +19594,9 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan }} {/* window header title */ - int text_len = strlen(title); + int text_len = nk_strlen(title); struct nk_rect label = {0,0,0,0}; - int t = font->width(font->userdata, font->height, title, text_len); + float t = font->width(font->userdata, font->height, title, text_len); text.padding = nk_vec2(0,0); label.x = header.x + style->window.header.padding.x; @@ -19969,7 +19605,7 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan label.h = font->height + 2 * style->window.header.label_padding.y; label.w = t + 2 * style->window.header.spacing.x; label.w = NK_CLAMP(0, label.w, header.x + header.w - label.x); - nk_widget_text(out, label,(const char*)title, text_len, &text, NK_TEXT_LEFT, font);} + nk_widget_text(out, label, (const char*)title, text_len, &text, NK_TEXT_LEFT, font);} } /* draw window background */ @@ -19979,9 +19615,18 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan body.w = win->bounds.w; body.y = (win->bounds.y + layout->header_height); body.h = (win->bounds.h - layout->header_height); - if (style->window.fixed_background.type == NK_STYLE_ITEM_IMAGE) - nk_draw_image(out, body, &style->window.fixed_background.data.image, nk_white); - else nk_fill_rect(out, body, 0, style->window.fixed_background.data.color); + + switch(style->window.fixed_background.type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, body, &style->window.fixed_background.data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, body, &style->window.fixed_background.data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, body, 0, style->window.fixed_background.data.color); + break; + } } /* set clipping rectangle */ @@ -19989,26 +19634,13 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan layout->clip = layout->bounds; nk_unify(&clip, &win->buffer.clip, layout->clip.x, layout->clip.y, layout->clip.x + layout->clip.w, layout->clip.y + layout->clip.h); - // nk_push_scissor(out, clip); + nk_push_scissor(out, clip); layout->clip = clip;} - - - - - end = TickCount(); - - total = end - start; - eventTime0 = total;// / 60.0; - - //char logx[255]; - //sprintf(logx, "nk_panel_begin() eventTime0 (run UI) %ld\n", eventTime0); - //writeSerialPort(boutRefNum, logx); return !(layout->flags & NK_WINDOW_HIDDEN) && !(layout->flags & NK_WINDOW_MINIMIZED); } NK_LIB void nk_panel_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_panel_end"); struct nk_input *in; struct nk_window *window; struct nk_panel *layout; @@ -20018,9 +19650,9 @@ nk_panel_end(struct nk_context *ctx) struct nk_vec2 scrollbar_size; struct nk_vec2 panel_padding; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -20029,8 +19661,8 @@ nk_panel_end(struct nk_context *ctx) style = &ctx->style; out = &window->buffer; in = (layout->flags & NK_WINDOW_ROM || layout->flags & NK_WINDOW_NO_INPUT) ? 0 :&ctx->input; - // if (!nk_panel_is_sub(layout->type)) - // nk_push_scissor(out, nk_null_rect); + if (!nk_panel_is_sub(layout->type)) + nk_push_scissor(out, nk_null_rect); /* cache configuration data */ scrollbar_size = style->window.scrollbar_size; @@ -20081,14 +19713,16 @@ nk_panel_end(struct nk_context *ctx) } /* scrollbars */ - if (!(layout->flags & NK_WINDOW_NO_SCROLLBAR) && !(layout->flags & NK_WINDOW_MINIMIZED) && window->scrollbar_hiding_timer < NK_SCROLLBAR_HIDING_TIMEOUT) + if (!(layout->flags & NK_WINDOW_NO_SCROLLBAR) && + !(layout->flags & NK_WINDOW_MINIMIZED) && + window->scrollbar_hiding_timer < NK_SCROLLBAR_HIDING_TIMEOUT) { struct nk_rect scroll; int scroll_has_scrolling; - int scroll_target; - int scroll_offset; - int scroll_step; - int scroll_inc; + float scroll_target; + float scroll_offset; + float scroll_step; + float scroll_inc; /* mouse wheel scrolling */ if (nk_panel_is_sub(layout->type)) @@ -20105,7 +19739,8 @@ nk_panel_end(struct nk_context *ctx) scroll_has_scrolling = 0; if ((root_window == ctx->active) && layout->has_scrolling) { /* and panel is being hovered and inside clip rect*/ - if (nk_input_is_mouse_hovering_rect(in, layout->bounds) && NK_INTERSECT(layout->bounds.x, layout->bounds.y, layout->bounds.w, layout->bounds.h, + if (nk_input_is_mouse_hovering_rect(in, layout->bounds) && + NK_INTERSECT(layout->bounds.x, layout->bounds.y, layout->bounds.w, layout->bounds.h, root_panel->clip.x, root_panel->clip.y, root_panel->clip.w, root_panel->clip.h)) { /* deactivate all parent scrolling */ @@ -20134,10 +19769,10 @@ nk_panel_end(struct nk_context *ctx) scroll.w = scrollbar_size.x; scroll.h = layout->bounds.h; - scroll_offset = (int)*layout->offset_y; + scroll_offset = (float)*layout->offset_y; scroll_step = scroll.h * 0.10f; scroll_inc = scroll.h * 0.01f; - scroll_target = (int)(int)(layout->at_y - scroll.y); + scroll_target = (float)(int)(layout->at_y - scroll.y); scroll_offset = nk_do_scrollbarv(&state, out, scroll, scroll_has_scrolling, scroll_offset, scroll_target, scroll_step, scroll_inc, &ctx->style.scrollv, in, style->font); @@ -20153,8 +19788,8 @@ nk_panel_end(struct nk_context *ctx) scroll.w = layout->bounds.w; scroll.h = scrollbar_size.y; - scroll_offset = (int)*layout->offset_x; - scroll_target = (int)(int)(layout->max_x - scroll.x); + scroll_offset = (float)*layout->offset_x; + scroll_target = (float)(int)(layout->max_x - scroll.x); scroll_step = layout->max_x * 0.05f; scroll_inc = layout->max_x * 0.005f; scroll_offset = nk_do_scrollbarh(&state, out, scroll, scroll_has_scrolling, @@ -20178,7 +19813,7 @@ nk_panel_end(struct nk_context *ctx) if (layout->flags & NK_WINDOW_BORDER) { struct nk_color border_color = nk_panel_get_border_color(style, layout->type); - const int padding_y = (layout->flags & NK_WINDOW_MINIMIZED) + const float padding_y = (layout->flags & NK_WINDOW_MINIMIZED) ? (style->window.border + window->bounds.y + layout->header_height) : ((layout->flags & NK_WINDOW_DYNAMIC) ? (layout->bounds.y + layout->bounds.h + layout->footer_height) @@ -20225,7 +19860,7 @@ nk_panel_end(struct nk_context *ctx) NK_BUTTON_LEFT, scaler, nk_true); if (left_mouse_down && left_mouse_click_in_scaler) { - int delta_x = in->mouse.delta.x; + float delta_x = in->mouse.delta.x; if (layout->flags & NK_WINDOW_SCALE_LEFT) { delta_x = -delta_x; window->bounds.x += in->mouse.delta.x; @@ -20268,7 +19903,8 @@ nk_panel_end(struct nk_context *ctx) window->flags = layout->flags; /* property garbage collector */ - if (window->property.active && window->property.old != window->property.seq && window->property.active == window->property.prev) { + if (window->property.active && window->property.old != window->property.seq && + window->property.active == window->property.prev) { nk_zero(&window->property, sizeof(window->property)); } else { window->property.old = window->property.seq; @@ -20276,7 +19912,8 @@ nk_panel_end(struct nk_context *ctx) window->property.seq = 0; } /* edit garbage collector */ - if (window->edit.active && window->edit.old != window->edit.seq && window->edit.active == window->edit.prev) { + if (window->edit.active && window->edit.old != window->edit.seq && + window->edit.active == window->edit.prev) { nk_zero(&window->edit, sizeof(window->edit)); } else { window->edit.old = window->edit.seq; @@ -20294,7 +19931,7 @@ nk_panel_end(struct nk_context *ctx) } window->popup.combo_count = 0; /* helper to make sure you have a 'nk_tree_push' for every 'nk_tree_pop' */ - // NK_ASSERT(!layout->row.tree_depth); + NK_ASSERT(!layout->row.tree_depth); } @@ -20309,7 +19946,6 @@ nk_panel_end(struct nk_context *ctx) NK_LIB void* nk_create_window(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_create_window"); struct nk_page_element *elem; elem = nk_create_page_element(ctx); if (!elem) return 0; @@ -20319,7 +19955,6 @@ nk_create_window(struct nk_context *ctx) NK_LIB void nk_free_window(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_free_window"); /* unlink windows from list */ struct nk_table *it = win->tables; if (win->popup.win) { @@ -20347,13 +19982,12 @@ nk_free_window(struct nk_context *ctx, struct nk_window *win) NK_LIB struct nk_window* nk_find_window(struct nk_context *ctx, nk_hash hash, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_find_window"); struct nk_window *iter; iter = ctx->begin; while (iter) { - // NK_ASSERT(iter != iter->next); + NK_ASSERT(iter != iter->next); if (iter->name == hash) { - int max_len = strlen(iter->name_string); + int max_len = nk_strlen(iter->name_string); if (!nk_stricmpn(iter->name_string, name, max_len)) return iter; } @@ -20365,16 +19999,15 @@ NK_LIB void nk_insert_window(struct nk_context *ctx, struct nk_window *win, enum nk_window_insert_location loc) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - loc / enum"); const struct nk_window *iter; - // NK_ASSERT(ctx); - // NK_ASSERT(win); + NK_ASSERT(ctx); + NK_ASSERT(win); if (!win || !ctx) return; iter = ctx->begin; while (iter) { - // NK_ASSERT(iter != iter->next); - // NK_ASSERT(iter != win); + NK_ASSERT(iter != iter->next); + NK_ASSERT(iter != win); if (iter == win) return; iter = iter->next; } @@ -20410,7 +20043,6 @@ nk_insert_window(struct nk_context *ctx, struct nk_window *win, NK_LIB void nk_remove_window(struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_remove_window"); if (win == ctx->begin || win == ctx->end) { if (win == ctx->begin) { ctx->begin = win->next; @@ -20441,38 +20073,36 @@ NK_API nk_bool nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - bounds / struct"); return nk_begin_titled(ctx, title, title, bounds, flags); } NK_API nk_bool nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - bounds / struct"); struct nk_window *win; struct nk_style *style; nk_hash name_hash; int name_len; int ret = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(name); - // NK_ASSERT(title); - // NK_ASSERT(ctx->style.font && ctx->style.font->width && "if this triggers you forgot to add a font"); - // NK_ASSERT(!ctx->current && "if this triggers you missed a `nk_end` call"); + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(title); + NK_ASSERT(ctx->style.font && ctx->style.font->width && "if this triggers you forgot to add a font"); + NK_ASSERT(!ctx->current && "if this triggers you missed a `nk_end` call"); if (!ctx || ctx->current || !title || !name) return 0; /* find or create window */ style = &ctx->style; - name_len = (int)strlen(name); + name_len = (int)nk_strlen(name); name_hash = nk_murmur_hash(name, (int)name_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, name_hash, name); if (!win) { /* create new window */ nk_size name_length = (nk_size)name_len; win = (struct nk_window*)nk_create_window(ctx); - // NK_ASSERT(win); + NK_ASSERT(win); if (!win) return 0; if (flags & NK_WINDOW_BACKGROUND) @@ -20502,7 +20132,7 @@ nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, * More specific you did not call `nk_clear` (nk_clear will be * automatically called for you if you are using one of the * provided demo backends). */ - // NK_ASSERT(win->seq != ctx->seq); + NK_ASSERT(win->seq != ctx->seq); win->seq = ctx->seq; if (!ctx->active && !(win->flags & NK_WINDOW_HIDDEN)) { ctx->active = win; @@ -20520,7 +20150,7 @@ nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, { int inpanel, ishovered; struct nk_window *iter = win; - int h = ctx->style.font->height + 2.0f * style->window.header.padding.y + + float h = ctx->style.font->height + 2.0f * style->window.header.padding.y + (2.0f * style->window.header.label_padding.y); struct nk_rect win_bounds = (!(win->flags & NK_WINDOW_MINIMIZED))? win->bounds: nk_rect(win->bounds.x, win->bounds.y, win->bounds.w, h); @@ -20535,10 +20165,12 @@ nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect iter_bounds = (!(iter->flags & NK_WINDOW_MINIMIZED))? iter->bounds: nk_rect(iter->bounds.x, iter->bounds.y, iter->bounds.w, h); if (NK_INTERSECT(win_bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, - iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && (!(iter->flags & NK_WINDOW_HIDDEN))) + iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && + (!(iter->flags & NK_WINDOW_HIDDEN))) break; - if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && NK_INTERSECT(win->bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, + if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && + NK_INTERSECT(win->bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, iter->popup.win->bounds.x, iter->popup.win->bounds.y, iter->popup.win->bounds.w, iter->popup.win->bounds.h)) break; @@ -20554,9 +20186,11 @@ nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect iter_bounds = (!(iter->flags & NK_WINDOW_MINIMIZED))? iter->bounds: nk_rect(iter->bounds.x, iter->bounds.y, iter->bounds.w, h); if (NK_INBOX(ctx->input.mouse.pos.x, ctx->input.mouse.pos.y, - iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && !(iter->flags & NK_WINDOW_HIDDEN)) + iter_bounds.x, iter_bounds.y, iter_bounds.w, iter_bounds.h) && + !(iter->flags & NK_WINDOW_HIDDEN)) break; - if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && NK_INTERSECT(win_bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, + if (iter->popup.win && iter->popup.active && !(iter->flags & NK_WINDOW_HIDDEN) && + NK_INTERSECT(win_bounds.x, win_bounds.y, win_bounds.w, win_bounds.h, iter->popup.win->bounds.x, iter->popup.win->bounds.y, iter->popup.win->bounds.w, iter->popup.win->bounds.h)) break; @@ -20598,10 +20232,9 @@ nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, NK_API void nk_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_end"); struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current && "if this triggers you forgot to call `nk_begin`"); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current && "if this triggers you forgot to call `nk_begin`"); if (!ctx || !ctx->current) return; @@ -20617,74 +20250,66 @@ nk_end(struct nk_context *ctx) NK_API struct nk_rect nk_window_get_bounds(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_get_bounds"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_rect(0,0,0,0); return ctx->current->bounds; } NK_API struct nk_vec2 nk_window_get_position(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_get_position"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_vec2(0,0); return nk_vec2(ctx->current->bounds.x, ctx->current->bounds.y); } NK_API struct nk_vec2 nk_window_get_size(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_get_size"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_vec2(0,0); return nk_vec2(ctx->current->bounds.w, ctx->current->bounds.h); } -NK_API int +NK_API float nk_window_get_width(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_get_width"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; return ctx->current->bounds.w; } -NK_API int +NK_API float nk_window_get_height(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_get_height"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; return ctx->current->bounds.h; } NK_API struct nk_rect nk_window_get_content_region(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_content_region"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_rect(0,0,0,0); return ctx->current->layout->clip; } NK_API struct nk_vec2 nk_window_get_content_region_min(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_content_region_min"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current) return nk_vec2(0,0); return nk_vec2(ctx->current->layout->clip.x, ctx->current->layout->clip.y); } NK_API struct nk_vec2 nk_window_get_content_region_max(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_content_region_max"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current) return nk_vec2(0,0); return nk_vec2(ctx->current->layout->clip.x + ctx->current->layout->clip.w, ctx->current->layout->clip.y + ctx->current->layout->clip.h); @@ -20692,39 +20317,35 @@ nk_window_get_content_region_max(struct nk_context *ctx) NK_API struct nk_vec2 nk_window_get_content_region_size(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_content_region_size"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current) return nk_vec2(0,0); return nk_vec2(ctx->current->layout->clip.w, ctx->current->layout->clip.h); } NK_API struct nk_command_buffer* nk_window_get_canvas(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_canvas"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current) return 0; return &ctx->current->buffer; } NK_API struct nk_panel* nk_window_get_panel(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_panel"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; return ctx->current->layout; } NK_API void nk_window_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_get_scroll"); struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return ; win = ctx->current; @@ -20736,19 +20357,17 @@ nk_window_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_ NK_API nk_bool nk_window_has_focus(const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_window_has_focus"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current) return 0; return ctx->current == ctx->active; } NK_API nk_bool nk_window_is_hovered(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_hovered"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; if(ctx->current->flags & NK_WINDOW_HIDDEN) return 0; @@ -20757,9 +20376,8 @@ nk_window_is_hovered(struct nk_context *ctx) NK_API nk_bool nk_window_is_any_hovered(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_any_hovered"); struct nk_window *iter; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; iter = ctx->begin; while (iter) { @@ -20785,7 +20403,6 @@ nk_window_is_any_hovered(struct nk_context *ctx) NK_API nk_bool nk_item_is_any_active(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_item_is_any_active"); int any_hovered = nk_window_is_any_hovered(ctx); int any_active = (ctx->last_widget_state & NK_WIDGET_STATE_MODIFIED); return any_hovered || any_active; @@ -20793,14 +20410,13 @@ nk_item_is_any_active(struct nk_context *ctx) NK_API nk_bool nk_window_is_collapsed(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_collapsed"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return 0; @@ -20809,14 +20425,13 @@ nk_window_is_collapsed(struct nk_context *ctx, const char *name) NK_API nk_bool nk_window_is_closed(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_closed"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 1; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return 1; @@ -20825,14 +20440,13 @@ nk_window_is_closed(struct nk_context *ctx, const char *name) NK_API nk_bool nk_window_is_hidden(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_hidden"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 1; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return 1; @@ -20841,14 +20455,13 @@ nk_window_is_hidden(struct nk_context *ctx, const char *name) NK_API nk_bool nk_window_is_active(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_is_active"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return 0; @@ -20857,23 +20470,21 @@ nk_window_is_active(struct nk_context *ctx, const char *name) NK_API struct nk_window* nk_window_find(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_find"); int title_len; nk_hash title_hash; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); return nk_find_window(ctx, title_hash, name); } NK_API void nk_window_close(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_close"); struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; win = nk_window_find(ctx, name); if (!win) return; - // NK_ASSERT(ctx->current != win && "You cannot close a currently active window"); + NK_ASSERT(ctx->current != win && "You cannot close a currently active window"); if (ctx->current == win) return; win->flags |= NK_WINDOW_HIDDEN; win->flags |= NK_WINDOW_CLOSED; @@ -20882,20 +20493,18 @@ NK_API void nk_window_set_bounds(struct nk_context *ctx, const char *name, struct nk_rect bounds) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - name / const"); struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; win = nk_window_find(ctx, name); if (!win) return; - // NK_ASSERT(ctx->current != win && "You cannot update a currently in procecss window"); + NK_ASSERT(ctx->current != win && "You cannot update a currently in procecss window"); win->bounds = bounds; } NK_API void nk_window_set_position(struct nk_context *ctx, const char *name, struct nk_vec2 pos) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - name / const"); struct nk_window *win = nk_window_find(ctx, name); if (!win) return; win->bounds.x = pos.x; @@ -20905,7 +20514,6 @@ NK_API void nk_window_set_size(struct nk_context *ctx, const char *name, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - name / const"); struct nk_window *win = nk_window_find(ctx, name); if (!win) return; win->bounds.w = size.x; @@ -20914,10 +20522,9 @@ nk_window_set_size(struct nk_context *ctx, NK_API void nk_window_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_set_scroll"); struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; win = ctx->current; @@ -20928,14 +20535,13 @@ NK_API void nk_window_collapse(struct nk_context *ctx, const char *name, enum nk_collapse_states c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / enum"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return; @@ -20947,22 +20553,20 @@ NK_API void nk_window_collapse_if(struct nk_context *ctx, const char *name, enum nk_collapse_states c, int cond) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - c / enum"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx || !cond) return; nk_window_collapse(ctx, name, c); } NK_API void nk_window_show(struct nk_context *ctx, const char *name, enum nk_show_states s) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_show"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (!win) return; @@ -20974,8 +20578,7 @@ NK_API void nk_window_show_if(struct nk_context *ctx, const char *name, enum nk_show_states s, int cond) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - s / enum"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx || !cond) return; nk_window_show(ctx, name, s); } @@ -20983,14 +20586,13 @@ nk_window_show_if(struct nk_context *ctx, const char *name, NK_API void nk_window_set_focus(struct nk_context *ctx, const char *name) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_window_set_focus"); int title_len; nk_hash title_hash; struct nk_window *win; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; - title_len = (int)strlen(name); + title_len = (int)nk_strlen(name); title_hash = nk_murmur_hash(name, (int)title_len, NK_WINDOW_TITLE); win = nk_find_window(ctx, title_hash, name); if (win && ctx->end != win) { @@ -21012,7 +20614,6 @@ NK_API nk_bool nk_popup_begin(struct nk_context *ctx, enum nk_popup_type type, const char *title, nk_flags flags, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); struct nk_window *popup; struct nk_window *win; struct nk_panel *panel; @@ -21021,18 +20622,18 @@ nk_popup_begin(struct nk_context *ctx, enum nk_popup_type type, nk_hash title_hash; nk_size allocated; - // NK_ASSERT(ctx); - // NK_ASSERT(title); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(title); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; win = ctx->current; panel = win->layout; - // NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP) && "popups are not allowed to have popups"); + NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP) && "popups are not allowed to have popups"); (void)panel; - title_len = (int)strlen(title); + title_len = (int)nk_strlen(title); title_hash = nk_murmur_hash(title, (int)title_len, NK_PANEL_POPUP); popup = win->popup.win; @@ -21072,7 +20673,7 @@ nk_popup_begin(struct nk_context *ctx, enum nk_popup_type type, popup->buffer = win->buffer; nk_start_popup(ctx, win); allocated = ctx->memory.allocated; - // nk_push_scissor(&popup->buffer, nk_null_rect); + nk_push_scissor(&popup->buffer, nk_null_rect); if (nk_panel_begin(ctx, title, NK_PANEL_POPUP)) { /* popup is running therefore invalidate parent panels */ @@ -21110,22 +20711,21 @@ nk_nonblock_begin(struct nk_context *ctx, nk_flags flags, struct nk_rect body, struct nk_rect header, enum nk_panel_type panel_type) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - panel_type / enum"); struct nk_window *popup; struct nk_window *win; struct nk_panel *panel; int is_active = nk_true; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; /* popups cannot have popups */ win = ctx->current; panel = win->layout; - // NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP)); + NK_ASSERT(!(panel->type & NK_PANEL_SET_POPUP)); (void)panel; popup = win->popup.win; if (!popup) { @@ -21167,11 +20767,11 @@ nk_nonblock_begin(struct nk_context *ctx, popup->flags |= NK_WINDOW_DYNAMIC; popup->seq = ctx->seq; win->popup.active = 1; - // NK_ASSERT(popup->layout); + NK_ASSERT(popup->layout); nk_start_popup(ctx, win); popup->buffer = win->buffer; - // nk_push_scissor(&popup->buffer, nk_null_rect); + nk_push_scissor(&popup->buffer, nk_null_rect); ctx->current = popup; nk_panel_begin(ctx, 0, panel_type); @@ -21192,26 +20792,24 @@ nk_nonblock_begin(struct nk_context *ctx, NK_API void nk_popup_close(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_popup_close"); struct nk_window *popup; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx || !ctx->current) return; popup = ctx->current; - // NK_ASSERT(popup->parent); - // NK_ASSERT(popup->layout->type & NK_PANEL_SET_POPUP); + NK_ASSERT(popup->parent); + NK_ASSERT(popup->layout->type & NK_PANEL_SET_POPUP); popup->flags |= NK_WINDOW_HIDDEN; } NK_API void nk_popup_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_popup_end"); struct nk_window *win; struct nk_window *popup; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21227,23 +20825,22 @@ nk_popup_end(struct nk_context *ctx) } win->popup.active = 0; } - // nk_push_scissor(&popup->buffer, nk_null_rect); + nk_push_scissor(&popup->buffer, nk_null_rect); nk_end(ctx); win->buffer = popup->buffer; nk_finish_popup(ctx, win); ctx->current = win; - // nk_push_scissor(&win->buffer, win->layout->clip); + nk_push_scissor(&win->buffer, win->layout->clip); } NK_API void nk_popup_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_popup_get_scroll"); struct nk_window *popup; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21256,12 +20853,11 @@ nk_popup_get_scroll(struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y NK_API void nk_popup_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_popup_set_scroll"); struct nk_window *popup; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21282,7 +20878,6 @@ NK_API nk_bool nk_contextual_begin(struct nk_context *ctx, nk_flags flags, struct nk_vec2 size, struct nk_rect trigger_bounds) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - trigger_bounds / struct"); struct nk_window *win; struct nk_window *popup; struct nk_rect body; @@ -21292,9 +20887,9 @@ nk_contextual_begin(struct nk_context *ctx, nk_flags flags, struct nk_vec2 size, int is_open = 0; int ret = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21342,7 +20937,6 @@ NK_API nk_bool nk_contextual_item_text(struct nk_context *ctx, const char *text, int len, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - alignment) / nk_flags"); struct nk_window *win; const struct nk_input *in; const struct nk_style *style; @@ -21350,9 +20944,9 @@ nk_contextual_item_text(struct nk_context *ctx, const char *text, int len, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21372,14 +20966,12 @@ nk_contextual_item_text(struct nk_context *ctx, const char *text, int len, NK_API nk_bool nk_contextual_item_label(struct nk_context *ctx, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_contextual_item_label"); - return nk_contextual_item_text(ctx, label, strlen(label), align); + return nk_contextual_item_text(ctx, label, nk_strlen(label), align); } NK_API nk_bool nk_contextual_item_image_text(struct nk_context *ctx, struct nk_image img, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); struct nk_window *win; const struct nk_input *in; const struct nk_style *style; @@ -21387,9 +20979,9 @@ nk_contextual_item_image_text(struct nk_context *ctx, struct nk_image img, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21410,14 +21002,12 @@ NK_API nk_bool nk_contextual_item_image_label(struct nk_context *ctx, struct nk_image img, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); - return nk_contextual_item_image_text(ctx, img, label, strlen(label), align); + return nk_contextual_item_image_text(ctx, img, label, nk_strlen(label), align); } NK_API nk_bool nk_contextual_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type symbol, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); struct nk_window *win; const struct nk_input *in; const struct nk_style *style; @@ -21425,9 +21015,9 @@ nk_contextual_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type symbo struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21448,33 +21038,30 @@ NK_API nk_bool nk_contextual_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type symbol, const char *text, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); - return nk_contextual_item_symbol_text(ctx, symbol, text, strlen(text), align); + return nk_contextual_item_symbol_text(ctx, symbol, text, nk_strlen(text), align); } NK_API void nk_contextual_close(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_contextual_close"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; nk_popup_close(ctx); } NK_API void nk_contextual_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_contextual_end"); struct nk_window *popup; struct nk_panel *panel; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; popup = ctx->current; panel = popup->layout; - // NK_ASSERT(popup->parent); - // NK_ASSERT(panel->type & NK_PANEL_SET_POPUP); + NK_ASSERT(popup->parent); + NK_ASSERT(panel->type & NK_PANEL_SET_POPUP); if (panel->flags & NK_WINDOW_DYNAMIC) { /* Close behavior This is a bit of a hack solution since we do not know before we end our popup @@ -21512,16 +21099,15 @@ nk_contextual_end(struct nk_context *ctx) NK_API void nk_menubar_begin(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_menubar_begin"); struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; layout = ctx->current->layout; - // NK_ASSERT(layout->at_y == layout->bounds.y); + NK_ASSERT(layout->at_y == layout->bounds.y); /* if this assert triggers you allocated space between nk_begin and nk_menubar_begin. If you want a menubar the first nuklear function after `nk_begin` has to be a `nk_menubar_begin` call. Inside the menubar you then have to allocate space for @@ -21550,14 +21136,13 @@ nk_menubar_begin(struct nk_context *ctx) NK_API void nk_menubar_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_menubar_end"); struct nk_window *win; struct nk_panel *layout; struct nk_command_buffer *out; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21579,22 +21164,21 @@ nk_menubar_end(struct nk_context *ctx) layout->clip.y = layout->bounds.y; layout->clip.h = layout->bounds.h; - // nk_push_scissor(out, layout->clip); + nk_push_scissor(out, layout->clip); } NK_INTERN int nk_menu_begin(struct nk_context *ctx, struct nk_window *win, const char *id, int is_clicked, struct nk_rect header, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - id / const"); int is_open = 0; int is_active = 0; struct nk_rect body; struct nk_window *popup; - nk_hash hash = nk_murmur_hash(id, (int)strlen(id), NK_PANEL_MENU); + nk_hash hash = nk_murmur_hash(id, (int)nk_strlen(id), NK_PANEL_MENU); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21619,16 +21203,15 @@ NK_API nk_bool nk_menu_begin_text(struct nk_context *ctx, const char *title, int len, nk_flags align, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - align, / nk_flags"); struct nk_window *win; const struct nk_input *in; struct nk_rect header; int is_clicked = nk_false; nk_flags state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21644,23 +21227,21 @@ nk_menu_begin_text(struct nk_context *ctx, const char *title, int len, NK_API nk_bool nk_menu_begin_label(struct nk_context *ctx, const char *text, nk_flags align, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); - return nk_menu_begin_text(ctx, text, strlen(text), align, size); + return nk_menu_begin_text(ctx, text, nk_strlen(text), align, size); } NK_API nk_bool nk_menu_begin_image(struct nk_context *ctx, const char *id, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - size / struct"); struct nk_window *win; struct nk_rect header; const struct nk_input *in; int is_clicked = nk_false; nk_flags state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21677,16 +21258,15 @@ NK_API nk_bool nk_menu_begin_symbol(struct nk_context *ctx, const char *id, enum nk_symbol_type sym, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - sym / enum"); struct nk_window *win; const struct nk_input *in; struct nk_rect header; int is_clicked = nk_false; nk_flags state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21703,16 +21283,15 @@ NK_API nk_bool nk_menu_begin_image_text(struct nk_context *ctx, const char *title, int len, nk_flags align, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - align, / nk_flags"); struct nk_window *win; struct nk_rect header; const struct nk_input *in; int is_clicked = nk_false; nk_flags state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21730,23 +21309,21 @@ NK_API nk_bool nk_menu_begin_image_label(struct nk_context *ctx, const char *title, nk_flags align, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); - return nk_menu_begin_image_text(ctx, title, strlen(title), align, img, size); + return nk_menu_begin_image_text(ctx, title, nk_strlen(title), align, img, size); } NK_API nk_bool nk_menu_begin_symbol_text(struct nk_context *ctx, const char *title, int len, nk_flags align, enum nk_symbol_type sym, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - align, / nk_flags"); struct nk_window *win; struct nk_rect header; const struct nk_input *in; int is_clicked = nk_false; nk_flags state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -21764,56 +21341,47 @@ NK_API nk_bool nk_menu_begin_symbol_label(struct nk_context *ctx, const char *title, nk_flags align, enum nk_symbol_type sym, struct nk_vec2 size ) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); - return nk_menu_begin_symbol_text(ctx, title, strlen(title), align,sym,size); + return nk_menu_begin_symbol_text(ctx, title, nk_strlen(title), align,sym,size); } NK_API nk_bool nk_menu_item_text(struct nk_context *ctx, const char *title, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_menu_item_text"); return nk_contextual_item_text(ctx, title, len, align); } NK_API nk_bool nk_menu_item_label(struct nk_context *ctx, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_menu_item_label"); return nk_contextual_item_label(ctx, label, align); } NK_API nk_bool nk_menu_item_image_label(struct nk_context *ctx, struct nk_image img, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); return nk_contextual_item_image_label(ctx, img, label, align); } NK_API nk_bool nk_menu_item_image_text(struct nk_context *ctx, struct nk_image img, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); return nk_contextual_item_image_text(ctx, img, text, len, align); } NK_API nk_bool nk_menu_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); return nk_contextual_item_symbol_text(ctx, sym, text, len, align); } NK_API nk_bool nk_menu_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); return nk_contextual_item_symbol_label(ctx, sym, label, align); } NK_API void nk_menu_close(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_menu_close / NK_API"); nk_contextual_close(ctx); } NK_API void nk_menu_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_menu_end"); nk_contextual_end(ctx); } @@ -21827,15 +21395,14 @@ nk_menu_end(struct nk_context *ctx) * * ===============================================================*/ NK_API void -nk_layout_set_min_row_height(struct nk_context *ctx, int height) +nk_layout_set_min_row_height(struct nk_context *ctx, float height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_set_min_row_height"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21846,13 +21413,12 @@ nk_layout_set_min_row_height(struct nk_context *ctx, int height) NK_API void nk_layout_reset_min_row_height(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_reset_min_row_height"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21862,28 +21428,28 @@ nk_layout_reset_min_row_height(struct nk_context *ctx) layout->row.min_height += ctx->style.text.padding.y*2; layout->row.min_height += ctx->style.window.min_row_height_padding*2; } -NK_LIB int +NK_LIB float nk_layout_row_calculate_usable_space(const struct nk_style *style, enum nk_panel_type type, - int total_space, int columns) + float total_space, int columns) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - total_space, / int"); - int panel_spacing; - int panel_space; + float panel_spacing; + float panel_space; struct nk_vec2 spacing; + NK_UNUSED(type); + spacing = style->window.spacing; /* calculate the usable panel space */ - panel_spacing = (int)NK_MAX(columns - 1, 0) * spacing.x; + panel_spacing = (float)NK_MAX(columns - 1, 0) * spacing.x; panel_space = total_space - panel_spacing; return panel_space; } NK_LIB void nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, - int height, int cols) + float height, int cols) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - height, / int"); struct nk_panel *layout; const struct nk_style *style; struct nk_command_buffer *out; @@ -21891,9 +21457,9 @@ nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, struct nk_vec2 item_spacing; struct nk_color color; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21909,9 +21475,9 @@ nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, Example: if (nk_begin(...) {...} nk_end(...); or if (nk_group_begin(...) { nk_group_end(...);} */ - // NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); - // NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); - // NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); + NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); /* update the current row and set the current row layout */ layout->row.index = 0; @@ -21934,14 +21500,13 @@ nk_panel_layout(const struct nk_context *ctx, struct nk_window *win, } NK_LIB void nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, - int height, int cols, int width) + float height, int cols, int width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - height, / int"); /* update the current row and set the current row layout */ struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -21954,42 +21519,38 @@ nk_row_layout(struct nk_context *ctx, enum nk_layout_format fmt, win->layout->row.ratio = 0; win->layout->row.filled = 0; win->layout->row.item_offset = 0; - win->layout->row.item_width = (int)width; + win->layout->row.item_width = (float)width; } -NK_API int -nk_layout_ratio_from_pixel(struct nk_context *ctx, int pixel_width) +NK_API float +nk_layout_ratio_from_pixel(struct nk_context *ctx, float pixel_width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_ratio_from_pixel"); struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(pixel_width); + NK_ASSERT(ctx); + NK_ASSERT(pixel_width); if (!ctx || !ctx->current || !ctx->current->layout) return 0; win = ctx->current; return NK_CLAMP(0.0f, pixel_width/win->bounds.x, 1.0f); } NK_API void -nk_layout_row_dynamic(struct nk_context *ctx, int height, int cols) +nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_dynamic"); nk_row_layout(ctx, NK_DYNAMIC, height, cols, 0); } NK_API void -nk_layout_row_static(struct nk_context *ctx, int height, int item_width, int cols) +nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_static"); nk_row_layout(ctx, NK_STATIC, height, cols, item_width); } NK_API void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, - int row_height, int cols) + float row_height, int cols) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - row_height, / int"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22007,26 +21568,25 @@ nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, layout->row.columns = cols; } NK_API void -nk_layout_row_push(struct nk_context *ctx, int ratio_or_width) +nk_layout_row_push(struct nk_context *ctx, float ratio_or_width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_push"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); + NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); if (layout->row.type != NK_LAYOUT_STATIC_ROW && layout->row.type != NK_LAYOUT_DYNAMIC_ROW) return; if (layout->row.type == NK_LAYOUT_DYNAMIC_ROW) { - int ratio = ratio_or_width; + float ratio = ratio_or_width; if ((ratio + layout->row.filled) > 1.0f) return; if (ratio > 0.0f) layout->row.item_width = NK_SATURATE(ratio); @@ -22036,19 +21596,18 @@ nk_layout_row_push(struct nk_context *ctx, int ratio_or_width) NK_API void nk_layout_row_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_end"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); + NK_ASSERT(layout->row.type == NK_LAYOUT_STATIC_ROW || layout->row.type == NK_LAYOUT_DYNAMIC_ROW); if (layout->row.type != NK_LAYOUT_STATIC_ROW && layout->row.type != NK_LAYOUT_DYNAMIC_ROW) return; layout->row.item_width = 0; @@ -22056,17 +21615,16 @@ nk_layout_row_end(struct nk_context *ctx) } NK_API void nk_layout_row(struct nk_context *ctx, enum nk_layout_format fmt, - int height, int cols, const int *ratio) + float height, int cols, const float *ratio) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - height, / int"); int i; int n_undef = 0; struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22075,7 +21633,7 @@ nk_layout_row(struct nk_context *ctx, enum nk_layout_format fmt, nk_panel_layout(ctx, win, height, cols); if (fmt == NK_DYNAMIC) { /* calculate width of undefined widget ratios */ - int r = 0; + float r = 0; layout->row.ratio = ratio; for (i = 0; i < cols; ++i) { if (ratio[i] < 0.0f) @@ -22084,7 +21642,7 @@ nk_layout_row(struct nk_context *ctx, enum nk_layout_format fmt, } r = NK_SATURATE(1.0f - r); layout->row.type = NK_LAYOUT_DYNAMIC; - layout->row.item_width = (r > 0 && n_undef > 0) ? (r / (int)n_undef):0; + layout->row.item_width = (r > 0 && n_undef > 0) ? (r / (float)n_undef):0; } else { layout->row.ratio = ratio; layout->row.type = NK_LAYOUT_STATIC; @@ -22095,15 +21653,14 @@ nk_layout_row(struct nk_context *ctx, enum nk_layout_format fmt, layout->row.filled = 0; } NK_API void -nk_layout_row_template_begin(struct nk_context *ctx, int height) +nk_layout_row_template_begin(struct nk_context *ctx, float height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_template_begin"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22125,62 +21682,59 @@ nk_layout_row_template_begin(struct nk_context *ctx, int height) NK_API void nk_layout_row_template_push_dynamic(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_template_push_dynamic"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); - // NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); if (layout->row.type != NK_LAYOUT_TEMPLATE) return; if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; layout->row.templates[layout->row.columns++] = -1.0f; } NK_API void -nk_layout_row_template_push_variable(struct nk_context *ctx, int min_width) +nk_layout_row_template_push_variable(struct nk_context *ctx, float min_width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_template_push_variable"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); - // NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); if (layout->row.type != NK_LAYOUT_TEMPLATE) return; if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; layout->row.templates[layout->row.columns++] = -min_width; } NK_API void -nk_layout_row_template_push_static(struct nk_context *ctx, int width) +nk_layout_row_template_push_static(struct nk_context *ctx, float width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_template_push_static"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); - // NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.columns < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); if (layout->row.type != NK_LAYOUT_TEMPLATE) return; if (layout->row.columns >= NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS) return; layout->row.templates[layout->row.columns++] = width; @@ -22188,29 +21742,28 @@ nk_layout_row_template_push_static(struct nk_context *ctx, int width) NK_API void nk_layout_row_template_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_row_template_end"); struct nk_window *win; struct nk_panel *layout; int i = 0; int variable_count = 0; int min_variable_count = 0; - int min_fixed_width = 0.0f; - int total_fixed_width = 0.0f; - int max_variable_width = 0.0f; + float min_fixed_width = 0.0f; + float total_fixed_width = 0.0f; + float max_variable_width = 0.0f; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - // NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); + NK_ASSERT(layout->row.type == NK_LAYOUT_TEMPLATE); if (layout->row.type != NK_LAYOUT_TEMPLATE) return; for (i = 0; i < layout->row.columns; ++i) { - int width = layout->row.templates[i]; + float width = layout->row.templates[i]; if (width >= 0.0f) { total_fixed_width += width; min_fixed_width += width; @@ -22225,29 +21778,28 @@ nk_layout_row_template_end(struct nk_context *ctx) } } if (variable_count) { - int space = nk_layout_row_calculate_usable_space(&ctx->style, layout->type, + float space = nk_layout_row_calculate_usable_space(&ctx->style, layout->type, layout->bounds.w, layout->row.columns); - int var_width = (NK_MAX(space-min_fixed_width,0.0f)) / (int)variable_count; + float var_width = (NK_MAX(space-min_fixed_width,0.0f)) / (float)variable_count; int enough_space = var_width >= max_variable_width; if (!enough_space) - var_width = (NK_MAX(space-total_fixed_width,0)) / (int)min_variable_count; + var_width = (NK_MAX(space-total_fixed_width,0)) / (float)min_variable_count; for (i = 0; i < layout->row.columns; ++i) { - int *width = &layout->row.templates[i]; + float *width = &layout->row.templates[i]; *width = (*width >= 0.0f)? *width: (*width < -1.0f && !enough_space)? -(*width): var_width; } } } NK_API void nk_layout_space_begin(struct nk_context *ctx, enum nk_layout_format fmt, - int height, int widget_count) + float height, int widget_count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - height, / int"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22266,13 +21818,12 @@ nk_layout_space_begin(struct nk_context *ctx, enum nk_layout_format fmt, NK_API void nk_layout_space_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_end"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22286,13 +21837,12 @@ nk_layout_space_end(struct nk_context *ctx) NK_API void nk_layout_space_push(struct nk_context *ctx, struct nk_rect rect) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_push"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22303,14 +21853,13 @@ nk_layout_space_push(struct nk_context *ctx, struct nk_rect rect) NK_API struct nk_rect nk_layout_space_bounds(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_bounds"); struct nk_rect ret; struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; @@ -22323,14 +21872,13 @@ nk_layout_space_bounds(struct nk_context *ctx) NK_API struct nk_rect nk_layout_widget_bounds(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_widget_bounds"); struct nk_rect ret; struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; @@ -22343,123 +21891,117 @@ nk_layout_widget_bounds(struct nk_context *ctx) NK_API struct nk_vec2 nk_layout_space_to_screen(struct nk_context *ctx, struct nk_vec2 ret) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_to_screen"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; - ret.x += layout->at_x - (int)*layout->offset_x; - ret.y += layout->at_y - (int)*layout->offset_y; + ret.x += layout->at_x - (float)*layout->offset_x; + ret.y += layout->at_y - (float)*layout->offset_y; return ret; } NK_API struct nk_vec2 nk_layout_space_to_local(struct nk_context *ctx, struct nk_vec2 ret) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_to_local"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; - ret.x += -layout->at_x + (int)*layout->offset_x; - ret.y += -layout->at_y + (int)*layout->offset_y; + ret.x += -layout->at_x + (float)*layout->offset_x; + ret.y += -layout->at_y + (float)*layout->offset_y; return ret; } NK_API struct nk_rect nk_layout_space_rect_to_screen(struct nk_context *ctx, struct nk_rect ret) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_rect_to_screen"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; - ret.x += layout->at_x - (int)*layout->offset_x; - ret.y += layout->at_y - (int)*layout->offset_y; + ret.x += layout->at_x - (float)*layout->offset_x; + ret.y += layout->at_y - (float)*layout->offset_y; return ret; } NK_API struct nk_rect nk_layout_space_rect_to_local(struct nk_context *ctx, struct nk_rect ret) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_layout_space_rect_to_local"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); win = ctx->current; layout = win->layout; - ret.x += -layout->at_x + (int)*layout->offset_x; - ret.y += -layout->at_y + (int)*layout->offset_y; + ret.x += -layout->at_x + (float)*layout->offset_x; + ret.y += -layout->at_y + (float)*layout->offset_y; return ret; } NK_LIB void nk_panel_alloc_row(const struct nk_context *ctx, struct nk_window *win) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_panel_alloc_row"); struct nk_panel *layout = win->layout; struct nk_vec2 spacing = ctx->style.window.spacing; - const int row_height = layout->row.height - spacing.y; + const float row_height = layout->row.height - spacing.y; nk_panel_layout(ctx, win, row_height, layout->row.columns); } NK_LIB void nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, struct nk_window *win, int modify) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_layout_widget_space"); struct nk_panel *layout; const struct nk_style *style; struct nk_vec2 spacing; - int item_offset = 0; - int item_width = 0; - int item_spacing = 0; - int panel_space = 0; + float item_offset = 0; + float item_width = 0; + float item_spacing = 0; + float panel_space = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; style = &ctx->style; - // NK_ASSERT(bounds); + NK_ASSERT(bounds); spacing = style->window.spacing; panel_space = nk_layout_row_calculate_usable_space(&ctx->style, layout->type, layout->bounds.w, layout->row.columns); - #define NK_FRAC(x) (x - (int)x) /* will be used to remove fookin gaps */ + #define NK_FRAC(x) (x - (float)(int)x) /* will be used to remove fookin gaps */ /* calculate the width of one item inside the current layout space */ switch (layout->row.type) { case NK_LAYOUT_DYNAMIC_FIXED: { /* scaling fixed size widgets item width */ - int w = NK_MAX(1.0f,panel_space) / (int)layout->row.columns; - item_offset = (int)layout->row.index * w; + float w = NK_MAX(1.0f,panel_space) / (float)layout->row.columns; + item_offset = (float)layout->row.index * w; item_width = w + NK_FRAC(item_offset); - item_spacing = (int)layout->row.index * spacing.x; + item_spacing = (float)layout->row.index * spacing.x; } break; case NK_LAYOUT_DYNAMIC_ROW: { /* scaling single ratio widget width */ - int w = layout->row.item_width * panel_space; + float w = layout->row.item_width * panel_space; item_offset = layout->row.item_offset; item_width = w + NK_FRAC(item_offset); item_spacing = 0; @@ -22473,22 +22015,22 @@ nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, case NK_LAYOUT_DYNAMIC_FREE: { /* panel width depended free widget placing */ bounds->x = layout->at_x + (layout->bounds.w * layout->row.item.x); - bounds->x -= (int)*layout->offset_x; + bounds->x -= (float)*layout->offset_x; bounds->y = layout->at_y + (layout->row.height * layout->row.item.y); - bounds->y -= (int)*layout->offset_y; + bounds->y -= (float)*layout->offset_y; bounds->w = layout->bounds.w * layout->row.item.w + NK_FRAC(bounds->x); bounds->h = layout->row.height * layout->row.item.h + NK_FRAC(bounds->y); return; } case NK_LAYOUT_DYNAMIC: { /* scaling arrays of panel width ratios for every widget */ - int ratio, w; - // NK_ASSERT(layout->row.ratio); + float ratio, w; + NK_ASSERT(layout->row.ratio); ratio = (layout->row.ratio[layout->row.index] < 0) ? layout->row.item_width : layout->row.ratio[layout->row.index]; w = (ratio * panel_space); - item_spacing = (int)layout->row.index * spacing.x; + item_spacing = (float)layout->row.index * spacing.x; item_offset = layout->row.item_offset; item_width = w + NK_FRAC(item_offset); @@ -22500,14 +22042,14 @@ nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, case NK_LAYOUT_STATIC_FIXED: { /* non-scaling fixed widgets item width */ item_width = layout->row.item_width; - item_offset = (int)layout->row.index * item_width; - item_spacing = (int)layout->row.index * spacing.x; + item_offset = (float)layout->row.index * item_width; + item_spacing = (float)layout->row.index * spacing.x; } break; case NK_LAYOUT_STATIC_ROW: { /* scaling single ratio widget width */ item_width = layout->row.item_width; item_offset = layout->row.item_offset; - item_spacing = (int)layout->row.index * spacing.x; + item_spacing = (float)layout->row.index * spacing.x; if (modify) layout->row.item_offset += item_width; } break; case NK_LAYOUT_STATIC_FREE: { @@ -22516,53 +22058,52 @@ nk_layout_widget_space(struct nk_rect *bounds, const struct nk_context *ctx, bounds->w = layout->row.item.w; if (((bounds->x + bounds->w) > layout->max_x) && modify) layout->max_x = (bounds->x + bounds->w); - bounds->x -= (int)*layout->offset_x; + bounds->x -= (float)*layout->offset_x; bounds->y = layout->at_y + layout->row.item.y; - bounds->y -= (int)*layout->offset_y; + bounds->y -= (float)*layout->offset_y; bounds->h = layout->row.item.h; return; } case NK_LAYOUT_STATIC: { /* non-scaling array of panel pixel width for every widget */ - item_spacing = (int)layout->row.index * spacing.x; + item_spacing = (float)layout->row.index * spacing.x; item_width = layout->row.ratio[layout->row.index]; item_offset = layout->row.item_offset; if (modify) layout->row.item_offset += item_width; } break; case NK_LAYOUT_TEMPLATE: { /* stretchy row layout with combined dynamic/static widget width*/ - int w; - // NK_ASSERT(layout->row.index < layout->row.columns); - // NK_ASSERT(layout->row.index < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); + float w; + NK_ASSERT(layout->row.index < layout->row.columns); + NK_ASSERT(layout->row.index < NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS); w = layout->row.templates[layout->row.index]; item_offset = layout->row.item_offset; item_width = w + NK_FRAC(item_offset); - item_spacing = (int)layout->row.index * spacing.x; + item_spacing = (float)layout->row.index * spacing.x; if (modify) layout->row.item_offset += w; } break; #undef NK_FRAC - default: break; // NK_ASSERT(0); break; + default: NK_ASSERT(0); break; }; /* set the bounds of the newly allocated widget */ bounds->w = item_width; bounds->h = layout->row.height - spacing.y; - bounds->y = layout->at_y - (int)*layout->offset_y; + bounds->y = layout->at_y - (float)*layout->offset_y; bounds->x = layout->at_x + item_offset + item_spacing; if (((bounds->x + bounds->w) > layout->max_x) && modify) layout->max_x = bounds->x + bounds->w; - bounds->x -= (int)*layout->offset_x; + bounds->x -= (float)*layout->offset_x; } NK_LIB void nk_panel_alloc_space(struct nk_rect *bounds, const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_panel_alloc_space"); struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22579,15 +22120,14 @@ nk_panel_alloc_space(struct nk_rect *bounds, const struct nk_context *ctx) NK_LIB void nk_layout_peek(struct nk_rect *bounds, struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_layout_peek"); - int y; + float y; int index; struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -22620,7 +22160,6 @@ NK_INTERN int nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, struct nk_image *img, const char *title, enum nk_collapse_states *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - img / struct"); struct nk_window *win; struct nk_panel *layout; const struct nk_style *style; @@ -22628,7 +22167,7 @@ nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, const struct nk_input *in; const struct nk_style_button *button; enum nk_symbol_type symbol; - int row_height; + float row_height; struct nk_vec2 item_spacing; struct nk_rect header = {0,0,0,0}; @@ -22638,9 +22177,9 @@ nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, nk_flags ws = 0; enum nk_widget_layout_states widget_state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -22660,14 +22199,19 @@ nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, widget_state = nk_widget(&header, ctx); if (type == NK_TREE_TAB) { const struct nk_style_item *background = &style->tab.background; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, header, &background->data.image, nk_white); - text.background = nk_rgba(0,0,0,0); - } else { - text.background = background->data.color; - nk_fill_rect(out, header, 0, style->tab.border_color); - nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), - style->tab.rounding, background->data.color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, header, 0, style->tab.border_color); + nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), + style->tab.rounding, background->data.color); + break; } } else text.background = style->window.background; @@ -22713,12 +22257,12 @@ nk_tree_state_base(struct nk_context *ctx, enum nk_tree_type type, label.h = style->font->height; text.text = style->tab.text; text.padding = nk_vec2(0,0); - nk_widget_text(out, label, title, strlen(title), &text, + nk_widget_text(out, label, title, nk_strlen(title), &text, NK_TEXT_LEFT, style->font);} /* increase x-axis cursor widget position pointer */ if (*state == NK_MAXIMIZED) { - layout->at_x = header.x + (int)*layout->offset_x + style->tab.indent; + layout->at_x = header.x + (float)*layout->offset_x + style->tab.indent; layout->bounds.w = NK_MAX(layout->bounds.w, style->tab.indent); layout->bounds.w -= (style->tab.indent + style->window.padding.x); layout->row.tree_depth++; @@ -22730,7 +22274,6 @@ nk_tree_base(struct nk_context *ctx, enum nk_tree_type type, struct nk_image *img, const char *title, enum nk_collapse_states initial_state, const char *hash, int len, int line) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - hash / const"); struct nk_window *win = ctx->current; int title_len = 0; nk_hash tree_hash = 0; @@ -22738,7 +22281,7 @@ nk_tree_base(struct nk_context *ctx, enum nk_tree_type type, /* retrieve tree state from internal widget state tables */ if (!hash) { - title_len = (int)strlen(title); + title_len = (int)nk_strlen(title); tree_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)line); } else tree_hash = nk_murmur_hash(hash, len, (nk_hash)line); state = nk_find_value(win, tree_hash); @@ -22752,34 +22295,31 @@ NK_API nk_bool nk_tree_state_push(struct nk_context *ctx, enum nk_tree_type type, const char *title, enum nk_collapse_states *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); return nk_tree_state_base(ctx, type, 0, title, state); } NK_API nk_bool nk_tree_state_image_push(struct nk_context *ctx, enum nk_tree_type type, struct nk_image img, const char *title, enum nk_collapse_states *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - img / struct"); return nk_tree_state_base(ctx, type, &img, title, state); } NK_API void nk_tree_state_pop(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tree_state_pop"); struct nk_window *win = 0; struct nk_panel *layout = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; layout = win->layout; - layout->at_x -= ctx->style.tab.indent + (int)*layout->offset_x; + layout->at_x -= ctx->style.tab.indent + (float)*layout->offset_x; layout->bounds.w += ctx->style.tab.indent + ctx->style.window.padding.x; - // NK_ASSERT(layout->row.tree_depth); + NK_ASSERT(layout->row.tree_depth); layout->row.tree_depth--; } NK_API nk_bool @@ -22787,7 +22327,6 @@ nk_tree_push_hashed(struct nk_context *ctx, enum nk_tree_type type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len, int line) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - hash / const"); return nk_tree_base(ctx, type, 0, title, initial_state, hash, len, line); } NK_API nk_bool @@ -22795,13 +22334,11 @@ nk_tree_image_push_hashed(struct nk_context *ctx, enum nk_tree_type type, struct nk_image img, const char *title, enum nk_collapse_states initial_state, const char *hash, int len,int seed) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - hash / const"); return nk_tree_base(ctx, type, &img, title, initial_state, hash, len, seed); } NK_API void nk_tree_pop(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tree_pop"); nk_tree_state_pop(ctx); } NK_INTERN int @@ -22809,7 +22346,6 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type struct nk_image *img, const char *title, int title_len, enum nk_collapse_states *state, nk_bool *selected) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - state / enum"); struct nk_window *win; struct nk_panel *layout; const struct nk_style *style; @@ -22817,11 +22353,11 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type const struct nk_input *in; const struct nk_style_button *button; enum nk_symbol_type symbol; - int row_height; + float row_height; struct nk_vec2 padding; int text_len; - int text_width; + float text_width; struct nk_vec2 item_spacing; struct nk_rect header = {0,0,0,0}; @@ -22830,9 +22366,9 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type nk_flags ws = 0; enum nk_widget_layout_states widget_state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -22853,12 +22389,19 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type widget_state = nk_widget(&header, ctx); if (type == NK_TREE_TAB) { const struct nk_style_item *background = &style->tab.background; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, header, &background->data.image, nk_white); - } else { - nk_fill_rect(out, header, 0, style->tab.border_color); - nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), - style->tab.rounding, background->data.color); + + switch (background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, header, 0, style->tab.border_color); + nk_fill_rect(out, nk_shrink_rect(header, style->tab.border), + style->tab.rounding, background->data.color); + break; } } @@ -22888,7 +22431,7 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type {nk_flags dummy = 0; struct nk_rect label; /* calculate size of the text and tooltip */ - text_len = strlen(title); + text_len = nk_strlen(title); text_width = style->font->width(style->font->userdata, style->font->height, title, text_len); text_width += (4 * padding.x); @@ -22906,7 +22449,7 @@ nk_tree_element_image_push_hashed_base(struct nk_context *ctx, enum nk_tree_type } /* increase x-axis cursor widget position pointer */ if (*state == NK_MAXIMIZED) { - layout->at_x = header.x + (int)*layout->offset_x + style->tab.indent; + layout->at_x = header.x + (float)*layout->offset_x + style->tab.indent; layout->bounds.w = NK_MAX(layout->bounds.w, style->tab.indent); layout->bounds.w -= (style->tab.indent + style->window.padding.x); layout->row.tree_depth++; @@ -22918,7 +22461,6 @@ nk_tree_element_base(struct nk_context *ctx, enum nk_tree_type type, struct nk_image *img, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len, int line) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / nk_bool"); struct nk_window *win = ctx->current; int title_len = 0; nk_hash tree_hash = 0; @@ -22926,7 +22468,7 @@ nk_tree_element_base(struct nk_context *ctx, enum nk_tree_type type, /* retrieve tree state from internal widget state tables */ if (!hash) { - title_len = (int)strlen(title); + title_len = (int)nk_strlen(title); tree_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)line); } else tree_hash = nk_murmur_hash(hash, len, (nk_hash)line); state = nk_find_value(win, tree_hash); @@ -22934,14 +22476,13 @@ nk_tree_element_base(struct nk_context *ctx, enum nk_tree_type type, state = nk_add_value(ctx, win, tree_hash, 0); *state = initial_state; } return nk_tree_element_image_push_hashed_base(ctx, type, img, title, - strlen(title), (enum nk_collapse_states*)state, selected); + nk_strlen(title), (enum nk_collapse_states*)state, selected); } NK_API nk_bool nk_tree_element_push_hashed(struct nk_context *ctx, enum nk_tree_type type, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len, int seed) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / nk_bool"); return nk_tree_element_base(ctx, type, 0, title, initial_state, selected, hash, len, seed); } NK_API nk_bool @@ -22949,13 +22490,11 @@ nk_tree_element_image_push_hashed(struct nk_context *ctx, enum nk_tree_type type struct nk_image img, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len,int seed) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / nk_bool"); return nk_tree_element_base(ctx, type, &img, title, initial_state, selected, hash, len, seed); } NK_API void nk_tree_element_pop(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tree_element_pop"); nk_tree_state_pop(ctx); } @@ -22972,7 +22511,6 @@ NK_API nk_bool nk_group_scrolled_offset_begin(struct nk_context *ctx, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - x_offset, / nk_uint"); struct nk_rect bounds; struct nk_window panel; struct nk_window *win; @@ -22980,7 +22518,8 @@ nk_group_scrolled_offset_begin(struct nk_context *ctx, win = ctx->current; nk_panel_alloc_space(&bounds, ctx); {const struct nk_rect *c = &win->layout->clip; - if (!NK_INTERSECT(c->x, c->y, c->w, c->h, bounds.x, bounds.y, bounds.w, bounds.h) && !(flags & NK_WINDOW_MOVABLE)) { + if (!NK_INTERSECT(c->x, c->y, c->w, c->h, bounds.x, bounds.y, bounds.w, bounds.h) && + !(flags & NK_WINDOW_MOVABLE)) { return 0; }} if (win->flags & NK_WINDOW_ROM) @@ -23020,7 +22559,6 @@ nk_group_scrolled_offset_begin(struct nk_context *ctx, NK_API void nk_group_scrolled_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_group_scrolled_end"); struct nk_window *win; struct nk_panel *parent; struct nk_panel *g; @@ -23029,17 +22567,17 @@ nk_group_scrolled_end(struct nk_context *ctx) struct nk_window pan; struct nk_vec2 panel_padding; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; /* make sure nk_group_begin was called correctly */ - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current); win = ctx->current; - // NK_ASSERT(win->layout); + NK_ASSERT(win->layout); g = win->layout; - // NK_ASSERT(g->parent); + NK_ASSERT(g->parent); parent = g->parent; /* dummy window */ @@ -23070,11 +22608,11 @@ nk_group_scrolled_end(struct nk_context *ctx) /* make sure group has correct clipping rectangle */ nk_unify(&clip, &parent->clip, pan.bounds.x, pan.bounds.y, pan.bounds.x + pan.bounds.w, pan.bounds.y + pan.bounds.h + panel_padding.x); - // nk_push_scissor(&pan.buffer, clip); + nk_push_scissor(&pan.buffer, clip); nk_end(ctx); win->buffer = pan.buffer; - // nk_push_scissor(&win->buffer, parent->clip); + nk_push_scissor(&win->buffer, parent->clip); ctx->current = win; win->layout = parent; g->bounds = pan.bounds; @@ -23084,38 +22622,36 @@ NK_API nk_bool nk_group_scrolled_begin(struct nk_context *ctx, struct nk_scroll *scroll, const char *title, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - scroll / struct"); return nk_group_scrolled_offset_begin(ctx, &scroll->x, &scroll->y, title, flags); } NK_API nk_bool nk_group_begin_titled(struct nk_context *ctx, const char *id, const char *title, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); int id_len; nk_hash id_hash; struct nk_window *win; nk_uint *x_offset; nk_uint *y_offset; - // NK_ASSERT(ctx); - // NK_ASSERT(id); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !id) return 0; /* find persistent group scrollbar value */ win = ctx->current; - id_len = (int)strlen(id); + id_len = (int)nk_strlen(id); id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); x_offset = nk_find_value(win, id_hash); if (!x_offset) { x_offset = nk_add_value(ctx, win, id_hash, 0); y_offset = nk_add_value(ctx, win, id_hash+1, 0); - // NK_ASSERT(x_offset); - // NK_ASSERT(y_offset); + NK_ASSERT(x_offset); + NK_ASSERT(y_offset); if (!x_offset || !y_offset) return 0; *x_offset = *y_offset = 0; } else y_offset = nk_find_value(win, id_hash+1); @@ -23124,43 +22660,40 @@ nk_group_begin_titled(struct nk_context *ctx, const char *id, NK_API nk_bool nk_group_begin(struct nk_context *ctx, const char *title, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_group_begin"); return nk_group_begin_titled(ctx, title, title, flags); } NK_API void nk_group_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_group_end"); nk_group_scrolled_end(ctx); } NK_API void nk_group_get_scroll(struct nk_context *ctx, const char *id, nk_uint *x_offset, nk_uint *y_offset) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_group_get_scroll"); int id_len; nk_hash id_hash; struct nk_window *win; nk_uint *x_offset_ptr; nk_uint *y_offset_ptr; - // NK_ASSERT(ctx); - // NK_ASSERT(id); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !id) return; /* find persistent group scrollbar value */ win = ctx->current; - id_len = (int)strlen(id); + id_len = (int)nk_strlen(id); id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); x_offset_ptr = nk_find_value(win, id_hash); if (!x_offset_ptr) { x_offset_ptr = nk_add_value(ctx, win, id_hash, 0); y_offset_ptr = nk_add_value(ctx, win, id_hash+1, 0); - // NK_ASSERT(x_offset_ptr); - // NK_ASSERT(y_offset_ptr); + NK_ASSERT(x_offset_ptr); + NK_ASSERT(y_offset_ptr); if (!x_offset_ptr || !y_offset_ptr) return; *x_offset_ptr = *y_offset_ptr = 0; } else y_offset_ptr = nk_find_value(win, id_hash+1); @@ -23172,31 +22705,30 @@ nk_group_get_scroll(struct nk_context *ctx, const char *id, nk_uint *x_offset, n NK_API void nk_group_set_scroll(struct nk_context *ctx, const char *id, nk_uint x_offset, nk_uint y_offset) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_group_set_scroll"); int id_len; nk_hash id_hash; struct nk_window *win; nk_uint *x_offset_ptr; nk_uint *y_offset_ptr; - // NK_ASSERT(ctx); - // NK_ASSERT(id); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(id); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !id) return; /* find persistent group scrollbar value */ win = ctx->current; - id_len = (int)strlen(id); + id_len = (int)nk_strlen(id); id_hash = nk_murmur_hash(id, (int)id_len, NK_PANEL_GROUP); x_offset_ptr = nk_find_value(win, id_hash); if (!x_offset_ptr) { x_offset_ptr = nk_add_value(ctx, win, id_hash, 0); y_offset_ptr = nk_add_value(ctx, win, id_hash+1, 0); - // NK_ASSERT(x_offset_ptr); - // NK_ASSERT(y_offset_ptr); + NK_ASSERT(x_offset_ptr); + NK_ASSERT(y_offset_ptr); if (!x_offset_ptr || !y_offset_ptr) return; *x_offset_ptr = *y_offset_ptr = 0; } else y_offset_ptr = nk_find_value(win, id_hash+1); @@ -23216,7 +22748,6 @@ NK_API nk_bool nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, const char *title, nk_flags flags, int row_height, int row_count) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); int title_len; nk_hash title_hash; nk_uint *x_offset; @@ -23228,9 +22759,9 @@ nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, const struct nk_style *style; struct nk_vec2 item_spacing; - // NK_ASSERT(ctx); - // NK_ASSERT(view); - // NK_ASSERT(title); + NK_ASSERT(ctx); + NK_ASSERT(view); + NK_ASSERT(title); if (!ctx || !view || !title) return 0; win = ctx->current; @@ -23239,15 +22770,15 @@ nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, row_height += NK_MAX(0, (int)item_spacing.y); /* find persistent list view scrollbar offset */ - title_len = (int)strlen(title); + title_len = (int)nk_strlen(title); title_hash = nk_murmur_hash(title, (int)title_len, NK_PANEL_GROUP); x_offset = nk_find_value(win, title_hash); if (!x_offset) { x_offset = nk_add_value(ctx, win, title_hash, 0); y_offset = nk_add_value(ctx, win, title_hash+1, 0); - // NK_ASSERT(x_offset); - // NK_ASSERT(y_offset); + NK_ASSERT(x_offset); + NK_ASSERT(y_offset); if (!x_offset || !y_offset) return 0; *x_offset = *y_offset = 0; } else y_offset = nk_find_value(win, title_hash+1); @@ -23260,8 +22791,8 @@ nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, layout = win->layout; view->total_height = row_height * NK_MAX(row_count,1); - view->begin = (int)NK_MAX(((int)view->scroll_value / (int)row_height), 0.0f); - view->count = (int)NK_MAX(nk_iceilf((layout->clip.h)/(int)row_height),0); + view->begin = (int)NK_MAX(((float)view->scroll_value / (float)row_height), 0.0f); + view->count = (int)NK_MAX(nk_iceilf((layout->clip.h)/(float)row_height),0); view->count = NK_MIN(view->count, row_count - view->begin); view->end = view->begin + view->count; view->ctx = ctx; @@ -23270,20 +22801,19 @@ nk_list_view_begin(struct nk_context *ctx, struct nk_list_view *view, NK_API void nk_list_view_end(struct nk_list_view *view) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_list_view / nk_list_view_end"); struct nk_context *ctx; struct nk_window *win; struct nk_panel *layout; - // NK_ASSERT(view); - // NK_ASSERT(view->ctx); - // NK_ASSERT(view->scroll_pointer); + NK_ASSERT(view); + NK_ASSERT(view->ctx); + NK_ASSERT(view->scroll_pointer); if (!view || !view->ctx) return; ctx = view->ctx; win = ctx->current; layout = win->layout; - layout->at_y = layout->bounds.y + (int)view->total_height; + layout->at_y = layout->bounds.y + (float)view->total_height; *view->scroll_pointer = *view->scroll_pointer + view->scroll_value; nk_group_end(view->ctx); } @@ -23300,10 +22830,9 @@ nk_list_view_end(struct nk_list_view *view) NK_API struct nk_rect nk_widget_bounds(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_bounds"); struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_rect(0,0,0,0); nk_layout_peek(&bounds, ctx); @@ -23312,10 +22841,9 @@ nk_widget_bounds(struct nk_context *ctx) NK_API struct nk_vec2 nk_widget_position(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_position"); struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_vec2(0,0); @@ -23325,36 +22853,33 @@ nk_widget_position(struct nk_context *ctx) NK_API struct nk_vec2 nk_widget_size(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_size"); struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return nk_vec2(0,0); nk_layout_peek(&bounds, ctx); return nk_vec2(bounds.w, bounds.h); } -NK_API int +NK_API float nk_widget_width(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_width"); struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; nk_layout_peek(&bounds, ctx); return bounds.w; } -NK_API int +NK_API float nk_widget_height(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_height"); struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return 0; @@ -23364,19 +22889,18 @@ nk_widget_height(struct nk_context *ctx) NK_API nk_bool nk_widget_is_hovered(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_is_hovered"); struct nk_rect c, v; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current || ctx->active != ctx->current) return 0; c = ctx->current->layout->clip; - c.x = (int)((int)c.x); - c.y = (int)((int)c.y); - c.w = (int)((int)c.w); - c.h = (int)((int)c.h); + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); nk_layout_peek(&bounds, ctx); nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); @@ -23387,19 +22911,18 @@ nk_widget_is_hovered(struct nk_context *ctx) NK_API nk_bool nk_widget_is_mouse_clicked(struct nk_context *ctx, enum nk_buttons btn) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_is_mouse_clicked"); struct nk_rect c, v; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current || ctx->active != ctx->current) return 0; c = ctx->current->layout->clip; - c.x = (int)((int)c.x); - c.y = (int)((int)c.y); - c.w = (int)((int)c.w); - c.h = (int)((int)c.h); + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); nk_layout_peek(&bounds, ctx); nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); @@ -23410,19 +22933,18 @@ nk_widget_is_mouse_clicked(struct nk_context *ctx, enum nk_buttons btn) NK_API nk_bool nk_widget_has_mouse_click_down(struct nk_context *ctx, enum nk_buttons btn, nk_bool down) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_widget_has_mouse_click_down"); struct nk_rect c, v; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current || ctx->active != ctx->current) return 0; c = ctx->current->layout->clip; - c.x = (int)((int)c.x); - c.y = (int)((int)c.y); - c.w = (int)((int)c.w); - c.h = (int)((int)c.h); + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); nk_layout_peek(&bounds, ctx); nk_unify(&v, &c, bounds.x, bounds.y, bounds.x + bounds.w, bounds.y + bounds.h); @@ -23433,15 +22955,14 @@ nk_widget_has_mouse_click_down(struct nk_context *ctx, enum nk_buttons btn, nk_b NK_API enum nk_widget_layout_states nk_widget(struct nk_rect *bounds, const struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / nk_widget"); struct nk_rect c, v; struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return NK_WIDGET_INVALID; @@ -23457,20 +22978,20 @@ nk_widget(struct nk_rect *bounds, const struct nk_context *ctx) Example: if (nk_begin(...) {...} nk_end(...); or if (nk_group_begin(...) { nk_group_end(...);} */ - // NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); - // NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); - // NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_MINIMIZED)); + NK_ASSERT(!(layout->flags & NK_WINDOW_HIDDEN)); + NK_ASSERT(!(layout->flags & NK_WINDOW_CLOSED)); - /* need to convert to int here to remove inting point errors */ - bounds->x = (int)((int)bounds->x); - bounds->y = (int)((int)bounds->y); - bounds->w = (int)((int)bounds->w); - bounds->h = (int)((int)bounds->h); + /* need to convert to int here to remove floating point errors */ + bounds->x = (float)((int)bounds->x); + bounds->y = (float)((int)bounds->y); + bounds->w = (float)((int)bounds->w); + bounds->h = (float)((int)bounds->h); - c.x = (int)((int)c.x); - c.y = (int)((int)c.y); - c.w = (int)((int)c.w); - c.h = (int)((int)c.h); + c.x = (float)((int)c.x); + c.y = (float)((int)c.y); + c.w = (float)((int)c.w); + c.h = (float)((int)c.h); nk_unify(&v, &c, bounds->x, bounds->y, bounds->x + bounds->w, bounds->y + bounds->h); if (!NK_INTERSECT(c.x, c.y, c.w, c.h, bounds->x, bounds->y, bounds->w, bounds->h)) @@ -23483,14 +23004,13 @@ NK_API enum nk_widget_layout_states nk_widget_fitting(struct nk_rect *bounds, struct nk_context *ctx, struct nk_vec2 item_padding) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - item_padding / struct"); /* update the bounds to stand without padding */ enum nk_widget_layout_states state; NK_UNUSED(item_padding); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return NK_WIDGET_INVALID; @@ -23500,15 +23020,14 @@ nk_widget_fitting(struct nk_rect *bounds, struct nk_context *ctx, NK_API void nk_spacing(struct nk_context *ctx, int cols) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_spacing"); struct nk_window *win; struct nk_panel *layout; struct nk_rect none; int i, index, rows; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -23523,7 +23042,8 @@ nk_spacing(struct nk_context *ctx, int cols) cols = index; } /* non table layout need to allocate space */ - if (layout->row.type != NK_LAYOUT_DYNAMIC_FIXED && layout->row.type != NK_LAYOUT_STATIC_FIXED) { + if (layout->row.type != NK_LAYOUT_DYNAMIC_FIXED && + layout->row.type != NK_LAYOUT_STATIC_FIXED) { for (i = 0; i < cols; ++i) nk_panel_alloc_space(&none, ctx); } layout->row.index = index; @@ -23543,10 +23063,11 @@ nk_widget_text(struct nk_command_buffer *o, struct nk_rect b, const char *string, int len, const struct nk_text *t, nk_flags a, const struct nk_user_font *f) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_widget_text"); struct nk_rect label; - int text_width; + float text_width; + NK_ASSERT(o); + NK_ASSERT(t); if (!o || !t) return; b.h = NK_MAX(b.h, 2 * t->padding.y); @@ -23562,19 +23083,19 @@ nk_widget_text(struct nk_command_buffer *o, struct nk_rect b, label.x = b.x + t->padding.x; label.w = NK_MAX(0, b.w - 2 * t->padding.x); } else if (a & NK_TEXT_ALIGN_CENTERED) { - label.w = NK_MAX(1, 2 * t->padding.x + (int)text_width); + label.w = NK_MAX(1, 2 * t->padding.x + (float)text_width); label.x = (b.x + t->padding.x + ((b.w - 2 * t->padding.x) - label.w) / 2); label.x = NK_MAX(b.x + t->padding.x, label.x); label.w = NK_MIN(b.x + b.w, label.x + label.w); if (label.w >= label.x) label.w -= label.x; } else if (a & NK_TEXT_ALIGN_RIGHT) { - label.x = NK_MAX(b.x + t->padding.x, (b.x + b.w) - (2 * t->padding.x + (int)text_width)); - label.w = (int)text_width + 2 * t->padding.x; + label.x = NK_MAX(b.x + t->padding.x, (b.x + b.w) - (2 * t->padding.x + (float)text_width)); + label.w = (float)text_width + 2 * t->padding.x; } else return; /* align in y-axis */ if (a & NK_TEXT_ALIGN_MIDDLE) { - label.y = b.y + b.h/2.0f - (int)f->height/2.0f; + label.y = b.y + b.h/2.0f - (float)f->height/2.0f; label.h = NK_MAX(b.h/2.0f, b.h - (b.h/2.0f + f->height/2.0f)); } else if (a & NK_TEXT_ALIGN_BOTTOM) { label.y = b.y + b.h - f->height; @@ -23587,8 +23108,7 @@ nk_widget_text_wrap(struct nk_command_buffer *o, struct nk_rect b, const char *string, int len, const struct nk_text *t, const struct nk_user_font *f) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); - int width; + float width; int glyphs = 0; int fitting = 0; int done = 0; @@ -23596,8 +23116,8 @@ nk_widget_text_wrap(struct nk_command_buffer *o, struct nk_rect b, struct nk_text text; NK_INTERN nk_rune seperator[] = {' '}; - // NK_ASSERT(o); - // NK_ASSERT(t); + NK_ASSERT(o); + NK_ASSERT(t); if (!o || !t) return; text.padding = nk_vec2(0,0); @@ -23626,7 +23146,6 @@ NK_API void nk_text_colored(struct nk_context *ctx, const char *str, int len, nk_flags alignment, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - alignment, / nk_flags"); struct nk_window *win; const struct nk_style *style; @@ -23634,9 +23153,9 @@ nk_text_colored(struct nk_context *ctx, const char *str, int len, struct nk_rect bounds; struct nk_text text; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; @@ -23654,7 +23173,6 @@ NK_API void nk_text_wrap_colored(struct nk_context *ctx, const char *str, int len, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - len, / int"); struct nk_window *win; const struct nk_style *style; @@ -23662,9 +23180,9 @@ nk_text_wrap_colored(struct nk_context *ctx, const char *str, struct nk_rect bounds; struct nk_text text; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; @@ -23683,7 +23201,6 @@ NK_API void nk_labelf_colored(struct nk_context *ctx, nk_flags flags, struct nk_color color, const char *fmt, ...) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); va_list args; va_start(args, fmt); nk_labelfv_colored(ctx, flags, color, fmt, args); @@ -23693,7 +23210,6 @@ NK_API void nk_labelf_colored_wrap(struct nk_context *ctx, struct nk_color color, const char *fmt, ...) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fmt / const"); va_list args; va_start(args, fmt); nk_labelfv_colored_wrap(ctx, color, fmt, args); @@ -23702,7 +23218,6 @@ nk_labelf_colored_wrap(struct nk_context *ctx, struct nk_color color, NK_API void nk_labelf(struct nk_context *ctx, nk_flags flags, const char *fmt, ...) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_labelf"); va_list args; va_start(args, fmt); nk_labelfv(ctx, flags, fmt, args); @@ -23711,7 +23226,6 @@ nk_labelf(struct nk_context *ctx, nk_flags flags, const char *fmt, ...) NK_API void nk_labelf_wrap(struct nk_context *ctx, const char *fmt,...) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_labelf_wrap"); va_list args; va_start(args, fmt); nk_labelfv_wrap(ctx, fmt, args); @@ -23721,7 +23235,6 @@ NK_API void nk_labelfv_colored(struct nk_context *ctx, nk_flags flags, struct nk_color color, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); char buf[256]; nk_strfmt(buf, NK_LEN(buf), fmt, args); nk_label_colored(ctx, buf, flags, color); @@ -23731,7 +23244,6 @@ NK_API void nk_labelfv_colored_wrap(struct nk_context *ctx, struct nk_color color, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fmt / const"); char buf[256]; nk_strfmt(buf, NK_LEN(buf), fmt, args); nk_label_colored_wrap(ctx, buf, color); @@ -23740,7 +23252,6 @@ nk_labelfv_colored_wrap(struct nk_context *ctx, struct nk_color color, NK_API void nk_labelfv(struct nk_context *ctx, nk_flags flags, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_labelfv"); char buf[256]; nk_strfmt(buf, NK_LEN(buf), fmt, args); nk_label(ctx, buf, flags); @@ -23749,7 +23260,6 @@ nk_labelfv(struct nk_context *ctx, nk_flags flags, const char *fmt, va_list args NK_API void nk_labelfv_wrap(struct nk_context *ctx, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_labelfv_wrap"); char buf[256]; nk_strfmt(buf, NK_LEN(buf), fmt, args); nk_label_wrap(ctx, buf); @@ -23758,37 +23268,32 @@ nk_labelfv_wrap(struct nk_context *ctx, const char *fmt, va_list args) NK_API void nk_value_bool(struct nk_context *ctx, const char *prefix, int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_bool"); nk_labelf(ctx, NK_TEXT_LEFT, "%s: %s", prefix, ((value) ? "true": "false")); } NK_API void nk_value_int(struct nk_context *ctx, const char *prefix, int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_int"); nk_labelf(ctx, NK_TEXT_LEFT, "%s: %d", prefix, value); } NK_API void nk_value_uint(struct nk_context *ctx, const char *prefix, unsigned int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_uint"); nk_labelf(ctx, NK_TEXT_LEFT, "%s: %u", prefix, value); } -// NK_API void -// nk_value_int(struct nk_context *ctx, const char *prefix, int value) -// { -// double double_value = (double)value; -// nk_labelf(ctx, NK_TEXT_LEFT, "%s: %.3f", prefix, double_value); -// } +NK_API void +nk_value_float(struct nk_context *ctx, const char *prefix, float value) +{ + double double_value = (double)value; + nk_labelf(ctx, NK_TEXT_LEFT, "%s: %.3f", prefix, double_value); +} NK_API void nk_value_color_byte(struct nk_context *ctx, const char *p, struct nk_color c) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_color_byte"); nk_labelf(ctx, NK_TEXT_LEFT, "%s: (%d, %d, %d, %d)", p, c.r, c.g, c.b, c.a); } NK_API void -nk_value_color_int(struct nk_context *ctx, const char *p, struct nk_color color) +nk_value_color_float(struct nk_context *ctx, const char *p, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_color_int"); double c[4]; nk_color_dv(c, color); nk_labelf(ctx, NK_TEXT_LEFT, "%s: (%.2f, %.2f, %.2f, %.2f)", p, c[0], c[1], c[2], c[3]); @@ -23796,7 +23301,6 @@ nk_value_color_int(struct nk_context *ctx, const char *p, struct nk_color color) NK_API void nk_value_color_hex(struct nk_context *ctx, const char *prefix, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_value_color_hex"); char hex[16]; nk_color_hex_rgba(hex, color); nk_labelf(ctx, NK_TEXT_LEFT, "%s: %s", prefix, hex); @@ -23805,43 +23309,37 @@ nk_value_color_hex(struct nk_context *ctx, const char *prefix, struct nk_color c NK_API void nk_text(struct nk_context *ctx, const char *str, int len, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_text"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; nk_text_colored(ctx, str, len, alignment, ctx->style.text.color); } NK_API void nk_text_wrap(struct nk_context *ctx, const char *str, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_text_wrap"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; nk_text_wrap_colored(ctx, str, len, ctx->style.text.color); } NK_API void nk_label(struct nk_context *ctx, const char *str, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_label"); - nk_text(ctx, str, strlen(str), alignment); + nk_text(ctx, str, nk_strlen(str), alignment); } NK_API void nk_label_colored(struct nk_context *ctx, const char *str, nk_flags align, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); - nk_text_colored(ctx, str, strlen(str), align, color); + nk_text_colored(ctx, str, nk_strlen(str), align, color); } NK_API void nk_label_wrap(struct nk_context *ctx, const char *str) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_label_wrap"); - nk_text_wrap(ctx, str, strlen(str)); + nk_text_wrap(ctx, str, nk_strlen(str)); } NK_API void nk_label_colored_wrap(struct nk_context *ctx, const char *str, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_label_colored_wrap"); - nk_text_wrap_colored(ctx, str, strlen(str), color); + nk_text_wrap_colored(ctx, str, nk_strlen(str), color); } @@ -23856,7 +23354,6 @@ nk_label_colored_wrap(struct nk_context *ctx, const char *str, struct nk_color c NK_API nk_handle nk_handle_ptr(void *ptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - ptr / nk_handle_ptr"); nk_handle handle = {0}; handle.ptr = ptr; return handle; @@ -23864,59 +23361,53 @@ nk_handle_ptr(void *ptr) NK_API nk_handle nk_handle_id(int id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - id / nk_handle_id"); nk_handle handle; nk_zero_struct(handle); handle.id = id; return handle; } NK_API struct nk_image -nk_subimage_ptr(void *ptr, unsigned short w, unsigned short h, struct nk_rect r) +nk_subimage_ptr(void *ptr, nk_ushort w, nk_ushort h, struct nk_rect r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - ptr / nk_subimage_ptr"); struct nk_image s; nk_zero(&s, sizeof(s)); s.handle.ptr = ptr; s.w = w; s.h = h; - s.region[0] = (unsigned short)r.x; - s.region[1] = (unsigned short)r.y; - s.region[2] = (unsigned short)r.w; - s.region[3] = (unsigned short)r.h; + s.region[0] = (nk_ushort)r.x; + s.region[1] = (nk_ushort)r.y; + s.region[2] = (nk_ushort)r.w; + s.region[3] = (nk_ushort)r.h; return s; } NK_API struct nk_image -nk_subimage_id(int id, unsigned short w, unsigned short h, struct nk_rect r) +nk_subimage_id(int id, nk_ushort w, nk_ushort h, struct nk_rect r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - id / nk_subimage_id"); struct nk_image s; nk_zero(&s, sizeof(s)); s.handle.id = id; s.w = w; s.h = h; - s.region[0] = (unsigned short)r.x; - s.region[1] = (unsigned short)r.y; - s.region[2] = (unsigned short)r.w; - s.region[3] = (unsigned short)r.h; + s.region[0] = (nk_ushort)r.x; + s.region[1] = (nk_ushort)r.y; + s.region[2] = (nk_ushort)r.w; + s.region[3] = (nk_ushort)r.h; return s; } NK_API struct nk_image -nk_subimage_handle(nk_handle handle, unsigned short w, unsigned short h, - struct nk_rect r) +nk_subimage_handle(nk_handle handle, nk_ushort w, nk_ushort h, struct nk_rect r) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / struct"); struct nk_image s; nk_zero(&s, sizeof(s)); s.handle = handle; s.w = w; s.h = h; - s.region[0] = (unsigned short)r.x; - s.region[1] = (unsigned short)r.y; - s.region[2] = (unsigned short)r.w; - s.region[3] = (unsigned short)r.h; + s.region[0] = (nk_ushort)r.x; + s.region[1] = (nk_ushort)r.y; + s.region[2] = (nk_ushort)r.w; + s.region[3] = (nk_ushort)r.h; return s; } NK_API struct nk_image nk_image_handle(nk_handle handle) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - handle / nk_image_handle"); struct nk_image s; nk_zero(&s, sizeof(s)); s.handle = handle; @@ -23930,10 +23421,9 @@ nk_image_handle(nk_handle handle) NK_API struct nk_image nk_image_ptr(void *ptr) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - ptr / nk_image_ptr"); struct nk_image s; nk_zero(&s, sizeof(s)); - // NK_ASSERT(ptr); + NK_ASSERT(ptr); s.handle.ptr = ptr; s.w = 0; s.h = 0; s.region[0] = 0; @@ -23945,7 +23435,6 @@ nk_image_ptr(void *ptr) NK_API struct nk_image nk_image_id(int id) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - id / nk_image_id"); struct nk_image s; nk_zero(&s, sizeof(s)); s.handle.id = id; @@ -23959,20 +23448,18 @@ nk_image_id(int id) NK_API nk_bool nk_image_is_subimage(const struct nk_image* img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_image_is_subimage"); - // NK_ASSERT(img); + NK_ASSERT(img); return !(img->w == 0 && img->h == 0); } NK_API void nk_image(struct nk_context *ctx, struct nk_image img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_image"); struct nk_window *win; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; @@ -23982,13 +23469,12 @@ nk_image(struct nk_context *ctx, struct nk_image img) NK_API void nk_image_color(struct nk_context *ctx, struct nk_image img, struct nk_color col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_image_color"); struct nk_window *win; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; win = ctx->current; @@ -24000,6 +23486,113 @@ nk_image_color(struct nk_context *ctx, struct nk_image img, struct nk_color col) +/* =============================================================== + * + * 9-SLICE + * + * ===============================================================*/ +NK_API struct nk_nine_slice +nk_sub9slice_ptr(void *ptr, nk_ushort w, nk_ushort h, struct nk_rect rgn, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + i->handle.ptr = ptr; + i->w = w; i->h = h; + i->region[0] = (nk_ushort)rgn.x; + i->region[1] = (nk_ushort)rgn.y; + i->region[2] = (nk_ushort)rgn.w; + i->region[3] = (nk_ushort)rgn.h; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API struct nk_nine_slice +nk_sub9slice_id(int id, nk_ushort w, nk_ushort h, struct nk_rect rgn, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + i->handle.id = id; + i->w = w; i->h = h; + i->region[0] = (nk_ushort)rgn.x; + i->region[1] = (nk_ushort)rgn.y; + i->region[2] = (nk_ushort)rgn.w; + i->region[3] = (nk_ushort)rgn.h; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API struct nk_nine_slice +nk_sub9slice_handle(nk_handle handle, nk_ushort w, nk_ushort h, struct nk_rect rgn, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + i->handle = handle; + i->w = w; i->h = h; + i->region[0] = (nk_ushort)rgn.x; + i->region[1] = (nk_ushort)rgn.y; + i->region[2] = (nk_ushort)rgn.w; + i->region[3] = (nk_ushort)rgn.h; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API struct nk_nine_slice +nk_nine_slice_handle(nk_handle handle, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + i->handle = handle; + i->w = 0; i->h = 0; + i->region[0] = 0; + i->region[1] = 0; + i->region[2] = 0; + i->region[3] = 0; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API struct nk_nine_slice +nk_nine_slice_ptr(void *ptr, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + NK_ASSERT(ptr); + i->handle.ptr = ptr; + i->w = 0; i->h = 0; + i->region[0] = 0; + i->region[1] = 0; + i->region[2] = 0; + i->region[3] = 0; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API struct nk_nine_slice +nk_nine_slice_id(int id, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b) +{ + struct nk_nine_slice s; + struct nk_image *i = &s.img; + nk_zero(&s, sizeof(s)); + i->handle.id = id; + i->w = 0; i->h = 0; + i->region[0] = 0; + i->region[1] = 0; + i->region[2] = 0; + i->region[3] = 0; + s.l = l; s.t = t; s.r = r; s.b = b; + return s; +} +NK_API int +nk_nine_slice_is_sub9slice(const struct nk_nine_slice* slice) +{ + NK_ASSERT(slice); + return !(slice->img.w == 0 && slice->img.h == 0); +} + + + + + /* ============================================================== * * BUTTON @@ -24008,9 +23601,8 @@ nk_image_color(struct nk_context *ctx, struct nk_image img, struct nk_color col) NK_LIB void nk_draw_symbol(struct nk_command_buffer *out, enum nk_symbol_type type, struct nk_rect content, struct nk_color background, struct nk_color foreground, - int border_width, const struct nk_user_font *font) + float border_width, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - border_width, / int"); switch (type) { case NK_SYMBOL_X: case NK_SYMBOL_UNDERSCORE: @@ -24063,7 +23655,6 @@ NK_LIB nk_bool nk_button_behavior(nk_flags *state, struct nk_rect r, const struct nk_input *i, enum nk_button_behavior behavior) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input / const"); int ret = 0; nk_widget_state_reset(state); if (!i) return 0; @@ -24092,7 +23683,6 @@ nk_draw_button(struct nk_command_buffer *out, const struct nk_rect *bounds, nk_flags state, const struct nk_style_button *style) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_button / const"); const struct nk_style_item *background; if (state & NK_WIDGET_STATE_HOVER) background = &style->hover; @@ -24100,11 +23690,17 @@ nk_draw_button(struct nk_command_buffer *out, background = &style->active; else background = &style->normal; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, *bounds, &background->data.image, nk_white); - } else { - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + break; } return background; } @@ -24113,9 +23709,10 @@ nk_do_button(nk_flags *state, struct nk_command_buffer *out, struct nk_rect r, const struct nk_style_button *style, const struct nk_input *in, enum nk_button_behavior behavior, struct nk_rect *content) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - behavior / enum"); struct nk_rect bounds; - + NK_ASSERT(style); + NK_ASSERT(state); + NK_ASSERT(out); if (!out || !style) return nk_false; @@ -24138,9 +23735,19 @@ nk_draw_button_text(struct nk_command_buffer *out, const struct nk_style_button *style, const char *txt, int len, nk_flags text_alignment, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_button_text"); struct nk_text text; - nk_draw_button(out, bounds, state, style); + const struct nk_style_item *background; + background = nk_draw_button(out, bounds, state, style); + + /* select correct colors/images */ + if (background->type == NK_STYLE_ITEM_COLOR) + text.background = background->data.color; + else text.background = style->text_background; + if (state & NK_WIDGET_STATE_HOVER) + text.text = style->text_hover; + else if (state & NK_WIDGET_STATE_ACTIVED) + text.text = style->text_active; + else text.text = style->text_normal; text.padding = nk_vec2(0,0); nk_widget_text(out, *content, txt, len, &text, text_alignment, font); @@ -24152,15 +23759,14 @@ nk_do_button_text(nk_flags *state, const struct nk_style_button *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_do_button_text"); struct nk_rect content; int ret = nk_false; - // NK_ASSERT(state); - // NK_ASSERT(style); - // NK_ASSERT(out); - // NK_ASSERT(string); - // NK_ASSERT(font); + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(string); + NK_ASSERT(font); if (!out || !style || !font || !string) return nk_false; @@ -24176,7 +23782,6 @@ nk_draw_button_symbol(struct nk_command_buffer *out, nk_flags state, const struct nk_style_button *style, enum nk_symbol_type type, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_draw_button_symbol"); struct nk_color sym, bg; const struct nk_style_item *background; @@ -24200,14 +23805,13 @@ nk_do_button_symbol(nk_flags *state, const struct nk_style_button *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int ret; struct nk_rect content; - // NK_ASSERT(state); - // NK_ASSERT(style); - // NK_ASSERT(font); - // NK_ASSERT(out); + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(font); + NK_ASSERT(out); if (!out || !style || !font || !state) return nk_false; @@ -24222,7 +23826,6 @@ nk_draw_button_image(struct nk_command_buffer *out, const struct nk_rect *bounds, const struct nk_rect *content, nk_flags state, const struct nk_style_button *style, const struct nk_image *img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - state, / nk_flags"); nk_draw_button(out, bounds, state, style); nk_draw_image(out, *content, img, nk_white); } @@ -24232,13 +23835,12 @@ nk_do_button_image(nk_flags *state, struct nk_image img, enum nk_button_behavior b, const struct nk_style_button *style, const struct nk_input *in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_button / const"); int ret; struct nk_rect content; - // NK_ASSERT(state); - // NK_ASSERT(style); - // NK_ASSERT(out); + NK_ASSERT(state); + NK_ASSERT(style); + NK_ASSERT(out); if (!out || !style || !state) return nk_false; @@ -24260,7 +23862,6 @@ nk_draw_button_text_symbol(struct nk_command_buffer *out, const char *str, int len, enum nk_symbol_type type, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); struct nk_color sym; struct nk_text text; const struct nk_style_item *background; @@ -24294,14 +23895,13 @@ nk_do_button_text_symbol(nk_flags *state, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_user_font *font, const struct nk_input *in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int ret; struct nk_rect tri = {0,0,0,0}; struct nk_rect content; - // NK_ASSERT(style); - // NK_ASSERT(out); - // NK_ASSERT(font); + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(font); if (!out || !style || !font) return nk_false; @@ -24327,7 +23927,6 @@ nk_draw_button_text_image(struct nk_command_buffer *out, const char *str, int len, const struct nk_user_font *font, const struct nk_image *img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_image / const"); struct nk_text text; const struct nk_style_item *background; background = nk_draw_button(out, bounds, state, style); @@ -24353,15 +23952,14 @@ nk_do_button_text_image(nk_flags *state, enum nk_button_behavior behavior, const struct nk_style_button *style, const struct nk_user_font *font, const struct nk_input *in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int ret; struct nk_rect icon; struct nk_rect content; - // NK_ASSERT(style); - // NK_ASSERT(state); - // NK_ASSERT(font); - // NK_ASSERT(out); + NK_ASSERT(style); + NK_ASSERT(state); + NK_ASSERT(font); + NK_ASSERT(out); if (!out || !font || !style || !str) return nk_false; @@ -24386,23 +23984,21 @@ nk_do_button_text_image(nk_flags *state, NK_API void nk_button_set_behavior(struct nk_context *ctx, enum nk_button_behavior behavior) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_set_behavior"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return; ctx->button_behavior = behavior; } NK_API nk_bool nk_button_push_behavior(struct nk_context *ctx, enum nk_button_behavior behavior) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_push_behavior"); struct nk_config_stack_button_behavior *button_stack; struct nk_config_stack_button_behavior_element *element; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; button_stack = &ctx->stacks.button_behaviors; - // NK_ASSERT(button_stack->head < (int)NK_LEN(button_stack->elements)); + NK_ASSERT(button_stack->head < (int)NK_LEN(button_stack->elements)); if (button_stack->head >= (int)NK_LEN(button_stack->elements)) return 0; @@ -24415,15 +24011,14 @@ nk_button_push_behavior(struct nk_context *ctx, enum nk_button_behavior behavior NK_API nk_bool nk_button_pop_behavior(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_pop_behavior"); struct nk_config_stack_button_behavior *button_stack; struct nk_config_stack_button_behavior_element *element; - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; button_stack = &ctx->stacks.button_behaviors; - // NK_ASSERT(button_stack->head > 0); + NK_ASSERT(button_stack->head > 0); if (button_stack->head < 1) return 0; @@ -24435,7 +24030,6 @@ NK_API nk_bool nk_button_text_styled(struct nk_context *ctx, const struct nk_style_button *style, const char *title, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_button / const"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24443,10 +24037,10 @@ nk_button_text_styled(struct nk_context *ctx, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(style); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(style); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!style || !ctx || !ctx->current || !ctx->current->layout) return 0; win = ctx->current; @@ -24462,26 +24056,22 @@ nk_button_text_styled(struct nk_context *ctx, NK_API nk_bool nk_button_text(struct nk_context *ctx, const char *title, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_text"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; return nk_button_text_styled(ctx, &ctx->style.button, title, len); } NK_API nk_bool nk_button_label_styled(struct nk_context *ctx, const struct nk_style_button *style, const char *title) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_button / const"); - return nk_button_text_styled(ctx, style, title, strlen(title)); + return nk_button_text_styled(ctx, style, title, nk_strlen(title)); } NK_API nk_bool nk_button_label(struct nk_context *ctx, const char *title) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_button_label / NK_API"); - return nk_button_text(ctx, title, strlen(title)); + return nk_button_text(ctx, title, nk_strlen(title)); } NK_API nk_bool nk_button_color(struct nk_context *ctx, struct nk_color color) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_color"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24492,9 +24082,9 @@ nk_button_color(struct nk_context *ctx, struct nk_color color) struct nk_rect content; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -24518,7 +24108,6 @@ NK_API nk_bool nk_button_symbol_styled(struct nk_context *ctx, const struct nk_style_button *style, enum nk_symbol_type symbol) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_button / const"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24526,9 +24115,9 @@ nk_button_symbol_styled(struct nk_context *ctx, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -24543,8 +24132,7 @@ nk_button_symbol_styled(struct nk_context *ctx, NK_API nk_bool nk_button_symbol(struct nk_context *ctx, enum nk_symbol_type symbol) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_symbol"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; return nk_button_symbol_styled(ctx, &ctx->style.button, symbol); } @@ -24552,7 +24140,6 @@ NK_API nk_bool nk_button_image_styled(struct nk_context *ctx, const struct nk_style_button *style, struct nk_image img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - img / struct"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24560,9 +24147,9 @@ nk_button_image_styled(struct nk_context *ctx, const struct nk_style_button *sty struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -24578,8 +24165,7 @@ nk_button_image_styled(struct nk_context *ctx, const struct nk_style_button *sty NK_API nk_bool nk_button_image(struct nk_context *ctx, struct nk_image img) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_button_image"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; return nk_button_image_styled(ctx, &ctx->style.button, img); } @@ -24588,7 +24174,6 @@ nk_button_symbol_text_styled(struct nk_context *ctx, const struct nk_style_button *style, enum nk_symbol_type symbol, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24596,9 +24181,9 @@ nk_button_symbol_text_styled(struct nk_context *ctx, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -24616,30 +24201,26 @@ NK_API nk_bool nk_button_symbol_text(struct nk_context *ctx, enum nk_symbol_type symbol, const char* text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - char* / const"); - // NK_ASSERT(ctx); + NK_ASSERT(ctx); if (!ctx) return 0; return nk_button_symbol_text_styled(ctx, &ctx->style.button, symbol, text, len, align); } NK_API nk_bool nk_button_symbol_label(struct nk_context *ctx, enum nk_symbol_type symbol, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); - return nk_button_symbol_text(ctx, symbol, label, strlen(label), align); + return nk_button_symbol_text(ctx, symbol, label, nk_strlen(label), align); } NK_API nk_bool nk_button_symbol_label_styled(struct nk_context *ctx, const struct nk_style_button *style, enum nk_symbol_type symbol, const char *title, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); - return nk_button_symbol_text_styled(ctx, style, symbol, title, strlen(title), align); + return nk_button_symbol_text_styled(ctx, style, symbol, title, nk_strlen(title), align); } NK_API nk_bool nk_button_image_text_styled(struct nk_context *ctx, const struct nk_style_button *style, struct nk_image img, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - len, / int"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24647,9 +24228,9 @@ nk_button_image_text_styled(struct nk_context *ctx, struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -24667,21 +24248,18 @@ NK_API nk_bool nk_button_image_text(struct nk_context *ctx, struct nk_image img, const char *text, int len, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); return nk_button_image_text_styled(ctx, &ctx->style.button,img, text, len, align); } NK_API nk_bool nk_button_image_label(struct nk_context *ctx, struct nk_image img, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); - return nk_button_image_text(ctx, img, label, strlen(label), align); + return nk_button_image_text(ctx, img, label, nk_strlen(label), align); } NK_API nk_bool nk_button_image_label_styled(struct nk_context *ctx, const struct nk_style_button *style, struct nk_image img, const char *label, nk_flags text_alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); - return nk_button_image_text_styled(ctx, style, img, label, strlen(label), text_alignment); + return nk_button_image_text_styled(ctx, style, img, label, nk_strlen(label), text_alignment); } @@ -24697,7 +24275,6 @@ NK_LIB nk_bool nk_toggle_behavior(const struct nk_input *in, struct nk_rect select, nk_flags *state, nk_bool active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - state, / nk_flags"); nk_widget_state_reset(state); if (nk_button_behavior(state, select, in, NK_BUTTON_DEFAULT)) { *state = NK_WIDGET_STATE_ACTIVE; @@ -24716,7 +24293,6 @@ nk_draw_checkbox(struct nk_command_buffer *out, const struct nk_rect *cursors, const char *string, int len, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); const struct nk_style_item *background; const struct nk_style_item *cursor; struct nk_text text; @@ -24759,7 +24335,6 @@ nk_draw_option(struct nk_command_buffer *out, const struct nk_rect *cursors, const char *string, int len, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); const struct nk_style_item *background; const struct nk_style_item *cursor; struct nk_text text; @@ -24802,16 +24377,15 @@ nk_do_toggle(nk_flags *state, const struct nk_style_toggle *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int was_active; struct nk_rect bounds; struct nk_rect select; struct nk_rect cursor; struct nk_rect label; - // NK_ASSERT(style); - // NK_ASSERT(out); - // NK_ASSERT(font); + NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(font); if (!out || !style || !font || !active) return 0; @@ -24866,7 +24440,6 @@ nk_do_toggle(nk_flags *state, NK_API nk_bool nk_check_text(struct nk_context *ctx, const char *text, int len, nk_bool active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_check_text"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24875,9 +24448,9 @@ nk_check_text(struct nk_context *ctx, const char *text, int len, nk_bool active) struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return active; @@ -24896,10 +24469,9 @@ NK_API unsigned int nk_check_flags_text(struct nk_context *ctx, const char *text, int len, unsigned int flags, unsigned int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - flags / unsigned"); int old_active; - // NK_ASSERT(ctx); - // NK_ASSERT(text); + NK_ASSERT(ctx); + NK_ASSERT(text); if (!ctx || !text) return flags; old_active = (int)((flags & value) & value); if (nk_check_text(ctx, text, len, old_active)) @@ -24910,11 +24482,10 @@ nk_check_flags_text(struct nk_context *ctx, const char *text, int len, NK_API nk_bool nk_checkbox_text(struct nk_context *ctx, const char *text, int len, nk_bool *active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_checkbox_text"); int old_val; - // NK_ASSERT(ctx); - // NK_ASSERT(text); - // NK_ASSERT(active); + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(active); if (!ctx || !text || !active) return 0; old_val = *active; *active = nk_check_text(ctx, text, len, *active); @@ -24924,11 +24495,10 @@ NK_API nk_bool nk_checkbox_flags_text(struct nk_context *ctx, const char *text, int len, unsigned int *flags, unsigned int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - flags / unsigned"); nk_bool active; - // NK_ASSERT(ctx); - // NK_ASSERT(text); - // NK_ASSERT(flags); + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(flags); if (!ctx || !text || !flags) return 0; active = (int)((*flags & value) & value); @@ -24941,25 +24511,21 @@ nk_checkbox_flags_text(struct nk_context *ctx, const char *text, int len, } NK_API nk_bool nk_check_label(struct nk_context *ctx, const char *label, nk_bool active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_check_label / NK_API"); - return nk_check_text(ctx, label, strlen(label), active); + return nk_check_text(ctx, label, nk_strlen(label), active); } NK_API unsigned int nk_check_flags_label(struct nk_context *ctx, const char *label, unsigned int flags, unsigned int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - flags / unsigned"); - return nk_check_flags_text(ctx, label, strlen(label), flags, value); + return nk_check_flags_text(ctx, label, nk_strlen(label), flags, value); } NK_API nk_bool nk_checkbox_label(struct nk_context *ctx, const char *label, nk_bool *active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_checkbox_label / NK_API"); - return nk_checkbox_text(ctx, label, strlen(label), active); + return nk_checkbox_text(ctx, label, nk_strlen(label), active); } NK_API nk_bool nk_checkbox_flags_label(struct nk_context *ctx, const char *label, unsigned int *flags, unsigned int value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - flags / unsigned"); - return nk_checkbox_flags_text(ctx, label, strlen(label), flags, value); + return nk_checkbox_flags_text(ctx, label, nk_strlen(label), flags, value); } /*---------------------------------------------------------------- * @@ -24969,7 +24535,6 @@ NK_API nk_bool nk_checkbox_flags_label(struct nk_context *ctx, const char *label NK_API nk_bool nk_option_text(struct nk_context *ctx, const char *text, int len, nk_bool is_active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_option_text"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -24978,9 +24543,9 @@ nk_option_text(struct nk_context *ctx, const char *text, int len, nk_bool is_act struct nk_rect bounds; enum nk_widget_layout_states state; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return is_active; @@ -24998,11 +24563,10 @@ nk_option_text(struct nk_context *ctx, const char *text, int len, nk_bool is_act NK_API nk_bool nk_radio_text(struct nk_context *ctx, const char *text, int len, nk_bool *active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_radio_text"); int old_value; - // NK_ASSERT(ctx); - // NK_ASSERT(text); - // NK_ASSERT(active); + NK_ASSERT(ctx); + NK_ASSERT(text); + NK_ASSERT(active); if (!ctx || !text || !active) return 0; old_value = *active; *active = nk_option_text(ctx, text, len, old_value); @@ -25011,14 +24575,12 @@ nk_radio_text(struct nk_context *ctx, const char *text, int len, nk_bool *active NK_API nk_bool nk_option_label(struct nk_context *ctx, const char *label, nk_bool active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_option_label"); - return nk_option_text(ctx, label, strlen(label), active); + return nk_option_text(ctx, label, nk_strlen(label), active); } NK_API nk_bool nk_radio_label(struct nk_context *ctx, const char *label, nk_bool *active) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_radio_label"); - return nk_radio_text(ctx, label, strlen(label), active); + return nk_radio_text(ctx, label, nk_strlen(label), active); } @@ -25037,7 +24599,6 @@ nk_draw_selectable(struct nk_command_buffer *out, const struct nk_rect *icon, const struct nk_image *img, enum nk_symbol_type sym, const char *string, int len, nk_flags align, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - string / const"); const struct nk_style_item *background; struct nk_text text; text.padding = style->padding; @@ -25067,12 +24628,19 @@ nk_draw_selectable(struct nk_command_buffer *out, } } /* draw selectable background and text */ - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, *bounds, &background->data.image, nk_white); - text.background = nk_rgba(0,0,0,0); - } else { - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - text.background = background->data.color; + switch (background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + break; } if (icon) { if (img) nk_draw_image(out, *icon, img, nk_white); @@ -25086,17 +24654,16 @@ nk_do_selectable(nk_flags *state, struct nk_command_buffer *out, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int old_value; struct nk_rect touch; - // NK_ASSERT(state); - // NK_ASSERT(out); - // NK_ASSERT(str); - // NK_ASSERT(len); - // NK_ASSERT(value); - // NK_ASSERT(style); - // NK_ASSERT(font); + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); if (!state || !out || !str || !len || !value || !style || !font) return 0; old_value = *value; @@ -25123,18 +24690,17 @@ nk_do_selectable_image(nk_flags *state, struct nk_command_buffer *out, const struct nk_image *img, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input / const"); nk_bool old_value; struct nk_rect touch; struct nk_rect icon; - // NK_ASSERT(state); - // NK_ASSERT(out); - // NK_ASSERT(str); - // NK_ASSERT(len); - // NK_ASSERT(value); - // NK_ASSERT(style); - // NK_ASSERT(font); + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); if (!state || !out || !str || !len || !value || !style || !font) return 0; old_value = *value; @@ -25171,18 +24737,17 @@ nk_do_selectable_symbol(nk_flags *state, struct nk_command_buffer *out, enum nk_symbol_type sym, const struct nk_style_selectable *style, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_input / const"); int old_value; struct nk_rect touch; struct nk_rect icon; - // NK_ASSERT(state); - // NK_ASSERT(out); - // NK_ASSERT(str); - // NK_ASSERT(len); - // NK_ASSERT(value); - // NK_ASSERT(style); - // NK_ASSERT(font); + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(str); + NK_ASSERT(len); + NK_ASSERT(value); + NK_ASSERT(style); + NK_ASSERT(font); if (!state || !out || !str || !len || !value || !style || !font) return 0; old_value = *value; @@ -25218,7 +24783,6 @@ NK_API nk_bool nk_selectable_text(struct nk_context *ctx, const char *str, int len, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - align, / nk_flags"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -25227,10 +24791,10 @@ nk_selectable_text(struct nk_context *ctx, const char *str, int len, enum nk_widget_layout_states state; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(value); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !value) return 0; @@ -25248,7 +24812,6 @@ NK_API nk_bool nk_selectable_image_text(struct nk_context *ctx, struct nk_image img, const char *str, int len, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - str / const"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -25257,10 +24820,10 @@ nk_selectable_image_text(struct nk_context *ctx, struct nk_image img, enum nk_widget_layout_states state; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(value); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !value) return 0; @@ -25278,7 +24841,6 @@ NK_API nk_bool nk_selectable_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, const char *str, int len, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - str / const"); struct nk_window *win; struct nk_panel *layout; const struct nk_input *in; @@ -25287,10 +24849,10 @@ nk_selectable_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, enum nk_widget_layout_states state; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(value); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(value); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !value) return 0; @@ -25308,56 +24870,47 @@ NK_API nk_bool nk_selectable_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, const char *title, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); - return nk_selectable_symbol_text(ctx, sym, title, strlen(title), align, value); + return nk_selectable_symbol_text(ctx, sym, title, nk_strlen(title), align, value); } NK_API nk_bool nk_select_text(struct nk_context *ctx, const char *str, int len, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - align, / nk_flags"); nk_selectable_text(ctx, str, len, align, &value);return value; } NK_API nk_bool nk_selectable_label(struct nk_context *ctx, const char *str, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_selectable_label / NK_API"); - return nk_selectable_text(ctx, str, strlen(str), align, value); + return nk_selectable_text(ctx, str, nk_strlen(str), align, value); } NK_API nk_bool nk_selectable_image_label(struct nk_context *ctx,struct nk_image img, const char *str, nk_flags align, nk_bool *value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - str / const"); - return nk_selectable_image_text(ctx, img, str, strlen(str), align, value); + return nk_selectable_image_text(ctx, img, str, nk_strlen(str), align, value); } NK_API nk_bool nk_select_label(struct nk_context *ctx, const char *str, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_select_label / NK_API"); - nk_selectable_text(ctx, str, strlen(str), align, &value);return value; + nk_selectable_text(ctx, str, nk_strlen(str), align, &value);return value; } NK_API nk_bool nk_select_image_label(struct nk_context *ctx, struct nk_image img, const char *str, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - str / const"); - nk_selectable_image_text(ctx, img, str, strlen(str), align, &value);return value; + nk_selectable_image_text(ctx, img, str, nk_strlen(str), align, &value);return value; } NK_API nk_bool nk_select_image_text(struct nk_context *ctx, struct nk_image img, const char *str, int len, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - str / const"); nk_selectable_image_text(ctx, img, str, len, align, &value);return value; } NK_API nk_bool nk_select_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, const char *title, int title_len, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); nk_selectable_symbol_text(ctx, sym, title, title_len, align, &value);return value; } NK_API nk_bool nk_select_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, const char *title, nk_flags align, nk_bool value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - title / const"); - return nk_select_symbol_text(ctx, sym, title, strlen(title), align, value); + return nk_select_symbol_text(ctx, sym, title, nk_strlen(title), align, value); } @@ -25369,13 +24922,12 @@ nk_select_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, * SLIDER * * ===============================================================*/ -NK_LIB int +NK_LIB float nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, struct nk_rect *visual_cursor, struct nk_input *in, - struct nk_rect bounds, int slider_min, int slider_max, int slider_value, - int slider_step, int slider_steps) + struct nk_rect bounds, float slider_min, float slider_max, float slider_value, + float slider_step, float slider_steps) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - slider_step, / int"); int left_mouse_down; int left_mouse_click_in_cursor; @@ -25386,14 +24938,14 @@ nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, NK_BUTTON_LEFT, *visual_cursor, nk_true); if (left_mouse_down && left_mouse_click_in_cursor) { - int ratio = 0; - const int d = in->mouse.pos.x - (visual_cursor->x+visual_cursor->w*0.5f); - const int pxstep = bounds.w / slider_steps; + float ratio = 0; + const float d = in->mouse.pos.x - (visual_cursor->x+visual_cursor->w*0.5f); + const float pxstep = bounds.w / slider_steps; /* only update value if the next slider step is reached */ *state = NK_WIDGET_STATE_ACTIVE; if (NK_ABS(d) >= pxstep) { - const int steps = (int)((int)(NK_ABS(d) / pxstep)); + const float steps = (float)((int)(NK_ABS(d) / pxstep)); slider_value += (d > 0) ? (slider_step*steps) : -(slider_step*steps); slider_value = NK_CLAMP(slider_min, slider_value, slider_max); ratio = (slider_value - slider_min)/slider_step; @@ -25405,7 +24957,8 @@ nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, /* slider widget state */ if (nk_input_is_mouse_hovering_rect(in, bounds)) *state = NK_WIDGET_STATE_HOVERED; - if (*state & NK_WIDGET_STATE_HOVER && !nk_input_is_mouse_prev_hovering_rect(in, bounds)) + if (*state & NK_WIDGET_STATE_HOVER && + !nk_input_is_mouse_prev_hovering_rect(in, bounds)) *state |= NK_WIDGET_STATE_ENTERED; else if (nk_input_is_mouse_prev_hovering_rect(in, bounds)) *state |= NK_WIDGET_STATE_LEFT; @@ -25414,9 +24967,8 @@ nk_slider_behavior(nk_flags *state, struct nk_rect *logical_cursor, NK_LIB void nk_draw_slider(struct nk_command_buffer *out, nk_flags state, const struct nk_style_slider *style, const struct nk_rect *bounds, - const struct nk_rect *visual_cursor, int min, int value, int max) + const struct nk_rect *visual_cursor, float min, float value, float max) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / const"); struct nk_rect fill; struct nk_rect bar; const struct nk_style_item *background; @@ -25455,11 +25007,17 @@ nk_draw_slider(struct nk_command_buffer *out, nk_flags state, fill.h = bar.h; /* draw background */ - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, *bounds, &background->data.image, nk_white); - } else { - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + break; } /* draw slider bar */ @@ -25469,28 +25027,28 @@ nk_draw_slider(struct nk_command_buffer *out, nk_flags state, /* draw cursor */ if (cursor->type == NK_STYLE_ITEM_IMAGE) nk_draw_image(out, *visual_cursor, &cursor->data.image, nk_white); - else nk_fill_circle(out, *visual_cursor, cursor->data.color); + else + nk_fill_circle(out, *visual_cursor, cursor->data.color); } -NK_LIB int +NK_LIB float nk_do_slider(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, - int min, int val, int max, int step, + float min, float val, float max, float step, const struct nk_style_slider *style, struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); - int slider_range; - int slider_min; - int slider_max; - int slider_value; - int slider_steps; - int cursor_offset; + float slider_range; + float slider_min; + float slider_max; + float slider_value; + float slider_steps; + float cursor_offset; struct nk_rect visual_cursor; struct nk_rect logical_cursor; - // NK_ASSERT(style); - // NK_ASSERT(out); + NK_ASSERT(style); + NK_ASSERT(out); if (!out || !style) return 0; @@ -25561,60 +25119,58 @@ nk_do_slider(nk_flags *state, if (style->draw_end) style->draw_end(out, style->userdata); return slider_value; } -// NK_API nk_bool -// nk_slider_int(struct nk_context *ctx, int min_value, int *value, int max_value, -// int value_step) -// { -// struct nk_window *win; -// struct nk_panel *layout; -// struct nk_input *in; -// const struct nk_style *style; +NK_API nk_bool +nk_slider_float(struct nk_context *ctx, float min_value, float *value, float max_value, + float value_step) +{ + struct nk_window *win; + struct nk_panel *layout; + struct nk_input *in; + const struct nk_style *style; -// int ret = 0; -// int old_value; -// struct nk_rect bounds; -// enum nk_widget_layout_states state; + int ret = 0; + float old_value; + struct nk_rect bounds; + enum nk_widget_layout_states state; -// // NK_ASSERT(ctx); -// // NK_ASSERT(ctx->current); -// // NK_ASSERT(ctx->current->layout); -// // NK_ASSERT(value); -// if (!ctx || !ctx->current || !ctx->current->layout || !value) -// return ret; + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(value); + if (!ctx || !ctx->current || !ctx->current->layout || !value) + return ret; -// win = ctx->current; -// style = &ctx->style; -// layout = win->layout; + win = ctx->current; + style = &ctx->style; + layout = win->layout; -// state = nk_widget(&bounds, ctx); -// if (!state) return ret; -// in = (/*state == NK_WIDGET_ROM || */ layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; + state = nk_widget(&bounds, ctx); + if (!state) return ret; + in = (/*state == NK_WIDGET_ROM || */ layout->flags & NK_WINDOW_ROM) ? 0 : &ctx->input; -// old_value = *value; -// *value = nk_do_slider(&ctx->last_widget_state, &win->buffer, bounds, min_value, -// old_value, max_value, value_step, &style->slider, in, style->font); -// return (old_value > *value || old_value < *value); -// } + old_value = *value; + *value = nk_do_slider(&ctx->last_widget_state, &win->buffer, bounds, min_value, + old_value, max_value, value_step, &style->slider, in, style->font); + return (old_value > *value || old_value < *value); +} +NK_API float +nk_slide_float(struct nk_context *ctx, float min, float val, float max, float step) +{ + nk_slider_float(ctx, min, &val, max, step); return val; +} NK_API int nk_slide_int(struct nk_context *ctx, int min, int val, int max, int step) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_slide_int"); - nk_slider_int(ctx, min, &val, max, step); return val; + float value = (float)val; + nk_slider_float(ctx, (float)min, &value, (float)max, (float)step); + return (int)value; } -// NK_API int -// nk_slide_int(struct nk_context *ctx, int min, int val, int max, int step) -// { -// int value = (int)val; -// nk_slider_int(ctx, (int)min, &value, (int)max, (int)step); -// return (int)value; -// } NK_API nk_bool nk_slider_int(struct nk_context *ctx, int min, int *val, int max, int step) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_slider_int"); int ret; - int value = (int)*val; - ret = nk_slider_int(ctx, (int)min, &value, (int)max, (int)step); + float value = (float)*val; + ret = nk_slider_float(ctx, (float)min, &value, (float)max, (float)step); *val = (int)value; return ret; } @@ -25632,7 +25188,6 @@ NK_LIB nk_size nk_progress_behavior(nk_flags *state, struct nk_input *in, struct nk_rect r, struct nk_rect cursor, nk_size max, nk_size value, nk_bool modifiable) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - r / struct"); int left_mouse_down = 0; int left_mouse_click_in_cursor = 0; @@ -25646,8 +25201,8 @@ nk_progress_behavior(nk_flags *state, struct nk_input *in, if (in && left_mouse_down && left_mouse_click_in_cursor) { if (left_mouse_down && left_mouse_click_in_cursor) { - int ratio = NK_MAX(0, (int)(in->mouse.pos.x - cursor.x)) / (int)cursor.w; - value = (nk_size)NK_CLAMP(0, (int)max * ratio, (int)max); + float ratio = NK_MAX(0, (float)(in->mouse.pos.x - cursor.x)) / (float)cursor.w; + value = (nk_size)NK_CLAMP(0, (float)max * ratio, (float)max); in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.x = cursor.x + cursor.w/2.0f; *state |= NK_WIDGET_STATE_ACTIVE; } @@ -25664,7 +25219,6 @@ nk_draw_progress(struct nk_command_buffer *out, nk_flags state, const struct nk_style_progress *style, const struct nk_rect *bounds, const struct nk_rect *scursor, nk_size value, nk_size max) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / const"); const struct nk_style_item *background; const struct nk_style_item *cursor; @@ -25684,16 +25238,32 @@ nk_draw_progress(struct nk_command_buffer *out, nk_flags state, } /* draw background */ - if (background->type == NK_STYLE_ITEM_COLOR) { - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); - } else nk_draw_image(out, *bounds, &background->data.image, nk_white); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + break; + } /* draw cursor */ - if (cursor->type == NK_STYLE_ITEM_COLOR) { - nk_fill_rect(out, *scursor, style->rounding, cursor->data.color); - nk_stroke_rect(out, *scursor, style->rounding, style->border, style->border_color); - } else nk_draw_image(out, *scursor, &cursor->data.image, nk_white); + switch(cursor->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *scursor, &cursor->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *scursor, &cursor->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *scursor, style->rounding, cursor->data.color); + nk_stroke_rect(out, *scursor, style->rounding, style->border, style->border_color); + break; + } } NK_LIB nk_size nk_do_progress(nk_flags *state, @@ -25701,20 +25271,19 @@ nk_do_progress(nk_flags *state, nk_size value, nk_size max, nk_bool modifiable, const struct nk_style_progress *style, struct nk_input *in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_style_progress / const"); - int prog_scale; + float prog_scale; nk_size prog_value; struct nk_rect cursor; - // NK_ASSERT(style); - // NK_ASSERT(out); + NK_ASSERT(style); + NK_ASSERT(out); if (!out || !style) return 0; /* calculate progressbar cursor */ cursor.w = NK_MAX(bounds.w, 2 * style->padding.x + 2 * style->border); cursor.h = NK_MAX(bounds.h, 2 * style->padding.y + 2 * style->border); cursor = nk_pad_rect(bounds, nk_vec2(style->padding.x + style->border, style->padding.y + style->border)); - prog_scale = (int)value / (int)max; + prog_scale = (float)value / (float)max; /* update progressbar */ prog_value = NK_MIN(value, max); @@ -25730,7 +25299,6 @@ nk_do_progress(nk_flags *state, NK_API nk_bool nk_progress(struct nk_context *ctx, nk_size *cur, nk_size max, nk_bool is_modifyable) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_progress"); struct nk_window *win; struct nk_panel *layout; const struct nk_style *style; @@ -25740,10 +25308,10 @@ nk_progress(struct nk_context *ctx, nk_size *cur, nk_size max, nk_bool is_modify enum nk_widget_layout_states state; nk_size old_value; - // NK_ASSERT(ctx); - // NK_ASSERT(cur); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(cur); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !cur) return 0; @@ -25762,7 +25330,6 @@ nk_progress(struct nk_context *ctx, nk_size *cur, nk_size max, nk_bool is_modify NK_API nk_size nk_prog(struct nk_context *ctx, nk_size cur, nk_size max, nk_bool modifyable) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_prog"); nk_progress(ctx, &cur, max, modifyable); return cur; } @@ -25776,19 +25343,18 @@ nk_prog(struct nk_context *ctx, nk_size cur, nk_size max, nk_bool modifyable) * SCROLLBAR * * ===============================================================*/ -NK_LIB int +NK_LIB float nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, int has_scrolling, const struct nk_rect *scroll, const struct nk_rect *cursor, const struct nk_rect *empty0, - const struct nk_rect *empty1, int scroll_offset, - int target, int scroll_step, enum nk_orientation o) + const struct nk_rect *empty1, float scroll_offset, + float target, float scroll_step, enum nk_orientation o) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - target, / int"); nk_flags ws = 0; int left_mouse_down; - int left_mouse_clicked; + unsigned int left_mouse_clicked; int left_mouse_click_in_cursor; - int scroll_delta; + float scroll_delta; nk_widget_state_reset(state); if (!in) return scroll_offset; @@ -25803,17 +25369,17 @@ nk_scrollbar_behavior(nk_flags *state, struct nk_input *in, scroll_delta = (o == NK_VERTICAL) ? in->mouse.scroll_delta.y: in->mouse.scroll_delta.x; if (left_mouse_down && left_mouse_click_in_cursor && !left_mouse_clicked) { /* update cursor by mouse dragging */ - int pixel, delta; + float pixel, delta; *state = NK_WIDGET_STATE_ACTIVE; if (o == NK_VERTICAL) { - int cursor_y; + float cursor_y; pixel = in->mouse.delta.y; delta = (pixel / scroll->h) * target; scroll_offset = NK_CLAMP(0, scroll_offset + delta, target - scroll->h); cursor_y = scroll->y + ((scroll_offset/target) * scroll->h); in->mouse.buttons[NK_BUTTON_LEFT].clicked_pos.y = cursor_y + cursor->h/2.0f; } else { - int cursor_x; + float cursor_x; pixel = in->mouse.delta.x; delta = (pixel / scroll->w) * target; scroll_offset = NK_CLAMP(0, scroll_offset + delta, target - scroll->w); @@ -25858,7 +25424,6 @@ nk_draw_scrollbar(struct nk_command_buffer *out, nk_flags state, const struct nk_style_scrollbar *style, const struct nk_rect *bounds, const struct nk_rect *scroll) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_rect / const"); const struct nk_style_item *background; const struct nk_style_item *cursor; @@ -25875,39 +25440,52 @@ nk_draw_scrollbar(struct nk_command_buffer *out, nk_flags state, } /* draw background */ - //if (background->type == NK_STYLE_ITEM_COLOR) { - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); - //} else { - // nk_draw_image(out, *bounds, &background->data.image, nk_white); - //} + switch (background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, style->border_color); + break; + } /* draw cursor */ - // if (cursor->type == NK_STYLE_ITEM_COLOR) { - nk_fill_rect(out, *scroll, style->rounding_cursor, cursor->data.color); - nk_stroke_rect(out, *scroll, style->rounding_cursor, style->border_cursor, style->cursor_border_color); - // } else nk_draw_image(out, *scroll, &cursor->data.image, nk_white); + switch (cursor->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, *scroll, &cursor->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, *scroll, &cursor->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, *scroll, style->rounding_cursor, cursor->data.color); + nk_stroke_rect(out, *scroll, style->rounding_cursor, style->border_cursor, style->cursor_border_color); + break; + } } -NK_LIB int +NK_LIB float nk_do_scrollbarv(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, - int offset, int target, int step, int button_pixel_inc, + float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); struct nk_rect empty_north; struct nk_rect empty_south; struct nk_rect cursor; - int scroll_step; - int scroll_offset; - int scroll_off; - int scroll_ratio; + float scroll_step; + float scroll_offset; + float scroll_off; + float scroll_ratio; - // NK_ASSERT(out); - // NK_ASSERT(style); - // NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(style); + NK_ASSERT(state); if (!out || !style) return 0; scroll.w = NK_MAX(scroll.w, 1); @@ -25915,9 +25493,9 @@ nk_do_scrollbarv(nk_flags *state, if (target <= scroll.h) return 0; /* optional scrollbar buttons */ - // if (style->show_buttons) { + if (style->show_buttons) { nk_flags ws; - int scroll_h; + float scroll_h; struct nk_rect button; button.x = scroll.x; @@ -25941,7 +25519,7 @@ nk_do_scrollbarv(nk_flags *state, scroll.y = scroll.y + button.h; scroll.h = scroll_h; - // } + } /* calculate scrollbar constants */ scroll_step = NK_MIN(step, scroll.h); @@ -25978,25 +25556,24 @@ nk_do_scrollbarv(nk_flags *state, if (style->draw_end) style->draw_end(out, style->userdata); return scroll_offset; } -NK_LIB int +NK_LIB float nk_do_scrollbarh(nk_flags *state, struct nk_command_buffer *out, struct nk_rect scroll, int has_scrolling, - int offset, int target, int step, int button_pixel_inc, + float offset, float target, float step, float button_pixel_inc, const struct nk_style_scrollbar *style, struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); struct nk_rect cursor; struct nk_rect empty_west; struct nk_rect empty_east; - int scroll_step; - int scroll_offset; - int scroll_off; - int scroll_ratio; + float scroll_step; + float scroll_offset; + float scroll_off; + float scroll_ratio; - // NK_ASSERT(out); - // NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(style); if (!out || !style) return 0; /* scrollbar background */ @@ -26005,9 +25582,9 @@ nk_do_scrollbarh(nk_flags *state, if (target <= scroll.w) return 0; /* optional scrollbar buttons */ - // if (style->show_buttons) { + if (style->show_buttons) { nk_flags ws; - int scroll_w; + float scroll_w; struct nk_rect button; button.y = scroll.y; button.w = scroll.h; @@ -26030,7 +25607,7 @@ nk_do_scrollbarh(nk_flags *state, scroll.x = scroll.x + button.w; scroll.w = scroll_w; - // } + } /* calculate scrollbar constants */ scroll_step = NK_MIN(step, scroll.w); @@ -26079,18 +25656,18 @@ nk_do_scrollbarh(nk_flags *state, * ===============================================================*/ /* stb_textedit.h - v1.8 - public domain - Sean Barrett */ struct nk_text_find { - int x,y; /* position of n'th character */ - int height; /* height of line */ + float x,y; /* position of n'th character */ + float height; /* height of line */ int first_char, length; /* first char of row, and length */ int prev_first; /*_ first char of previous row */ }; struct nk_text_edit_row { - int x0,x1; + float x0,x1; /* starting x location, end x location (allows for align=right, etc) */ - int baseline_y_delta; + float baseline_y_delta; /* position of baseline relative to previous row's baseline*/ - int ymin,ymax; + float ymin,ymax; /* height of row above and below baseline */ int num_chars; }; @@ -26101,11 +25678,10 @@ NK_INTERN void nk_textedit_makeundo_insert(struct nk_text_edit*, int, int); NK_INTERN void nk_textedit_makeundo_replace(struct nk_text_edit*, int, int, int); #define NK_TEXT_HAS_SELECTION(s) ((s)->select_start != (s)->select_end) -NK_INTERN int +NK_INTERN float nk_textedit_get_width(const struct nk_text_edit *edit, int line_start, int char_id, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int len = 0; nk_rune unicode = 0; const char *str = nk_str_at_const(&edit->string, line_start + char_id, &unicode, &len); @@ -26113,9 +25689,8 @@ nk_textedit_get_width(const struct nk_text_edit *edit, int line_start, int char_ } NK_INTERN void nk_textedit_layout_row(struct nk_text_edit_row *r, struct nk_text_edit *edit, - int line_start_id, int row_height, const struct nk_user_font *font) + int line_start_id, float row_height, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - line_start_id, / int"); int l; int glyphs = 0; nk_rune unicode; @@ -26134,13 +25709,12 @@ nk_textedit_layout_row(struct nk_text_edit_row *r, struct nk_text_edit *edit, r->num_chars = glyphs; } NK_INTERN int -nk_textedit_locate_coord(struct nk_text_edit *edit, int x, int y, - const struct nk_user_font *font, int row_height) +nk_textedit_locate_coord(struct nk_text_edit *edit, float x, float y, + const struct nk_user_font *font, float row_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); struct nk_text_edit_row r; int n = edit->string.len; - int base_y = 0, prev_x; + float base_y = 0, prev_x; int i=0, k; r.x0 = r.x1 = 0; @@ -26177,7 +25751,7 @@ nk_textedit_locate_coord(struct nk_text_edit *edit, int x, int y, k = i; prev_x = r.x0; for (i=0; i < r.num_chars; ++i) { - int w = nk_textedit_get_width(edit, k, i, font); + float w = nk_textedit_get_width(edit, k, i, font); if (x < prev_x+w) { if (x < prev_x+w/2) return k+i; @@ -26195,10 +25769,9 @@ nk_textedit_locate_coord(struct nk_text_edit *edit, int x, int y, else return i+r.num_chars; } NK_LIB void -nk_textedit_click(struct nk_text_edit *state, int x, int y, - const struct nk_user_font *font, int row_height) +nk_textedit_click(struct nk_text_edit *state, float x, float y, + const struct nk_user_font *font, float row_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); /* API click: on mouse down, move the cursor to the clicked location, * and reset the selection */ state->cursor = nk_textedit_locate_coord(state, x, y, font, row_height); @@ -26207,10 +25780,9 @@ nk_textedit_click(struct nk_text_edit *state, int x, int y, state->has_preferred_x = 0; } NK_LIB void -nk_textedit_drag(struct nk_text_edit *state, int x, int y, - const struct nk_user_font *font, int row_height) +nk_textedit_drag(struct nk_text_edit *state, float x, float y, + const struct nk_user_font *font, float row_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); /* API drag: on mouse drag, move the cursor and selection endpoint * to the clicked location */ int p = nk_textedit_locate_coord(state, x, y, font, row_height); @@ -26220,9 +25792,8 @@ nk_textedit_drag(struct nk_text_edit *state, int x, int y, } NK_INTERN void nk_textedit_find_charpos(struct nk_text_find *find, struct nk_text_edit *state, - int n, int single_line, const struct nk_user_font *font, int row_height) + int n, int single_line, const struct nk_user_font *font, float row_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - n, / int"); /* find the x/y location of a character, and remember info about the previous * row in case we get a move-up event (for page up, we'll have to rescan) */ struct nk_text_edit_row r; @@ -26279,7 +25850,6 @@ nk_textedit_find_charpos(struct nk_text_find *find, struct nk_text_edit *state, NK_INTERN void nk_textedit_clamp(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_clamp"); /* make the selection/cursor state valid if client altered the string */ int n = state->string.len; if (NK_TEXT_HAS_SELECTION(state)) { @@ -26294,7 +25864,6 @@ nk_textedit_clamp(struct nk_text_edit *state) NK_API void nk_textedit_delete(struct nk_text_edit *state, int where, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_delete"); /* delete characters while updating undo */ nk_textedit_makeundo_delete(state, where, len); nk_str_delete_runes(&state->string, where, len); @@ -26303,7 +25872,6 @@ nk_textedit_delete(struct nk_text_edit *state, int where, int len) NK_API void nk_textedit_delete_selection(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_delete_selection"); /* delete the section */ nk_textedit_clamp(state); if (NK_TEXT_HAS_SELECTION(state)) { @@ -26322,7 +25890,6 @@ nk_textedit_delete_selection(struct nk_text_edit *state) NK_INTERN void nk_textedit_sortselection(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_sortselection"); /* canonicalize the selection so start <= end */ if (state->select_end < state->select_start) { int temp = state->select_end; @@ -26333,7 +25900,6 @@ nk_textedit_sortselection(struct nk_text_edit *state) NK_INTERN void nk_textedit_move_to_first(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_move_to_first"); /* move cursor to first character of selection */ if (NK_TEXT_HAS_SELECTION(state)) { nk_textedit_sortselection(state); @@ -26345,7 +25911,6 @@ nk_textedit_move_to_first(struct nk_text_edit *state) NK_INTERN void nk_textedit_move_to_last(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_move_to_last"); /* move cursor to last character of selection */ if (NK_TEXT_HAS_SELECTION(state)) { nk_textedit_sortselection(state); @@ -26358,7 +25923,6 @@ nk_textedit_move_to_last(struct nk_text_edit *state) NK_INTERN int nk_is_word_boundary( struct nk_text_edit *state, int idx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_is_word_boundary"); int len; nk_rune c; if (idx <= 0) return 1; @@ -26370,7 +25934,6 @@ nk_is_word_boundary( struct nk_text_edit *state, int idx) NK_INTERN int nk_textedit_move_to_word_previous(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_move_to_word_previous"); int c = state->cursor - 1; while( c >= 0 && !nk_is_word_boundary(state, c)) --c; @@ -26383,7 +25946,6 @@ nk_textedit_move_to_word_previous(struct nk_text_edit *state) NK_INTERN int nk_textedit_move_to_word_next(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_move_to_word_next"); const int len = state->string.len; int c = state->cursor+1; while( c < len && !nk_is_word_boundary(state, c)) @@ -26397,7 +25959,6 @@ nk_textedit_move_to_word_next(struct nk_text_edit *state) NK_INTERN void nk_textedit_prep_selection_at_cursor(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_prep_selection_at_cursor"); /* update selection and cursor to match each other */ if (!NK_TEXT_HAS_SELECTION(state)) state->select_start = state->select_end = state->cursor; @@ -26406,7 +25967,6 @@ nk_textedit_prep_selection_at_cursor(struct nk_text_edit *state) NK_API nk_bool nk_textedit_cut(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_cut"); /* API cut: delete selection */ if (state->mode == NK_TEXT_EDIT_MODE_VIEW) return 0; @@ -26420,7 +25980,6 @@ nk_textedit_cut(struct nk_text_edit *state) NK_API nk_bool nk_textedit_paste(struct nk_text_edit *state, char const *ctext, int len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_paste"); /* API paste: replace existing selection with passed-in text */ int glyphs; const char *text = (const char *) ctext; @@ -26446,13 +26005,12 @@ nk_textedit_paste(struct nk_text_edit *state, char const *ctext, int len) NK_API void nk_textedit_text(struct nk_text_edit *state, const char *text, int total_len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_text"); nk_rune unicode; int glyph_len; int text_len = 0; - // NK_ASSERT(state); - // NK_ASSERT(text); + NK_ASSERT(state); + NK_ASSERT(text); if (!text || !total_len || state->mode == NK_TEXT_EDIT_MODE_VIEW) return; glyph_len = nk_utf_decode(text, &unicode, total_len); @@ -26465,7 +26023,8 @@ nk_textedit_text(struct nk_text_edit *state, const char *text, int total_len) /* filter incoming text */ if (state->filter && !state->filter(state, unicode)) goto next; - if (!NK_TEXT_HAS_SELECTION(state) && state->cursor < state->string.len) + if (!NK_TEXT_HAS_SELECTION(state) && + state->cursor < state->string.len) { if (state->mode == NK_TEXT_EDIT_MODE_REPLACE) { nk_textedit_makeundo_replace(state, state->cursor, 1, 1); @@ -26494,9 +26053,8 @@ nk_textedit_text(struct nk_text_edit *state, const char *text, int total_len) } NK_LIB void nk_textedit_key(struct nk_text_edit *state, enum nk_keys key, int shift_mod, - const struct nk_user_font *font, int row_height) + const struct nk_user_font *font, float row_height) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); retry: switch (key) { @@ -26632,8 +26190,8 @@ retry: /* now find character position down a row */ if (find.length) { - int x; - int goal_x = state->has_preferred_x ? state->preferred_x : find.x; + float x; + float goal_x = state->has_preferred_x ? state->preferred_x : find.x; int start = find.first_char + find.length; state->cursor = start; @@ -26641,7 +26199,7 @@ retry: x = row.x0; for (i=0; i < row.num_chars && x < row.x1; ++i) { - int dx = nk_textedit_get_width(state, start, i, font); + float dx = nk_textedit_get_width(state, start, i, font); x += dx; if (x > goal_x) break; @@ -26680,15 +26238,15 @@ retry: /* can only go up if there's a previous row */ if (find.prev_first != find.first_char) { /* now find character position up a row */ - int x; - int goal_x = state->has_preferred_x ? state->preferred_x : find.x; + float x; + float goal_x = state->has_preferred_x ? state->preferred_x : find.x; state->cursor = find.prev_first; nk_textedit_layout_row(&row, state, state->cursor, row_height, font); x = row.x0; for (i=0; i < row.num_chars && x < row.x1; ++i) { - int dx = nk_textedit_get_width(state, find.prev_first, i, font); + float dx = nk_textedit_get_width(state, find.prev_first, i, font); x += dx; if (x > goal_x) break; @@ -26806,14 +26364,12 @@ retry: NK_INTERN void nk_textedit_flush_redo(struct nk_text_undo_state *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_undo_state / nk_textedit_flush_redo"); state->redo_point = NK_TEXTEDIT_UNDOSTATECOUNT; state->redo_char_point = NK_TEXTEDIT_UNDOCHARCOUNT; } NK_INTERN void nk_textedit_discard_undo(struct nk_text_undo_state *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_undo_state / nk_textedit_discard_undo"); /* discard the oldest entry in the undo list */ if (state->undo_point > 0) { /* if the 0th undo state has characters, clean those up */ @@ -26837,7 +26393,6 @@ nk_textedit_discard_undo(struct nk_text_undo_state *state) NK_INTERN void nk_textedit_discard_redo(struct nk_text_undo_state *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_undo_state / nk_textedit_discard_redo"); /* discard the oldest entry in the redo list--it's bad if this ever happens, but because undo & redo have to store the actual characters in different cases, the redo character buffer can @@ -26869,7 +26424,6 @@ nk_textedit_discard_redo(struct nk_text_undo_state *state) NK_INTERN struct nk_text_undo_record* nk_textedit_create_undo_record(struct nk_text_undo_state *state, int numchars) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_undo_state / nk_textedit_create_undo_record"); /* any time we create a new undo record, we discard redo*/ nk_textedit_flush_redo(state); @@ -26896,7 +26450,6 @@ NK_INTERN nk_rune* nk_textedit_createundo(struct nk_text_undo_state *state, int pos, int insert_len, int delete_len) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - insert_len, / int"); struct nk_text_undo_record *r = nk_textedit_create_undo_record(state, insert_len); if (r == 0) return 0; @@ -26917,7 +26470,6 @@ nk_textedit_createundo(struct nk_text_undo_state *state, int pos, NK_API void nk_textedit_undo(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_undo"); struct nk_text_undo_state *s = &state->undo; struct nk_text_undo_record u, *r; if (s->undo_point == 0) @@ -26985,7 +26537,6 @@ nk_textedit_undo(struct nk_text_edit *state) NK_API void nk_textedit_redo(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_redo"); struct nk_text_undo_state *s = &state->undo; struct nk_text_undo_record *u, r; if (s->redo_point == NK_TEXTEDIT_UNDOSTATECOUNT) @@ -27035,13 +26586,11 @@ nk_textedit_redo(struct nk_text_edit *state) NK_INTERN void nk_textedit_makeundo_insert(struct nk_text_edit *state, int where, int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_makeundo_insert"); nk_textedit_createundo(&state->undo, where, 0, length); } NK_INTERN void nk_textedit_makeundo_delete(struct nk_text_edit *state, int where, int length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_makeundo_delete"); int i; nk_rune *p = nk_textedit_createundo(&state->undo, where, length, 0); if (p) { @@ -27053,7 +26602,6 @@ NK_INTERN void nk_textedit_makeundo_replace(struct nk_text_edit *state, int where, int old_length, int new_length) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - old_length, / int"); int i; nk_rune *p = nk_textedit_createundo(&state->undo, where, old_length, new_length); if (p) { @@ -27065,7 +26613,6 @@ NK_LIB void nk_textedit_clear_state(struct nk_text_edit *state, enum nk_text_edit_type type, nk_plugin_filter filter) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - filter) / nk_plugin_filter"); /* reset the state to default */ state->undo.undo_point = 0; state->undo.undo_char_point = 0; @@ -27085,9 +26632,8 @@ nk_textedit_clear_state(struct nk_text_edit *state, enum nk_text_edit_type type, NK_API void nk_textedit_init_fixed(struct nk_text_edit *state, void *memory, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_init_fixed"); - // NK_ASSERT(state); - // NK_ASSERT(memory); + NK_ASSERT(state); + NK_ASSERT(memory); if (!state || !memory || !size) return; NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); @@ -27096,9 +26642,8 @@ nk_textedit_init_fixed(struct nk_text_edit *state, void *memory, nk_size size) NK_API void nk_textedit_init(struct nk_text_edit *state, struct nk_allocator *alloc, nk_size size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_init"); - // NK_ASSERT(state); - // NK_ASSERT(alloc); + NK_ASSERT(state); + NK_ASSERT(alloc); if (!state || !alloc) return; NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); @@ -27108,8 +26653,7 @@ nk_textedit_init(struct nk_text_edit *state, struct nk_allocator *alloc, nk_size NK_API void nk_textedit_init_default(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_init_default"); - // NK_ASSERT(state); + NK_ASSERT(state); if (!state) return; NK_MEMSET(state, 0, sizeof(struct nk_text_edit)); nk_textedit_clear_state(state, NK_TEXT_EDIT_SINGLE_LINE, 0); @@ -27119,16 +26663,14 @@ nk_textedit_init_default(struct nk_text_edit *state) NK_API void nk_textedit_select_all(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_select_all"); - // NK_ASSERT(state); + NK_ASSERT(state); state->select_start = 0; state->select_end = state->string.len; } NK_API void nk_textedit_free(struct nk_text_edit *state) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_text_edit / nk_textedit_free"); - // NK_ASSERT(state); + NK_ASSERT(state); if (!state) return; nk_str_free(&state->string); } @@ -27145,7 +26687,6 @@ nk_textedit_free(struct nk_text_edit *state) NK_API nk_bool nk_filter_default(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_default"); NK_UNUSED(unicode); NK_UNUSED(box); return nk_true; @@ -27153,15 +26694,13 @@ nk_filter_default(const struct nk_text_edit *box, nk_rune unicode) NK_API nk_bool nk_filter_ascii(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_ascii"); NK_UNUSED(box); if (unicode > 128) return nk_false; else return nk_true; } NK_API nk_bool -nk_filter_int(const struct nk_text_edit *box, nk_rune unicode) +nk_filter_float(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_int"); NK_UNUSED(box); if ((unicode < '0' || unicode > '9') && unicode != '.' && unicode != '-') return nk_false; @@ -27170,7 +26709,6 @@ nk_filter_int(const struct nk_text_edit *box, nk_rune unicode) NK_API nk_bool nk_filter_decimal(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_decimal"); NK_UNUSED(box); if ((unicode < '0' || unicode > '9') && unicode != '-') return nk_false; @@ -27179,16 +26717,16 @@ nk_filter_decimal(const struct nk_text_edit *box, nk_rune unicode) NK_API nk_bool nk_filter_hex(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_hex"); NK_UNUSED(box); - if ((unicode < '0' || unicode > '9') && (unicode < 'a' || unicode > 'f') && (unicode < 'A' || unicode > 'F')) + if ((unicode < '0' || unicode > '9') && + (unicode < 'a' || unicode > 'f') && + (unicode < 'A' || unicode > 'F')) return nk_false; else return nk_true; } NK_API nk_bool nk_filter_oct(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_oct"); NK_UNUSED(box); if (unicode < '0' || unicode > '7') return nk_false; @@ -27197,7 +26735,6 @@ nk_filter_oct(const struct nk_text_edit *box, nk_rune unicode) NK_API nk_bool nk_filter_binary(const struct nk_text_edit *box, nk_rune unicode) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - struct / nk_filter_binary"); NK_UNUSED(box); if (unicode != '0' && unicode != '1') return nk_false; @@ -27211,24 +26748,23 @@ nk_filter_binary(const struct nk_text_edit *box, nk_rune unicode) * ===============================================================*/ NK_LIB void nk_edit_draw_text(struct nk_command_buffer *out, - const struct nk_style_edit *style, int pos_x, int pos_y, - int x_offset, const char *text, int byte_len, int row_height, + const struct nk_style_edit *style, float pos_x, float pos_y, + float x_offset, const char *text, int byte_len, float row_height, const struct nk_user_font *font, struct nk_color background, struct nk_color foreground, nk_bool is_selected) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - foreground / struct"); - // NK_ASSERT(out); - // NK_ASSERT(font); - // NK_ASSERT(style); + NK_ASSERT(out); + NK_ASSERT(font); + NK_ASSERT(style); if (!text || !byte_len || !out || !style) return; {int glyph_len = 0; nk_rune unicode = 0; int text_len = 0; - int line_width = 0; - int glyph_width; + float line_width = 0; + float glyph_width; const char *line = text; - int line_offset = 0; + float line_offset = 0; int line_count = 0; struct nk_text txt; @@ -27269,7 +26805,7 @@ nk_edit_draw_text(struct nk_command_buffer *out, continue; } glyph_width = font->width(font->userdata, font->height, text+text_len, glyph_len); - line_width += (int)glyph_width; + line_width += (float)glyph_width; text_len += glyph_len; glyph_len = nk_utf_decode(text + text_len, &unicode, byte_len-text_len); continue; @@ -27296,10 +26832,9 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_text_edit *edit, const struct nk_style_edit *style, struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - in / struct"); struct nk_rect area; nk_flags ret = 0; - int row_height; + float row_height; char prev_state = 0; char is_hovered = 0; char select_all = 0; @@ -27307,9 +26842,9 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_rect old_clip; struct nk_rect clip; - // NK_ASSERT(state); - // NK_ASSERT(out); - // NK_ASSERT(style); + NK_ASSERT(state); + NK_ASSERT(out); + NK_ASSERT(style); if (!state || !out || !style) return ret; @@ -27362,45 +26897,47 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, if (edit->active && in) { int shift_mod = in->keyboard.keys[NK_KEY_SHIFT].down; - const int mouse_x = (in->mouse.pos.x - area.x) + edit->scrollbar.x; - const int mouse_y = (in->mouse.pos.y - area.y) + edit->scrollbar.y; + const float mouse_x = (in->mouse.pos.x - area.x) + edit->scrollbar.x; + const float mouse_y = (in->mouse.pos.y - area.y) + edit->scrollbar.y; /* mouse click handler */ is_hovered = (char)nk_input_is_mouse_hovering_rect(in, area); if (select_all) { nk_textedit_select_all(edit); - } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && in->mouse.buttons[NK_BUTTON_LEFT].clicked) { + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && + in->mouse.buttons[NK_BUTTON_LEFT].clicked) { nk_textedit_click(edit, mouse_x, mouse_y, font, row_height); - } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && (in->mouse.delta.x != 0.0f || in->mouse.delta.y != 0.0f)) { + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_LEFT].down && + (in->mouse.delta.x != 0.0f || in->mouse.delta.y != 0.0f)) { nk_textedit_drag(edit, mouse_x, mouse_y, font, row_height); cursor_follow = nk_true; - } else if (is_hovered && in->mouse.buttons[NK_BUTTON_RIGHT].clicked && in->mouse.buttons[NK_BUTTON_RIGHT].down) { + } else if (is_hovered && in->mouse.buttons[NK_BUTTON_RIGHT].clicked && + in->mouse.buttons[NK_BUTTON_RIGHT].down) { nk_textedit_key(edit, NK_KEY_TEXT_WORD_LEFT, nk_false, font, row_height); nk_textedit_key(edit, NK_KEY_TEXT_WORD_RIGHT, nk_true, font, row_height); cursor_follow = nk_true; } - // {int i; /* keyboard input */ - // int old_mode = edit->mode; - // for (i = 0; i < NK_KEY_MAX; ++i) { - // if (i == NK_KEY_ENTER || i == NK_KEY_TAB) continue; /* special case */ - // if (nk_input_is_key_pressed(in, (enum nk_keys)i)) { - // nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height); - // cursor_follow = nk_true; - // } - // } - // if (old_mode != edit->mode) { - // in->keyboard.text_len = 0; - // }} + {int i; /* keyboard input */ + int old_mode = edit->mode; + for (i = 0; i < NK_KEY_MAX; ++i) { + if (i == NK_KEY_ENTER || i == NK_KEY_TAB) continue; /* special case */ + if (nk_input_is_key_pressed(in, (enum nk_keys)i)) { + nk_textedit_key(edit, (enum nk_keys)i, shift_mod, font, row_height); + cursor_follow = nk_true; + } + } + if (old_mode != edit->mode) { + in->keyboard.text_len = 0; + }} - // /* text input */ - // edit->filter = filter; + /* text input */ + edit->filter = filter; if (in->keyboard.text_len) { nk_textedit_text(edit, in->keyboard.text, in->keyboard.text_len); cursor_follow = nk_true; in->keyboard.text_len = 0; } - // cursor_follow = nk_true; /* enter key handler */ if (nk_input_is_key_pressed(in, NK_KEY_ENTER)) { @@ -27413,40 +26950,40 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, } /* cut & copy handler */ - // {int copy= nk_input_is_key_pressed(in, NK_KEY_COPY); - // int cut = nk_input_is_key_pressed(in, NK_KEY_CUT); - // if ((copy || cut) && (flags & NK_EDIT_CLIPBOARD)) - // { - // int glyph_len; - // nk_rune unicode; - // const char *text; - // int b = edit->select_start; - // int e = edit->select_end; + {int copy= nk_input_is_key_pressed(in, NK_KEY_COPY); + int cut = nk_input_is_key_pressed(in, NK_KEY_CUT); + if ((copy || cut) && (flags & NK_EDIT_CLIPBOARD)) + { + int glyph_len; + nk_rune unicode; + const char *text; + int b = edit->select_start; + int e = edit->select_end; - // int begin = NK_MIN(b, e); - // int end = NK_MAX(b, e); - // text = nk_str_at_const(&edit->string, begin, &unicode, &glyph_len); - // if (edit->clip.copy) - // edit->clip.copy(edit->clip.userdata, text, end - begin); - // if (cut && !(flags & NK_EDIT_READ_ONLY)){ - // nk_textedit_cut(edit); - // cursor_follow = nk_true; - // } - // }} + int begin = NK_MIN(b, e); + int end = NK_MAX(b, e); + text = nk_str_at_const(&edit->string, begin, &unicode, &glyph_len); + if (edit->clip.copy) + edit->clip.copy(edit->clip.userdata, text, end - begin); + if (cut && !(flags & NK_EDIT_READ_ONLY)){ + nk_textedit_cut(edit); + cursor_follow = nk_true; + } + }} - // /* paste handler */ - // {int paste = nk_input_is_key_pressed(in, NK_KEY_PASTE); - // if (paste && (flags & NK_EDIT_CLIPBOARD) && edit->clip.paste) { - // edit->clip.paste(edit->clip.userdata, edit); - // cursor_follow = nk_true; - // }} + /* paste handler */ + {int paste = nk_input_is_key_pressed(in, NK_KEY_PASTE); + if (paste && (flags & NK_EDIT_CLIPBOARD) && edit->clip.paste) { + edit->clip.paste(edit->clip.userdata, edit); + cursor_follow = nk_true; + }} - // /* tab handler */ - // {int tab = nk_input_is_key_pressed(in, NK_KEY_TAB); - // if (tab && (flags & NK_EDIT_ALLOW_TAB)) { - // nk_textedit_text(edit, " ", 4); - // cursor_follow = nk_true; - // }} + /* tab handler */ + {int tab = nk_input_is_key_pressed(in, NK_KEY_TAB); + if (tab && (flags & NK_EDIT_ALLOW_TAB)) { + nk_textedit_text(edit, " ", 4); + cursor_follow = nk_true; + }} } /* set widget state */ @@ -27461,22 +26998,31 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, {const char *text = nk_str_get_const(&edit->string); int len = nk_str_len_char(&edit->string); - // {/* select background colors/images */ - // const struct nk_style_item *background; - // if (*state & NK_WIDGET_STATE_ACTIVED) - // background = &style->active; - // else if (*state & NK_WIDGET_STATE_HOVER) - // background = &style->hover; - // else background = &style->normal; + {/* select background colors/images */ + const struct nk_style_item *background; + if (*state & NK_WIDGET_STATE_ACTIVED) + background = &style->active; + else if (*state & NK_WIDGET_STATE_HOVER) + background = &style->hover; + else background = &style->normal; + + /* draw background frame */ + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(out, bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(out, bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(out, bounds, style->rounding, background->data.color); + nk_stroke_rect(out, bounds, style->rounding, style->border, style->border_color); + break; + }} - // draw background frame - // if (background->type == NK_STYLE_ITEM_COLOR) { - // nk_fill_rect(out, bounds, style->rounding, background->data.color); - nk_stroke_rect(out, bounds, style->rounding, style->border, style->border_color); - // } else nk_draw_image(out, bounds, &background->data.image, nk_white);} area.w = NK_MAX(0, area.w - style->cursor_size); - if (edit->active ) // TODO + if (edit->active) { int total_lines = 1; struct nk_vec2 text_size = nk_vec2(0,0); @@ -27495,11 +27041,11 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, int selection_end = NK_MAX(edit->select_start, edit->select_end); /* calculate total line count + total space + cursor/selection position */ - int line_width = 0.0f; + float line_width = 0.0f; if (text && len) { /* utf8 encoding */ - int glyph_width; + float glyph_width; int glyph_len = 0; nk_rune unicode = 0; int text_len = 0; @@ -27522,7 +27068,7 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, const char *remaining; /* calculate 2d position */ - cursor_pos.y = (int)(total_lines-1) * row_height; + cursor_pos.y = (float)(total_lines-1) * row_height; row_size = nk_text_calculate_text_bounds(font, text+row_begin, text_len-row_begin, row_height, &remaining, &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); @@ -27531,7 +27077,8 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, } /* set start selection 2D position and line */ - if (!select_begin_ptr && edit->select_start != edit->select_end && glyphs == selection_begin) + if (!select_begin_ptr && edit->select_start != edit->select_end && + glyphs == selection_begin) { int glyph_offset; struct nk_vec2 out_offset; @@ -27539,7 +27086,7 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, const char *remaining; /* calculate 2d position */ - selection_offset_start.y = (int)(NK_MAX(total_lines-1,0)) * row_height; + selection_offset_start.y = (float)(NK_MAX(total_lines-1,0)) * row_height; row_size = nk_text_calculate_text_bounds(font, text+row_begin, text_len-row_begin, row_height, &remaining, &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); @@ -27548,7 +27095,8 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, } /* set end selection 2D position and line */ - if (!select_end_ptr && edit->select_start != edit->select_end && glyphs == selection_end) + if (!select_end_ptr && edit->select_start != edit->select_end && + glyphs == selection_end) { int glyph_offset; struct nk_vec2 out_offset; @@ -27556,7 +27104,7 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, const char *remaining; /* calculate 2d position */ - selection_offset_end.y = (int)(total_lines-1) * row_height; + selection_offset_end.y = (float)(total_lines-1) * row_height; row_size = nk_text_calculate_text_bounds(font, text+row_begin, text_len-row_begin, row_height, &remaining, &out_offset, &glyph_offset, NK_STOP_ON_NEW_LINE); @@ -27577,14 +27125,14 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, glyphs++; text_len += glyph_len; - line_width += (int)glyph_width; + line_width += (float)glyph_width; glyph_len = nk_utf_decode(text + text_len, &unicode, len-text_len); glyph_width = font->width(font->userdata, font->height, text+text_len, glyph_len); continue; } - text_size.y = (int)total_lines * row_height; + text_size.y = (float)total_lines * row_height; /* handle case when cursor is at end of text buffer */ if (!cursor_ptr && edit->cursor == edit->string.len) { @@ -27599,18 +27147,18 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, /* update scrollbar to follow cursor */ if (!(flags & NK_EDIT_NO_HORIZONTAL_SCROLL)) { /* horizontal scroll */ - const int scroll_increment = area.w * 0.25f; + const float scroll_increment = area.w * 0.25f; if (cursor_pos.x < edit->scrollbar.x) - edit->scrollbar.x = (int)(int)NK_MAX(0.0f, cursor_pos.x - scroll_increment); + edit->scrollbar.x = (float)(int)NK_MAX(0.0f, cursor_pos.x - scroll_increment); if (cursor_pos.x >= edit->scrollbar.x + area.w) - edit->scrollbar.x = (int)(int)NK_MAX(0.0f, cursor_pos.x - area.w + scroll_increment); + edit->scrollbar.x = (float)(int)NK_MAX(0.0f, cursor_pos.x - area.w + scroll_increment); } else edit->scrollbar.x = 0; if (flags & NK_EDIT_MULTILINE) { /* vertical scroll */ if (cursor_pos.y < edit->scrollbar.y) edit->scrollbar.y = NK_MAX(0.0f, cursor_pos.y - row_height); - if (cursor_pos.y >= edit->scrollbar.y + area.h) + if (cursor_pos.y >= edit->scrollbar.y + row_height) edit->scrollbar.y = edit->scrollbar.y + row_height; } else edit->scrollbar.y = 0; } @@ -27620,10 +27168,10 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, { nk_flags ws; struct nk_rect scroll; - int scroll_target; - int scroll_offset; - int scroll_step; - int scroll_inc; + float scroll_target; + float scroll_offset; + float scroll_step; + float scroll_inc; scroll = area; scroll.x = (bounds.x + bounds.w - style->border) - style->scrollbar_size.x; @@ -27647,7 +27195,7 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_color cursor_color; struct nk_color cursor_text_color; const struct nk_style_item *background; - // nk_push_scissor(out, clip); + nk_push_scissor(out, clip); /* select correct colors to draw */ if (*state & NK_WIDGET_STATE_ACTIVED) { @@ -27674,7 +27222,8 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, } if (background->type == NK_STYLE_ITEM_IMAGE) background_color = nk_rgba(0,0,0,0); - else background_color = background->data.color; + else + background_color = background->data.color; if (edit->select_start == edit->select_end) { @@ -27689,14 +27238,14 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, if (edit->select_start != edit->select_end && selection_begin > 0){ /* draw unselected text before selection */ const char *begin = nk_str_get_const(&edit->string); - // NK_ASSERT(select_begin_ptr); + NK_ASSERT(select_begin_ptr); nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, area.y - edit->scrollbar.y, 0, begin, (int)(select_begin_ptr - begin), row_height, font, background_color, text_color, nk_false); } if (edit->select_start != edit->select_end) { /* draw selected text */ - // NK_ASSERT(select_begin_ptr); + NK_ASSERT(select_begin_ptr); if (!select_end_ptr) { const char *begin = nk_str_get_const(&edit->string); select_end_ptr = begin + nk_str_len_char(&edit->string); @@ -27708,13 +27257,14 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, select_begin_ptr, (int)(select_end_ptr - select_begin_ptr), row_height, font, sel_background_color, sel_text_color, nk_true); } - if ((edit->select_start != edit->select_end && selection_end < edit->string.len)) + if ((edit->select_start != edit->select_end && + selection_end < edit->string.len)) { /* draw unselected text after selected text */ const char *begin = select_end_ptr; const char *end = nk_str_get_const(&edit->string) + nk_str_len_char(&edit->string); - // NK_ASSERT(select_end_ptr); + NK_ASSERT(select_end_ptr); nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, area.y + selection_offset_end.y - edit->scrollbar.y, @@ -27744,7 +27294,7 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, struct nk_text txt; nk_rune unicode; - // NK_ASSERT(cursor_ptr); + NK_ASSERT(cursor_ptr); glyph_len = nk_utf_decode(cursor_ptr, &unicode, 4); label.x = area.x + cursor_pos.x - edit->scrollbar.x; @@ -27767,27 +27317,36 @@ nk_do_edit(nk_flags *state, struct nk_command_buffer *out, const struct nk_style_item *background; struct nk_color background_color; struct nk_color text_color; - // nk_push_scissor(out, clip); - background = &style->normal; - text_color = style->text_normal; - background_color = background->data.color; + nk_push_scissor(out, clip); + if (*state & NK_WIDGET_STATE_ACTIVED) { + background = &style->active; + text_color = style->text_active; + } else if (*state & NK_WIDGET_STATE_HOVER) { + background = &style->hover; + text_color = style->text_hover; + } else { + background = &style->normal; + text_color = style->text_normal; + } + if (background->type == NK_STYLE_ITEM_IMAGE) + background_color = nk_rgba(0,0,0,0); + else + background_color = background->data.color; nk_edit_draw_text(out, style, area.x - edit->scrollbar.x, area.y - edit->scrollbar.y, 0, begin, l, row_height, font, background_color, text_color, nk_false); } - // nk_push_scissor(out, old_clip);} - } + nk_push_scissor(out, old_clip);} return ret; } NK_API void nk_edit_focus(struct nk_context *ctx, nk_flags flags) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_edit_focus"); nk_hash hash; struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; win = ctx->current; @@ -27800,10 +27359,9 @@ nk_edit_focus(struct nk_context *ctx, nk_flags flags) NK_API void nk_edit_unfocus(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_edit_unfocus"); struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; win = ctx->current; @@ -27814,27 +27372,14 @@ NK_API nk_flags nk_edit_string(struct nk_context *ctx, nk_flags flags, char *memory, int *len, int max, nk_plugin_filter filter) { - - long start; - long end; - long total; - long eventTime0; - long eventTime1; - long eventTime2; - long eventTime3; - long eventTime4; - - start = TickCount(); - - //writeSerialPort(boutRefNum, "FUNCTION CALL - memory, / char"); nk_hash hash; nk_flags state; struct nk_text_edit *edit; struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(memory); - // NK_ASSERT(len); + NK_ASSERT(ctx); + NK_ASSERT(memory); + NK_ASSERT(len); if (!ctx || !memory || !len) return 0; @@ -27845,16 +27390,6 @@ nk_edit_string(struct nk_context *ctx, nk_flags flags, nk_textedit_clear_state(&ctx->text_edit, (flags & NK_EDIT_MULTILINE)? NK_TEXT_EDIT_MULTI_LINE: NK_TEXT_EDIT_SINGLE_LINE, filter); - - - total = end - start; - - - end = TickCount(); - eventTime1 = total;// / 60.0; - - start = TickCount(); - if (win->edit.active && hash == win->edit.name) { if (flags & NK_EDIT_NO_CURSOR) edit->cursor = nk_utf_len(memory, *len); @@ -27867,36 +27402,16 @@ nk_edit_string(struct nk_context *ctx, nk_flags flags, edit->select_end = win->edit.sel_end; } edit->mode = win->edit.mode; - edit->scrollbar.x = (int)win->edit.scrollbar.x; - edit->scrollbar.y = (int)win->edit.scrollbar.y; + edit->scrollbar.x = (float)win->edit.scrollbar.x; + edit->scrollbar.y = (float)win->edit.scrollbar.y; edit->active = nk_true; } else edit->active = nk_false; - - end = TickCount(); - - total = end - start; - eventTime2 = total;// / 60.0; - max = NK_MAX(1, max); *len = NK_MIN(*len, max-1); - - start = TickCount(); - nk_str_init_fixed(&edit->string, memory, (nk_size)max); - edit->string.buffer.allocated = (nk_size)*len; edit->string.len = nk_utf_len(memory, *len); - - - - end = TickCount(); - - total = end - start; - eventTime3 = total;// / 60.0; - start = TickCount(); - - state = nk_edit_buffer(ctx, flags, edit, filter); *len = (int)edit->string.buffer.allocated; @@ -27907,40 +27422,12 @@ nk_edit_string(struct nk_context *ctx, nk_flags flags, win->edit.mode = edit->mode; win->edit.scrollbar.x = (nk_uint)edit->scrollbar.x; win->edit.scrollbar.y = (nk_uint)edit->scrollbar.y; - } - - - - end = TickCount(); - - total = end - start; - eventTime0 = total;// / 60.0; - - - //char logx[255]; - //sprintf(logx, "nk_edit_string() eventTime0 (edit string) %ld, eventTime1 (edit string) %ld, eventTime2 (edit string) %ld, eventTime3 (edit string) %ld ticks to execute\n", eventTime0, eventTime1, eventTime2, eventTime3); - //writeSerialPort(boutRefNum, logx); - return state; + } return state; } NK_API nk_flags nk_edit_buffer(struct nk_context *ctx, nk_flags flags, struct nk_text_edit *edit, nk_plugin_filter filter) { - - - - long start; - long end; - long total; - long eventTime0 = 0; - long eventTime1 = 0; - long eventTime2 = 0; - long eventTime3 = 0; - long eventTime4 = 0; - - - start = TickCount(); - //writeSerialPort(boutRefNum, "FUNCTION CALL - edit / struct"); struct nk_window *win; struct nk_style *style; struct nk_input *in; @@ -27953,10 +27440,10 @@ nk_edit_buffer(struct nk_context *ctx, nk_flags flags, nk_hash hash; /* make sure correct values */ - // NK_ASSERT(ctx); - // NK_ASSERT(edit); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(edit); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -27984,14 +27471,6 @@ nk_edit_buffer(struct nk_context *ctx, nk_flags flags, filter = (!filter) ? nk_filter_default: filter; prev_state = (unsigned char)edit->active; in = (flags & NK_EDIT_READ_ONLY) ? 0: in; - - - - end = TickCount(); - - total = end - start; - eventTime1 = total;// / 60.0; - start = TickCount(); ret_flags = nk_do_edit(&ctx->last_widget_state, &win->buffer, bounds, flags, filter, edit, &style->edit, in, style->font); @@ -28004,30 +27483,14 @@ nk_edit_buffer(struct nk_context *ctx, nk_flags flags, } else if (prev_state && !edit->active) { /* current edit is now cold */ win->edit.active = nk_false; - } - - - - - end = TickCount(); - - total = end - start; - eventTime2 = total;// / 60.0; - - - // char logx[255]; - // sprintf(logx, "nk_edit_buffer() eventTime0 (edit string) %ld, eventTime1 (edit string) %ld, eventTime2 (edit string) %ld, eventTime3 (edit string) %ld ticks to execute\n", eventTime0, eventTime1, eventTime2, eventTime3); - // writeSerialPort(boutRefNum, logx); - - return ret_flags; + } return ret_flags; } NK_API nk_flags nk_edit_string_zero_terminated(struct nk_context *ctx, nk_flags flags, char *buffer, int max, nk_plugin_filter filter) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - buffer, / char"); nk_flags result; - int len = strlen(buffer); + int len = nk_strlen(buffer); result = nk_edit_string(ctx, flags, buffer, &len, max, filter); buffer[NK_MIN(NK_MAX(max-1,0), len)] = '\0'; return result; @@ -28045,18 +27508,18 @@ nk_edit_string_zero_terminated(struct nk_context *ctx, nk_flags flags, NK_LIB void nk_drag_behavior(nk_flags *state, const struct nk_input *in, struct nk_rect drag, struct nk_property_variant *variant, - int inc_per_pixel) + float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - inc_per_pixel) / int"); int left_mouse_down = in && in->mouse.buttons[NK_BUTTON_LEFT].down; - int left_mouse_click_in_cursor = in && nk_input_has_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, drag, nk_true); + int left_mouse_click_in_cursor = in && + nk_input_has_mouse_click_down_in_rect(in, NK_BUTTON_LEFT, drag, nk_true); nk_widget_state_reset(state); if (nk_input_is_mouse_hovering_rect(in, drag)) *state = NK_WIDGET_STATE_HOVERED; if (left_mouse_down && left_mouse_click_in_cursor) { - int delta, pixels; + float delta, pixels; pixels = in->mouse.delta.x; delta = pixels * inc_per_pixel; switch (variant->kind) { @@ -28065,10 +27528,10 @@ nk_drag_behavior(nk_flags *state, const struct nk_input *in, variant->value.i = variant->value.i + (int)delta; variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i, variant->max_value.i); break; - // case NK_PROPERTY_int: - // variant->value.f = variant->value.f + (int)delta; - // variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f, variant->max_value.f); - // break; + case NK_PROPERTY_FLOAT: + variant->value.f = variant->value.f + (float)delta; + variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f, variant->max_value.f); + break; case NK_PROPERTY_DOUBLE: variant->value.d = variant->value.d + (double)delta; variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d, variant->max_value.d); @@ -28085,9 +27548,8 @@ NK_LIB void nk_property_behavior(nk_flags *ws, const struct nk_input *in, struct nk_rect property, struct nk_rect label, struct nk_rect edit, struct nk_rect empty, int *state, struct nk_property_variant *variant, - int inc_per_pixel) + float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - inc_per_pixel) / int"); nk_widget_state_reset(ws); if (in && *state == NK_PROPERTY_DEFAULT) { if (nk_button_behavior(ws, edit, in, NK_BUTTON_DEFAULT)) @@ -28107,7 +27569,6 @@ nk_draw_property(struct nk_command_buffer *out, const struct nk_style_property * const struct nk_rect *bounds, const struct nk_rect *label, nk_flags state, const char *name, int len, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - name / const"); struct nk_text text; const struct nk_style_item *background; @@ -28124,13 +27585,20 @@ nk_draw_property(struct nk_command_buffer *out, const struct nk_style_property * } /* draw background */ - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(out, *bounds, &background->data.image, nk_white); - text.background = nk_rgba(0,0,0,0); - } else { - text.background = background->data.color; - nk_fill_rect(out, *bounds, style->rounding, background->data.color); - nk_stroke_rect(out, *bounds, style->rounding, style->border, background->data.color); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_image(out, *bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(out, *bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(out, *bounds, style->rounding, background->data.color); + nk_stroke_rect(out, *bounds, style->rounding, style->border, background->data.color); + break; } /* draw label */ @@ -28141,22 +27609,21 @@ NK_LIB void nk_do_property(nk_flags *ws, struct nk_command_buffer *out, struct nk_rect property, const char *name, struct nk_property_variant *variant, - int inc_per_pixel, char *buffer, int *len, + float inc_per_pixel, char *buffer, int *len, int *state, int *cursor, int *select_begin, int *select_end, const struct nk_style_property *style, enum nk_property_filter filter, struct nk_input *in, const struct nk_user_font *font, struct nk_text_edit *text_edit, enum nk_button_behavior behavior) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - behavior / enum"); const nk_plugin_filter filters[] = { nk_filter_decimal, - nk_filter_int + nk_filter_float }; nk_bool active, old; - int num_len, name_len; + int num_len = 0, name_len; char string[NK_MAX_NUMBER_BUFFER]; - int size; + float size; char *dst = 0; int *length; @@ -28174,10 +27641,10 @@ nk_do_property(nk_flags *ws, left.y = property.y + style->border + property.h/2.0f - left.h/2; /* text label */ - name_len = strlen(name); + name_len = nk_strlen(name); size = font->width(font->userdata, font->height, name, name_len); label.x = left.x + left.w + style->padding.x; - label.w = (int)size + 2 * style->padding.x; + label.w = (float)size + 2 * style->padding.x; label.y = property.y + style->border + style->padding.y; label.h = property.h - (2 * style->border + 2 * style->padding.y); @@ -28198,15 +27665,15 @@ nk_do_property(nk_flags *ws, default: break; case NK_PROPERTY_INT: nk_itoa(string, variant->value.i); - num_len = strlen(string); + num_len = nk_strlen(string); break; - case NK_PROPERTY_int: + case NK_PROPERTY_FLOAT: NK_DTOA(string, (double)variant->value.f); - num_len = nk_string_int_limit(string, NK_MAX_int_PRECISION); + num_len = nk_string_float_limit(string, NK_MAX_FLOAT_PRECISION); break; case NK_PROPERTY_DOUBLE: NK_DTOA(string, variant->value.d); - num_len = nk_string_int_limit(string, NK_MAX_int_PRECISION); + num_len = nk_string_float_limit(string, NK_MAX_FLOAT_PRECISION); break; } size = font->width(font->userdata, font->height, string, num_len); @@ -28214,7 +27681,7 @@ nk_do_property(nk_flags *ws, length = &num_len; } - edit.w = (int)size + 2 * style->padding.x; + edit.w = (float)size + 2 * style->padding.x; edit.w = NK_MIN(edit.w, right.x - (label.x + label.w)); edit.x = right.x - (edit.w + style->padding.x); edit.y = property.y + style->border; @@ -28241,7 +27708,7 @@ nk_do_property(nk_flags *ws, default: break; case NK_PROPERTY_INT: variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i - variant->step.i, variant->max_value.i); break; - case NK_PROPERTY_int: + case NK_PROPERTY_FLOAT: variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f - variant->step.f, variant->max_value.f); break; case NK_PROPERTY_DOUBLE: variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d - variant->step.d, variant->max_value.d); break; @@ -28253,7 +27720,7 @@ nk_do_property(nk_flags *ws, default: break; case NK_PROPERTY_INT: variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i + variant->step.i, variant->max_value.i); break; - case NK_PROPERTY_int: + case NK_PROPERTY_FLOAT: variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f + variant->step.f, variant->max_value.f); break; case NK_PROPERTY_DOUBLE: variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d + variant->step.d, variant->max_value.d); break; @@ -28301,13 +27768,13 @@ nk_do_property(nk_flags *ws, variant->value.i = nk_strtoi(buffer, 0); variant->value.i = NK_CLAMP(variant->min_value.i, variant->value.i, variant->max_value.i); break; - case NK_PROPERTY_int: - nk_string_int_limit(buffer, NK_MAX_int_PRECISION); + case NK_PROPERTY_FLOAT: + nk_string_float_limit(buffer, NK_MAX_FLOAT_PRECISION); variant->value.f = nk_strtof(buffer, 0); variant->value.f = NK_CLAMP(variant->min_value.f, variant->value.f, variant->max_value.f); break; case NK_PROPERTY_DOUBLE: - nk_string_int_limit(buffer, NK_MAX_int_PRECISION); + nk_string_float_limit(buffer, NK_MAX_FLOAT_PRECISION); variant->value.d = nk_strtod(buffer, 0); variant->value.d = NK_CLAMP(variant->min_value.d, variant->value.d, variant->max_value.d); break; @@ -28317,7 +27784,6 @@ nk_do_property(nk_flags *ws, NK_LIB struct nk_property_variant nk_property_variant_int(int value, int min_value, int max_value, int step) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - value / nk_property_variant_int"); struct nk_property_variant result; result.kind = NK_PROPERTY_INT; result.value.i = value; @@ -28326,22 +27792,21 @@ nk_property_variant_int(int value, int min_value, int max_value, int step) result.step.i = step; return result; } -// NK_LIB struct nk_property_variant -// nk_property_variant_int(int value, int min_value, int max_value, int step) -// { -// struct nk_property_variant result; -// result.kind = NK_PROPERTY_int; -// result.value.f = value; -// result.min_value.f = min_value; -// result.max_value.f = max_value; -// result.step.f = step; -// return result; -// } +NK_LIB struct nk_property_variant +nk_property_variant_float(float value, float min_value, float max_value, float step) +{ + struct nk_property_variant result; + result.kind = NK_PROPERTY_FLOAT; + result.value.f = value; + result.min_value.f = min_value; + result.max_value.f = max_value; + result.step.f = step; + return result; +} NK_LIB struct nk_property_variant nk_property_variant_double(double value, double min_value, double max_value, double step) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - step) / double"); struct nk_property_variant result; result.kind = NK_PROPERTY_DOUBLE; result.value.d = value; @@ -28352,9 +27817,8 @@ nk_property_variant_double(double value, double min_value, double max_value, } NK_LIB void nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant *variant, - int inc_per_pixel, const enum nk_property_filter filter) + float inc_per_pixel, const enum nk_property_filter filter) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - inc_per_pixel, / int"); struct nk_window *win; struct nk_panel *layout; struct nk_input *in; @@ -28379,9 +27843,9 @@ nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant int dummy_select_begin = 0; int dummy_select_end = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return; @@ -28393,9 +27857,9 @@ nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant /* calculate hash from name */ if (name[0] == '#') { - hash = nk_murmur_hash(name, (int)strlen(name), win->property.seq++); + hash = nk_murmur_hash(name, (int)nk_strlen(name), win->property.seq++); name++; /* special number hash */ - } else hash = nk_murmur_hash(name, (int)strlen(name), 42); + } else hash = nk_murmur_hash(name, (int)nk_strlen(name), 42); /* check if property is currently hot item */ if (win->property.active && hash == win->property.name) { @@ -28453,56 +27917,53 @@ nk_property(struct nk_context *ctx, const char *name, struct nk_property_variant } NK_API void nk_property_int(struct nk_context *ctx, const char *name, - int min, int *val, int max, int step, int inc_per_pixel) + int min, int *val, int max, int step, float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - min, / int"); struct nk_property_variant variant; - // NK_ASSERT(ctx); - // NK_ASSERT(name); - // NK_ASSERT(val); + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); if (!ctx || !ctx->current || !name || !val) return; variant = nk_property_variant_int(*val, min, max, step); nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_INT); *val = variant.value.i; } -// NK_API void -// nk_property_int(struct nk_context *ctx, const char *name, -// int min, int *val, int max, int step, int inc_per_pixel) -// { -// struct nk_property_variant variant; -// // NK_ASSERT(ctx); -// // NK_ASSERT(name); -// // NK_ASSERT(val); +NK_API void +nk_property_float(struct nk_context *ctx, const char *name, + float min, float *val, float max, float step, float inc_per_pixel) +{ + struct nk_property_variant variant; + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); -// if (!ctx || !ctx->current || !name || !val) return; -// variant = nk_property_variant_int(*val, min, max, step); -// nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_int); -// *val = variant.value.f; -// } + if (!ctx || !ctx->current || !name || !val) return; + variant = nk_property_variant_float(*val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); + *val = variant.value.f; +} NK_API void nk_property_double(struct nk_context *ctx, const char *name, - double min, double *val, double max, double step, int inc_per_pixel) + double min, double *val, double max, double step, float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - min, / double"); struct nk_property_variant variant; - // NK_ASSERT(ctx); - // NK_ASSERT(name); - // NK_ASSERT(val); + NK_ASSERT(ctx); + NK_ASSERT(name); + NK_ASSERT(val); if (!ctx || !ctx->current || !name || !val) return; variant = nk_property_variant_double(*val, min, max, step); - nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_int); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); *val = variant.value.d; } NK_API int nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, - int max, int step, int inc_per_pixel) + int max, int step, float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - max, / int"); struct nk_property_variant variant; - // NK_ASSERT(ctx); - // NK_ASSERT(name); + NK_ASSERT(ctx); + NK_ASSERT(name); if (!ctx || !ctx->current || !name) return val; variant = nk_property_variant_int(val, min, max, step); @@ -28510,33 +27971,31 @@ nk_propertyi(struct nk_context *ctx, const char *name, int min, int val, val = variant.value.i; return val; } -NK_API int -nk_propertyf(struct nk_context *ctx, const char *name, int min, - int val, int max, int step, int inc_per_pixel) +NK_API float +nk_propertyf(struct nk_context *ctx, const char *name, float min, + float val, float max, float step, float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - val, / int"); struct nk_property_variant variant; - // NK_ASSERT(ctx); - // NK_ASSERT(name); + NK_ASSERT(ctx); + NK_ASSERT(name); if (!ctx || !ctx->current || !name) return val; - variant = nk_property_variant_int(val, min, max, step); - nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_int); + variant = nk_property_variant_float(val, min, max, step); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); val = variant.value.f; return val; } NK_API double nk_propertyd(struct nk_context *ctx, const char *name, double min, - double val, double max, double step, int inc_per_pixel) + double val, double max, double step, float inc_per_pixel) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - val, / double"); struct nk_property_variant variant; - // NK_ASSERT(ctx); - // NK_ASSERT(name); + NK_ASSERT(ctx); + NK_ASSERT(name); if (!ctx || !ctx->current || !name) return val; variant = nk_property_variant_double(val, min, max, step); - nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_int); + nk_property(ctx, name, &variant, inc_per_pixel, NK_FILTER_FLOAT); val = variant.value.d; return val; } @@ -28553,9 +28012,8 @@ nk_propertyd(struct nk_context *ctx, const char *name, double min, NK_API nk_bool nk_chart_begin_colored(struct nk_context *ctx, enum nk_chart_type type, struct nk_color color, struct nk_color highlight, - int count, int min_value, int max_value) + int count, float min_value, float max_value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - count, / int"); struct nk_window *win; struct nk_chart *chart; const struct nk_style *config; @@ -28564,9 +28022,9 @@ nk_chart_begin_colored(struct nk_context *ctx, enum nk_chart_type type, const struct nk_style_item *background; struct nk_rect bounds = {0, 0, 0, 0}; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; if (!nk_widget(&bounds, ctx)) { @@ -28601,33 +28059,38 @@ nk_chart_begin_colored(struct nk_context *ctx, enum nk_chart_type type, /* draw chart background */ background = &style->background; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(&win->buffer, bounds, &background->data.image, nk_white); - } else { - nk_fill_rect(&win->buffer, bounds, style->rounding, style->border_color); - nk_fill_rect(&win->buffer, nk_shrink_rect(bounds, style->border), - style->rounding, style->background.data.color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(&win->buffer, bounds, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(&win->buffer, bounds, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(&win->buffer, bounds, style->rounding, style->border_color); + nk_fill_rect(&win->buffer, nk_shrink_rect(bounds, style->border), + style->rounding, style->background.data.color); + break; } return 1; } NK_API nk_bool nk_chart_begin(struct nk_context *ctx, const enum nk_chart_type type, - int count, int min_value, int max_value) + int count, float min_value, float max_value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - count, / int"); return nk_chart_begin_colored(ctx, type, ctx->style.chart.color, ctx->style.chart.selected_color, count, min_value, max_value); } NK_API void nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type type, struct nk_color color, struct nk_color highlight, - int count, int min_value, int max_value) + int count, float min_value, float max_value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - count, / int"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); - // NK_ASSERT(ctx->current->layout->chart.slot < NK_CHART_MAX_SLOT); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx->current->layout->chart.slot < NK_CHART_MAX_SLOT); if (!ctx || !ctx->current || !ctx->current->layout) return; if (ctx->current->layout->chart.slot >= NK_CHART_MAX_SLOT) return; @@ -28644,17 +28107,15 @@ nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type type, } NK_API void nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type type, - int count, int min_value, int max_value) + int count, float min_value, float max_value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - count, / int"); nk_chart_add_slot_colored(ctx, type, ctx->style.chart.color, ctx->style.chart.selected_color, count, min_value, max_value); } NK_INTERN nk_flags nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, - struct nk_chart *g, int value, int slot) + struct nk_chart *g, float value, int slot) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - g / struct"); struct nk_panel *layout = win->layout; const struct nk_input *i = &ctx->input; struct nk_command_buffer *out = &win->buffer; @@ -28663,28 +28124,30 @@ nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, struct nk_vec2 cur; struct nk_rect bounds; struct nk_color color; - int step; - int range; - int ratio; + float step; + float range; + float ratio; - // NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); - step = g->w / (int)g->slots[slot].count; + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + step = g->w / (float)g->slots[slot].count; range = g->slots[slot].max - g->slots[slot].min; ratio = (value - g->slots[slot].min) / range; if (g->slots[slot].index == 0) { /* first data point does not have a connection */ g->slots[slot].last.x = g->x; - g->slots[slot].last.y = (g->y + g->h) - ratio * (int)g->h; + g->slots[slot].last.y = (g->y + g->h) - ratio * (float)g->h; bounds.x = g->slots[slot].last.x - 2; bounds.y = g->slots[slot].last.y - 2; bounds.w = bounds.h = 4; color = g->slots[slot].color; - if (!(layout->flags & NK_WINDOW_ROM) && NK_INBOX(i->mouse.pos.x,i->mouse.pos.y, g->slots[slot].last.x-3, g->slots[slot].last.y-3, 6, 6)){ + if (!(layout->flags & NK_WINDOW_ROM) && + NK_INBOX(i->mouse.pos.x,i->mouse.pos.y, g->slots[slot].last.x-3, g->slots[slot].last.y-3, 6, 6)){ ret = nk_input_is_mouse_hovering_rect(i, bounds) ? NK_CHART_HOVERING : 0; - ret |= (i->mouse.buttons[NK_BUTTON_LEFT].down && i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + ret |= (i->mouse.buttons[NK_BUTTON_LEFT].down && + i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; color = g->slots[slot].highlight; } nk_fill_rect(out, bounds, 0, color); @@ -28694,8 +28157,8 @@ nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, /* draw a line between the last data point and the new one */ color = g->slots[slot].color; - cur.x = g->x + (int)(step * (int)g->slots[slot].index); - cur.y = (g->y + g->h) - (ratio * (int)g->h); + cur.x = g->x + (float)(step * (float)g->slots[slot].index); + cur.y = (g->y + g->h) - (ratio * (float)g->h); nk_stroke_line(out, g->slots[slot].last.x, g->slots[slot].last.y, cur.x, cur.y, 1.0f, color); bounds.x = cur.x - 3; @@ -28706,7 +28169,8 @@ nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, if (!(layout->flags & NK_WINDOW_ROM)) { if (nk_input_is_mouse_hovering_rect(i, bounds)) { ret = NK_CHART_HOVERING; - ret |= (!i->mouse.buttons[NK_BUTTON_LEFT].down && i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + ret |= (!i->mouse.buttons[NK_BUTTON_LEFT].down && + i->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; color = g->slots[slot].highlight; } } @@ -28720,24 +28184,23 @@ nk_chart_push_line(struct nk_context *ctx, struct nk_window *win, } NK_INTERN nk_flags nk_chart_push_column(const struct nk_context *ctx, struct nk_window *win, - struct nk_chart *chart, int value, int slot) + struct nk_chart *chart, float value, int slot) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - chart / struct"); struct nk_command_buffer *out = &win->buffer; const struct nk_input *in = &ctx->input; struct nk_panel *layout = win->layout; - int ratio; + float ratio; nk_flags ret = 0; struct nk_color color; struct nk_rect item = {0,0,0,0}; - // NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); if (chart->slots[slot].index >= chart->slots[slot].count) return nk_false; if (chart->slots[slot].count) { - int padding = (int)(chart->slots[slot].count-1); - item.w = (chart->w - padding) / (int)(chart->slots[slot].count); + float padding = (float)(chart->slots[slot].count-1); + item.w = (chart->w - padding) / (float)(chart->slots[slot].count); } /* calculate bounds of current bar chart entry */ @@ -28750,13 +28213,15 @@ nk_chart_push_column(const struct nk_context *ctx, struct nk_window *win, ratio = (value - chart->slots[slot].max) / chart->slots[slot].range; item.y = chart->y + (chart->h * NK_ABS(ratio)) - item.h; } - item.x = chart->x + ((int)chart->slots[slot].index * item.w); - item.x = item.x + ((int)chart->slots[slot].index); + item.x = chart->x + ((float)chart->slots[slot].index * item.w); + item.x = item.x + ((float)chart->slots[slot].index); /* user chart bar selection */ - if (!(layout->flags & NK_WINDOW_ROM) && NK_INBOX(in->mouse.pos.x,in->mouse.pos.y,item.x,item.y,item.w,item.h)) { + if (!(layout->flags & NK_WINDOW_ROM) && + NK_INBOX(in->mouse.pos.x,in->mouse.pos.y,item.x,item.y,item.w,item.h)) { ret = NK_CHART_HOVERING; - ret |= (!in->mouse.buttons[NK_BUTTON_LEFT].down && in->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; + ret |= (!in->mouse.buttons[NK_BUTTON_LEFT].down && + in->mouse.buttons[NK_BUTTON_LEFT].clicked) ? NK_CHART_CLICKED: 0; color = chart->slots[slot].highlight; } nk_fill_rect(out, item, 0, color); @@ -28764,16 +28229,15 @@ nk_chart_push_column(const struct nk_context *ctx, struct nk_window *win, return ret; } NK_API nk_flags -nk_chart_push_slot(struct nk_context *ctx, int value, int slot) +nk_chart_push_slot(struct nk_context *ctx, float value, int slot) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_chart_push_slot"); nk_flags flags; struct nk_window *win; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); - // NK_ASSERT(slot < ctx->current->layout->chart.slot); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(slot >= 0 && slot < NK_CHART_MAX_SLOT); + NK_ASSERT(slot < ctx->current->layout->chart.slot); if (!ctx || !ctx->current || slot >= NK_CHART_MAX_SLOT) return nk_false; if (slot >= ctx->current->layout->chart.slot) return nk_false; @@ -28791,20 +28255,18 @@ nk_chart_push_slot(struct nk_context *ctx, int value, int slot) return flags; } NK_API nk_flags -nk_chart_push(struct nk_context *ctx, int value) +nk_chart_push(struct nk_context *ctx, float value) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_chart_push"); return nk_chart_push_slot(ctx, value, 0); } NK_API void nk_chart_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_chart_end"); struct nk_window *win; struct nk_chart *chart; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; @@ -28814,16 +28276,15 @@ nk_chart_end(struct nk_context *ctx) return; } NK_API void -nk_plot(struct nk_context *ctx, enum nk_chart_type type, const int *values, +nk_plot(struct nk_context *ctx, enum nk_chart_type type, const float *values, int count, int offset) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - count, / int"); int i = 0; - int min_value; - int max_value; + float min_value; + float max_value; - // NK_ASSERT(ctx); - // NK_ASSERT(values); + NK_ASSERT(ctx); + NK_ASSERT(values); if (!ctx || !values || !count) return; min_value = values[offset]; @@ -28841,20 +28302,19 @@ nk_plot(struct nk_context *ctx, enum nk_chart_type type, const int *values, } NK_API void nk_plot_function(struct nk_context *ctx, enum nk_chart_type type, void *userdata, - int(*value_getter)(void* user, int index), int count, int offset) + float(*value_getter)(void* user, int index), int count, int offset) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - value_getter) / int"); int i = 0; - int min_value; - int max_value; + float min_value; + float max_value; - // NK_ASSERT(ctx); - // NK_ASSERT(value_getter); + NK_ASSERT(ctx); + NK_ASSERT(value_getter); if (!ctx || !value_getter || !count) return; max_value = min_value = value_getter(userdata, offset); for (i = 0; i < count; ++i) { - int value = value_getter(userdata, i + offset); + float value = value_getter(userdata, i + offset); min_value = NK_MIN(value, min_value); max_value = NK_MAX(value, max_value); } @@ -28881,15 +28341,14 @@ nk_color_picker_behavior(nk_flags *state, const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, struct nk_colorf *color, const struct nk_input *in) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - color / struct"); - int hsva[4]; + float hsva[4]; nk_bool value_changed = 0; nk_bool hsv_changed = 0; - // NK_ASSERT(state); - // NK_ASSERT(matrix); - // NK_ASSERT(hue_bar); - // NK_ASSERT(color); + NK_ASSERT(state); + NK_ASSERT(matrix); + NK_ASSERT(hue_bar); + NK_ASSERT(color); /* color matrix */ nk_colorf_hsva_fv(hsva, *color); @@ -28933,20 +28392,19 @@ nk_draw_color_picker(struct nk_command_buffer *o, const struct nk_rect *matrix, const struct nk_rect *hue_bar, const struct nk_rect *alpha_bar, struct nk_colorf col) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - col / struct"); NK_STORAGE const struct nk_color black = {0,0,0,255}; NK_STORAGE const struct nk_color white = {255, 255, 255, 255}; NK_STORAGE const struct nk_color black_trans = {0,0,0,0}; - const int crosshair_size = 7.0f; + const float crosshair_size = 7.0f; struct nk_color temp; - int hsva[4]; - int line_y; + float hsva[4]; + float line_y; int i; - // NK_ASSERT(o); - // NK_ASSERT(matrix); - // NK_ASSERT(hue_bar); + NK_ASSERT(o); + NK_ASSERT(matrix); + NK_ASSERT(hue_bar); /* draw hue bar */ nk_colorf_hsva_fv(hsva, col); @@ -28956,18 +28414,18 @@ nk_draw_color_picker(struct nk_command_buffer *o, const struct nk_rect *matrix, {0,0,255,255}, {255, 0, 255, 255}, {255, 0, 0, 255} }; nk_fill_rect_multi_color(o, - nk_rect(hue_bar->x, hue_bar->y + (int)i * (hue_bar->h/6.0f) + 0.5f, + nk_rect(hue_bar->x, hue_bar->y + (float)i * (hue_bar->h/6.0f) + 0.5f, hue_bar->w, (hue_bar->h/6.0f) + 0.5f), hue_colors[i], hue_colors[i], hue_colors[i+1], hue_colors[i+1]); } - line_y = (int)(int)(hue_bar->y + hsva[0] * matrix->h + 0.5f); + line_y = (float)(int)(hue_bar->y + hsva[0] * matrix->h + 0.5f); nk_stroke_line(o, hue_bar->x-1, line_y, hue_bar->x + hue_bar->w + 2, line_y, 1, nk_rgb(255,255,255)); /* draw alpha bar */ if (alpha_bar) { - int alpha = NK_SATURATE(col.a); - line_y = (int)(int)(alpha_bar->y + (1.0f - alpha) * matrix->h + 0.5f); + float alpha = NK_SATURATE(col.a); + line_y = (float)(int)(alpha_bar->y + (1.0f - alpha) * matrix->h + 0.5f); nk_fill_rect_multi_color(o, *alpha_bar, white, white, black, black); nk_stroke_line(o, alpha_bar->x-1, line_y, alpha_bar->x + alpha_bar->w + 2, @@ -28980,9 +28438,9 @@ nk_draw_color_picker(struct nk_command_buffer *o, const struct nk_rect *matrix, nk_fill_rect_multi_color(o, *matrix, black_trans, black_trans, black, black); /* draw cross-hair */ - {struct nk_vec2 p; int S = hsva[1]; int V = hsva[2]; - p.x = (int)(int)(matrix->x + S * matrix->w); - p.y = (int)(int)(matrix->y + (1.0f - V) * matrix->h); + {struct nk_vec2 p; float S = hsva[1]; float V = hsva[2]; + p.x = (float)(int)(matrix->x + S * matrix->w); + p.y = (float)(int)(matrix->y + (1.0f - V) * matrix->h); nk_stroke_line(o, p.x - crosshair_size, p.y, p.x-2, p.y, 1.0f, white); nk_stroke_line(o, p.x + crosshair_size + 1, p.y, p.x+3, p.y, 1.0f, white); nk_stroke_line(o, p.x, p.y + crosshair_size + 1, p.x, p.y+3, 1.0f, white); @@ -28995,17 +28453,16 @@ nk_do_color_picker(nk_flags *state, struct nk_vec2 padding, const struct nk_input *in, const struct nk_user_font *font) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_user_font / const"); int ret = 0; struct nk_rect matrix; struct nk_rect hue_bar; struct nk_rect alpha_bar; - int bar_w; + float bar_w; - // NK_ASSERT(out); - // NK_ASSERT(col); - // NK_ASSERT(state); - // NK_ASSERT(font); + NK_ASSERT(out); + NK_ASSERT(col); + NK_ASSERT(state); + NK_ASSERT(font); if (!out || !col || !state || !font) return ret; @@ -29039,7 +28496,6 @@ NK_API nk_bool nk_color_pick(struct nk_context * ctx, struct nk_colorf *color, enum nk_color_format fmt) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fmt / enum"); struct nk_window *win; struct nk_panel *layout; const struct nk_style *config; @@ -29048,10 +28504,10 @@ nk_color_pick(struct nk_context * ctx, struct nk_colorf *color, enum nk_widget_layout_states state; struct nk_rect bounds; - // NK_ASSERT(ctx); - // NK_ASSERT(color); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(color); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !color) return 0; @@ -29068,7 +28524,6 @@ NK_API struct nk_colorf nk_color_picker(struct nk_context *ctx, struct nk_colorf color, enum nk_color_format fmt) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - fmt / enum"); nk_color_pick(ctx, &color, fmt); return color; } @@ -29086,16 +28541,15 @@ NK_INTERN nk_bool nk_combo_begin(struct nk_context *ctx, struct nk_window *win, struct nk_vec2 size, nk_bool is_clicked, struct nk_rect header) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - size / struct"); struct nk_window *popup; int is_open = 0; int is_active = 0; struct nk_rect body; nk_hash hash; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29121,7 +28575,6 @@ NK_API nk_bool nk_combo_begin_text(struct nk_context *ctx, const char *selected, int len, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - size / struct"); const struct nk_input *in; struct nk_window *win; struct nk_style *style; @@ -29132,10 +28585,10 @@ nk_combo_begin_text(struct nk_context *ctx, const char *selected, int len, const struct nk_style_item *background; struct nk_text text; - // NK_ASSERT(ctx); - // NK_ASSERT(selected); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(selected); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout || !selected) return 0; @@ -29160,13 +28613,21 @@ nk_combo_begin_text(struct nk_context *ctx, const char *selected, int len, background = &style->combo.normal; text.text = style->combo.label_normal; } - if (background->type == NK_STYLE_ITEM_IMAGE) { - text.background = nk_rgba(0,0,0,0); - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - text.background = background->data.color; - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { /* print currently selected text item */ @@ -29219,13 +28680,11 @@ nk_combo_begin_text(struct nk_context *ctx, const char *selected, int len, NK_API nk_bool nk_combo_begin_label(struct nk_context *ctx, const char *selected, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_begin_label"); - return nk_combo_begin_text(ctx, selected, strlen(selected), size); + return nk_combo_begin_text(ctx, selected, nk_strlen(selected), size); } NK_API nk_bool nk_combo_begin_color(struct nk_context *ctx, struct nk_color color, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_begin_color"); struct nk_window *win; struct nk_style *style; const struct nk_input *in; @@ -29235,9 +28694,9 @@ nk_combo_begin_color(struct nk_context *ctx, struct nk_color color, struct nk_ve enum nk_widget_layout_states s; const struct nk_style_item *background; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29258,11 +28717,17 @@ nk_combo_begin_color(struct nk_context *ctx, struct nk_color color, struct nk_ve background = &style->combo.hover; else background = &style->combo.normal; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(&win->buffer, header, &background->data.image,nk_white); - } else { - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { struct nk_rect content; @@ -29311,7 +28776,6 @@ nk_combo_begin_color(struct nk_context *ctx, struct nk_color color, struct nk_ve NK_API nk_bool nk_combo_begin_symbol(struct nk_context *ctx, enum nk_symbol_type symbol, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_begin_symbol"); struct nk_window *win; struct nk_style *style; const struct nk_input *in; @@ -29323,9 +28787,9 @@ nk_combo_begin_symbol(struct nk_context *ctx, enum nk_symbol_type symbol, struct struct nk_color sym_background; struct nk_color symbol_color; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29351,13 +28815,20 @@ nk_combo_begin_symbol(struct nk_context *ctx, enum nk_symbol_type symbol, struct symbol_color = style->combo.symbol_hover; } - if (background->type == NK_STYLE_ITEM_IMAGE) { - sym_background = nk_rgba(0,0,0,0); - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - sym_background = background->data.color; - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + sym_background = nk_rgba(0, 0, 0, 0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + sym_background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + sym_background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { struct nk_rect bounds = {0,0,0,0}; @@ -29400,7 +28871,6 @@ NK_API nk_bool nk_combo_begin_symbol_text(struct nk_context *ctx, const char *selected, int len, enum nk_symbol_type symbol, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - symbol / enum"); struct nk_window *win; struct nk_style *style; struct nk_input *in; @@ -29412,9 +28882,9 @@ nk_combo_begin_symbol_text(struct nk_context *ctx, const char *selected, int len struct nk_color symbol_color; struct nk_text text; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29441,13 +28911,21 @@ nk_combo_begin_symbol_text(struct nk_context *ctx, const char *selected, int len symbol_color = style->combo.symbol_normal; text.text = style->combo.label_normal; } - if (background->type == NK_STYLE_ITEM_IMAGE) { - text.background = nk_rgba(0,0,0,0); - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - text.background = background->data.color; - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { struct nk_rect content; @@ -29496,7 +28974,6 @@ nk_combo_begin_symbol_text(struct nk_context *ctx, const char *selected, int len NK_API nk_bool nk_combo_begin_image(struct nk_context *ctx, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_begin_image"); struct nk_window *win; struct nk_style *style; const struct nk_input *in; @@ -29506,9 +28983,9 @@ nk_combo_begin_image(struct nk_context *ctx, struct nk_image img, struct nk_vec2 enum nk_widget_layout_states s; const struct nk_style_item *background; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29529,11 +29006,17 @@ nk_combo_begin_image(struct nk_context *ctx, struct nk_image img, struct nk_vec2 background = &style->combo.hover; else background = &style->combo.normal; - if (background->type == NK_STYLE_ITEM_IMAGE) { - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + switch (background->type) { + case NK_STYLE_ITEM_IMAGE: + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { struct nk_rect bounds = {0,0,0,0}; @@ -29583,7 +29066,6 @@ NK_API nk_bool nk_combo_begin_image_text(struct nk_context *ctx, const char *selected, int len, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - img / struct"); struct nk_window *win; struct nk_style *style; struct nk_input *in; @@ -29594,9 +29076,9 @@ nk_combo_begin_image_text(struct nk_context *ctx, const char *selected, int len, const struct nk_style_item *background; struct nk_text text; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29620,13 +29102,21 @@ nk_combo_begin_image_text(struct nk_context *ctx, const char *selected, int len, background = &style->combo.normal; text.text = style->combo.label_normal; } - if (background->type == NK_STYLE_ITEM_IMAGE) { - text.background = nk_rgba(0,0,0,0); - nk_draw_image(&win->buffer, header, &background->data.image, nk_white); - } else { - text.background = background->data.color; - nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); - nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + + switch(background->type) { + case NK_STYLE_ITEM_IMAGE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_image(&win->buffer, header, &background->data.image, nk_white); + break; + case NK_STYLE_ITEM_NINE_SLICE: + text.background = nk_rgba(0, 0, 0, 0); + nk_draw_nine_slice(&win->buffer, header, &background->data.slice, nk_white); + break; + case NK_STYLE_ITEM_COLOR: + text.background = background->data.color; + nk_fill_rect(&win->buffer, header, style->combo.rounding, background->data.color); + nk_stroke_rect(&win->buffer, header, style->combo.rounding, style->combo.border, style->combo.border_color); + break; } { struct nk_rect content; @@ -29683,79 +29173,68 @@ NK_API nk_bool nk_combo_begin_symbol_label(struct nk_context *ctx, const char *selected, enum nk_symbol_type type, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected / const"); - return nk_combo_begin_symbol_text(ctx, selected, strlen(selected), type, size); + return nk_combo_begin_symbol_text(ctx, selected, nk_strlen(selected), type, size); } NK_API nk_bool nk_combo_begin_image_label(struct nk_context *ctx, const char *selected, struct nk_image img, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected / const"); - return nk_combo_begin_image_text(ctx, selected, strlen(selected), img, size); + return nk_combo_begin_image_text(ctx, selected, nk_strlen(selected), img, size); } NK_API nk_bool nk_combo_item_text(struct nk_context *ctx, const char *text, int len,nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_item_text"); return nk_contextual_item_text(ctx, text, len, align); } NK_API nk_bool nk_combo_item_label(struct nk_context *ctx, const char *label, nk_flags align) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_combo_item_label"); return nk_contextual_item_label(ctx, label, align); } NK_API nk_bool nk_combo_item_image_text(struct nk_context *ctx, struct nk_image img, const char *text, int len, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - len, / int"); return nk_contextual_item_image_text(ctx, img, text, len, alignment); } NK_API nk_bool nk_combo_item_image_label(struct nk_context *ctx, struct nk_image img, const char *text, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); return nk_contextual_item_image_label(ctx, img, text, alignment); } NK_API nk_bool nk_combo_item_symbol_text(struct nk_context *ctx, enum nk_symbol_type sym, const char *text, int len, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - text / const"); return nk_contextual_item_symbol_text(ctx, sym, text, len, alignment); } NK_API nk_bool nk_combo_item_symbol_label(struct nk_context *ctx, enum nk_symbol_type sym, const char *label, nk_flags alignment) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - label / const"); return nk_contextual_item_symbol_label(ctx, sym, label, alignment); } NK_API void nk_combo_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_combo_end / NK_API"); nk_contextual_end(ctx); } NK_API void nk_combo_close(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_combo_close / NK_API"); nk_contextual_close(ctx); } NK_API int nk_combo(struct nk_context *ctx, const char **items, int count, int selected, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / int"); int i = 0; int max_height; struct nk_vec2 item_spacing; struct nk_vec2 window_padding; - // NK_ASSERT(ctx); - // NK_ASSERT(items); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(items); + NK_ASSERT(ctx->current); if (!ctx || !items ||!count) return selected; @@ -29763,9 +29242,9 @@ nk_combo(struct nk_context *ctx, const char **items, int count, window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); max_height = count * item_height + count * (int)item_spacing.y; max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; - size.y = NK_MIN(size.y, (int)max_height); + size.y = NK_MIN(size.y, (float)max_height); if (nk_combo_begin_label(ctx, items[selected], size)) { - nk_layout_row_dynamic(ctx, (int)item_height, 1); + nk_layout_row_dynamic(ctx, (float)item_height, 1); for (i = 0; i < count; ++i) { if (nk_combo_item_label(ctx, items[i], NK_TEXT_LEFT)) selected = i; @@ -29778,7 +29257,6 @@ NK_API int nk_combo_separator(struct nk_context *ctx, const char *items_separated_by_separator, int separator, int selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - separator, / int"); int i; int max_height; struct nk_vec2 item_spacing; @@ -29787,8 +29265,8 @@ nk_combo_separator(struct nk_context *ctx, const char *items_separated_by_separa const char *iter; int length = 0; - // NK_ASSERT(ctx); - // NK_ASSERT(items_separated_by_separator); + NK_ASSERT(ctx); + NK_ASSERT(items_separated_by_separator); if (!ctx || !items_separated_by_separator) return selected; @@ -29797,7 +29275,7 @@ nk_combo_separator(struct nk_context *ctx, const char *items_separated_by_separa window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); max_height = count * item_height + count * (int)item_spacing.y; max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; - size.y = NK_MIN(size.y, (int)max_height); + size.y = NK_MIN(size.y, (float)max_height); /* find selected item */ current_item = items_separated_by_separator; @@ -29811,7 +29289,7 @@ nk_combo_separator(struct nk_context *ctx, const char *items_separated_by_separa if (nk_combo_begin_text(ctx, current_item, length, size)) { current_item = items_separated_by_separator; - nk_layout_row_dynamic(ctx, (int)item_height, 1); + nk_layout_row_dynamic(ctx, (float)item_height, 1); for (i = 0; i < count; ++i) { iter = current_item; while (*iter && *iter != separator) iter++; @@ -29828,22 +29306,20 @@ NK_API int nk_combo_string(struct nk_context *ctx, const char *items_separated_by_zeros, int selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / int"); return nk_combo_separator(ctx, items_separated_by_zeros, '\0', selected, count, item_height, size); } NK_API int nk_combo_callback(struct nk_context *ctx, void(*item_getter)(void*, int, const char**), void *userdata, int selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - userdata, / void"); int i; int max_height; struct nk_vec2 item_spacing; struct nk_vec2 window_padding; const char *item; - // NK_ASSERT(ctx); - // NK_ASSERT(item_getter); + NK_ASSERT(ctx); + NK_ASSERT(item_getter); if (!ctx || !item_getter) return selected; @@ -29852,11 +29328,11 @@ nk_combo_callback(struct nk_context *ctx, void(*item_getter)(void*, int, const c window_padding = nk_panel_get_padding(&ctx->style, ctx->current->layout->type); max_height = count * item_height + count * (int)item_spacing.y; max_height += (int)item_spacing.y * 2 + (int)window_padding.y * 2; - size.y = NK_MIN(size.y, (int)max_height); + size.y = NK_MIN(size.y, (float)max_height); item_getter(userdata, selected, &item); if (nk_combo_begin_label(ctx, item, size)) { - nk_layout_row_dynamic(ctx, (int)item_height, 1); + nk_layout_row_dynamic(ctx, (float)item_height, 1); for (i = 0; i < count; ++i) { item_getter(userdata, i, &item); if (nk_combo_item_label(ctx, item, NK_TEXT_LEFT)) @@ -29869,21 +29345,18 @@ NK_API void nk_combobox(struct nk_context *ctx, const char **items, int count, int *selected, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / int"); *selected = nk_combo(ctx, items, count, *selected, item_height, size); } NK_API void nk_combobox_string(struct nk_context *ctx, const char *items_separated_by_zeros, int *selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - selected, / int"); *selected = nk_combo_string(ctx, items_separated_by_zeros, *selected, count, item_height, size); } NK_API void nk_combobox_separator(struct nk_context *ctx, const char *items_separated_by_separator, int separator, int *selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - separator, / int"); *selected = nk_combo_separator(ctx, items_separated_by_separator, separator, *selected, count, item_height, size); } @@ -29892,7 +29365,6 @@ nk_combobox_callback(struct nk_context *ctx, void(*item_getter)(void* data, int id, const char **out_text), void *userdata, int *selected, int count, int item_height, struct nk_vec2 size) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - userdata, / void"); *selected = nk_combo_callback(ctx, item_getter, userdata, *selected, count, item_height, size); } @@ -29906,18 +29378,17 @@ nk_combobox_callback(struct nk_context *ctx, * * ===============================================================*/ NK_API nk_bool -nk_tooltip_begin(struct nk_context *ctx, int width) +nk_tooltip_begin(struct nk_context *ctx, float width) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tooltip_begin"); int x,y,w,h; struct nk_window *win; const struct nk_input *in; struct nk_rect bounds; int ret; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); if (!ctx || !ctx->current || !ctx->current->layout) return 0; @@ -29932,10 +29403,10 @@ nk_tooltip_begin(struct nk_context *ctx, int width) x = nk_ifloorf(in->mouse.pos.x + 1) - (int)win->layout->clip.x; y = nk_ifloorf(in->mouse.pos.y + 1) - (int)win->layout->clip.y; - bounds.x = (int)x; - bounds.y = (int)y; - bounds.w = (int)w; - bounds.h = (int)h; + bounds.x = (float)x; + bounds.y = (float)y; + bounds.w = (float)w; + bounds.h = (float)h; ret = nk_popup_begin(ctx, NK_POPUP_DYNAMIC, "__##Tooltip##__", NK_WINDOW_NO_SCROLLBAR|NK_WINDOW_BORDER, bounds); @@ -29948,9 +29419,8 @@ nk_tooltip_begin(struct nk_context *ctx, int width) NK_API void nk_tooltip_end(struct nk_context *ctx) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tooltip_end"); - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); if (!ctx || !ctx->current) return; ctx->current->seq--; nk_popup_close(ctx); @@ -29959,18 +29429,17 @@ nk_tooltip_end(struct nk_context *ctx) NK_API void nk_tooltip(struct nk_context *ctx, const char *text) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tooltip"); const struct nk_style *style; struct nk_vec2 padding; int text_len; - int text_width; - int text_height; + float text_width; + float text_height; - // NK_ASSERT(ctx); - // NK_ASSERT(ctx->current); - // NK_ASSERT(ctx->current->layout); - // NK_ASSERT(text); + NK_ASSERT(ctx); + NK_ASSERT(ctx->current); + NK_ASSERT(ctx->current->layout); + NK_ASSERT(text); if (!ctx || !ctx->current || !ctx->current->layout || !text) return; @@ -29979,15 +29448,15 @@ nk_tooltip(struct nk_context *ctx, const char *text) padding = style->window.padding; /* calculate size of the text and tooltip */ - text_len = strlen(text); + text_len = nk_strlen(text); text_width = style->font->width(style->font->userdata, style->font->height, text, text_len); text_width += (4 * padding.x); text_height = (style->font->height + 2 * padding.y); /* execute tooltip and fill with text */ - if (nk_tooltip_begin(ctx, (int)text_width)) { - nk_layout_row_dynamic(ctx, (int)text_height, 1); + if (nk_tooltip_begin(ctx, (float)text_width)) { + nk_layout_row_dynamic(ctx, (float)text_height, 1); nk_text(ctx, text, text_len, NK_TEXT_LEFT); nk_tooltip_end(ctx); } @@ -29996,7 +29465,6 @@ nk_tooltip(struct nk_context *ctx, const char *text) NK_API void nk_tooltipf(struct nk_context *ctx, const char *fmt, ...) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tooltipf"); va_list args; va_start(args, fmt); nk_tooltipfv(ctx, fmt, args); @@ -30005,7 +29473,6 @@ nk_tooltipf(struct nk_context *ctx, const char *fmt, ...) NK_API void nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) { - //writeSerialPort(boutRefNum, "FUNCTION CALL - nk_context / nk_tooltipfv"); char buf[256]; nk_strfmt(buf, NK_LEN(buf), fmt, args); nk_tooltip(ctx, buf); @@ -30070,6 +29537,16 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - [yy]: Minor version with non-breaking API and library changes /// - [zz]: Bug fix version with no direct changes to API /// +/// - 2021/09/15 (4.08.4) - Fix "'num_len' may be used uninitialized" in nk_do_property +/// - 2021/09/15 (4.08.3) - Fix "Templates cannot be declared to have 'C' Linkage" +/// - 2021/09/08 (4.08.2) - Fix warnings in C89 builds +/// - 2021/09/08 (4.08.1) - Use compiler builtins for NK_OFFSETOF when possible +/// - 2021/08/17 (4.08.0) - Implemented 9-slice scaling support for widget styles +/// - 2021/08/16 (4.07.5) - Replace usage of memset in nk_font_atlas_bake with NK_MEMSET +/// - 2021/08/15 (4.07.4) - Fix conversion and sign conversion warnings +/// - 2021/08/08 (4.07.3) - Fix crash when baking merged fonts +/// - 2021/08/08 (4.07.2) - Fix Multiline Edit wrong offset +/// - 2021/03/17 (4.07.1) - Fix warning about unused parameter /// - 2021/03/17 (4.07.0) - Fix nk_property hover bug /// - 2021/03/15 (4.06.4) - Change nk_propertyi back to int /// - 2021/03/15 (4.06.3) - Update documentation for functions that now return nk_bool @@ -30117,8 +29594,8 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - 2018/01/12 (3.00.2) - Added `nk_group_begin_titled` for separed group identifier and title. /// - 2018/01/07 (3.00.1) - Started to change documentation style. /// - 2018/01/05 (3.00.0) - BREAKING CHANGE: The previous color picker API was broken -/// because of conversions between int and byte color representation. -/// Color pickers now use inting point values to represent +/// because of conversions between float and byte color representation. +/// Color pickers now use floating point values to represent /// HSV values. To get back the old behavior I added some additional /// color conversion functions to cast between nk_color and /// nk_colorf. @@ -30133,7 +29610,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - 2017/09/14 (2.00.1) - Fixed window closing behavior. /// - 2017/09/14 (2.00.0) - BREAKING CHANGE: Modifing window position and size funtions now /// require the name of the window and must happen outside the window -/// building process (between function call nk_begin and nk_en / gd). +/// building process (between function call nk_begin and nk_end). /// - 2017/09/11 (1.40.9) - Fixed window background flag if background window is declared last. /// - 2017/08/27 (1.40.8) - Fixed `nk_item_is_any_active` for hidden windows. /// - 2017/08/27 (1.40.7) - Fixed window background flag. @@ -30165,7 +29642,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - 2017/04/20 (1.37.1) - Fixed key repeat found inside glfw demo backends. /// - 2017/04/20 (1.37.0) - Extended properties with selection and clipboard support. /// - 2017/04/20 (1.36.2) - Fixed #405 overlapping rows with zero padding and spacing. -/// - 2017/04/09 (1.36.1) - Fixed #403 with another widget int error. +/// - 2017/04/09 (1.36.1) - Fixed #403 with another widget float error. /// - 2017/04/09 (1.36.0) - Added window `NK_WINDOW_NO_INPUT` and `NK_WINDOW_NOT_INTERACTIVE` flags. /// - 2017/04/09 (1.35.3) - Fixed buffer heap corruption. /// - 2017/03/25 (1.35.2) - Fixed popup overlapping for `NK_WINDOW_BACKGROUND` windows. @@ -30312,16 +29789,16 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// - 2016/08/12 (1.09.1) - nk_window_is_closed now queries the correct flag `NK_WINDOW_CLOSED` /// instead of the old flag `NK_WINDOW_HIDDEN`. /// - 2016/08/09 (1.09.0) - Added additional double version to nk_property and changed -/// the underlying implementation to not cast to int and instead +/// the underlying implementation to not cast to float and instead /// work directly on the given values. /// - 2016/08/09 (1.08.0) - Added additional define to overwrite library internal -/// inting pointer number to string conversion for additional +/// floating pointer number to string conversion for additional /// precision. /// - 2016/08/09 (1.08.0) - Added additional define to overwrite library internal -/// string to inting point number conversion for additional +/// string to floating point number conversion for additional /// precision. /// - 2016/08/08 (1.07.2) - Fixed compiling error without define `NK_INCLUDE_FIXED_TYPE`. -/// - 2016/08/08 (1.07.1) - Fixed possible inting point error inside `nk_widget` leading +/// - 2016/08/08 (1.07.1) - Fixed possible floating point error inside `nk_widget` leading /// to wrong wiget width calculation which results in widgets falsly /// becomming tagged as not inside window and cannot be accessed. /// - 2016/08/08 (1.07.0) - Nuklear now differentiates between hiding a window (NK_WINDOW_HIDDEN) and @@ -30371,7 +29848,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// font atlas memory management by converting pointer /// arrays for fonts and font configurations to lists. /// - 2016/07/15 (1.00.0) - Changed button API to use context dependend button -/// behavior instead of passing it for every function ca / toll. +/// behavior instead of passing it for every function call. /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// ## Gallery /// ![Figure [blue]: Feature overview with blue color styling](https://cloud.githubusercontent.com/assets/8057201/13538240/acd96876-e249-11e5-9547-5ac0b19667a0.png) @@ -30398,4 +29875,3 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args) /// in libraries and brought me to create some of my own. Finally Apoorva Joshi /// for his single header file packer. */ - diff --git a/nuklear_quickdraw.h b/nuklear_quickdraw.h index a79a956..487d2bf 100644 --- a/nuklear_quickdraw.h +++ b/nuklear_quickdraw.h @@ -394,7 +394,7 @@ int widthFor12ptFont[128] = { // doing this in a "fast" way by using a precomputed table for a 12pt font static int nk_quickdraw_font_get_text_width(nk_handle handle, int height, const char *text, int len) { - // writeSerialPortDebug(boutRefNum, "nk_quickdraw_font_get_text_width"); + // // writeSerialPortDebug(boutRefNum, "nk_quickdraw_font_get_text_width"); if (!text || len == 0) { @@ -413,7 +413,7 @@ static int nk_quickdraw_font_get_text_width(nk_handle handle, int height, const static int _get_text_width(const char *text, int len) { - // writeSerialPortDebug(boutRefNum, "nk_quickdraw_font_get_text_width"); + // // writeSerialPortDebug(boutRefNum, "nk_quickdraw_font_get_text_width"); if (!text || len == 0) { @@ -447,7 +447,7 @@ static int nk_color_to_quickdraw_bw_color(struct nk_color color) { char stringMagicColorNumber[255]; sprintf(stringMagicColorNumber, "stringMagicColorNumber: %f", magicColorNumber); - writeSerialPortDebug(boutRefNum, stringMagicColorNumber); + // writeSerialPortDebug(boutRefNum, stringMagicColorNumber); #endif if (magicColorNumber > 37) { @@ -523,7 +523,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_NOP"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_NOP"); #endif return; @@ -556,17 +556,17 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { if (lastEventWasKey && cmd->type == NK_COMMAND_TEXT) { - //writeSerialPortDebug(boutRefNum, "FAST INPUT"); + // //writeSerialPortDebug(boutRefNum, "FAST INPUT"); const struct nk_command_text *t = (const struct nk_command_text*)cmd; #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_TEXT"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_TEXT"); char log[255]; sprintf(log, "%f: %c, %d", (int)t->height, &t->string, (int)t->length); - writeSerialPortDebug(boutRefNum, log); + // writeSerialPortDebug(boutRefNum, log); #endif MoveTo((int)t->x + _get_text_width(&t->string, (int)t->length - 1), (int)t->y + (int)t->height); @@ -578,14 +578,14 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { } else if (!lastEventWasKey) { - // writeSerialPortDebug(boutRefNum, "SLOW INPUT"); + // // writeSerialPortDebug(boutRefNum, "SLOW INPUT"); switch (cmd->type) { case NK_COMMAND_NOP: #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_NOP"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_NOP"); #endif @@ -594,7 +594,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_SCISSOR"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_SCISSOR"); #endif const struct nk_command_scissor *s =(const struct nk_command_scissor*)cmd; @@ -620,7 +620,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_LINE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_LINE"); #endif const struct nk_command_line *l = (const struct nk_command_line *)cmd; @@ -640,7 +640,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT"); #endif // http://mirror.informatimago.com/next/developer.apple.com/documentation/mac/QuickDraw/QuickDraw-102.html#MARKER-9-372 @@ -667,7 +667,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT_FILLED"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT_FILLED"); #endif const struct nk_command_rect_filled *r = (const struct nk_command_rect_filled *)cmd; @@ -695,7 +695,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_CIRCLE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_CIRCLE"); #endif const struct nk_command_circle *c = (const struct nk_command_circle *)cmd; @@ -718,7 +718,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_CIRCLE_FILLED"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_CIRCLE_FILLED"); #endif const struct nk_command_circle_filled *c = (const struct nk_command_circle_filled *)cmd; @@ -746,7 +746,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_TRIANGLE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_TRIANGLE"); #endif const struct nk_command_triangle *t = (const struct nk_command_triangle*)cmd; @@ -767,7 +767,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_TRIANGLE_FILLED"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_TRIANGLE_FILLED"); #endif const struct nk_command_triangle_filled *t = (const struct nk_command_triangle_filled *)cmd; @@ -794,7 +794,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYGON"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYGON"); #endif const struct nk_command_polygon *p = (const struct nk_command_polygon*)cmd; @@ -826,7 +826,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYGON_FILLED"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYGON_FILLED"); #endif const struct nk_command_polygon *p = (const struct nk_command_polygon*)cmd; @@ -865,7 +865,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYLINE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_POLYLINE"); #endif // this is similar to polygons except the polygon does not get closed to the 0th point @@ -894,10 +894,10 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_TEXT"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_TEXT"); char log[255]; sprintf(log, "%f: %c, %d", (int)t->height, &t->string, (int)t->length); - writeSerialPortDebug(boutRefNum, log); + // writeSerialPortDebug(boutRefNum, log); #endif color = nk_color_to_quickdraw_bw_color(t->foreground); @@ -914,7 +914,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_CURVE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_CURVE"); #endif const struct nk_command_curve *q = (const struct nk_command_curve *)cmd; @@ -933,7 +933,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_ARC"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_ARC"); #endif const struct nk_command_arc *a = (const struct nk_command_arc *)cmd; @@ -958,7 +958,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_IMAGE"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_IMAGE"); #endif const struct nk_command_image *i = (const struct nk_command_image *)cmd; @@ -994,7 +994,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { #ifdef NK_QUICKDRAW_GRAPHICS_DEBUGGING - writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT_MULTI_COLOR/NK_COMMAND_ARC_FILLED/default"); + // writeSerialPortDebug(boutRefNum, "NK_COMMAND_RECT_MULTI_COLOR/NK_COMMAND_ARC_FILLED/default"); #endif break; } @@ -1026,7 +1026,7 @@ NK_API void nk_quickdraw_render(WindowPtr window, struct nk_context *ctx) { // char logx[255]; // sprintf(logx, "nk_quickdraw_render() renderTime1 (pre-render) %ld, renderTime2 (render loop) %ld, renderTime3 (post-render) %ld ticks to execute\n", renderTime1, renderTime2, renderTime3); - // writeSerialPortDebug(boutRefNum, logx); + // // writeSerialPortDebug(boutRefNum, logx); lastEventWasKey = 0; } @@ -1039,7 +1039,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl FindWindow(event->where, &window); // char logb[255]; // sprintf(logb, "nk_quickdraw_handle_event event %d", event->what); - // writeSerialPortDebug(boutRefNum, logb); + // // writeSerialPortDebug(boutRefNum, logb); switch (event->what) { case updateEvt: { @@ -1051,7 +1051,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl // notice that we are actually calling nk_input_motion in the EventLoop for the program // instead, as handling this event directly does not appear to work for whatever reason // TODO: research this - writeSerialPortDebug(boutRefNum, "osEvt"); + // writeSerialPortDebug(boutRefNum, "osEvt"); switch (event->message) { @@ -1059,7 +1059,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "mouseMovedMessage"); + // writeSerialPortDebug(boutRefNum, "mouseMovedMessage"); #endif @@ -1078,13 +1078,13 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl case mouseUp: #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "mouseUp!!!"); + // writeSerialPortDebug(boutRefNum, "mouseUp!!!"); #endif case mouseDown: { #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "mouseUp/Down"); + // writeSerialPortDebug(boutRefNum, "mouseUp/Down"); #endif short part = FindWindow(event->where, &window); @@ -1095,7 +1095,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl // TODO need to figure this out #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "mouseUp/Down IN DEFAULT ZONE!!!!"); + // writeSerialPortDebug(boutRefNum, "mouseUp/Down IN DEFAULT ZONE!!!!"); #endif // this converts the offset of the window to the actual location of the mouse within the window @@ -1107,7 +1107,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "no event location for mouse!!!!"); + // writeSerialPortDebug(boutRefNum, "no event location for mouse!!!!"); #endif return 1; } @@ -1118,7 +1118,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl char logx[255]; sprintf(logx, "mouse location at time of click h: %d, v: %d", x, y); - writeSerialPortDebug(boutRefNum, logx); + // writeSerialPortDebug(boutRefNum, logx); #endif // nk_input_motion(nuklear_context, x, y); // you can enable this if you don't want to use motion tracking @@ -1140,11 +1140,11 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "keyDown/autoKey"); + // writeSerialPortDebug(boutRefNum, "keyDown/autoKey"); char logy[255]; sprintf(logy, "key pressed: key: '%c', 02x: '%02X', return: '%02X', %d == %d ??", key, key, returnKey, (int)(key), (int)(returnKey)); - writeSerialPortDebug(boutRefNum, logy); + // writeSerialPortDebug(boutRefNum, logy); #endif const Boolean isKeyDown = event->what == keyDown; @@ -1224,7 +1224,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "default keydown/autokey event"); + // writeSerialPortDebug(boutRefNum, "default keydown/autokey event"); #endif nk_input_unicode(nuklear_context, charKey); @@ -1238,7 +1238,7 @@ NK_API int nk_quickdraw_handle_event(EventRecord *event, struct nk_context *nukl default: { #ifdef NK_QUICKDRAW_EVENTS_DEBUGGING - writeSerialPortDebug(boutRefNum, "default unhandled event"); + // writeSerialPortDebug(boutRefNum, "default unhandled event"); #endif return 1; diff --git a/output_js b/output_js index e96bd05..f3db40c 100644 --- a/output_js +++ b/output_js @@ -17,10 +17,10 @@ const defaultOptions = { } const client = new ApolloClient({ - uri: 'http://10.0.1.166:4000/', + uri: 'http://10.0.1.167:4000/', cache: new InMemoryCache(), link: new createHttpLink({ - uri: 'http://10.0.1.166:4000/' + uri: 'http://10.0.1.167:4000/' }), defaultOptions }); diff --git a/output_js.h b/output_js.h index 1b533fb..d469a7b 100644 --- a/output_js.h +++ b/output_js.h @@ -41,7 +41,7 @@ unsigned char OUTPUT_JS[] = { 0x20, 0x41, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x28, 0x7b, 0x0a, 0x20, 0x20, 0x75, 0x72, 0x69, 0x3a, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x31, 0x30, 0x2e, 0x30, 0x2e, - 0x31, 0x2e, 0x31, 0x36, 0x36, 0x3a, 0x34, 0x30, 0x30, 0x30, 0x2f, 0x27, + 0x31, 0x2e, 0x31, 0x36, 0x37, 0x3a, 0x34, 0x30, 0x30, 0x30, 0x2f, 0x27, 0x2c, 0x0a, 0x20, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x3a, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x6c, 0x69, @@ -49,7 +49,7 @@ unsigned char OUTPUT_JS[] = { 0x74, 0x65, 0x48, 0x74, 0x74, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x28, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x72, 0x69, 0x3a, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x31, 0x30, 0x2e, 0x30, 0x2e, 0x31, - 0x2e, 0x31, 0x36, 0x36, 0x3a, 0x34, 0x30, 0x30, 0x30, 0x2f, 0x27, 0x0a, + 0x2e, 0x31, 0x36, 0x37, 0x3a, 0x34, 0x30, 0x30, 0x30, 0x2f, 0x27, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x69,

  • (pmI$sxHnzjU@=wgdv-5>2w)b=PONNUqqG>Df=0 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 delta 167871 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