From 1392344cdde1529b1ea1163e258e721b0f3d13b3 Mon Sep 17 00:00:00 2001 From: Sean Barrett Date: Sat, 16 Apr 2016 09:14:39 -0700 Subject: [PATCH] include stb_connected_components.h in main stb compile tests, add test app --- data/map_01.png | Bin 0 -> 26064 bytes data/map_02.png | Bin 0 -> 3243 bytes data/map_03.png | Bin 0 -> 8747 bytes tests/stb.dsp | 6 +++++- tests/test_c_compilation.c | 5 +++++ tests/test_cpp_compilation.cpp | 5 +++++ tests/test_truetype.c | 4 ++-- 7 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 data/map_01.png create mode 100644 data/map_02.png create mode 100644 data/map_03.png diff --git a/data/map_01.png b/data/map_01.png new file mode 100644 index 0000000000000000000000000000000000000000..a2be8a0dc73c2be249a6250034362ccaef2644ea GIT binary patch literal 26064 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 VBeH!{f^Yx;002ovPDHLkV1oUP1&06t literal 0 HcmV?d00001 diff --git a/tests/stb.dsp b/tests/stb.dsp index 68c1806..b5ce917 100644 --- a/tests/stb.dsp +++ b/tests/stb.dsp @@ -66,7 +66,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "MAIN_TEST" /FR /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "GRID_TEST" /FR /FD /GZ /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -86,6 +86,10 @@ LINK32=link.exe # Name "stb - Win32 Debug" # Begin Source File +SOURCE=.\grid_reachability.c +# End Source File +# Begin Source File + SOURCE=..\docs\other_libs.md # End Source File # Begin Source File diff --git a/tests/test_c_compilation.c b/tests/test_c_compilation.c index de25330..3f4148c 100644 --- a/tests/test_c_compilation.c +++ b/tests/test_c_compilation.c @@ -9,6 +9,7 @@ #define STB_RECT_PACK_IMPLEMENTATION #define STB_VOXEL_RENDER_IMPLEMENTATION #define STB_EASY_FONT_IMPLEMENTATION +#define STB_CONNECTED_COMPONENTS_IMPLEMENTATION #include "stb_easy_font.h" #include "stb_herringbone_wang_tile.h" @@ -21,6 +22,10 @@ #include "stb_image_resize.h" #include "stb_rect_pack.h" +#define STBCC_GRID_COUNT_X_LOG2 10 +#define STBCC_GRID_COUNT_Y_LOG2 10 +#include "stb_connected_components.h" + #define STBVOX_CONFIG_MODE 1 #include "stb_voxel_render.h" diff --git a/tests/test_cpp_compilation.cpp b/tests/test_cpp_compilation.cpp index 97bd2c2..4e77da5 100644 --- a/tests/test_cpp_compilation.cpp +++ b/tests/test_cpp_compilation.cpp @@ -8,6 +8,7 @@ #define STB_HERRINGBONE_WANG_TILE_IMPLEMENTATION #define STB_RECT_PACK_IMPLEMENTATION #define STB_VOXEL_RENDER_IMPLEMENTATION +#define STB_CONNECTED_COMPONENTS_IMPLEMENTATION #define STBI_MALLOC my_malloc #define STBI_FREE my_free @@ -27,6 +28,10 @@ void my_free(void *) { } #include "stb_divide.h" #include "stb_herringbone_wang_tile.h" +#define STBCC_GRID_COUNT_X_LOG2 10 +#define STBCC_GRID_COUNT_Y_LOG2 10 +#include "stb_connected_components.h" + #define STBVOX_CONFIG_MODE 1 #include "stb_voxel_render.h" diff --git a/tests/test_truetype.c b/tests/test_truetype.c index 4b78152..d18d3b5 100644 --- a/tests/test_truetype.c +++ b/tests/test_truetype.c @@ -3,13 +3,13 @@ #include "stb_truetype.h" #include "stb_image_write.h" +#ifdef TT_TEST + #include char ttf_buffer[1<<25]; unsigned char output[512*100]; -#ifdef TT_TEST - void debug(void) { stbtt_fontinfo font;