mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01: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