Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions demo/common/overview.c
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ overview(struct nk_context *ctx)
}
/* progressbar combobox */
sum = prog_a + prog_b + prog_c + prog_d;
sprintf(buffer, "%lu", sum);
sprintf(buffer, "%" NK_FMT_SIZE, sum);
if (nk_combo_begin_label(ctx, buffer, nk_vec2(200,200))) {
nk_layout_row_dynamic(ctx, 30, 1);
nk_progress(ctx, &prog_a, 100, NK_MODIFIABLE);
Expand All @@ -456,7 +456,7 @@ overview(struct nk_context *ctx)

/* checkbox combobox */
sum = (size_t)(check_values[0] + check_values[1] + check_values[2] + check_values[3] + check_values[4]);
sprintf(buffer, "%lu", sum);
sprintf(buffer, "%" NK_FMT_SIZE, sum);
if (nk_combo_begin_label(ctx, buffer, nk_vec2(200,200))) {
nk_layout_row_dynamic(ctx, 30, 1);
nk_checkbox_label(ctx, weapons[0], &check_values[0]);
Expand Down
90 changes: 83 additions & 7 deletions nuklear.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,9 @@ extern "C" {
*
* ===============================================================
*/
#ifdef NK_INCLUDE_FIXED_TYPES
#ifdef NK_INCLUDE_FIXED_TYPES
#include <stdint.h>
#include <inttypes.h>
#define NK_INT8 int8_t
#define NK_UINT8 uint8_t
#define NK_INT16 int16_t
Expand All @@ -348,39 +349,73 @@ extern "C" {
#define NK_UINT32 uint32_t
#define NK_SIZE_TYPE uintptr_t
#define NK_POINTER_TYPE uintptr_t
#define NK_INT8_FMT PRIi8
#define NK_UINT8_FMT PRIu8
#define NK_INT16_FMT PRIi16
#define NK_UINT16_FMT PRIu16
#define NK_INT32_FMT PRIi32
#define NK_UINT32_FMT PRIu32
#define NK_SIZE_TYPE_FMT PRIuPTR
#define NK_POINTER_TYPE_FMT PRIxPTR
#else
#ifndef NK_INT8
#define NK_INT8 signed char
#endif
#ifndef NK_INT8_FMT
#define NK_INT8_FMT "i"
#endif
#ifndef NK_UINT8
#define NK_UINT8 unsigned char
#endif
#ifndef NK_UINT8_FMT
#define NK_UINT8_FMT "u"
#endif
#ifndef NK_INT16
#define NK_INT16 signed short
#endif
#ifndef NK_INT16_FMT
#define NK_INT16_FMT "i"
#endif
#ifndef NK_UINT16
#define NK_UINT16 unsigned short
#endif
#ifndef NK_UINT16_FMT
#define NK_UINT16_FMT "u"
#endif
#ifndef NK_INT32
#if defined(_MSC_VER)
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_INT32 __int32
#else
#define NK_INT32 signed int
#endif
#endif
#ifndef NK_INT32_FMT
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_INT32_FMT "I32d"
#else
#define NK_INT32_FMT "i"
#endif
#endif
#ifndef NK_UINT32
#if defined(_MSC_VER)
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_UINT32 unsigned __int32
#else
#define NK_UINT32 unsigned int
#endif
#endif
#ifndef NK_UINT32_FMT
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_UINT32_FMT "I32u"
#else
#define NK_UINT32_FMT "u"
#endif
#endif
#ifndef NK_SIZE_TYPE
#if defined(_WIN64) && defined(_MSC_VER)
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_SIZE_TYPE unsigned __int64
#elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__))
#define NK_SIZE_TYPE unsigned long long
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_SIZE_TYPE unsigned __int32
#elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__))
#define NK_SIZE_TYPE unsigned long
Expand All @@ -394,12 +429,27 @@ extern "C" {
#define NK_SIZE_TYPE unsigned long
#endif
#endif
#ifndef NK_SIZE_TYPE_FMT
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_SIZE_TYPE_FMT "I64u"
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_SIZE_TYPE_FMT "I32u"
#elif defined(__GNUC__) || defined(__clang__)
#if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__)
#define NK_SIZE_TYPE_FMT "lu"
#else
#define NK_SIZE_TYPE_FMT "u"
#endif
#else
#define NK_SIZE_TYPE_FMT "lu"
#endif
#endif
#ifndef NK_POINTER_TYPE
#if defined(_WIN64) && defined(_MSC_VER)
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_POINTER_TYPE unsigned __int64
#elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__))
#define NK_POINTER_TYPE unsigned long long
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) || defined(__MINGW32__)
#define NK_POINTER_TYPE unsigned __int32
#elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__))
#define NK_POINTER_TYPE unsigned long
Expand All @@ -413,6 +463,21 @@ extern "C" {
#define NK_POINTER_TYPE unsigned long
#endif
#endif
#ifndef NK_POINTER_TYPE_FMT
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_POINTER_TYPE_FMT "I64x"
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_POINTER_TYPE_FMT "I32x"
#elif defined(__GNUC__) || defined(__clang__)
#if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__)
#define NK_POINTER_TYPE_FMT "lx"
#else
#define NK_POINTER_TYPE_FMT "x"
#endif
#else
#define NK_POINTER_TYPE_FMT "lx"
#endif
#endif
#endif

/**< could be any type with semantic of standard bool, either equal or smaller than int */
Expand All @@ -425,6 +490,16 @@ extern "C" {
#endif
#endif

#define NK_FMT_CHAR NK_INT8_FMT
#define NK_FMT_UCHAR NK_UINT8_FMT
#define NK_FMT_BYTE NK_UINT8_FMT
#define NK_FMT_SHORT NK_INT16_FMT
#define NK_FMT_USHORT NK_UINT16_FMT
#define NK_FMT_INT NK_INT32_FMT
#define NK_FMT_UINT NK_UINT32_FMT
#define NK_FMT_SIZE NK_SIZE_TYPE_FMT
#define NK_FMT_PTR NK_POINTER_TYPE_FMT

typedef NK_INT8 nk_char;
typedef NK_UINT8 nk_uchar;
typedef NK_UINT8 nk_byte;
Expand Down Expand Up @@ -30771,6 +30846,7 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args)
/// - Fix: guard nk_pow, nk_ifloord, nk_log10 with preprocessor
/// - 2025/11/15 (4.13.0) - Fix: nk_property not updating 'win->edit.active'
/// Add new updated demo: sdl3_renderer
/// - Add printf formatting macros for nk data types
/// - 2025/10/08 (4.12.8) - Fix nk_widget_text to use NK_TEXT_ALIGN_LEFT by default,
/// instead of silently failing when no x-axis alignment is provided,
/// and refactor this function to keep the code style consistent
Expand Down
1 change: 1 addition & 0 deletions src/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
/// - Fix: guard nk_pow, nk_ifloord, nk_log10 with preprocessor
/// - 2025/11/15 (4.13.0) - Fix: nk_property not updating 'win->edit.active'
/// Add new updated demo: sdl3_renderer
/// - Add printf formatting macros for nk data types
/// - 2025/10/08 (4.12.8) - Fix nk_widget_text to use NK_TEXT_ALIGN_LEFT by default,
/// instead of silently failing when no x-axis alignment is provided,
/// and refactor this function to keep the code style consistent
Expand Down
89 changes: 82 additions & 7 deletions src/nuklear.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,9 @@ extern "C" {
*
* ===============================================================
*/
#ifdef NK_INCLUDE_FIXED_TYPES
#ifdef NK_INCLUDE_FIXED_TYPES
#include <stdint.h>
#include <inttypes.h>
#define NK_INT8 int8_t
#define NK_UINT8 uint8_t
#define NK_INT16 int16_t
Expand All @@ -125,39 +126,73 @@ extern "C" {
#define NK_UINT32 uint32_t
#define NK_SIZE_TYPE uintptr_t
#define NK_POINTER_TYPE uintptr_t
#define NK_INT8_FMT PRIi8
#define NK_UINT8_FMT PRIu8
#define NK_INT16_FMT PRIi16
#define NK_UINT16_FMT PRIu16
#define NK_INT32_FMT PRIi32
#define NK_UINT32_FMT PRIu32
#define NK_SIZE_TYPE_FMT PRIuPTR
#define NK_POINTER_TYPE_FMT PRIxPTR
#else
#ifndef NK_INT8
#define NK_INT8 signed char
#endif
#ifndef NK_INT8_FMT
#define NK_INT8_FMT "i"
#endif
#ifndef NK_UINT8
#define NK_UINT8 unsigned char
#endif
#ifndef NK_UINT8_FMT
#define NK_UINT8_FMT "u"
#endif
#ifndef NK_INT16
#define NK_INT16 signed short
#endif
#ifndef NK_INT16_FMT
#define NK_INT16_FMT "i"
#endif
#ifndef NK_UINT16
#define NK_UINT16 unsigned short
#endif
#ifndef NK_UINT16_FMT
#define NK_UINT16_FMT "u"
#endif
#ifndef NK_INT32
#if defined(_MSC_VER)
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_INT32 __int32
#else
#define NK_INT32 signed int
#endif
#endif
#ifndef NK_INT32_FMT
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_INT32_FMT "I32d"
#else
#define NK_INT32_FMT "i"
#endif
#endif
#ifndef NK_UINT32
#if defined(_MSC_VER)
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_UINT32 unsigned __int32
#else
#define NK_UINT32 unsigned int
#endif
#endif
#ifndef NK_UINT32_FMT
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#define NK_UINT32_FMT "I32u"
#else
#define NK_UINT32_FMT "u"
#endif
#endif
#ifndef NK_SIZE_TYPE
#if defined(_WIN64) && defined(_MSC_VER)
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_SIZE_TYPE unsigned __int64
#elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__))
#define NK_SIZE_TYPE unsigned long long
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_SIZE_TYPE unsigned __int32
#elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__))
#define NK_SIZE_TYPE unsigned long
Expand All @@ -171,12 +206,27 @@ extern "C" {
#define NK_SIZE_TYPE unsigned long
#endif
#endif
#ifndef NK_SIZE_TYPE_FMT
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_SIZE_TYPE_FMT "I64u"
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_SIZE_TYPE_FMT "I32u"
#elif defined(__GNUC__) || defined(__clang__)
#if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__)
#define NK_SIZE_TYPE_FMT "lu"
#else
#define NK_SIZE_TYPE_FMT "u"
#endif
#else
#define NK_SIZE_TYPE_FMT "lu"
#endif
#endif
#ifndef NK_POINTER_TYPE
#if defined(_WIN64) && defined(_MSC_VER)
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_POINTER_TYPE unsigned __int64
#elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__))
#define NK_POINTER_TYPE unsigned long long
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)
#elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) || defined(__MINGW32__)
#define NK_POINTER_TYPE unsigned __int32
#elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__))
#define NK_POINTER_TYPE unsigned long
Expand All @@ -190,6 +240,21 @@ extern "C" {
#define NK_POINTER_TYPE unsigned long
#endif
#endif
#ifndef NK_POINTER_TYPE_FMT
#if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__)
#define NK_POINTER_TYPE_FMT "I64x"
#elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__)
#define NK_POINTER_TYPE_FMT "I32x"
#elif defined(__GNUC__) || defined(__clang__)
#if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__)
#define NK_POINTER_TYPE_FMT "lx"
#else
#define NK_POINTER_TYPE_FMT "x"
#endif
#else
#define NK_POINTER_TYPE_FMT "lx"
#endif
#endif
#endif

/**< could be any type with semantic of standard bool, either equal or smaller than int */
Expand All @@ -202,6 +267,16 @@ extern "C" {
#endif
#endif

#define NK_FMT_CHAR NK_INT8_FMT
#define NK_FMT_UCHAR NK_UINT8_FMT
#define NK_FMT_BYTE NK_UINT8_FMT
#define NK_FMT_SHORT NK_INT16_FMT
#define NK_FMT_USHORT NK_UINT16_FMT
#define NK_FMT_INT NK_INT32_FMT
#define NK_FMT_UINT NK_UINT32_FMT
#define NK_FMT_SIZE NK_SIZE_TYPE_FMT
#define NK_FMT_PTR NK_POINTER_TYPE_FMT

typedef NK_INT8 nk_char;
typedef NK_UINT8 nk_uchar;
typedef NK_UINT8 nk_byte;
Expand Down