mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -331,7 +331,7 @@ static int ImGui_ImplGlfw_TranslateUntranslatedKey(int key, int scancode) | |||||||
|     const char* key_name = glfwGetKeyName(key, scancode); |     const char* key_name = glfwGetKeyName(key, scancode); | ||||||
|     glfwSetErrorCallback(prev_error_callback); |     glfwSetErrorCallback(prev_error_callback); | ||||||
| #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | ||||||
|     (void)glfwGetError(NULL); |     (void)glfwGetError(nullptr); | ||||||
| #endif | #endif | ||||||
|     if (key_name && key_name[0] != 0 && key_name[1] == 0) |     if (key_name && key_name[0] != 0 && key_name[1] == 0) | ||||||
|     { |     { | ||||||
| @@ -573,7 +573,7 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw | |||||||
| #endif | #endif | ||||||
|     glfwSetErrorCallback(prev_error_callback); |     glfwSetErrorCallback(prev_error_callback); | ||||||
| #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | ||||||
|     (void)glfwGetError(NULL); |     (void)glfwGetError(nullptr); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // Chain GLFW callbacks: our callbacks will call the user's previously installed callbacks, if any. |     // Chain GLFW callbacks: our callbacks will call the user's previously installed callbacks, if any. | ||||||
| @@ -583,7 +583,7 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw | |||||||
|     // We intentionally do not check 'if (install_callbacks)' here, as some users may set it to false and call GLFW callback themselves. |     // We intentionally do not check 'if (install_callbacks)' here, as some users may set it to false and call GLFW callback themselves. | ||||||
|     // FIXME: May break chaining in case user registered their own Emscripten callback? |     // FIXME: May break chaining in case user registered their own Emscripten callback? | ||||||
| #ifdef __EMSCRIPTEN__ | #ifdef __EMSCRIPTEN__ | ||||||
|     emscripten_set_wheel_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, NULL, false, ImGui_ImplEmscripten_WheelCallback); |     emscripten_set_wheel_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, nullptr, false, ImGui_ImplEmscripten_WheelCallback); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // Set platform dependent data in viewport |     // Set platform dependent data in viewport | ||||||
| @@ -599,7 +599,7 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw | |||||||
|     // Windows: register a WndProc hook so we can intercept some messages. |     // Windows: register a WndProc hook so we can intercept some messages. | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
|     bd->GlfwWndProc = (WNDPROC)::GetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC); |     bd->GlfwWndProc = (WNDPROC)::GetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC); | ||||||
|     IM_ASSERT(bd->GlfwWndProc != NULL); |     IM_ASSERT(bd->GlfwWndProc != nullptr); | ||||||
|     ::SetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC, (LONG_PTR)ImGui_ImplGlfw_WndProc); |     ::SetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC, (LONG_PTR)ImGui_ImplGlfw_WndProc); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| @@ -638,7 +638,7 @@ void ImGui_ImplGlfw_Shutdown() | |||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
|     ImGuiViewport* main_viewport = ImGui::GetMainViewport(); |     ImGuiViewport* main_viewport = ImGui::GetMainViewport(); | ||||||
|     ::SetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC, (LONG_PTR)bd->GlfwWndProc); |     ::SetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC, (LONG_PTR)bd->GlfwWndProc); | ||||||
|     bd->GlfwWndProc = NULL; |     bd->GlfwWndProc = nullptr; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     io.BackendPlatformName = nullptr; |     io.BackendPlatformName = nullptr; | ||||||
|   | |||||||
| @@ -424,11 +424,11 @@ bool ImGui_ImplOSX_Init(NSView* view) | |||||||
|         NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; |         NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; | ||||||
|         NSString* available = [pasteboard availableTypeFromArray: [NSArray arrayWithObject:NSPasteboardTypeString]]; |         NSString* available = [pasteboard availableTypeFromArray: [NSArray arrayWithObject:NSPasteboardTypeString]]; | ||||||
|         if (![available isEqualToString:NSPasteboardTypeString]) |         if (![available isEqualToString:NSPasteboardTypeString]) | ||||||
|             return NULL; |             return nullptr; | ||||||
|  |  | ||||||
|         NSString* string = [pasteboard stringForType:NSPasteboardTypeString]; |         NSString* string = [pasteboard stringForType:NSPasteboardTypeString]; | ||||||
|         if (string == nil) |         if (string == nil) | ||||||
|             return NULL; |             return nullptr; | ||||||
|  |  | ||||||
|         const char* string_c = (const char*)[string UTF8String]; |         const char* string_c = (const char*)[string UTF8String]; | ||||||
|         size_t string_len = strlen(string_c); |         size_t string_len = strlen(string_c); | ||||||
|   | |||||||
| @@ -487,7 +487,7 @@ void ImGui_ImplSDL2_Shutdown() | |||||||
|         SDL_free(bd->ClipboardTextData); |         SDL_free(bd->ClipboardTextData); | ||||||
|     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) |     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) | ||||||
|         SDL_FreeCursor(bd->MouseCursors[cursor_n]); |         SDL_FreeCursor(bd->MouseCursors[cursor_n]); | ||||||
|     bd->LastMouseCursor = NULL; |     bd->LastMouseCursor = nullptr; | ||||||
|  |  | ||||||
|     io.BackendPlatformName = nullptr; |     io.BackendPlatformName = nullptr; | ||||||
|     io.BackendPlatformUserData = nullptr; |     io.BackendPlatformUserData = nullptr; | ||||||
|   | |||||||
| @@ -421,7 +421,7 @@ void ImGui_ImplSDL3_Shutdown() | |||||||
|         SDL_free(bd->ClipboardTextData); |         SDL_free(bd->ClipboardTextData); | ||||||
|     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) |     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) | ||||||
|         SDL_DestroyCursor(bd->MouseCursors[cursor_n]); |         SDL_DestroyCursor(bd->MouseCursors[cursor_n]); | ||||||
|     bd->LastMouseCursor = NULL; |     bd->LastMouseCursor = nullptr; | ||||||
|  |  | ||||||
|     io.BackendPlatformName = nullptr; |     io.BackendPlatformName = nullptr; | ||||||
|     io.BackendPlatformUserData = nullptr; |     io.BackendPlatformUserData = nullptr; | ||||||
|   | |||||||
| @@ -604,7 +604,7 @@ ImFontConfig config; | |||||||
| config.MergeMode = true; | config.MergeMode = true; | ||||||
| io.Fonts->AddFontDefault(); | io.Fonts->AddFontDefault(); | ||||||
| io.Fonts->AddFontFromFileTTF("fontawesome-webfont.ttf", 16.0f, &config, ranges); // Merge icon font | io.Fonts->AddFontFromFileTTF("fontawesome-webfont.ttf", 16.0f, &config, ranges); // Merge icon font | ||||||
| io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, NULL, &config, io.Fonts->GetGlyphRangesJapanese()); // Merge japanese glyphs | io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_pixels, nullptr, &config, io.Fonts->GetGlyphRangesJapanese()); // Merge japanese glyphs | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ##### [Return to Index](#index) | ##### [Return to Index](#index) | ||||||
| @@ -616,7 +616,7 @@ When loading a font, pass custom Unicode ranges to specify the glyphs to load. | |||||||
|  |  | ||||||
| ```cpp | ```cpp | ||||||
| // Add default Japanese ranges | // Add default Japanese ranges | ||||||
| io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels, NULL, io.Fonts->GetGlyphRangesJapanese()); | io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|  |  | ||||||
| // Or create your own custom ranges (e.g. for a game you can feed your entire game script and only build the characters the game need) | // Or create your own custom ranges (e.g. for a game you can feed your entire game script and only build the characters the game need) | ||||||
| ImVector<ImWchar> ranges; | ImVector<ImWchar> ranges; | ||||||
| @@ -625,7 +625,7 @@ builder.AddText("Hello world");                        // Add a string (here "He | |||||||
| builder.AddChar(0x7262);                               // Add a specific character | builder.AddChar(0x7262);                               // Add a specific character | ||||||
| builder.AddRanges(io.Fonts->GetGlyphRangesJapanese()); // Add one of the default ranges | builder.AddRanges(io.Fonts->GetGlyphRangesJapanese()); // Add one of the default ranges | ||||||
| builder.BuildRanges(&ranges);                          // Build the final result (ordered ranges with all the unique characters submitted) | builder.BuildRanges(&ranges);                          // Build the final result (ordered ranges with all the unique characters submitted) | ||||||
| io.Fonts->AddFontFromFileTTF("myfontfile.ttf", 16.0f, NULL, ranges.Data); | io.Fonts->AddFontFromFileTTF("myfontfile.ttf", 16.0f, nullptr, ranges.Data); | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| All your strings need to use UTF-8 encoding. In C++11 you can encode a string literal in UTF-8 | All your strings need to use UTF-8 encoding. In C++11 you can encode a string literal in UTF-8 | ||||||
|   | |||||||
| @@ -117,13 +117,13 @@ io.Fonts->Build(); | |||||||
|  |  | ||||||
| ```cpp | ```cpp | ||||||
| // Basic Latin, Extended Latin | // Basic Latin, Extended Latin | ||||||
| io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesDefault()); | io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, nullptr, io.Fonts->GetGlyphRangesDefault()); | ||||||
|  |  | ||||||
| // Default + Selection of 2500 Ideographs used by Simplified Chinese | // Default + Selection of 2500 Ideographs used by Simplified Chinese | ||||||
| io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesChineseSimplifiedCommon()); | io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, nullptr, io.Fonts->GetGlyphRangesChineseSimplifiedCommon()); | ||||||
|  |  | ||||||
| // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs | // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs | ||||||
| io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, NULL, io.Fonts->GetGlyphRangesJapanese()); | io.Fonts->AddFontFromFileTTF("font.ttf", size_pixels, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
| ``` | ``` | ||||||
| See [Using Custom Glyph Ranges](#using-custom-glyph-ranges) section to create your own ranges. | See [Using Custom Glyph Ranges](#using-custom-glyph-ranges) section to create your own ranges. | ||||||
|  |  | ||||||
| @@ -132,7 +132,7 @@ See [Using Custom Glyph Ranges](#using-custom-glyph-ranges) section to create yo | |||||||
|  |  | ||||||
| ```cpp | ```cpp | ||||||
| ImGuiIO& io = ImGui::GetIO(); | ImGuiIO& io = ImGui::GetIO(); | ||||||
| io.Fonts->AddFontFromFileTTF("NotoSansCJKjp-Medium.otf", 20.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); | io.Fonts->AddFontFromFileTTF("NotoSansCJKjp-Medium.otf", 20.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
| ``` | ``` | ||||||
| ```cpp | ```cpp | ||||||
| ImGui::Text(u8"こんにちは!テスト %d", 123); | ImGui::Text(u8"こんにちは!テスト %d", 123); | ||||||
| @@ -245,7 +245,7 @@ builder.AddChar(0x7262);                               // Add a specific charact | |||||||
| builder.AddRanges(io.Fonts->GetGlyphRangesJapanese()); // Add one of the default ranges | builder.AddRanges(io.Fonts->GetGlyphRangesJapanese()); // Add one of the default ranges | ||||||
| builder.BuildRanges(&ranges);                          // Build the final result (ordered ranges with all the unique characters submitted) | builder.BuildRanges(&ranges);                          // Build the final result (ordered ranges with all the unique characters submitted) | ||||||
|  |  | ||||||
| io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels, NULL, ranges.Data); | io.Fonts->AddFontFromFileTTF("myfontfile.ttf", size_in_pixels, nullptr, ranges.Data); | ||||||
| io.Fonts->Build();                                     // Build the atlas while 'ranges' is still in scope and not deleted. | io.Fonts->Build();                                     // Build the atlas while 'ranges' is still in scope and not deleted. | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| @@ -271,7 +271,7 @@ rect_ids[1] = io.Fonts->AddCustomRectFontGlyph(font, 'b', 13, 13, 13+1); | |||||||
| io.Fonts->Build(); | io.Fonts->Build(); | ||||||
|  |  | ||||||
| // Retrieve texture in RGBA format | // Retrieve texture in RGBA format | ||||||
| unsigned char* tex_pixels = NULL; | unsigned char* tex_pixels = nullptr; | ||||||
| int tex_width, tex_height; | int tex_width, tex_height; | ||||||
| io.Fonts->GetTexDataAsRGBA32(&tex_pixels, &tex_width, &tex_height); | io.Fonts->GetTexDataAsRGBA32(&tex_pixels, &tex_width, &tex_height); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -74,7 +74,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i | |||||||
|  - input text: reorganize event handling, allow CharFilter to modify buffers, allow multiple events? (#541) |  - input text: reorganize event handling, allow CharFilter to modify buffers, allow multiple events? (#541) | ||||||
|  - input text: expose CursorPos in char filter event (#816) |  - input text: expose CursorPos in char filter event (#816) | ||||||
|  - input text: try usage idiom of using InputText with data only exposed through get/set accessors, without extraneous copy/alloc. (#3009) |  - input text: try usage idiom of using InputText with data only exposed through get/set accessors, without extraneous copy/alloc. (#3009) | ||||||
|  - input text: access public fields via a non-callback API e.g. InputTextGetState("xxx") that may return NULL if not active (available in internals) |  - input text: access public fields via a non-callback API e.g. InputTextGetState("xxx") that may return nullptr if not active (available in internals) | ||||||
|  - input text: flag to disable live update of the user buffer (also applies to float/int text input) (#701) |  - input text: flag to disable live update of the user buffer (also applies to float/int text input) (#701) | ||||||
|  - input text: hover tooltip could show unclamped text |  - input text: hover tooltip could show unclamped text | ||||||
|  - input text: support for INSERT key to toggle overwrite mode. currently disabled because stb_textedit behavior is unsatisfactory on multi-line. (#2863) |  - input text: support for INSERT key to toggle overwrite mode. currently disabled because stb_textedit behavior is unsatisfactory on multi-line. (#2863) | ||||||
| @@ -318,7 +318,7 @@ It's mostly a bunch of personal notes, probably incomplete. Feel free to query i | |||||||
|  - nav/menus: allow pressing Menu to leave a sub-menu. |  - nav/menus: allow pressing Menu to leave a sub-menu. | ||||||
|  - nav/menus: a way to access the main menu bar with Alt? (currently needs CTRL+TAB) or last focused window menu bar? |  - nav/menus: a way to access the main menu bar with Alt? (currently needs CTRL+TAB) or last focused window menu bar? | ||||||
|  - nav/menus: when using the main menu bar, even though we restore focus after, the underlying window loses its title bar highlight during menu manipulation. could we prevent it? |  - nav/menus: when using the main menu bar, even though we restore focus after, the underlying window loses its title bar highlight during menu manipulation. could we prevent it? | ||||||
|  - nav/menus: main menu bar currently cannot restore a NULL focus. Could save NavWindow at the time of being focused, similarly to what popup do? |  - nav/menus: main menu bar currently cannot restore a nullptr focus. Could save NavWindow at the time of being focused, similarly to what popup do? | ||||||
|  - nav/menus: Alt,Up could open the first menu (e.g. "File") currently it tends to nav into the window/collapse menu. Do do that we would need custom transition? |  - nav/menus: Alt,Up could open the first menu (e.g. "File") currently it tends to nav into the window/collapse menu. Do do that we would need custom transition? | ||||||
|  - nav/windowing: configure fade-in/fade-out delay on Ctrl+Tab? |  - nav/windowing: configure fade-in/fade-out delay on Ctrl+Tab? | ||||||
|  - nav/windowing: when CTRL+Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering. |  - nav/windowing: when CTRL+Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering. | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -57,8 +57,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
|     bool show_another_window = false; |     bool show_another_window = false; | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
| static EGLDisplay           g_EglDisplay = EGL_NO_DISPLAY; | static EGLDisplay           g_EglDisplay = EGL_NO_DISPLAY; | ||||||
| static EGLSurface           g_EglSurface = EGL_NO_SURFACE; | static EGLSurface           g_EglSurface = EGL_NO_SURFACE; | ||||||
| static EGLContext           g_EglContext = EGL_NO_CONTEXT; | static EGLContext           g_EglContext = EGL_NO_CONTEXT; | ||||||
| static struct android_app*  g_App = NULL; | static struct android_app*  g_App = nullptr; | ||||||
| static bool                 g_Initialized = false; | static bool                 g_Initialized = false; | ||||||
| static char                 g_LogTag[] = "ImGuiExample"; | static char                 g_LogTag[] = "ImGuiExample"; | ||||||
| static std::string          g_IniFilename = ""; | static std::string          g_IniFilename = ""; | ||||||
| @@ -63,10 +63,10 @@ void android_main(struct android_app* app) | |||||||
|         struct android_poll_source* out_data; |         struct android_poll_source* out_data; | ||||||
|  |  | ||||||
|         // Poll all events. If the app is not visible, this loop blocks until g_Initialized == true. |         // Poll all events. If the app is not visible, this loop blocks until g_Initialized == true. | ||||||
|         while (ALooper_pollAll(g_Initialized ? 0 : -1, NULL, &out_events, (void**)&out_data) >= 0) |         while (ALooper_pollAll(g_Initialized ? 0 : -1, nullptr, &out_events, (void**)&out_data) >= 0) | ||||||
|         { |         { | ||||||
|             // Process one event |             // Process one event | ||||||
|             if (out_data != NULL) |             if (out_data != nullptr) | ||||||
|                 out_data->process(app, out_data); |                 out_data->process(app, out_data); | ||||||
|  |  | ||||||
|             // Exit the app by returning from within the infinite loop |             // Exit the app by returning from within the infinite loop | ||||||
| @@ -124,7 +124,7 @@ void Init(struct android_app* app) | |||||||
|         if (g_EglContext == EGL_NO_CONTEXT) |         if (g_EglContext == EGL_NO_CONTEXT) | ||||||
|             __android_log_print(ANDROID_LOG_ERROR, g_LogTag, "%s", "eglCreateContext() returned EGL_NO_CONTEXT"); |             __android_log_print(ANDROID_LOG_ERROR, g_LogTag, "%s", "eglCreateContext() returned EGL_NO_CONTEXT"); | ||||||
|  |  | ||||||
|         g_EglSurface = eglCreateWindowSurface(g_EglDisplay, egl_config, g_App->window, NULL); |         g_EglSurface = eglCreateWindowSurface(g_EglDisplay, egl_config, g_App->window, nullptr); | ||||||
|         eglMakeCurrent(g_EglDisplay, g_EglSurface, g_EglSurface, g_EglContext); |         eglMakeCurrent(g_EglDisplay, g_EglSurface, g_EglSurface, g_EglContext); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -148,7 +148,7 @@ void Init(struct android_app* app) | |||||||
|  |  | ||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
|     // - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ ! |     // - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ ! | ||||||
| @@ -165,19 +165,19 @@ void Init(struct android_app* app) | |||||||
|     //ImFont* font; |     //ImFont* font; | ||||||
|     //font_data_size = GetAssetData("segoeui.ttf", &font_data); |     //font_data_size = GetAssetData("segoeui.ttf", &font_data); | ||||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); |     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|     //font_data_size = GetAssetData("DroidSans.ttf", &font_data); |     //font_data_size = GetAssetData("DroidSans.ttf", &font_data); | ||||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); |     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|     //font_data_size = GetAssetData("Roboto-Medium.ttf", &font_data); |     //font_data_size = GetAssetData("Roboto-Medium.ttf", &font_data); | ||||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); |     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 16.0f); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|     //font_data_size = GetAssetData("Cousine-Regular.ttf", &font_data); |     //font_data_size = GetAssetData("Cousine-Regular.ttf", &font_data); | ||||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 15.0f); |     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 15.0f); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|     //font_data_size = GetAssetData("ArialUni.ttf", &font_data); |     //font_data_size = GetAssetData("ArialUni.ttf", &font_data); | ||||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Arbitrary scale-up |     // Arbitrary scale-up | ||||||
|     // FIXME: Put some effort into DPI awareness |     // FIXME: Put some effort into DPI awareness | ||||||
| @@ -297,22 +297,22 @@ void Shutdown() | |||||||
| static int ShowSoftKeyboardInput() | static int ShowSoftKeyboardInput() | ||||||
| { | { | ||||||
|     JavaVM* java_vm = g_App->activity->vm; |     JavaVM* java_vm = g_App->activity->vm; | ||||||
|     JNIEnv* java_env = NULL; |     JNIEnv* java_env = nullptr; | ||||||
|  |  | ||||||
|     jint jni_return = java_vm->GetEnv((void**)&java_env, JNI_VERSION_1_6); |     jint jni_return = java_vm->GetEnv((void**)&java_env, JNI_VERSION_1_6); | ||||||
|     if (jni_return == JNI_ERR) |     if (jni_return == JNI_ERR) | ||||||
|         return -1; |         return -1; | ||||||
|  |  | ||||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, NULL); |     jni_return = java_vm->AttachCurrentThread(&java_env, nullptr); | ||||||
|     if (jni_return != JNI_OK) |     if (jni_return != JNI_OK) | ||||||
|         return -2; |         return -2; | ||||||
|  |  | ||||||
|     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); |     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); | ||||||
|     if (native_activity_clazz == NULL) |     if (native_activity_clazz == nullptr) | ||||||
|         return -3; |         return -3; | ||||||
|  |  | ||||||
|     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "showSoftInput", "()V"); |     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "showSoftInput", "()V"); | ||||||
|     if (method_id == NULL) |     if (method_id == nullptr) | ||||||
|         return -4; |         return -4; | ||||||
|  |  | ||||||
|     java_env->CallVoidMethod(g_App->activity->clazz, method_id); |     java_env->CallVoidMethod(g_App->activity->clazz, method_id); | ||||||
| @@ -330,22 +330,22 @@ static int ShowSoftKeyboardInput() | |||||||
| static int PollUnicodeChars() | static int PollUnicodeChars() | ||||||
| { | { | ||||||
|     JavaVM* java_vm = g_App->activity->vm; |     JavaVM* java_vm = g_App->activity->vm; | ||||||
|     JNIEnv* java_env = NULL; |     JNIEnv* java_env = nullptr; | ||||||
|  |  | ||||||
|     jint jni_return = java_vm->GetEnv((void**)&java_env, JNI_VERSION_1_6); |     jint jni_return = java_vm->GetEnv((void**)&java_env, JNI_VERSION_1_6); | ||||||
|     if (jni_return == JNI_ERR) |     if (jni_return == JNI_ERR) | ||||||
|         return -1; |         return -1; | ||||||
|  |  | ||||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, NULL); |     jni_return = java_vm->AttachCurrentThread(&java_env, nullptr); | ||||||
|     if (jni_return != JNI_OK) |     if (jni_return != JNI_OK) | ||||||
|         return -2; |         return -2; | ||||||
|  |  | ||||||
|     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); |     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); | ||||||
|     if (native_activity_clazz == NULL) |     if (native_activity_clazz == nullptr) | ||||||
|         return -3; |         return -3; | ||||||
|  |  | ||||||
|     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "pollUnicodeChar", "()I"); |     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "pollUnicodeChar", "()I"); | ||||||
|     if (method_id == NULL) |     if (method_id == nullptr) | ||||||
|         return -4; |         return -4; | ||||||
|  |  | ||||||
|     // Send the actual characters to Dear ImGui |     // Send the actual characters to Dear ImGui | ||||||
|   | |||||||
| @@ -67,7 +67,7 @@ | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -77,8 +77,8 @@ | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     return self; |     return self; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -55,7 +55,7 @@ | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -65,8 +65,8 @@ | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
| } | } | ||||||
|  |  | ||||||
| -(void)updateAndDrawDemoView | -(void)updateAndDrawDemoView | ||||||
|   | |||||||
| @@ -15,9 +15,9 @@ | |||||||
| #include <webgpu/webgpu_cpp.h> | #include <webgpu/webgpu_cpp.h> | ||||||
|  |  | ||||||
| // Global WebGPU required states | // Global WebGPU required states | ||||||
| static WGPUDevice    wgpu_device = NULL; | static WGPUDevice    wgpu_device = nullptr; | ||||||
| static WGPUSurface   wgpu_surface = NULL; | static WGPUSurface   wgpu_surface = nullptr; | ||||||
| static WGPUSwapChain wgpu_swap_chain = NULL; | static WGPUSwapChain wgpu_swap_chain = nullptr; | ||||||
| static int           wgpu_swap_chain_width = 0; | static int           wgpu_swap_chain_width = 0; | ||||||
| static int           wgpu_swap_chain_height = 0; | static int           wgpu_swap_chain_height = 0; | ||||||
|  |  | ||||||
| @@ -37,7 +37,7 @@ int main(int, char**) | |||||||
|     // Make sure GLFW does not initialize any graphics context. |     // Make sure GLFW does not initialize any graphics context. | ||||||
|     // This needs to be done explicitly later. |     // This needs to be done explicitly later. | ||||||
|     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); |     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); | ||||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+WebGPU example", NULL, NULL); |     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+WebGPU example", nullptr, nullptr); | ||||||
|     if (!window) |     if (!window) | ||||||
|     { |     { | ||||||
|         glfwTerminate(); |         glfwTerminate(); | ||||||
| @@ -63,7 +63,7 @@ int main(int, char**) | |||||||
|  |  | ||||||
|     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. |     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. | ||||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. |     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||||
|     io.IniFilename = NULL; |     io.IniFilename = nullptr; | ||||||
|  |  | ||||||
|     // Setup Dear ImGui style |     // Setup Dear ImGui style | ||||||
|     ImGui::StyleColorsDark(); |     ImGui::StyleColorsDark(); | ||||||
| @@ -76,7 +76,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -89,8 +89,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("fonts/ProggyTiny.ttf", 10.0f); |     //io.Fonts->AddFontFromFileTTF("fonts/ProggyTiny.ttf", 10.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("fonts/ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("fonts/ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // This function will directly return and exit the main function. |     // This function will directly return and exit the main function. | ||||||
| @@ -107,7 +107,7 @@ static bool InitWGPU() | |||||||
|     if (!wgpu_device) |     if (!wgpu_device) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     wgpuDeviceSetUncapturedErrorCallback(wgpu_device, print_wgpu_error, NULL); |     wgpuDeviceSetUncapturedErrorCallback(wgpu_device, print_wgpu_error, nullptr); | ||||||
|  |  | ||||||
|     // Use C++ wrapper due to misbehavior in Emscripten. |     // Use C++ wrapper due to misbehavior in Emscripten. | ||||||
|     // Some offset computation for wgpuInstanceCreateSurface in JavaScript |     // Some offset computation for wgpuInstanceCreateSurface in JavaScript | ||||||
| @@ -211,7 +211,7 @@ static void MainLoopStep(void* window) | |||||||
|     WGPURenderPassDescriptor render_pass_desc = {}; |     WGPURenderPassDescriptor render_pass_desc = {}; | ||||||
|     render_pass_desc.colorAttachmentCount = 1; |     render_pass_desc.colorAttachmentCount = 1; | ||||||
|     render_pass_desc.colorAttachments = &color_attachments; |     render_pass_desc.colorAttachments = &color_attachments; | ||||||
|     render_pass_desc.depthStencilAttachment = NULL; |     render_pass_desc.depthStencilAttachment = nullptr; | ||||||
|  |  | ||||||
|     WGPUCommandEncoderDescriptor enc_desc = {}; |     WGPUCommandEncoderDescriptor enc_desc = {}; | ||||||
|     WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(wgpu_device, &enc_desc); |     WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(wgpu_device, &enc_desc); | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -47,8 +47,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Setup window |     // Setup window | ||||||
|     glfwSetErrorCallback(glfw_error_callback); |     glfwSetErrorCallback(glfw_error_callback); | ||||||
| @@ -57,8 +57,8 @@ int main(int, char**) | |||||||
|  |  | ||||||
|     // Create window with graphics context |     // Create window with graphics context | ||||||
|     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); |     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); | ||||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Metal example", NULL, NULL); |     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Metal example", nullptr, nullptr); | ||||||
|     if (window == NULL) |     if (window == nullptr) | ||||||
|         return 1; |         return 1; | ||||||
|  |  | ||||||
|     id <MTLDevice> device = MTLCreateSystemDefaultDevice(); |     id <MTLDevice> device = MTLCreateSystemDefaultDevice(); | ||||||
|   | |||||||
| @@ -36,8 +36,8 @@ int main(int, char**) | |||||||
|         return 1; |         return 1; | ||||||
|  |  | ||||||
|     // Create window with graphics context |     // Create window with graphics context | ||||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL2 example", NULL, NULL); |     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL2 example", nullptr, nullptr); | ||||||
|     if (window == NULL) |     if (window == nullptr) | ||||||
|         return 1; |         return 1; | ||||||
|     glfwMakeContextCurrent(window); |     glfwMakeContextCurrent(window); | ||||||
|     glfwSwapInterval(1); // Enable vsync |     glfwSwapInterval(1); // Enable vsync | ||||||
| @@ -60,7 +60,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -70,8 +70,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
|   | |||||||
| @@ -61,8 +61,8 @@ int main(int, char**) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // Create window with graphics context |     // Create window with graphics context | ||||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL3 example", NULL, NULL); |     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL3 example", nullptr, nullptr); | ||||||
|     if (window == NULL) |     if (window == nullptr) | ||||||
|         return 1; |         return 1; | ||||||
|     glfwMakeContextCurrent(window); |     glfwMakeContextCurrent(window); | ||||||
|     glfwSwapInterval(1); // Enable vsync |     glfwSwapInterval(1); // Enable vsync | ||||||
| @@ -85,7 +85,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -96,8 +96,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -108,7 +108,7 @@ int main(int, char**) | |||||||
| #ifdef __EMSCRIPTEN__ | #ifdef __EMSCRIPTEN__ | ||||||
|     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. |     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. | ||||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. |     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||||
|     io.IniFilename = NULL; |     io.IniFilename = nullptr; | ||||||
|     EMSCRIPTEN_MAINLOOP_BEGIN |     EMSCRIPTEN_MAINLOOP_BEGIN | ||||||
| #else | #else | ||||||
|     while (!glfwWindowShouldClose(window)) |     while (!glfwWindowShouldClose(window)) | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static VkAllocationCallbacks*   g_Allocator = NULL; | static VkAllocationCallbacks*   g_Allocator = nullptr; | ||||||
| static VkInstance               g_Instance = VK_NULL_HANDLE; | static VkInstance               g_Instance = VK_NULL_HANDLE; | ||||||
| static VkPhysicalDevice         g_PhysicalDevice = VK_NULL_HANDLE; | static VkPhysicalDevice         g_PhysicalDevice = VK_NULL_HANDLE; | ||||||
| static VkDevice                 g_Device = VK_NULL_HANDLE; | static VkDevice                 g_Device = VK_NULL_HANDLE; | ||||||
| @@ -98,14 +98,14 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|  |  | ||||||
|         // Get the function pointer (required for any extensions) |         // Get the function pointer (required for any extensions) | ||||||
|         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); |         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); | ||||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL); |         IM_ASSERT(vkCreateDebugReportCallbackEXT != nullptr); | ||||||
|  |  | ||||||
|         // Setup the debug report callback |         // Setup the debug report callback | ||||||
|         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; |         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; | ||||||
|         debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; |         debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; | ||||||
|         debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; |         debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; | ||||||
|         debug_report_ci.pfnCallback = debug_report; |         debug_report_ci.pfnCallback = debug_report; | ||||||
|         debug_report_ci.pUserData = NULL; |         debug_report_ci.pUserData = nullptr; | ||||||
|         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); |         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); | ||||||
|         check_vk_result(err); |         check_vk_result(err); | ||||||
| #else | #else | ||||||
| @@ -119,7 +119,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|     // Select GPU |     // Select GPU | ||||||
|     { |     { | ||||||
|         uint32_t gpu_count; |         uint32_t gpu_count; | ||||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL); |         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, nullptr); | ||||||
|         check_vk_result(err); |         check_vk_result(err); | ||||||
|         IM_ASSERT(gpu_count > 0); |         IM_ASSERT(gpu_count > 0); | ||||||
|  |  | ||||||
| @@ -149,7 +149,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|     // Select graphics queue family |     // Select graphics queue family | ||||||
|     { |     { | ||||||
|         uint32_t count; |         uint32_t count; | ||||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL); |         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, nullptr); | ||||||
|         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); |         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); | ||||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); |         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); | ||||||
|         for (uint32_t i = 0; i < count; i++) |         for (uint32_t i = 0; i < count; i++) | ||||||
| @@ -361,7 +361,7 @@ int main(int, char**) | |||||||
|  |  | ||||||
|     // Create window with Vulkan context |     // Create window with Vulkan context | ||||||
|     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); |     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); | ||||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Vulkan example", NULL, NULL); |     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Vulkan example", nullptr, nullptr); | ||||||
|     if (!glfwVulkanSupported()) |     if (!glfwVulkanSupported()) | ||||||
|     { |     { | ||||||
|         printf("GLFW: Vulkan Not Supported\n"); |         printf("GLFW: Vulkan Not Supported\n"); | ||||||
| @@ -414,7 +414,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -424,8 +424,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Upload Fonts |     // Upload Fonts | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -78,7 +78,7 @@ int main(int argc, char** argv) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -88,8 +88,8 @@ int main(int argc, char** argv) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Main loop |     // Main loop | ||||||
|     glutMainLoop(); |     glutMainLoop(); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ int main(int, char**) | |||||||
|     ImGuiIO& io = ImGui::GetIO(); |     ImGuiIO& io = ImGui::GetIO(); | ||||||
|  |  | ||||||
|     // Build atlas |     // Build atlas | ||||||
|     unsigned char* tex_pixels = NULL; |     unsigned char* tex_pixels = nullptr; | ||||||
|     int tex_w, tex_h; |     int tex_w, tex_h; | ||||||
|     io.Fonts->GetTexDataAsRGBA32(&tex_pixels, &tex_w, &tex_h); |     io.Fonts->GetTexDataAsRGBA32(&tex_pixels, &tex_w, &tex_h); | ||||||
|  |  | ||||||
| @@ -26,7 +26,7 @@ int main(int, char**) | |||||||
|         ImGui::Text("Hello, world!"); |         ImGui::Text("Hello, world!"); | ||||||
|         ImGui::SliderFloat("float", &f, 0.0f, 1.0f); |         ImGui::SliderFloat("float", &f, 0.0f, 1.0f); | ||||||
|         ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); |         ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); | ||||||
|         ImGui::ShowDemoWindow(NULL); |         ImGui::ShowDemoWindow(nullptr); | ||||||
|  |  | ||||||
|         ImGui::Render(); |         ImGui::Render(); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -12,10 +12,10 @@ | |||||||
| #include <SDL_syswm.h> | #include <SDL_syswm.h> | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static ID3D11Device*            g_pd3dDevice = NULL; | static ID3D11Device*            g_pd3dDevice = nullptr; | ||||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = NULL; | static ID3D11DeviceContext*     g_pd3dDeviceContext = nullptr; | ||||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = NULL; | static ID3D11RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||||
|  |  | ||||||
| // Forward declarations of helper functions | // Forward declarations of helper functions | ||||||
| bool CreateDeviceD3D(HWND hWnd); | bool CreateDeviceD3D(HWND hWnd); | ||||||
| @@ -73,7 +73,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -83,8 +83,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -162,7 +162,7 @@ int main(int, char**) | |||||||
|         // Rendering |         // Rendering | ||||||
|         ImGui::Render(); |         ImGui::Render(); | ||||||
|         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; |         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; | ||||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); |         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||||
|         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); |         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||||
|         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); |         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); | ||||||
|  |  | ||||||
| @@ -206,7 +206,7 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; |     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; | ||||||
|     D3D_FEATURE_LEVEL featureLevel; |     D3D_FEATURE_LEVEL featureLevel; | ||||||
|     const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, }; |     const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, }; | ||||||
|     if (D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext) != S_OK) |     if (D3D11CreateDeviceAndSwapChain(nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext) != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     CreateRenderTarget(); |     CreateRenderTarget(); | ||||||
| @@ -216,20 +216,20 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
| void CleanupDeviceD3D() | void CleanupDeviceD3D() | ||||||
| { | { | ||||||
|     CleanupRenderTarget(); |     CleanupRenderTarget(); | ||||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } |     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; } |     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = nullptr; } | ||||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } |     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| void CreateRenderTarget() | void CreateRenderTarget() | ||||||
| { | { | ||||||
|     ID3D11Texture2D* pBackBuffer; |     ID3D11Texture2D* pBackBuffer; | ||||||
|     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); |     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); | ||||||
|     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_mainRenderTargetView); |     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &g_mainRenderTargetView); | ||||||
|     pBackBuffer->Release(); |     pBackBuffer->Release(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void CleanupRenderTarget() | void CleanupRenderTarget() | ||||||
| { | { | ||||||
|     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; } |     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = nullptr; } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -38,8 +38,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Setup SDL |     // Setup SDL | ||||||
|     // (Some versions of SDL before <2.0.10 appears to have performance/stalling issues on a minority of Windows systems, |     // (Some versions of SDL before <2.0.10 appears to have performance/stalling issues on a minority of Windows systems, | ||||||
| @@ -57,14 +57,14 @@ int main(int, char**) | |||||||
|     SDL_SetHint(SDL_HINT_IME_SHOW_UI, "1"); |     SDL_SetHint(SDL_HINT_IME_SHOW_UI, "1"); | ||||||
|  |  | ||||||
|     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL+Metal example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); |     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL+Metal example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); | ||||||
|     if (window == NULL) |     if (window == nullptr) | ||||||
|     { |     { | ||||||
|         printf("Error creating window: %s\n", SDL_GetError()); |         printf("Error creating window: %s\n", SDL_GetError()); | ||||||
|         return -2; |         return -2; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); |     SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); | ||||||
|     if (renderer == NULL) |     if (renderer == nullptr) | ||||||
|     { |     { | ||||||
|         printf("Error creating renderer: %s\n", SDL_GetError()); |         printf("Error creating renderer: %s\n", SDL_GetError()); | ||||||
|         return -3; |         return -3; | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -69,8 +69,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
|   | |||||||
| @@ -86,7 +86,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -97,8 +97,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -110,7 +110,7 @@ int main(int, char**) | |||||||
| #ifdef __EMSCRIPTEN__ | #ifdef __EMSCRIPTEN__ | ||||||
|     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. |     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. | ||||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. |     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||||
|     io.IniFilename = NULL; |     io.IniFilename = nullptr; | ||||||
|     EMSCRIPTEN_MAINLOOP_BEGIN |     EMSCRIPTEN_MAINLOOP_BEGIN | ||||||
| #else | #else | ||||||
|     while (!done) |     while (!done) | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ int main(int, char**) | |||||||
|     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); |     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); | ||||||
|     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+SDL_Renderer example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags); |     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+SDL_Renderer example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags); | ||||||
|     SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); |     SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); | ||||||
|     if (renderer == NULL) |     if (renderer == nullptr) | ||||||
|     { |     { | ||||||
|         SDL_Log("Error creating SDL_Renderer!"); |         SDL_Log("Error creating SDL_Renderer!"); | ||||||
|         return 0; |         return 0; | ||||||
| @@ -63,7 +63,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -73,8 +73,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static VkAllocationCallbacks*   g_Allocator = NULL; | static VkAllocationCallbacks*   g_Allocator = nullptr; | ||||||
| static VkInstance               g_Instance = VK_NULL_HANDLE; | static VkInstance               g_Instance = VK_NULL_HANDLE; | ||||||
| static VkPhysicalDevice         g_PhysicalDevice = VK_NULL_HANDLE; | static VkPhysicalDevice         g_PhysicalDevice = VK_NULL_HANDLE; | ||||||
| static VkDevice                 g_Device = VK_NULL_HANDLE; | static VkDevice                 g_Device = VK_NULL_HANDLE; | ||||||
| @@ -86,14 +86,14 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|  |  | ||||||
|         // Get the function pointer (required for any extensions) |         // Get the function pointer (required for any extensions) | ||||||
|         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); |         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); | ||||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL); |         IM_ASSERT(vkCreateDebugReportCallbackEXT != nullptr); | ||||||
|  |  | ||||||
|         // Setup the debug report callback |         // Setup the debug report callback | ||||||
|         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; |         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; | ||||||
|         debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; |         debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; | ||||||
|         debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; |         debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; | ||||||
|         debug_report_ci.pfnCallback = debug_report; |         debug_report_ci.pfnCallback = debug_report; | ||||||
|         debug_report_ci.pUserData = NULL; |         debug_report_ci.pUserData = nullptr; | ||||||
|         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); |         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); | ||||||
|         check_vk_result(err); |         check_vk_result(err); | ||||||
| #else | #else | ||||||
| @@ -107,7 +107,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|     // Select GPU |     // Select GPU | ||||||
|     { |     { | ||||||
|         uint32_t gpu_count; |         uint32_t gpu_count; | ||||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL); |         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, nullptr); | ||||||
|         check_vk_result(err); |         check_vk_result(err); | ||||||
|         IM_ASSERT(gpu_count > 0); |         IM_ASSERT(gpu_count > 0); | ||||||
|  |  | ||||||
| @@ -137,7 +137,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | |||||||
|     // Select graphics queue family |     // Select graphics queue family | ||||||
|     { |     { | ||||||
|         uint32_t count; |         uint32_t count; | ||||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL); |         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, nullptr); | ||||||
|         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); |         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); | ||||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); |         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); | ||||||
|         for (uint32_t i = 0; i < count; i++) |         for (uint32_t i = 0; i < count; i++) | ||||||
| @@ -359,7 +359,7 @@ int main(int, char**) | |||||||
|     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_VULKAN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); |     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_VULKAN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); | ||||||
|     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+Vulkan example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags); |     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+Vulkan example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags); | ||||||
|     uint32_t extensions_count = 0; |     uint32_t extensions_count = 0; | ||||||
|     SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, NULL); |     SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, nullptr); | ||||||
|     const char** extensions = new const char*[extensions_count]; |     const char** extensions = new const char*[extensions_count]; | ||||||
|     SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, extensions); |     SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, extensions); | ||||||
|     SetupVulkan(extensions, extensions_count); |     SetupVulkan(extensions, extensions_count); | ||||||
| @@ -412,7 +412,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -422,8 +422,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Upload Fonts |     // Upload Fonts | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ int main(int, char**) | |||||||
|     SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); |     SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); | ||||||
|     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN); |     SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN); | ||||||
|     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL3+OpenGL3 example", 1280, 720, window_flags); |     SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL3+OpenGL3 example", 1280, 720, window_flags); | ||||||
|     if (window == NULL) |     if (window == nullptr) | ||||||
|     { |     { | ||||||
|         printf("Error: SDL_CreateWindow(): %s\n", SDL_GetError()); |         printf("Error: SDL_CreateWindow(): %s\n", SDL_GetError()); | ||||||
|         return -1; |         return -1; | ||||||
| @@ -91,7 +91,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -102,8 +102,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -115,7 +115,7 @@ int main(int, char**) | |||||||
| #ifdef __EMSCRIPTEN__ | #ifdef __EMSCRIPTEN__ | ||||||
|     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. |     // For an Emscripten build we are disabling file-system access, so let's not attempt to do a fopen() of the imgui.ini file. | ||||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. |     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||||
|     io.IniFilename = NULL; |     io.IniFilename = nullptr; | ||||||
|     EMSCRIPTEN_MAINLOOP_BEGIN |     EMSCRIPTEN_MAINLOOP_BEGIN | ||||||
| #else | #else | ||||||
|     while (!done) |     while (!done) | ||||||
|   | |||||||
| @@ -10,9 +10,9 @@ | |||||||
| #include <tchar.h> | #include <tchar.h> | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static ID3D10Device*            g_pd3dDevice = NULL; | static ID3D10Device*            g_pd3dDevice = nullptr; | ||||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||||
| static ID3D10RenderTargetView*  g_mainRenderTargetView = NULL; | static ID3D10RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||||
|  |  | ||||||
| // Forward declarations of helper functions | // Forward declarations of helper functions | ||||||
| bool CreateDeviceD3D(HWND hWnd); | bool CreateDeviceD3D(HWND hWnd); | ||||||
| @@ -26,9 +26,9 @@ int main(int, char**) | |||||||
| { | { | ||||||
|     // Create application window |     // Create application window | ||||||
|     //ImGui_ImplWin32_EnableDpiAwareness(); |     //ImGui_ImplWin32_EnableDpiAwareness(); | ||||||
|     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL }; |     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(nullptr), nullptr, nullptr, nullptr, nullptr, L"ImGui Example", nullptr }; | ||||||
|     ::RegisterClassExW(&wc); |     ::RegisterClassExW(&wc); | ||||||
|     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX10 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL); |     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX10 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, nullptr, nullptr, wc.hInstance, nullptr); | ||||||
|  |  | ||||||
|     // Initialize Direct3D |     // Initialize Direct3D | ||||||
|     if (!CreateDeviceD3D(hwnd)) |     if (!CreateDeviceD3D(hwnd)) | ||||||
| @@ -60,7 +60,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -70,8 +70,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -85,7 +85,7 @@ int main(int, char**) | |||||||
|         // Poll and handle messages (inputs, window resize, etc.) |         // Poll and handle messages (inputs, window resize, etc.) | ||||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. |         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||||
|         MSG msg; |         MSG msg; | ||||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) |         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||||
|         { |         { | ||||||
|             ::TranslateMessage(&msg); |             ::TranslateMessage(&msg); | ||||||
|             ::DispatchMessage(&msg); |             ::DispatchMessage(&msg); | ||||||
| @@ -140,7 +140,7 @@ int main(int, char**) | |||||||
|         // Rendering |         // Rendering | ||||||
|         ImGui::Render(); |         ImGui::Render(); | ||||||
|         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; |         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; | ||||||
|         g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); |         g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||||
|         g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); |         g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||||
|         ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); |         ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); | ||||||
|  |  | ||||||
| @@ -182,9 +182,9 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|  |  | ||||||
|     UINT createDeviceFlags = 0; |     UINT createDeviceFlags = 0; | ||||||
|     //createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG; |     //createDeviceFlags |= D3D10_CREATE_DEVICE_DEBUG; | ||||||
|     HRESULT res = D3D10CreateDeviceAndSwapChain(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice); |     HRESULT res = D3D10CreateDeviceAndSwapChain(nullptr, D3D10_DRIVER_TYPE_HARDWARE, nullptr, createDeviceFlags, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice); | ||||||
|     if (res == DXGI_ERROR_UNSUPPORTED) // Try high-performance WARP software driver if hardware is not available. |     if (res == DXGI_ERROR_UNSUPPORTED) // Try high-performance WARP software driver if hardware is not available. | ||||||
|         res = D3D10CreateDeviceAndSwapChain(NULL, D3D10_DRIVER_TYPE_WARP, NULL, createDeviceFlags, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice); |         res = D3D10CreateDeviceAndSwapChain(nullptr, D3D10_DRIVER_TYPE_WARP, nullptr, createDeviceFlags, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice); | ||||||
|     if (res != S_OK) |     if (res != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
| @@ -195,21 +195,21 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
| void CleanupDeviceD3D() | void CleanupDeviceD3D() | ||||||
| { | { | ||||||
|     CleanupRenderTarget(); |     CleanupRenderTarget(); | ||||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } |     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } |     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| void CreateRenderTarget() | void CreateRenderTarget() | ||||||
| { | { | ||||||
|     ID3D10Texture2D* pBackBuffer; |     ID3D10Texture2D* pBackBuffer; | ||||||
|     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); |     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); | ||||||
|     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_mainRenderTargetView); |     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &g_mainRenderTargetView); | ||||||
|     pBackBuffer->Release(); |     pBackBuffer->Release(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void CleanupRenderTarget() | void CleanupRenderTarget() | ||||||
| { | { | ||||||
|     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; } |     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| // Forward declare message handler from imgui_impl_win32.cpp | // Forward declare message handler from imgui_impl_win32.cpp | ||||||
| @@ -228,7 +228,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
|     switch (msg) |     switch (msg) | ||||||
|     { |     { | ||||||
|     case WM_SIZE: |     case WM_SIZE: | ||||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) |         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||||
|         { |         { | ||||||
|             CleanupRenderTarget(); |             CleanupRenderTarget(); | ||||||
|             g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0); |             g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0); | ||||||
|   | |||||||
| @@ -9,10 +9,10 @@ | |||||||
| #include <tchar.h> | #include <tchar.h> | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static ID3D11Device*            g_pd3dDevice = NULL; | static ID3D11Device*            g_pd3dDevice = nullptr; | ||||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = NULL; | static ID3D11DeviceContext*     g_pd3dDeviceContext = nullptr; | ||||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = NULL; | static ID3D11RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||||
|  |  | ||||||
| // Forward declarations of helper functions | // Forward declarations of helper functions | ||||||
| bool CreateDeviceD3D(HWND hWnd); | bool CreateDeviceD3D(HWND hWnd); | ||||||
| @@ -26,9 +26,9 @@ int main(int, char**) | |||||||
| { | { | ||||||
|     // Create application window |     // Create application window | ||||||
|     //ImGui_ImplWin32_EnableDpiAwareness(); |     //ImGui_ImplWin32_EnableDpiAwareness(); | ||||||
|     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL }; |     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(nullptr), nullptr, nullptr, nullptr, nullptr, L"ImGui Example", nullptr }; | ||||||
|     ::RegisterClassExW(&wc); |     ::RegisterClassExW(&wc); | ||||||
|     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX11 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL); |     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX11 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, nullptr, nullptr, wc.hInstance, nullptr); | ||||||
|  |  | ||||||
|     // Initialize Direct3D |     // Initialize Direct3D | ||||||
|     if (!CreateDeviceD3D(hwnd)) |     if (!CreateDeviceD3D(hwnd)) | ||||||
| @@ -60,7 +60,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -70,8 +70,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -85,7 +85,7 @@ int main(int, char**) | |||||||
|         // Poll and handle messages (inputs, window resize, etc.) |         // Poll and handle messages (inputs, window resize, etc.) | ||||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. |         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||||
|         MSG msg; |         MSG msg; | ||||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) |         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||||
|         { |         { | ||||||
|             ::TranslateMessage(&msg); |             ::TranslateMessage(&msg); | ||||||
|             ::DispatchMessage(&msg); |             ::DispatchMessage(&msg); | ||||||
| @@ -140,7 +140,7 @@ int main(int, char**) | |||||||
|         // Rendering |         // Rendering | ||||||
|         ImGui::Render(); |         ImGui::Render(); | ||||||
|         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; |         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; | ||||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); |         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||||
|         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); |         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||||
|         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); |         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); | ||||||
|  |  | ||||||
| @@ -185,9 +185,9 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; |     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; | ||||||
|     D3D_FEATURE_LEVEL featureLevel; |     D3D_FEATURE_LEVEL featureLevel; | ||||||
|     const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, }; |     const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, }; | ||||||
|     HRESULT res = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext); |     HRESULT res = D3D11CreateDeviceAndSwapChain(nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext); | ||||||
|     if (res == DXGI_ERROR_UNSUPPORTED) // Try high-performance WARP software driver if hardware is not available. |     if (res == DXGI_ERROR_UNSUPPORTED) // Try high-performance WARP software driver if hardware is not available. | ||||||
|         res = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_WARP, NULL, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext); |         res = D3D11CreateDeviceAndSwapChain(nullptr, D3D_DRIVER_TYPE_WARP, nullptr, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext); | ||||||
|     if (res != S_OK) |     if (res != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
| @@ -198,22 +198,22 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
| void CleanupDeviceD3D() | void CleanupDeviceD3D() | ||||||
| { | { | ||||||
|     CleanupRenderTarget(); |     CleanupRenderTarget(); | ||||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } |     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; } |     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = nullptr; } | ||||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } |     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| void CreateRenderTarget() | void CreateRenderTarget() | ||||||
| { | { | ||||||
|     ID3D11Texture2D* pBackBuffer; |     ID3D11Texture2D* pBackBuffer; | ||||||
|     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); |     g_pSwapChain->GetBuffer(0, IID_PPV_ARGS(&pBackBuffer)); | ||||||
|     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_mainRenderTargetView); |     g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &g_mainRenderTargetView); | ||||||
|     pBackBuffer->Release(); |     pBackBuffer->Release(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void CleanupRenderTarget() | void CleanupRenderTarget() | ||||||
| { | { | ||||||
|     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; } |     if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| // Forward declare message handler from imgui_impl_win32.cpp | // Forward declare message handler from imgui_impl_win32.cpp | ||||||
| @@ -232,7 +232,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
|     switch (msg) |     switch (msg) | ||||||
|     { |     { | ||||||
|     case WM_SIZE: |     case WM_SIZE: | ||||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) |         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||||
|         { |         { | ||||||
|             CleanupRenderTarget(); |             CleanupRenderTarget(); | ||||||
|             g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0); |             g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0); | ||||||
|   | |||||||
| @@ -34,16 +34,16 @@ static FrameContext                 g_frameContext[NUM_FRAMES_IN_FLIGHT] = {}; | |||||||
| static UINT                         g_frameIndex = 0; | static UINT                         g_frameIndex = 0; | ||||||
|  |  | ||||||
| static int const                    NUM_BACK_BUFFERS = 3; | static int const                    NUM_BACK_BUFFERS = 3; | ||||||
| static ID3D12Device*                g_pd3dDevice = NULL; | static ID3D12Device*                g_pd3dDevice = nullptr; | ||||||
| static ID3D12DescriptorHeap*        g_pd3dRtvDescHeap = NULL; | static ID3D12DescriptorHeap*        g_pd3dRtvDescHeap = nullptr; | ||||||
| static ID3D12DescriptorHeap*        g_pd3dSrvDescHeap = NULL; | static ID3D12DescriptorHeap*        g_pd3dSrvDescHeap = nullptr; | ||||||
| static ID3D12CommandQueue*          g_pd3dCommandQueue = NULL; | static ID3D12CommandQueue*          g_pd3dCommandQueue = nullptr; | ||||||
| static ID3D12GraphicsCommandList*   g_pd3dCommandList = NULL; | static ID3D12GraphicsCommandList*   g_pd3dCommandList = nullptr; | ||||||
| static ID3D12Fence*                 g_fence = NULL; | static ID3D12Fence*                 g_fence = nullptr; | ||||||
| static HANDLE                       g_fenceEvent = NULL; | static HANDLE                       g_fenceEvent = nullptr; | ||||||
| static UINT64                       g_fenceLastSignaledValue = 0; | static UINT64                       g_fenceLastSignaledValue = 0; | ||||||
| static IDXGISwapChain3*             g_pSwapChain = NULL; | static IDXGISwapChain3*             g_pSwapChain = nullptr; | ||||||
| static HANDLE                       g_hSwapChainWaitableObject = NULL; | static HANDLE                       g_hSwapChainWaitableObject = nullptr; | ||||||
| static ID3D12Resource*              g_mainRenderTargetResource[NUM_BACK_BUFFERS] = {}; | static ID3D12Resource*              g_mainRenderTargetResource[NUM_BACK_BUFFERS] = {}; | ||||||
| static D3D12_CPU_DESCRIPTOR_HANDLE  g_mainRenderTargetDescriptor[NUM_BACK_BUFFERS] = {}; | static D3D12_CPU_DESCRIPTOR_HANDLE  g_mainRenderTargetDescriptor[NUM_BACK_BUFFERS] = {}; | ||||||
|  |  | ||||||
| @@ -61,9 +61,9 @@ int main(int, char**) | |||||||
| { | { | ||||||
|     // Create application window |     // Create application window | ||||||
|     //ImGui_ImplWin32_EnableDpiAwareness(); |     //ImGui_ImplWin32_EnableDpiAwareness(); | ||||||
|     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL }; |     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(nullptr), nullptr, nullptr, nullptr, nullptr, L"ImGui Example", nullptr }; | ||||||
|     ::RegisterClassExW(&wc); |     ::RegisterClassExW(&wc); | ||||||
|     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX12 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL); |     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX12 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, nullptr, nullptr, wc.hInstance, nullptr); | ||||||
|  |  | ||||||
|     // Initialize Direct3D |     // Initialize Direct3D | ||||||
|     if (!CreateDeviceD3D(hwnd)) |     if (!CreateDeviceD3D(hwnd)) | ||||||
| @@ -98,7 +98,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -108,8 +108,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -123,7 +123,7 @@ int main(int, char**) | |||||||
|         // Poll and handle messages (inputs, window resize, etc.) |         // Poll and handle messages (inputs, window resize, etc.) | ||||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. |         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||||
|         MSG msg; |         MSG msg; | ||||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) |         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||||
|         { |         { | ||||||
|             ::TranslateMessage(&msg); |             ::TranslateMessage(&msg); | ||||||
|             ::DispatchMessage(&msg); |             ::DispatchMessage(&msg); | ||||||
| @@ -189,13 +189,13 @@ int main(int, char**) | |||||||
|         barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; |         barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; | ||||||
|         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; |         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; | ||||||
|         barrier.Transition.StateAfter  = D3D12_RESOURCE_STATE_RENDER_TARGET; |         barrier.Transition.StateAfter  = D3D12_RESOURCE_STATE_RENDER_TARGET; | ||||||
|         g_pd3dCommandList->Reset(frameCtx->CommandAllocator, NULL); |         g_pd3dCommandList->Reset(frameCtx->CommandAllocator, nullptr); | ||||||
|         g_pd3dCommandList->ResourceBarrier(1, &barrier); |         g_pd3dCommandList->ResourceBarrier(1, &barrier); | ||||||
|  |  | ||||||
|         // Render Dear ImGui graphics |         // Render Dear ImGui graphics | ||||||
|         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; |         const float clear_color_with_alpha[4] = { clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w }; | ||||||
|         g_pd3dCommandList->ClearRenderTargetView(g_mainRenderTargetDescriptor[backBufferIdx], clear_color_with_alpha, 0, NULL); |         g_pd3dCommandList->ClearRenderTargetView(g_mainRenderTargetDescriptor[backBufferIdx], clear_color_with_alpha, 0, nullptr); | ||||||
|         g_pd3dCommandList->OMSetRenderTargets(1, &g_mainRenderTargetDescriptor[backBufferIdx], FALSE, NULL); |         g_pd3dCommandList->OMSetRenderTargets(1, &g_mainRenderTargetDescriptor[backBufferIdx], FALSE, nullptr); | ||||||
|         g_pd3dCommandList->SetDescriptorHeaps(1, &g_pd3dSrvDescHeap); |         g_pd3dCommandList->SetDescriptorHeaps(1, &g_pd3dSrvDescHeap); | ||||||
|         ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), g_pd3dCommandList); |         ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), g_pd3dCommandList); | ||||||
|         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; |         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; | ||||||
| @@ -252,21 +252,21 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|  |  | ||||||
|     // [DEBUG] Enable debug interface |     // [DEBUG] Enable debug interface | ||||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | #ifdef DX12_ENABLE_DEBUG_LAYER | ||||||
|     ID3D12Debug* pdx12Debug = NULL; |     ID3D12Debug* pdx12Debug = nullptr; | ||||||
|     if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&pdx12Debug)))) |     if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&pdx12Debug)))) | ||||||
|         pdx12Debug->EnableDebugLayer(); |         pdx12Debug->EnableDebugLayer(); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     // Create device |     // Create device | ||||||
|     D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0; |     D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0; | ||||||
|     if (D3D12CreateDevice(NULL, featureLevel, IID_PPV_ARGS(&g_pd3dDevice)) != S_OK) |     if (D3D12CreateDevice(nullptr, featureLevel, IID_PPV_ARGS(&g_pd3dDevice)) != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     // [DEBUG] Setup debug interface to break on any warnings/errors |     // [DEBUG] Setup debug interface to break on any warnings/errors | ||||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | #ifdef DX12_ENABLE_DEBUG_LAYER | ||||||
|     if (pdx12Debug != NULL) |     if (pdx12Debug != nullptr) | ||||||
|     { |     { | ||||||
|         ID3D12InfoQueue* pInfoQueue = NULL; |         ID3D12InfoQueue* pInfoQueue = nullptr; | ||||||
|         g_pd3dDevice->QueryInterface(IID_PPV_ARGS(&pInfoQueue)); |         g_pd3dDevice->QueryInterface(IID_PPV_ARGS(&pInfoQueue)); | ||||||
|         pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_ERROR, true); |         pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_ERROR, true); | ||||||
|         pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_CORRUPTION, true); |         pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_CORRUPTION, true); | ||||||
| @@ -316,23 +316,23 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|         if (g_pd3dDevice->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&g_frameContext[i].CommandAllocator)) != S_OK) |         if (g_pd3dDevice->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&g_frameContext[i].CommandAllocator)) != S_OK) | ||||||
|             return false; |             return false; | ||||||
|  |  | ||||||
|     if (g_pd3dDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, g_frameContext[0].CommandAllocator, NULL, IID_PPV_ARGS(&g_pd3dCommandList)) != S_OK || |     if (g_pd3dDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, g_frameContext[0].CommandAllocator, nullptr, IID_PPV_ARGS(&g_pd3dCommandList)) != S_OK || | ||||||
|         g_pd3dCommandList->Close() != S_OK) |         g_pd3dCommandList->Close() != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     if (g_pd3dDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&g_fence)) != S_OK) |     if (g_pd3dDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&g_fence)) != S_OK) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     g_fenceEvent = CreateEvent(NULL, FALSE, FALSE, NULL); |     g_fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); | ||||||
|     if (g_fenceEvent == NULL) |     if (g_fenceEvent == nullptr) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     { |     { | ||||||
|         IDXGIFactory4* dxgiFactory = NULL; |         IDXGIFactory4* dxgiFactory = nullptr; | ||||||
|         IDXGISwapChain1* swapChain1 = NULL; |         IDXGISwapChain1* swapChain1 = nullptr; | ||||||
|         if (CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory)) != S_OK) |         if (CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory)) != S_OK) | ||||||
|             return false; |             return false; | ||||||
|         if (dxgiFactory->CreateSwapChainForHwnd(g_pd3dCommandQueue, hWnd, &sd, NULL, NULL, &swapChain1) != S_OK) |         if (dxgiFactory->CreateSwapChainForHwnd(g_pd3dCommandQueue, hWnd, &sd, nullptr, nullptr, &swapChain1) != S_OK) | ||||||
|             return false; |             return false; | ||||||
|         if (swapChain1->QueryInterface(IID_PPV_ARGS(&g_pSwapChain)) != S_OK) |         if (swapChain1->QueryInterface(IID_PPV_ARGS(&g_pSwapChain)) != S_OK) | ||||||
|             return false; |             return false; | ||||||
| @@ -349,20 +349,20 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
| void CleanupDeviceD3D() | void CleanupDeviceD3D() | ||||||
| { | { | ||||||
|     CleanupRenderTarget(); |     CleanupRenderTarget(); | ||||||
|     if (g_pSwapChain) { g_pSwapChain->SetFullscreenState(false, NULL); g_pSwapChain->Release(); g_pSwapChain = NULL; } |     if (g_pSwapChain) { g_pSwapChain->SetFullscreenState(false, nullptr); g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||||
|     if (g_hSwapChainWaitableObject != NULL) { CloseHandle(g_hSwapChainWaitableObject); } |     if (g_hSwapChainWaitableObject != nullptr) { CloseHandle(g_hSwapChainWaitableObject); } | ||||||
|     for (UINT i = 0; i < NUM_FRAMES_IN_FLIGHT; i++) |     for (UINT i = 0; i < NUM_FRAMES_IN_FLIGHT; i++) | ||||||
|         if (g_frameContext[i].CommandAllocator) { g_frameContext[i].CommandAllocator->Release(); g_frameContext[i].CommandAllocator = NULL; } |         if (g_frameContext[i].CommandAllocator) { g_frameContext[i].CommandAllocator->Release(); g_frameContext[i].CommandAllocator = nullptr; } | ||||||
|     if (g_pd3dCommandQueue) { g_pd3dCommandQueue->Release(); g_pd3dCommandQueue = NULL; } |     if (g_pd3dCommandQueue) { g_pd3dCommandQueue->Release(); g_pd3dCommandQueue = nullptr; } | ||||||
|     if (g_pd3dCommandList) { g_pd3dCommandList->Release(); g_pd3dCommandList = NULL; } |     if (g_pd3dCommandList) { g_pd3dCommandList->Release(); g_pd3dCommandList = nullptr; } | ||||||
|     if (g_pd3dRtvDescHeap) { g_pd3dRtvDescHeap->Release(); g_pd3dRtvDescHeap = NULL; } |     if (g_pd3dRtvDescHeap) { g_pd3dRtvDescHeap->Release(); g_pd3dRtvDescHeap = nullptr; } | ||||||
|     if (g_pd3dSrvDescHeap) { g_pd3dSrvDescHeap->Release(); g_pd3dSrvDescHeap = NULL; } |     if (g_pd3dSrvDescHeap) { g_pd3dSrvDescHeap->Release(); g_pd3dSrvDescHeap = nullptr; } | ||||||
|     if (g_fence) { g_fence->Release(); g_fence = NULL; } |     if (g_fence) { g_fence->Release(); g_fence = nullptr; } | ||||||
|     if (g_fenceEvent) { CloseHandle(g_fenceEvent); g_fenceEvent = NULL; } |     if (g_fenceEvent) { CloseHandle(g_fenceEvent); g_fenceEvent = nullptr; } | ||||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } |     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||||
|  |  | ||||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | #ifdef DX12_ENABLE_DEBUG_LAYER | ||||||
|     IDXGIDebug1* pDebug = NULL; |     IDXGIDebug1* pDebug = nullptr; | ||||||
|     if (SUCCEEDED(DXGIGetDebugInterface1(0, IID_PPV_ARGS(&pDebug)))) |     if (SUCCEEDED(DXGIGetDebugInterface1(0, IID_PPV_ARGS(&pDebug)))) | ||||||
|     { |     { | ||||||
|         pDebug->ReportLiveObjects(DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_SUMMARY); |         pDebug->ReportLiveObjects(DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_SUMMARY); | ||||||
| @@ -375,9 +375,9 @@ void CreateRenderTarget() | |||||||
| { | { | ||||||
|     for (UINT i = 0; i < NUM_BACK_BUFFERS; i++) |     for (UINT i = 0; i < NUM_BACK_BUFFERS; i++) | ||||||
|     { |     { | ||||||
|         ID3D12Resource* pBackBuffer = NULL; |         ID3D12Resource* pBackBuffer = nullptr; | ||||||
|         g_pSwapChain->GetBuffer(i, IID_PPV_ARGS(&pBackBuffer)); |         g_pSwapChain->GetBuffer(i, IID_PPV_ARGS(&pBackBuffer)); | ||||||
|         g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, g_mainRenderTargetDescriptor[i]); |         g_pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, g_mainRenderTargetDescriptor[i]); | ||||||
|         g_mainRenderTargetResource[i] = pBackBuffer; |         g_mainRenderTargetResource[i] = pBackBuffer; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -387,7 +387,7 @@ void CleanupRenderTarget() | |||||||
|     WaitForLastSubmittedFrame(); |     WaitForLastSubmittedFrame(); | ||||||
|  |  | ||||||
|     for (UINT i = 0; i < NUM_BACK_BUFFERS; i++) |     for (UINT i = 0; i < NUM_BACK_BUFFERS; i++) | ||||||
|         if (g_mainRenderTargetResource[i]) { g_mainRenderTargetResource[i]->Release(); g_mainRenderTargetResource[i] = NULL; } |         if (g_mainRenderTargetResource[i]) { g_mainRenderTargetResource[i]->Release(); g_mainRenderTargetResource[i] = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| void WaitForLastSubmittedFrame() | void WaitForLastSubmittedFrame() | ||||||
| @@ -411,7 +411,7 @@ FrameContext* WaitForNextFrameResources() | |||||||
|     UINT nextFrameIndex = g_frameIndex + 1; |     UINT nextFrameIndex = g_frameIndex + 1; | ||||||
|     g_frameIndex = nextFrameIndex; |     g_frameIndex = nextFrameIndex; | ||||||
|  |  | ||||||
|     HANDLE waitableObjects[] = { g_hSwapChainWaitableObject, NULL }; |     HANDLE waitableObjects[] = { g_hSwapChainWaitableObject, nullptr }; | ||||||
|     DWORD numWaitableObjects = 1; |     DWORD numWaitableObjects = 1; | ||||||
|  |  | ||||||
|     FrameContext* frameCtx = &g_frameContext[nextFrameIndex % NUM_FRAMES_IN_FLIGHT]; |     FrameContext* frameCtx = &g_frameContext[nextFrameIndex % NUM_FRAMES_IN_FLIGHT]; | ||||||
| @@ -445,7 +445,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
|     switch (msg) |     switch (msg) | ||||||
|     { |     { | ||||||
|     case WM_SIZE: |     case WM_SIZE: | ||||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) |         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||||
|         { |         { | ||||||
|             WaitForLastSubmittedFrame(); |             WaitForLastSubmittedFrame(); | ||||||
|             CleanupRenderTarget(); |             CleanupRenderTarget(); | ||||||
|   | |||||||
| @@ -9,8 +9,8 @@ | |||||||
| #include <tchar.h> | #include <tchar.h> | ||||||
|  |  | ||||||
| // Data | // Data | ||||||
| static LPDIRECT3D9              g_pD3D = NULL; | static LPDIRECT3D9              g_pD3D = nullptr; | ||||||
| static LPDIRECT3DDEVICE9        g_pd3dDevice = NULL; | static LPDIRECT3DDEVICE9        g_pd3dDevice = nullptr; | ||||||
| static D3DPRESENT_PARAMETERS    g_d3dpp = {}; | static D3DPRESENT_PARAMETERS    g_d3dpp = {}; | ||||||
|  |  | ||||||
| // Forward declarations of helper functions | // Forward declarations of helper functions | ||||||
| @@ -24,9 +24,9 @@ int main(int, char**) | |||||||
| { | { | ||||||
|     // Create application window |     // Create application window | ||||||
|     //ImGui_ImplWin32_EnableDpiAwareness(); |     //ImGui_ImplWin32_EnableDpiAwareness(); | ||||||
|     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL }; |     WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(nullptr), nullptr, nullptr, nullptr, nullptr, L"ImGui Example", nullptr }; | ||||||
|     ::RegisterClassExW(&wc); |     ::RegisterClassExW(&wc); | ||||||
|     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX9 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL); |     HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui DirectX9 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, nullptr, nullptr, wc.hInstance, nullptr); | ||||||
|  |  | ||||||
|     // Initialize Direct3D |     // Initialize Direct3D | ||||||
|     if (!CreateDeviceD3D(hwnd)) |     if (!CreateDeviceD3D(hwnd)) | ||||||
| @@ -58,7 +58,7 @@ int main(int, char**) | |||||||
|     // Load Fonts |     // Load Fonts | ||||||
|     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. |     // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. | ||||||
|     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. |     // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. | ||||||
|     // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). |     // - If the file cannot be loaded, the function will return a nullptr. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). | ||||||
|     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. |     // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. | ||||||
|     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. |     // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. | ||||||
|     // - Read 'docs/FONTS.md' for more instructions and details. |     // - Read 'docs/FONTS.md' for more instructions and details. | ||||||
| @@ -68,8 +68,8 @@ int main(int, char**) | |||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); | ||||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); |     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); | ||||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); |     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||||
|     //IM_ASSERT(font != NULL); |     //IM_ASSERT(font != nullptr); | ||||||
|  |  | ||||||
|     // Our state |     // Our state | ||||||
|     bool show_demo_window = true; |     bool show_demo_window = true; | ||||||
| @@ -83,7 +83,7 @@ int main(int, char**) | |||||||
|         // Poll and handle messages (inputs, window resize, etc.) |         // Poll and handle messages (inputs, window resize, etc.) | ||||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. |         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||||
|         MSG msg; |         MSG msg; | ||||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) |         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||||
|         { |         { | ||||||
|             ::TranslateMessage(&msg); |             ::TranslateMessage(&msg); | ||||||
|             ::DispatchMessage(&msg); |             ::DispatchMessage(&msg); | ||||||
| @@ -141,14 +141,14 @@ int main(int, char**) | |||||||
|         g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); |         g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); | ||||||
|         g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE); |         g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE); | ||||||
|         D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_color.x*clear_color.w*255.0f), (int)(clear_color.y*clear_color.w*255.0f), (int)(clear_color.z*clear_color.w*255.0f), (int)(clear_color.w*255.0f)); |         D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_color.x*clear_color.w*255.0f), (int)(clear_color.y*clear_color.w*255.0f), (int)(clear_color.z*clear_color.w*255.0f), (int)(clear_color.w*255.0f)); | ||||||
|         g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1.0f, 0); |         g_pd3dDevice->Clear(0, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1.0f, 0); | ||||||
|         if (g_pd3dDevice->BeginScene() >= 0) |         if (g_pd3dDevice->BeginScene() >= 0) | ||||||
|         { |         { | ||||||
|             ImGui::Render(); |             ImGui::Render(); | ||||||
|             ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); |             ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); | ||||||
|             g_pd3dDevice->EndScene(); |             g_pd3dDevice->EndScene(); | ||||||
|         } |         } | ||||||
|         HRESULT result = g_pd3dDevice->Present(NULL, NULL, NULL, NULL); |         HRESULT result = g_pd3dDevice->Present(nullptr, nullptr, nullptr, nullptr); | ||||||
|  |  | ||||||
|         // Handle loss of D3D9 device |         // Handle loss of D3D9 device | ||||||
|         if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DERR_DEVICENOTRESET) |         if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DERR_DEVICENOTRESET) | ||||||
| @@ -170,7 +170,7 @@ int main(int, char**) | |||||||
|  |  | ||||||
| bool CreateDeviceD3D(HWND hWnd) | bool CreateDeviceD3D(HWND hWnd) | ||||||
| { | { | ||||||
|     if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) |     if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == nullptr) | ||||||
|         return false; |         return false; | ||||||
|  |  | ||||||
|     // Create the D3DDevice |     // Create the D3DDevice | ||||||
| @@ -190,8 +190,8 @@ bool CreateDeviceD3D(HWND hWnd) | |||||||
|  |  | ||||||
| void CleanupDeviceD3D() | void CleanupDeviceD3D() | ||||||
| { | { | ||||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } |     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||||
|     if (g_pD3D) { g_pD3D->Release(); g_pD3D = NULL; } |     if (g_pD3D) { g_pD3D->Release(); g_pD3D = nullptr; } | ||||||
| } | } | ||||||
|  |  | ||||||
| void ResetDevice() | void ResetDevice() | ||||||
| @@ -219,7 +219,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||||||
|     switch (msg) |     switch (msg) | ||||||
|     { |     { | ||||||
|     case WM_SIZE: |     case WM_SIZE: | ||||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) |         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||||
|         { |         { | ||||||
|             g_d3dpp.BackBufferWidth = LOWORD(lParam); |             g_d3dpp.BackBufferWidth = LOWORD(lParam); | ||||||
|             g_d3dpp.BackBufferHeight = HIWORD(lParam); |             g_d3dpp.BackBufferHeight = HIWORD(lParam); | ||||||
|   | |||||||
| @@ -286,7 +286,7 @@ CODE | |||||||
|      // Build and load the texture atlas into a texture |      // Build and load the texture atlas into a texture | ||||||
|      // (In the examples/ app this is usually done within the ImGui_ImplXXX_Init() function from one of the demo Renderer) |      // (In the examples/ app this is usually done within the ImGui_ImplXXX_Init() function from one of the demo Renderer) | ||||||
|      int width, height; |      int width, height; | ||||||
|      unsigned char* pixels = NULL; |      unsigned char* pixels = nullptr; | ||||||
|      io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); |      io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); | ||||||
|  |  | ||||||
|      // At this point you've got the texture data and you need to upload that to your graphic system: |      // At this point you've got the texture data and you need to upload that to your graphic system: | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ namespace ImGui | |||||||
| { | { | ||||||
|     // ImGui::InputText() with std::string |     // ImGui::InputText() with std::string | ||||||
|     // Because text input needs dynamic resizing, we need to setup a callback to grow the capacity |     // Because text input needs dynamic resizing, we need to setup a callback to grow the capacity | ||||||
|     IMGUI_API bool  InputText(const char* label, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); |     IMGUI_API bool  InputText(const char* label, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr); | ||||||
|     IMGUI_API bool  InputTextMultiline(const char* label, std::string* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); |     IMGUI_API bool  InputTextMultiline(const char* label, std::string* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr); | ||||||
|     IMGUI_API bool  InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); |     IMGUI_API bool  InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -349,9 +349,9 @@ static int stb_compress_inner(stb_uchar *input, stb_uint length) | |||||||
|  |  | ||||||
|     stb_uchar **chash; |     stb_uchar **chash; | ||||||
|     chash = (stb_uchar**) malloc(stb__hashsize * sizeof(stb_uchar*)); |     chash = (stb_uchar**) malloc(stb__hashsize * sizeof(stb_uchar*)); | ||||||
|     if (chash == NULL) return 0; // failure |     if (chash == nullptr) return 0; // failure | ||||||
|     for (i=0; i < stb__hashsize; ++i) |     for (i=0; i < stb__hashsize; ++i) | ||||||
|         chash[i] = NULL; |         chash[i] = nullptr; | ||||||
|  |  | ||||||
|     // stream signature |     // stream signature | ||||||
|     stb_out(0x57); stb_out(0xbc); |     stb_out(0x57); stb_out(0xbc); | ||||||
| @@ -380,7 +380,7 @@ static int stb_compress_inner(stb_uchar *input, stb_uint length) | |||||||
| stb_uint stb_compress(stb_uchar *out, stb_uchar *input, stb_uint length) | stb_uint stb_compress(stb_uchar *out, stb_uchar *input, stb_uint length) | ||||||
| { | { | ||||||
|     stb__out = out; |     stb__out = out; | ||||||
|     stb__outfile = NULL; |     stb__outfile = nullptr; | ||||||
|  |  | ||||||
|     stb_compress_inner(input, length); |     stb_compress_inner(input, length); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ static void  ImGuiFreeTypeDefaultFreeFunc(void* ptr, void* user_data) { IM_UNUSE | |||||||
| // Current memory allocators | // Current memory allocators | ||||||
| static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFreeTypeDefaultAllocFunc; | static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFreeTypeDefaultAllocFunc; | ||||||
| static void  (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc; | static void  (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc; | ||||||
| static void* GImGuiFreeTypeAllocatorUserData = NULL; | static void* GImGuiFreeTypeAllocatorUserData = nullptr; | ||||||
|  |  | ||||||
| //------------------------------------------------------------------------- | //------------------------------------------------------------------------- | ||||||
| // Code | // Code | ||||||
| @@ -136,7 +136,7 @@ namespace | |||||||
|         void                    SetPixelHeight(int pixel_height); // Change font pixel size. All following calls to RasterizeGlyph() will use this size |         void                    SetPixelHeight(int pixel_height); // Change font pixel size. All following calls to RasterizeGlyph() will use this size | ||||||
|         const FT_Glyph_Metrics* LoadGlyph(uint32_t in_codepoint); |         const FT_Glyph_Metrics* LoadGlyph(uint32_t in_codepoint); | ||||||
|         const FT_Bitmap*        RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info); |         const FT_Bitmap*        RenderGlyphAndGetInfo(GlyphInfo* out_glyph_info); | ||||||
|         void                    BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table = NULL); |         void                    BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table = nullptr); | ||||||
|         ~FreeTypeFont()         { CloseFont(); } |         ~FreeTypeFont()         { CloseFont(); } | ||||||
|  |  | ||||||
|         // [Internals] |         // [Internals] | ||||||
| @@ -198,7 +198,7 @@ namespace | |||||||
|         if (Face) |         if (Face) | ||||||
|         { |         { | ||||||
|             FT_Done_Face(Face); |             FT_Done_Face(Face); | ||||||
|             Face = NULL; |             Face = nullptr; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -229,7 +229,7 @@ namespace | |||||||
|     { |     { | ||||||
|         uint32_t glyph_index = FT_Get_Char_Index(Face, codepoint); |         uint32_t glyph_index = FT_Get_Char_Index(Face, codepoint); | ||||||
|         if (glyph_index == 0) |         if (glyph_index == 0) | ||||||
|             return NULL; |             return nullptr; | ||||||
|  |  | ||||||
| 		// If this crash for you: FreeType 2.11.0 has a crash bug on some bitmap/colored fonts. | 		// If this crash for you: FreeType 2.11.0 has a crash bug on some bitmap/colored fonts. | ||||||
| 		// - https://gitlab.freedesktop.org/freetype/freetype/-/issues/1076 | 		// - https://gitlab.freedesktop.org/freetype/freetype/-/issues/1076 | ||||||
| @@ -238,7 +238,7 @@ namespace | |||||||
| 		// You can use FreeType 2.10, or the patched version of 2.11.0 in VcPkg, or probably any upcoming FreeType version. | 		// You can use FreeType 2.10, or the patched version of 2.11.0 in VcPkg, or probably any upcoming FreeType version. | ||||||
|         FT_Error error = FT_Load_Glyph(Face, glyph_index, LoadFlags); |         FT_Error error = FT_Load_Glyph(Face, glyph_index, LoadFlags); | ||||||
|         if (error) |         if (error) | ||||||
|             return NULL; |             return nullptr; | ||||||
|  |  | ||||||
|         // Need an outline for this to work |         // Need an outline for this to work | ||||||
|         FT_GlyphSlot slot = Face->glyph; |         FT_GlyphSlot slot = Face->glyph; | ||||||
| @@ -264,7 +264,7 @@ namespace | |||||||
|         FT_GlyphSlot slot = Face->glyph; |         FT_GlyphSlot slot = Face->glyph; | ||||||
|         FT_Error error = FT_Render_Glyph(slot, RenderMode); |         FT_Error error = FT_Render_Glyph(slot, RenderMode); | ||||||
|         if (error != 0) |         if (error != 0) | ||||||
|             return NULL; |             return nullptr; | ||||||
|  |  | ||||||
|         FT_Bitmap* ft_bitmap = &Face->glyph->bitmap; |         FT_Bitmap* ft_bitmap = &Face->glyph->bitmap; | ||||||
|         out_glyph_info->Width = (int)ft_bitmap->width; |         out_glyph_info->Width = (int)ft_bitmap->width; | ||||||
| @@ -279,7 +279,7 @@ namespace | |||||||
|  |  | ||||||
|     void FreeTypeFont::BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table) |     void FreeTypeFont::BlitGlyph(const FT_Bitmap* ft_bitmap, uint32_t* dst, uint32_t dst_pitch, unsigned char* multiply_table) | ||||||
|     { |     { | ||||||
|         IM_ASSERT(ft_bitmap != NULL); |         IM_ASSERT(ft_bitmap != nullptr); | ||||||
|         const uint32_t w = ft_bitmap->width; |         const uint32_t w = ft_bitmap->width; | ||||||
|         const uint32_t h = ft_bitmap->rows; |         const uint32_t h = ft_bitmap->rows; | ||||||
|         const uint8_t* src = ft_bitmap->buffer; |         const uint8_t* src = ft_bitmap->buffer; | ||||||
| @@ -289,7 +289,7 @@ namespace | |||||||
|         { |         { | ||||||
|         case FT_PIXEL_MODE_GRAY: // Grayscale image, 1 byte per pixel. |         case FT_PIXEL_MODE_GRAY: // Grayscale image, 1 byte per pixel. | ||||||
|             { |             { | ||||||
|                 if (multiply_table == NULL) |                 if (multiply_table == nullptr) | ||||||
|                 { |                 { | ||||||
|                     for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch) |                     for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch) | ||||||
|                         for (uint32_t x = 0; x < w; x++) |                         for (uint32_t x = 0; x < w; x++) | ||||||
| @@ -324,7 +324,7 @@ namespace | |||||||
|             { |             { | ||||||
|                 // FIXME: Converting pre-multiplied alpha to straight. Doesn't smell good. |                 // FIXME: Converting pre-multiplied alpha to straight. Doesn't smell good. | ||||||
|                 #define DE_MULTIPLY(color, alpha) (ImU32)(255.0f * (float)color / (float)alpha + 0.5f) |                 #define DE_MULTIPLY(color, alpha) (ImU32)(255.0f * (float)color / (float)alpha + 0.5f) | ||||||
|                 if (multiply_table == NULL) |                 if (multiply_table == nullptr) | ||||||
|                 { |                 { | ||||||
|                     for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch) |                     for (uint32_t y = 0; y < h; y++, src += src_pitch, dst += dst_pitch) | ||||||
|                         for (uint32_t x = 0; x < w; x++) |                         for (uint32_t x = 0; x < w; x++) | ||||||
| @@ -403,7 +403,7 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | |||||||
|     ImFontAtlasBuildInit(atlas); |     ImFontAtlasBuildInit(atlas); | ||||||
|  |  | ||||||
|     // Clear atlas |     // Clear atlas | ||||||
|     atlas->TexID = (ImTextureID)NULL; |     atlas->TexID = (ImTextureID)nullptr; | ||||||
|     atlas->TexWidth = atlas->TexHeight = 0; |     atlas->TexWidth = atlas->TexHeight = 0; | ||||||
|     atlas->TexUvScale = ImVec2(0.0f, 0.0f); |     atlas->TexUvScale = ImVec2(0.0f, 0.0f); | ||||||
|     atlas->TexUvWhitePixel = ImVec2(0.0f, 0.0f); |     atlas->TexUvWhitePixel = ImVec2(0.0f, 0.0f); | ||||||
| @@ -550,12 +550,12 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | |||||||
|             ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i]; |             ImFontBuildSrcGlyphFT& src_glyph = src_tmp.GlyphsList[glyph_i]; | ||||||
|  |  | ||||||
|             const FT_Glyph_Metrics* metrics = src_tmp.Font.LoadGlyph(src_glyph.Codepoint); |             const FT_Glyph_Metrics* metrics = src_tmp.Font.LoadGlyph(src_glyph.Codepoint); | ||||||
|             if (metrics == NULL) |             if (metrics == nullptr) | ||||||
|                 continue; |                 continue; | ||||||
|  |  | ||||||
|             // Render glyph into a bitmap (currently held by FreeType) |             // Render glyph into a bitmap (currently held by FreeType) | ||||||
|             const FT_Bitmap* ft_bitmap = src_tmp.Font.RenderGlyphAndGetInfo(&src_glyph.Info); |             const FT_Bitmap* ft_bitmap = src_tmp.Font.RenderGlyphAndGetInfo(&src_glyph.Info); | ||||||
|             if (ft_bitmap == NULL) |             if (ft_bitmap == nullptr) | ||||||
|                 continue; |                 continue; | ||||||
|  |  | ||||||
|             // Allocate new temporary chunk if needed |             // Allocate new temporary chunk if needed | ||||||
| @@ -570,7 +570,7 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | |||||||
|             // Blit rasterized pixels to our temporary buffer and keep a pointer to it. |             // Blit rasterized pixels to our temporary buffer and keep a pointer to it. | ||||||
|             src_glyph.BitmapData = (unsigned int*)(buf_bitmap_buffers.back() + buf_bitmap_current_used_bytes); |             src_glyph.BitmapData = (unsigned int*)(buf_bitmap_buffers.back() + buf_bitmap_current_used_bytes); | ||||||
|             buf_bitmap_current_used_bytes += bitmap_size_in_bytes; |             buf_bitmap_current_used_bytes += bitmap_size_in_bytes; | ||||||
|             src_tmp.Font.BlitGlyph(ft_bitmap, src_glyph.BitmapData, src_glyph.Info.Width, multiply_enabled ? multiply_table : NULL); |             src_tmp.Font.BlitGlyph(ft_bitmap, src_glyph.BitmapData, src_glyph.Info.Width, multiply_enabled ? multiply_table : nullptr); | ||||||
|  |  | ||||||
|             src_tmp.Rects[glyph_i].w = (stbrp_coord)(src_glyph.Info.Width + padding); |             src_tmp.Rects[glyph_i].w = (stbrp_coord)(src_glyph.Info.Width + padding); | ||||||
|             src_tmp.Rects[glyph_i].h = (stbrp_coord)(src_glyph.Info.Height + padding); |             src_tmp.Rects[glyph_i].h = (stbrp_coord)(src_glyph.Info.Height + padding); | ||||||
| @@ -686,7 +686,7 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | |||||||
|             size_t blit_src_stride = (size_t)src_glyph.Info.Width; |             size_t blit_src_stride = (size_t)src_glyph.Info.Width; | ||||||
|             size_t blit_dst_stride = (size_t)atlas->TexWidth; |             size_t blit_dst_stride = (size_t)atlas->TexWidth; | ||||||
|             unsigned int* blit_src = src_glyph.BitmapData; |             unsigned int* blit_src = src_glyph.BitmapData; | ||||||
|             if (atlas->TexPixelsAlpha8 != NULL) |             if (atlas->TexPixelsAlpha8 != nullptr) | ||||||
|             { |             { | ||||||
|                 unsigned char* blit_dst = atlas->TexPixelsAlpha8 + (ty * blit_dst_stride) + tx; |                 unsigned char* blit_dst = atlas->TexPixelsAlpha8 + (ty * blit_dst_stride) + tx; | ||||||
|                 for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride) |                 for (int y = 0; y < info.Height; y++, blit_dst += blit_dst_stride, blit_src += blit_src_stride) | ||||||
| @@ -702,7 +702,7 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         src_tmp.Rects = NULL; |         src_tmp.Rects = nullptr; | ||||||
|     } |     } | ||||||
|     atlas->TexPixelsUseColors = tex_use_colors; |     atlas->TexPixelsUseColors = tex_use_colors; | ||||||
|  |  | ||||||
| @@ -730,13 +730,13 @@ static void FreeType_Free(FT_Memory /*memory*/, void* block) | |||||||
| static void* FreeType_Realloc(FT_Memory /*memory*/, long cur_size, long new_size, void* block) | static void* FreeType_Realloc(FT_Memory /*memory*/, long cur_size, long new_size, void* block) | ||||||
| { | { | ||||||
|     // Implement realloc() as we don't ask user to provide it. |     // Implement realloc() as we don't ask user to provide it. | ||||||
|     if (block == NULL) |     if (block == nullptr) | ||||||
|         return GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData); |         return GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData); | ||||||
|  |  | ||||||
|     if (new_size == 0) |     if (new_size == 0) | ||||||
|     { |     { | ||||||
|         GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData); |         GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData); | ||||||
|         return NULL; |         return nullptr; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (new_size > cur_size) |     if (new_size > cur_size) | ||||||
| @@ -754,7 +754,7 @@ static bool ImFontAtlasBuildWithFreeType(ImFontAtlas* atlas) | |||||||
| { | { | ||||||
|     // FreeType memory management: https://www.freetype.org/freetype2/docs/design/design-4.html |     // FreeType memory management: https://www.freetype.org/freetype2/docs/design/design-4.html | ||||||
|     FT_MemoryRec_ memory_rec = {}; |     FT_MemoryRec_ memory_rec = {}; | ||||||
|     memory_rec.user = NULL; |     memory_rec.user = nullptr; | ||||||
|     memory_rec.alloc = &FreeType_Alloc; |     memory_rec.alloc = &FreeType_Alloc; | ||||||
|     memory_rec.free = &FreeType_Free; |     memory_rec.free = &FreeType_Free; | ||||||
|     memory_rec.realloc = &FreeType_Realloc; |     memory_rec.realloc = &FreeType_Realloc; | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ namespace ImGuiFreeType | |||||||
|  |  | ||||||
|     // Override allocators. By default ImGuiFreeType will use IM_ALLOC()/IM_FREE() |     // Override allocators. By default ImGuiFreeType will use IM_ALLOC()/IM_FREE() | ||||||
|     // However, as FreeType does lots of allocations we provide a way for the user to redirect it to a separate memory heap if desired. |     // However, as FreeType does lots of allocations we provide a way for the user to redirect it to a separate memory heap if desired. | ||||||
|     IMGUI_API void                      SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data = NULL); |     IMGUI_API void                      SetAllocatorFunctions(void* (*alloc_func)(size_t sz, void* user_data), void (*free_func)(void* ptr, void* user_data), void* user_data = nullptr); | ||||||
|  |  | ||||||
|     // Obsolete names (will be removed soon) |     // Obsolete names (will be removed soon) | ||||||
|     // Prefer using '#define IMGUI_ENABLE_FREETYPE' |     // Prefer using '#define IMGUI_ENABLE_FREETYPE' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Martz
					Michael Martz