mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -331,7 +331,7 @@ static int ImGui_ImplGlfw_TranslateUntranslatedKey(int key, int scancode) | ||||
|     const char* key_name = glfwGetKeyName(key, scancode); | ||||
|     glfwSetErrorCallback(prev_error_callback); | ||||
| #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | ||||
|     (void)glfwGetError(NULL); | ||||
|     (void)glfwGetError(nullptr); | ||||
| #endif | ||||
|     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 | ||||
|     glfwSetErrorCallback(prev_error_callback); | ||||
| #if GLFW_HAS_GETERROR && !defined(__EMSCRIPTEN__) // Eat errors (see #5908) | ||||
|     (void)glfwGetError(NULL); | ||||
|     (void)glfwGetError(nullptr); | ||||
| #endif | ||||
|  | ||||
|     // 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. | ||||
|     // FIXME: May break chaining in case user registered their own Emscripten callback? | ||||
| #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 | ||||
|  | ||||
|     // 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. | ||||
| #ifdef _WIN32 | ||||
|     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); | ||||
| #endif | ||||
|  | ||||
| @@ -638,7 +638,7 @@ void ImGui_ImplGlfw_Shutdown() | ||||
| #ifdef _WIN32 | ||||
|     ImGuiViewport* main_viewport = ImGui::GetMainViewport(); | ||||
|     ::SetWindowLongPtr((HWND)main_viewport->PlatformHandleRaw, GWLP_WNDPROC, (LONG_PTR)bd->GlfwWndProc); | ||||
|     bd->GlfwWndProc = NULL; | ||||
|     bd->GlfwWndProc = nullptr; | ||||
| #endif | ||||
|  | ||||
|     io.BackendPlatformName = nullptr; | ||||
|   | ||||
| @@ -424,11 +424,11 @@ bool ImGui_ImplOSX_Init(NSView* view) | ||||
|         NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; | ||||
|         NSString* available = [pasteboard availableTypeFromArray: [NSArray arrayWithObject:NSPasteboardTypeString]]; | ||||
|         if (![available isEqualToString:NSPasteboardTypeString]) | ||||
|             return NULL; | ||||
|             return nullptr; | ||||
|  | ||||
|         NSString* string = [pasteboard stringForType:NSPasteboardTypeString]; | ||||
|         if (string == nil) | ||||
|             return NULL; | ||||
|             return nullptr; | ||||
|  | ||||
|         const char* string_c = (const char*)[string UTF8String]; | ||||
|         size_t string_len = strlen(string_c); | ||||
|   | ||||
| @@ -487,7 +487,7 @@ void ImGui_ImplSDL2_Shutdown() | ||||
|         SDL_free(bd->ClipboardTextData); | ||||
|     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) | ||||
|         SDL_FreeCursor(bd->MouseCursors[cursor_n]); | ||||
|     bd->LastMouseCursor = NULL; | ||||
|     bd->LastMouseCursor = nullptr; | ||||
|  | ||||
|     io.BackendPlatformName = nullptr; | ||||
|     io.BackendPlatformUserData = nullptr; | ||||
|   | ||||
| @@ -421,7 +421,7 @@ void ImGui_ImplSDL3_Shutdown() | ||||
|         SDL_free(bd->ClipboardTextData); | ||||
|     for (ImGuiMouseCursor cursor_n = 0; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++) | ||||
|         SDL_DestroyCursor(bd->MouseCursors[cursor_n]); | ||||
|     bd->LastMouseCursor = NULL; | ||||
|     bd->LastMouseCursor = nullptr; | ||||
|  | ||||
|     io.BackendPlatformName = nullptr; | ||||
|     io.BackendPlatformUserData = nullptr; | ||||
|   | ||||
| @@ -604,7 +604,7 @@ ImFontConfig config; | ||||
| config.MergeMode = true; | ||||
| io.Fonts->AddFontDefault(); | ||||
| 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) | ||||
| @@ -616,7 +616,7 @@ When loading a font, pass custom Unicode ranges to specify the glyphs to load. | ||||
|  | ||||
| ```cpp | ||||
| // 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) | ||||
| ImVector<ImWchar> ranges; | ||||
| @@ -625,7 +625,7 @@ builder.AddText("Hello world");                        // Add a string (here "He | ||||
| builder.AddChar(0x7262);                               // Add a specific character | ||||
| 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) | ||||
| 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 | ||||
|   | ||||
| @@ -117,13 +117,13 @@ io.Fonts->Build(); | ||||
|  | ||||
| ```cpp | ||||
| // 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 | ||||
| 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 | ||||
| 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. | ||||
|  | ||||
| @@ -132,7 +132,7 @@ See [Using Custom Glyph Ranges](#using-custom-glyph-ranges) section to create yo | ||||
|  | ||||
| ```cpp | ||||
| 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 | ||||
| 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.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. | ||||
| ``` | ||||
|  | ||||
| @@ -271,7 +271,7 @@ rect_ids[1] = io.Fonts->AddCustomRectFontGlyph(font, 'b', 13, 13, 13+1); | ||||
| io.Fonts->Build(); | ||||
|  | ||||
| // Retrieve texture in RGBA format | ||||
| unsigned char* tex_pixels = NULL; | ||||
| unsigned char* tex_pixels = nullptr; | ||||
| int 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: 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: 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: 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) | ||||
| @@ -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: 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: 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/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. | ||||
|   | ||||
| @@ -47,7 +47,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -57,8 +57,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     bool show_demo_window = true; | ||||
|     bool show_another_window = false; | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
| static EGLDisplay           g_EglDisplay = EGL_NO_DISPLAY; | ||||
| static EGLSurface           g_EglSurface = EGL_NO_SURFACE; | ||||
| 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 char                 g_LogTag[] = "ImGuiExample"; | ||||
| static std::string          g_IniFilename = ""; | ||||
| @@ -63,10 +63,10 @@ void android_main(struct android_app* app) | ||||
|         struct android_poll_source* out_data; | ||||
|  | ||||
|         // 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 | ||||
|             if (out_data != NULL) | ||||
|             if (out_data != nullptr) | ||||
|                 out_data->process(app, out_data); | ||||
|  | ||||
|             // 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) | ||||
|             __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); | ||||
|     } | ||||
|  | ||||
| @@ -148,7 +148,7 @@ void Init(struct android_app* app) | ||||
|  | ||||
|     // 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 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. | ||||
|     // - 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 \\ ! | ||||
| @@ -165,19 +165,19 @@ void Init(struct android_app* app) | ||||
|     //ImFont* font; | ||||
|     //font_data_size = GetAssetData("segoeui.ttf", &font_data); | ||||
|     //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 = 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 = 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 = 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 = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //font = io.Fonts->AddFontFromMemoryTTF(font_data, font_data_size, 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Arbitrary scale-up | ||||
|     // FIXME: Put some effort into DPI awareness | ||||
| @@ -297,22 +297,22 @@ void Shutdown() | ||||
| static int ShowSoftKeyboardInput() | ||||
| { | ||||
|     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); | ||||
|     if (jni_return == JNI_ERR) | ||||
|         return -1; | ||||
|  | ||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, NULL); | ||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, nullptr); | ||||
|     if (jni_return != JNI_OK) | ||||
|         return -2; | ||||
|  | ||||
|     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); | ||||
|     if (native_activity_clazz == NULL) | ||||
|     if (native_activity_clazz == nullptr) | ||||
|         return -3; | ||||
|  | ||||
|     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "showSoftInput", "()V"); | ||||
|     if (method_id == NULL) | ||||
|     if (method_id == nullptr) | ||||
|         return -4; | ||||
|  | ||||
|     java_env->CallVoidMethod(g_App->activity->clazz, method_id); | ||||
| @@ -330,22 +330,22 @@ static int ShowSoftKeyboardInput() | ||||
| static int PollUnicodeChars() | ||||
| { | ||||
|     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); | ||||
|     if (jni_return == JNI_ERR) | ||||
|         return -1; | ||||
|  | ||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, NULL); | ||||
|     jni_return = java_vm->AttachCurrentThread(&java_env, nullptr); | ||||
|     if (jni_return != JNI_OK) | ||||
|         return -2; | ||||
|  | ||||
|     jclass native_activity_clazz = java_env->GetObjectClass(g_App->activity->clazz); | ||||
|     if (native_activity_clazz == NULL) | ||||
|     if (native_activity_clazz == nullptr) | ||||
|         return -3; | ||||
|  | ||||
|     jmethodID method_id = java_env->GetMethodID(native_activity_clazz, "pollUnicodeChar", "()I"); | ||||
|     if (method_id == NULL) | ||||
|     if (method_id == nullptr) | ||||
|         return -4; | ||||
|  | ||||
|     // Send the actual characters to Dear ImGui | ||||
|   | ||||
| @@ -67,7 +67,7 @@ | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -77,8 +77,8 @@ | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     return self; | ||||
| } | ||||
|   | ||||
| @@ -55,7 +55,7 @@ | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -65,8 +65,8 @@ | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
| } | ||||
|  | ||||
| -(void)updateAndDrawDemoView | ||||
|   | ||||
| @@ -15,9 +15,9 @@ | ||||
| #include <webgpu/webgpu_cpp.h> | ||||
|  | ||||
| // Global WebGPU required states | ||||
| static WGPUDevice    wgpu_device = NULL; | ||||
| static WGPUSurface   wgpu_surface = NULL; | ||||
| static WGPUSwapChain wgpu_swap_chain = NULL; | ||||
| static WGPUDevice    wgpu_device = nullptr; | ||||
| static WGPUSurface   wgpu_surface = nullptr; | ||||
| static WGPUSwapChain wgpu_swap_chain = nullptr; | ||||
| static int           wgpu_swap_chain_width = 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. | ||||
|     // This needs to be done explicitly later. | ||||
|     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) | ||||
|     { | ||||
|         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. | ||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||
|     io.IniFilename = NULL; | ||||
|     io.IniFilename = nullptr; | ||||
|  | ||||
|     // Setup Dear ImGui style | ||||
|     ImGui::StyleColorsDark(); | ||||
| @@ -76,7 +76,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -89,8 +89,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("fonts/Roboto-Medium.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("fonts/Cousine-Regular.ttf", 15.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("fonts/ProggyTiny.ttf", 10.0f); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("fonts/ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("fonts/ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
| #endif | ||||
|  | ||||
|     // This function will directly return and exit the main function. | ||||
| @@ -107,7 +107,7 @@ static bool InitWGPU() | ||||
|     if (!wgpu_device) | ||||
|         return false; | ||||
|  | ||||
|     wgpuDeviceSetUncapturedErrorCallback(wgpu_device, print_wgpu_error, NULL); | ||||
|     wgpuDeviceSetUncapturedErrorCallback(wgpu_device, print_wgpu_error, nullptr); | ||||
|  | ||||
|     // Use C++ wrapper due to misbehavior in Emscripten. | ||||
|     // Some offset computation for wgpuInstanceCreateSurface in JavaScript | ||||
| @@ -211,7 +211,7 @@ static void MainLoopStep(void* window) | ||||
|     WGPURenderPassDescriptor render_pass_desc = {}; | ||||
|     render_pass_desc.colorAttachmentCount = 1; | ||||
|     render_pass_desc.colorAttachments = &color_attachments; | ||||
|     render_pass_desc.depthStencilAttachment = NULL; | ||||
|     render_pass_desc.depthStencilAttachment = nullptr; | ||||
|  | ||||
|     WGPUCommandEncoderDescriptor enc_desc = {}; | ||||
|     WGPUCommandEncoder encoder = wgpuDeviceCreateCommandEncoder(wgpu_device, &enc_desc); | ||||
|   | ||||
| @@ -37,7 +37,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -47,8 +47,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Setup window | ||||
|     glfwSetErrorCallback(glfw_error_callback); | ||||
| @@ -57,8 +57,8 @@ int main(int, char**) | ||||
|  | ||||
|     // Create window with graphics context | ||||
|     glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Metal example", NULL, NULL); | ||||
|     if (window == NULL) | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Metal example", nullptr, nullptr); | ||||
|     if (window == nullptr) | ||||
|         return 1; | ||||
|  | ||||
|     id <MTLDevice> device = MTLCreateSystemDefaultDevice(); | ||||
|   | ||||
| @@ -36,8 +36,8 @@ int main(int, char**) | ||||
|         return 1; | ||||
|  | ||||
|     // Create window with graphics context | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL2 example", NULL, NULL); | ||||
|     if (window == NULL) | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL2 example", nullptr, nullptr); | ||||
|     if (window == nullptr) | ||||
|         return 1; | ||||
|     glfwMakeContextCurrent(window); | ||||
|     glfwSwapInterval(1); // Enable vsync | ||||
| @@ -60,7 +60,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -70,8 +70,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
|   | ||||
| @@ -61,8 +61,8 @@ int main(int, char**) | ||||
| #endif | ||||
|  | ||||
|     // Create window with graphics context | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL3 example", NULL, NULL); | ||||
|     if (window == NULL) | ||||
|     GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL3 example", nullptr, nullptr); | ||||
|     if (window == nullptr) | ||||
|         return 1; | ||||
|     glfwMakeContextCurrent(window); | ||||
|     glfwSwapInterval(1); // Enable vsync | ||||
| @@ -85,7 +85,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -96,8 +96,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -108,7 +108,7 @@ int main(int, char**) | ||||
| #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. | ||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||
|     io.IniFilename = NULL; | ||||
|     io.IniFilename = nullptr; | ||||
|     EMSCRIPTEN_MAINLOOP_BEGIN | ||||
| #else | ||||
|     while (!glfwWindowShouldClose(window)) | ||||
|   | ||||
| @@ -32,7 +32,7 @@ | ||||
| #endif | ||||
|  | ||||
| // Data | ||||
| static VkAllocationCallbacks*   g_Allocator = NULL; | ||||
| static VkAllocationCallbacks*   g_Allocator = nullptr; | ||||
| static VkInstance               g_Instance = VK_NULL_HANDLE; | ||||
| static VkPhysicalDevice         g_PhysicalDevice = 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) | ||||
|         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); | ||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL); | ||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != nullptr); | ||||
|  | ||||
|         // Setup the debug report callback | ||||
|         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; | ||||
|         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.pfnCallback = debug_report; | ||||
|         debug_report_ci.pUserData = NULL; | ||||
|         debug_report_ci.pUserData = nullptr; | ||||
|         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); | ||||
|         check_vk_result(err); | ||||
| #else | ||||
| @@ -119,7 +119,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | ||||
|     // Select GPU | ||||
|     { | ||||
|         uint32_t gpu_count; | ||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL); | ||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, nullptr); | ||||
|         check_vk_result(err); | ||||
|         IM_ASSERT(gpu_count > 0); | ||||
|  | ||||
| @@ -149,7 +149,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | ||||
|     // Select graphics queue family | ||||
|     { | ||||
|         uint32_t count; | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL); | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, nullptr); | ||||
|         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); | ||||
|         for (uint32_t i = 0; i < count; i++) | ||||
| @@ -361,7 +361,7 @@ int main(int, char**) | ||||
|  | ||||
|     // Create window with Vulkan context | ||||
|     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()) | ||||
|     { | ||||
|         printf("GLFW: Vulkan Not Supported\n"); | ||||
| @@ -414,7 +414,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -424,8 +424,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Upload Fonts | ||||
|     { | ||||
|   | ||||
| @@ -78,7 +78,7 @@ int main(int argc, char** argv) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -88,8 +88,8 @@ int main(int argc, char** argv) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Main loop | ||||
|     glutMainLoop(); | ||||
|   | ||||
| @@ -11,7 +11,7 @@ int main(int, char**) | ||||
|     ImGuiIO& io = ImGui::GetIO(); | ||||
|  | ||||
|     // Build atlas | ||||
|     unsigned char* tex_pixels = NULL; | ||||
|     unsigned char* tex_pixels = nullptr; | ||||
|     int 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::SliderFloat("float", &f, 0.0f, 1.0f); | ||||
|         ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); | ||||
|         ImGui::ShowDemoWindow(NULL); | ||||
|         ImGui::ShowDemoWindow(nullptr); | ||||
|  | ||||
|         ImGui::Render(); | ||||
|     } | ||||
|   | ||||
| @@ -12,10 +12,10 @@ | ||||
| #include <SDL_syswm.h> | ||||
|  | ||||
| // Data | ||||
| static ID3D11Device*            g_pd3dDevice = NULL; | ||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = NULL; | ||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | ||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = NULL; | ||||
| static ID3D11Device*            g_pd3dDevice = nullptr; | ||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = nullptr; | ||||
| static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||
|  | ||||
| // Forward declarations of helper functions | ||||
| bool CreateDeviceD3D(HWND hWnd); | ||||
| @@ -73,7 +73,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -83,8 +83,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -162,7 +162,7 @@ int main(int, char**) | ||||
|         // Rendering | ||||
|         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 }; | ||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); | ||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||
|         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||
|         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); | ||||
|  | ||||
| @@ -206,7 +206,7 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
|     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; | ||||
|     D3D_FEATURE_LEVEL featureLevel; | ||||
|     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; | ||||
|  | ||||
|     CreateRenderTarget(); | ||||
| @@ -216,20 +216,20 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
| void CleanupDeviceD3D() | ||||
| { | ||||
|     CleanupRenderTarget(); | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } | ||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = nullptr; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||
| } | ||||
|  | ||||
| void CreateRenderTarget() | ||||
| { | ||||
|     ID3D11Texture2D* 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(); | ||||
| } | ||||
|  | ||||
| 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 | ||||
|     // - 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -38,8 +38,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Setup SDL | ||||
|     // (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_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()); | ||||
|         return -2; | ||||
|     } | ||||
|  | ||||
|     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()); | ||||
|         return -3; | ||||
|   | ||||
| @@ -59,7 +59,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -69,8 +69,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
|   | ||||
| @@ -86,7 +86,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -97,8 +97,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -110,7 +110,7 @@ int main(int, char**) | ||||
| #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. | ||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||
|     io.IniFilename = NULL; | ||||
|     io.IniFilename = nullptr; | ||||
|     EMSCRIPTEN_MAINLOOP_BEGIN | ||||
| #else | ||||
|     while (!done) | ||||
|   | ||||
| @@ -36,7 +36,7 @@ int main(int, char**) | ||||
|     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_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); | ||||
|     if (renderer == NULL) | ||||
|     if (renderer == nullptr) | ||||
|     { | ||||
|         SDL_Log("Error creating SDL_Renderer!"); | ||||
|         return 0; | ||||
| @@ -63,7 +63,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -73,8 +73,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
| #endif | ||||
|  | ||||
| // Data | ||||
| static VkAllocationCallbacks*   g_Allocator = NULL; | ||||
| static VkAllocationCallbacks*   g_Allocator = nullptr; | ||||
| static VkInstance               g_Instance = VK_NULL_HANDLE; | ||||
| static VkPhysicalDevice         g_PhysicalDevice = 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) | ||||
|         auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT"); | ||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL); | ||||
|         IM_ASSERT(vkCreateDebugReportCallbackEXT != nullptr); | ||||
|  | ||||
|         // Setup the debug report callback | ||||
|         VkDebugReportCallbackCreateInfoEXT debug_report_ci = {}; | ||||
|         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.pfnCallback = debug_report; | ||||
|         debug_report_ci.pUserData = NULL; | ||||
|         debug_report_ci.pUserData = nullptr; | ||||
|         err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator, &g_DebugReport); | ||||
|         check_vk_result(err); | ||||
| #else | ||||
| @@ -107,7 +107,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | ||||
|     // Select GPU | ||||
|     { | ||||
|         uint32_t gpu_count; | ||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL); | ||||
|         err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, nullptr); | ||||
|         check_vk_result(err); | ||||
|         IM_ASSERT(gpu_count > 0); | ||||
|  | ||||
| @@ -137,7 +137,7 @@ static void SetupVulkan(const char** extensions, uint32_t extensions_count) | ||||
|     // Select graphics queue family | ||||
|     { | ||||
|         uint32_t count; | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL); | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, nullptr); | ||||
|         VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(sizeof(VkQueueFamilyProperties) * count); | ||||
|         vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues); | ||||
|         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_Window* window = SDL_CreateWindow("Dear ImGui SDL2+Vulkan example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags); | ||||
|     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]; | ||||
|     SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, extensions); | ||||
|     SetupVulkan(extensions, extensions_count); | ||||
| @@ -412,7 +412,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -422,8 +422,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Upload Fonts | ||||
|     { | ||||
|   | ||||
| @@ -62,7 +62,7 @@ int main(int, char**) | ||||
|     SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); | ||||
|     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); | ||||
|     if (window == NULL) | ||||
|     if (window == nullptr) | ||||
|     { | ||||
|         printf("Error: SDL_CreateWindow(): %s\n", SDL_GetError()); | ||||
|         return -1; | ||||
| @@ -91,7 +91,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -102,8 +102,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -115,7 +115,7 @@ int main(int, char**) | ||||
| #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. | ||||
|     // You may manually call LoadIniSettingsFromMemory() to load settings from your own storage. | ||||
|     io.IniFilename = NULL; | ||||
|     io.IniFilename = nullptr; | ||||
|     EMSCRIPTEN_MAINLOOP_BEGIN | ||||
| #else | ||||
|     while (!done) | ||||
|   | ||||
| @@ -10,9 +10,9 @@ | ||||
| #include <tchar.h> | ||||
|  | ||||
| // Data | ||||
| static ID3D10Device*            g_pd3dDevice = NULL; | ||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | ||||
| static ID3D10RenderTargetView*  g_mainRenderTargetView = NULL; | ||||
| static ID3D10Device*            g_pd3dDevice = nullptr; | ||||
| static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||
| static ID3D10RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||
|  | ||||
| // Forward declarations of helper functions | ||||
| bool CreateDeviceD3D(HWND hWnd); | ||||
| @@ -26,9 +26,9 @@ int main(int, char**) | ||||
| { | ||||
|     // Create application window | ||||
|     //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); | ||||
|     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 | ||||
|     if (!CreateDeviceD3D(hwnd)) | ||||
| @@ -60,7 +60,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -70,8 +70,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -85,7 +85,7 @@ int main(int, char**) | ||||
|         // Poll and handle messages (inputs, window resize, etc.) | ||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||
|         MSG msg; | ||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) | ||||
|         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||
|         { | ||||
|             ::TranslateMessage(&msg); | ||||
|             ::DispatchMessage(&msg); | ||||
| @@ -140,7 +140,7 @@ int main(int, char**) | ||||
|         // Rendering | ||||
|         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 }; | ||||
|         g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); | ||||
|         g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||
|         g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||
|         ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData()); | ||||
|  | ||||
| @@ -182,9 +182,9 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
|  | ||||
|     UINT createDeviceFlags = 0; | ||||
|     //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. | ||||
|         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) | ||||
|         return false; | ||||
|  | ||||
| @@ -195,21 +195,21 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
| void CleanupDeviceD3D() | ||||
| { | ||||
|     CleanupRenderTarget(); | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||
| } | ||||
|  | ||||
| void CreateRenderTarget() | ||||
| { | ||||
|     ID3D10Texture2D* 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(); | ||||
| } | ||||
|  | ||||
| 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 | ||||
| @@ -228,7 +228,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | ||||
|     switch (msg) | ||||
|     { | ||||
|     case WM_SIZE: | ||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) | ||||
|         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||
|         { | ||||
|             CleanupRenderTarget(); | ||||
|             g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0); | ||||
|   | ||||
| @@ -9,10 +9,10 @@ | ||||
| #include <tchar.h> | ||||
|  | ||||
| // Data | ||||
| static ID3D11Device*            g_pd3dDevice = NULL; | ||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = NULL; | ||||
| static IDXGISwapChain*          g_pSwapChain = NULL; | ||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = NULL; | ||||
| static ID3D11Device*            g_pd3dDevice = nullptr; | ||||
| static ID3D11DeviceContext*     g_pd3dDeviceContext = nullptr; | ||||
| static IDXGISwapChain*          g_pSwapChain = nullptr; | ||||
| static ID3D11RenderTargetView*  g_mainRenderTargetView = nullptr; | ||||
|  | ||||
| // Forward declarations of helper functions | ||||
| bool CreateDeviceD3D(HWND hWnd); | ||||
| @@ -26,9 +26,9 @@ int main(int, char**) | ||||
| { | ||||
|     // Create application window | ||||
|     //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); | ||||
|     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 | ||||
|     if (!CreateDeviceD3D(hwnd)) | ||||
| @@ -60,7 +60,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -70,8 +70,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -85,7 +85,7 @@ int main(int, char**) | ||||
|         // Poll and handle messages (inputs, window resize, etc.) | ||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||
|         MSG msg; | ||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) | ||||
|         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||
|         { | ||||
|             ::TranslateMessage(&msg); | ||||
|             ::DispatchMessage(&msg); | ||||
| @@ -140,7 +140,7 @@ int main(int, char**) | ||||
|         // Rendering | ||||
|         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 }; | ||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL); | ||||
|         g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, nullptr); | ||||
|         g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, clear_color_with_alpha); | ||||
|         ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); | ||||
|  | ||||
| @@ -185,9 +185,9 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
|     //createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; | ||||
|     D3D_FEATURE_LEVEL featureLevel; | ||||
|     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. | ||||
|         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) | ||||
|         return false; | ||||
|  | ||||
| @@ -198,22 +198,22 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
| void CleanupDeviceD3D() | ||||
| { | ||||
|     CleanupRenderTarget(); | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; } | ||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } | ||||
|     if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||
|     if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = nullptr; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||
| } | ||||
|  | ||||
| void CreateRenderTarget() | ||||
| { | ||||
|     ID3D11Texture2D* 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(); | ||||
| } | ||||
|  | ||||
| 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 | ||||
| @@ -232,7 +232,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | ||||
|     switch (msg) | ||||
|     { | ||||
|     case WM_SIZE: | ||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) | ||||
|         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||
|         { | ||||
|             CleanupRenderTarget(); | ||||
|             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 int const                    NUM_BACK_BUFFERS = 3; | ||||
| static ID3D12Device*                g_pd3dDevice = NULL; | ||||
| static ID3D12DescriptorHeap*        g_pd3dRtvDescHeap = NULL; | ||||
| static ID3D12DescriptorHeap*        g_pd3dSrvDescHeap = NULL; | ||||
| static ID3D12CommandQueue*          g_pd3dCommandQueue = NULL; | ||||
| static ID3D12GraphicsCommandList*   g_pd3dCommandList = NULL; | ||||
| static ID3D12Fence*                 g_fence = NULL; | ||||
| static HANDLE                       g_fenceEvent = NULL; | ||||
| static ID3D12Device*                g_pd3dDevice = nullptr; | ||||
| static ID3D12DescriptorHeap*        g_pd3dRtvDescHeap = nullptr; | ||||
| static ID3D12DescriptorHeap*        g_pd3dSrvDescHeap = nullptr; | ||||
| static ID3D12CommandQueue*          g_pd3dCommandQueue = nullptr; | ||||
| static ID3D12GraphicsCommandList*   g_pd3dCommandList = nullptr; | ||||
| static ID3D12Fence*                 g_fence = nullptr; | ||||
| static HANDLE                       g_fenceEvent = nullptr; | ||||
| static UINT64                       g_fenceLastSignaledValue = 0; | ||||
| static IDXGISwapChain3*             g_pSwapChain = NULL; | ||||
| static HANDLE                       g_hSwapChainWaitableObject = NULL; | ||||
| static IDXGISwapChain3*             g_pSwapChain = nullptr; | ||||
| static HANDLE                       g_hSwapChainWaitableObject = nullptr; | ||||
| static ID3D12Resource*              g_mainRenderTargetResource[NUM_BACK_BUFFERS] = {}; | ||||
| static D3D12_CPU_DESCRIPTOR_HANDLE  g_mainRenderTargetDescriptor[NUM_BACK_BUFFERS] = {}; | ||||
|  | ||||
| @@ -61,9 +61,9 @@ int main(int, char**) | ||||
| { | ||||
|     // Create application window | ||||
|     //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); | ||||
|     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 | ||||
|     if (!CreateDeviceD3D(hwnd)) | ||||
| @@ -98,7 +98,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -108,8 +108,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -123,7 +123,7 @@ int main(int, char**) | ||||
|         // Poll and handle messages (inputs, window resize, etc.) | ||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||
|         MSG msg; | ||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) | ||||
|         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||
|         { | ||||
|             ::TranslateMessage(&msg); | ||||
|             ::DispatchMessage(&msg); | ||||
| @@ -189,13 +189,13 @@ int main(int, char**) | ||||
|         barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; | ||||
|         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; | ||||
|         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); | ||||
|  | ||||
|         // 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 }; | ||||
|         g_pd3dCommandList->ClearRenderTargetView(g_mainRenderTargetDescriptor[backBufferIdx], clear_color_with_alpha, 0, NULL); | ||||
|         g_pd3dCommandList->OMSetRenderTargets(1, &g_mainRenderTargetDescriptor[backBufferIdx], FALSE, NULL); | ||||
|         g_pd3dCommandList->ClearRenderTargetView(g_mainRenderTargetDescriptor[backBufferIdx], clear_color_with_alpha, 0, nullptr); | ||||
|         g_pd3dCommandList->OMSetRenderTargets(1, &g_mainRenderTargetDescriptor[backBufferIdx], FALSE, nullptr); | ||||
|         g_pd3dCommandList->SetDescriptorHeaps(1, &g_pd3dSrvDescHeap); | ||||
|         ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), g_pd3dCommandList); | ||||
|         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; | ||||
| @@ -252,21 +252,21 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
|  | ||||
|     // [DEBUG] Enable debug interface | ||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | ||||
|     ID3D12Debug* pdx12Debug = NULL; | ||||
|     ID3D12Debug* pdx12Debug = nullptr; | ||||
|     if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&pdx12Debug)))) | ||||
|         pdx12Debug->EnableDebugLayer(); | ||||
| #endif | ||||
|  | ||||
|     // Create device | ||||
|     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; | ||||
|  | ||||
|     // [DEBUG] Setup debug interface to break on any warnings/errors | ||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | ||||
|     if (pdx12Debug != NULL) | ||||
|     if (pdx12Debug != nullptr) | ||||
|     { | ||||
|         ID3D12InfoQueue* pInfoQueue = NULL; | ||||
|         ID3D12InfoQueue* pInfoQueue = nullptr; | ||||
|         g_pd3dDevice->QueryInterface(IID_PPV_ARGS(&pInfoQueue)); | ||||
|         pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_ERROR, 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) | ||||
|             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) | ||||
|         return false; | ||||
|  | ||||
|     if (g_pd3dDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&g_fence)) != S_OK) | ||||
|         return false; | ||||
|  | ||||
|     g_fenceEvent = CreateEvent(NULL, FALSE, FALSE, NULL); | ||||
|     if (g_fenceEvent == NULL) | ||||
|     g_fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); | ||||
|     if (g_fenceEvent == nullptr) | ||||
|         return false; | ||||
|  | ||||
|     { | ||||
|         IDXGIFactory4* dxgiFactory = NULL; | ||||
|         IDXGISwapChain1* swapChain1 = NULL; | ||||
|         IDXGIFactory4* dxgiFactory = nullptr; | ||||
|         IDXGISwapChain1* swapChain1 = nullptr; | ||||
|         if (CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory)) != S_OK) | ||||
|             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; | ||||
|         if (swapChain1->QueryInterface(IID_PPV_ARGS(&g_pSwapChain)) != S_OK) | ||||
|             return false; | ||||
| @@ -349,20 +349,20 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
| void CleanupDeviceD3D() | ||||
| { | ||||
|     CleanupRenderTarget(); | ||||
|     if (g_pSwapChain) { g_pSwapChain->SetFullscreenState(false, NULL); g_pSwapChain->Release(); g_pSwapChain = NULL; } | ||||
|     if (g_hSwapChainWaitableObject != NULL) { CloseHandle(g_hSwapChainWaitableObject); } | ||||
|     if (g_pSwapChain) { g_pSwapChain->SetFullscreenState(false, nullptr); g_pSwapChain->Release(); g_pSwapChain = nullptr; } | ||||
|     if (g_hSwapChainWaitableObject != nullptr) { CloseHandle(g_hSwapChainWaitableObject); } | ||||
|     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_pd3dCommandQueue) { g_pd3dCommandQueue->Release(); g_pd3dCommandQueue = NULL; } | ||||
|     if (g_pd3dCommandList) { g_pd3dCommandList->Release(); g_pd3dCommandList = NULL; } | ||||
|     if (g_pd3dRtvDescHeap) { g_pd3dRtvDescHeap->Release(); g_pd3dRtvDescHeap = NULL; } | ||||
|     if (g_pd3dSrvDescHeap) { g_pd3dSrvDescHeap->Release(); g_pd3dSrvDescHeap = NULL; } | ||||
|     if (g_fence) { g_fence->Release(); g_fence = NULL; } | ||||
|     if (g_fenceEvent) { CloseHandle(g_fenceEvent); g_fenceEvent = NULL; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } | ||||
|         if (g_frameContext[i].CommandAllocator) { g_frameContext[i].CommandAllocator->Release(); g_frameContext[i].CommandAllocator = nullptr; } | ||||
|     if (g_pd3dCommandQueue) { g_pd3dCommandQueue->Release(); g_pd3dCommandQueue = nullptr; } | ||||
|     if (g_pd3dCommandList) { g_pd3dCommandList->Release(); g_pd3dCommandList = nullptr; } | ||||
|     if (g_pd3dRtvDescHeap) { g_pd3dRtvDescHeap->Release(); g_pd3dRtvDescHeap = nullptr; } | ||||
|     if (g_pd3dSrvDescHeap) { g_pd3dSrvDescHeap->Release(); g_pd3dSrvDescHeap = nullptr; } | ||||
|     if (g_fence) { g_fence->Release(); g_fence = nullptr; } | ||||
|     if (g_fenceEvent) { CloseHandle(g_fenceEvent); g_fenceEvent = nullptr; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||
|  | ||||
| #ifdef DX12_ENABLE_DEBUG_LAYER | ||||
|     IDXGIDebug1* pDebug = NULL; | ||||
|     IDXGIDebug1* pDebug = nullptr; | ||||
|     if (SUCCEEDED(DXGIGetDebugInterface1(0, IID_PPV_ARGS(&pDebug)))) | ||||
|     { | ||||
|         pDebug->ReportLiveObjects(DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_SUMMARY); | ||||
| @@ -375,9 +375,9 @@ void CreateRenderTarget() | ||||
| { | ||||
|     for (UINT i = 0; i < NUM_BACK_BUFFERS; i++) | ||||
|     { | ||||
|         ID3D12Resource* pBackBuffer = NULL; | ||||
|         ID3D12Resource* pBackBuffer = nullptr; | ||||
|         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; | ||||
|     } | ||||
| } | ||||
| @@ -387,7 +387,7 @@ void CleanupRenderTarget() | ||||
|     WaitForLastSubmittedFrame(); | ||||
|  | ||||
|     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() | ||||
| @@ -411,7 +411,7 @@ FrameContext* WaitForNextFrameResources() | ||||
|     UINT nextFrameIndex = g_frameIndex + 1; | ||||
|     g_frameIndex = nextFrameIndex; | ||||
|  | ||||
|     HANDLE waitableObjects[] = { g_hSwapChainWaitableObject, NULL }; | ||||
|     HANDLE waitableObjects[] = { g_hSwapChainWaitableObject, nullptr }; | ||||
|     DWORD numWaitableObjects = 1; | ||||
|  | ||||
|     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) | ||||
|     { | ||||
|     case WM_SIZE: | ||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) | ||||
|         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||
|         { | ||||
|             WaitForLastSubmittedFrame(); | ||||
|             CleanupRenderTarget(); | ||||
|   | ||||
| @@ -9,8 +9,8 @@ | ||||
| #include <tchar.h> | ||||
|  | ||||
| // Data | ||||
| static LPDIRECT3D9              g_pD3D = NULL; | ||||
| static LPDIRECT3DDEVICE9        g_pd3dDevice = NULL; | ||||
| static LPDIRECT3D9              g_pD3D = nullptr; | ||||
| static LPDIRECT3DDEVICE9        g_pd3dDevice = nullptr; | ||||
| static D3DPRESENT_PARAMETERS    g_d3dpp = {}; | ||||
|  | ||||
| // Forward declarations of helper functions | ||||
| @@ -24,9 +24,9 @@ int main(int, char**) | ||||
| { | ||||
|     // Create application window | ||||
|     //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); | ||||
|     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 | ||||
|     if (!CreateDeviceD3D(hwnd)) | ||||
| @@ -58,7 +58,7 @@ int main(int, char**) | ||||
|     // 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. | ||||
|     // - 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. | ||||
|     // - 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. | ||||
| @@ -68,8 +68,8 @@ int main(int, char**) | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); | ||||
|     //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.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()); | ||||
|     //IM_ASSERT(font != NULL); | ||||
|     //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, nullptr, io.Fonts->GetGlyphRangesJapanese()); | ||||
|     //IM_ASSERT(font != nullptr); | ||||
|  | ||||
|     // Our state | ||||
|     bool show_demo_window = true; | ||||
| @@ -83,7 +83,7 @@ int main(int, char**) | ||||
|         // Poll and handle messages (inputs, window resize, etc.) | ||||
|         // See the WndProc() function below for our to dispatch events to the Win32 backend. | ||||
|         MSG msg; | ||||
|         while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) | ||||
|         while (::PeekMessage(&msg, nullptr, 0U, 0U, PM_REMOVE)) | ||||
|         { | ||||
|             ::TranslateMessage(&msg); | ||||
|             ::DispatchMessage(&msg); | ||||
| @@ -141,14 +141,14 @@ int main(int, char**) | ||||
|         g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 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)); | ||||
|         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) | ||||
|         { | ||||
|             ImGui::Render(); | ||||
|             ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); | ||||
|             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 | ||||
|         if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DERR_DEVICENOTRESET) | ||||
| @@ -170,7 +170,7 @@ int main(int, char**) | ||||
|  | ||||
| bool CreateDeviceD3D(HWND hWnd) | ||||
| { | ||||
|     if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) | ||||
|     if ((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == nullptr) | ||||
|         return false; | ||||
|  | ||||
|     // Create the D3DDevice | ||||
| @@ -190,8 +190,8 @@ bool CreateDeviceD3D(HWND hWnd) | ||||
|  | ||||
| void CleanupDeviceD3D() | ||||
| { | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; } | ||||
|     if (g_pD3D) { g_pD3D->Release(); g_pD3D = NULL; } | ||||
|     if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = nullptr; } | ||||
|     if (g_pD3D) { g_pD3D->Release(); g_pD3D = nullptr; } | ||||
| } | ||||
|  | ||||
| void ResetDevice() | ||||
| @@ -219,7 +219,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) | ||||
|     switch (msg) | ||||
|     { | ||||
|     case WM_SIZE: | ||||
|         if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED) | ||||
|         if (g_pd3dDevice != nullptr && wParam != SIZE_MINIMIZED) | ||||
|         { | ||||
|             g_d3dpp.BackBufferWidth = LOWORD(lParam); | ||||
|             g_d3dpp.BackBufferHeight = HIWORD(lParam); | ||||
|   | ||||
| @@ -286,7 +286,7 @@ CODE | ||||
|      // 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) | ||||
|      int width, height; | ||||
|      unsigned char* pixels = NULL; | ||||
|      unsigned char* pixels = nullptr; | ||||
|      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: | ||||
|   | ||||
| @@ -15,7 +15,7 @@ namespace ImGui | ||||
| { | ||||
|     // ImGui::InputText() with std::string | ||||
|     // 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  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  InputTextWithHint(const char* label, const char* hint, 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 = nullptr, void* user_data = nullptr); | ||||
|     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; | ||||
|     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) | ||||
|         chash[i] = NULL; | ||||
|         chash[i] = nullptr; | ||||
|  | ||||
|     // stream signature | ||||
|     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__out = out; | ||||
|     stb__outfile = NULL; | ||||
|     stb__outfile = nullptr; | ||||
|  | ||||
|     stb_compress_inner(input, length); | ||||
|  | ||||
|   | ||||
| @@ -66,7 +66,7 @@ static void  ImGuiFreeTypeDefaultFreeFunc(void* ptr, void* user_data) { IM_UNUSE | ||||
| // Current memory allocators | ||||
| static void* (*GImGuiFreeTypeAllocFunc)(size_t size, void* user_data) = ImGuiFreeTypeDefaultAllocFunc; | ||||
| static void  (*GImGuiFreeTypeFreeFunc)(void* ptr, void* user_data) = ImGuiFreeTypeDefaultFreeFunc; | ||||
| static void* GImGuiFreeTypeAllocatorUserData = NULL; | ||||
| static void* GImGuiFreeTypeAllocatorUserData = nullptr; | ||||
|  | ||||
| //------------------------------------------------------------------------- | ||||
| // Code | ||||
| @@ -136,7 +136,7 @@ namespace | ||||
|         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_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(); } | ||||
|  | ||||
|         // [Internals] | ||||
| @@ -198,7 +198,7 @@ namespace | ||||
|         if (Face) | ||||
|         { | ||||
|             FT_Done_Face(Face); | ||||
|             Face = NULL; | ||||
|             Face = nullptr; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -229,7 +229,7 @@ namespace | ||||
|     { | ||||
|         uint32_t glyph_index = FT_Get_Char_Index(Face, codepoint); | ||||
|         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. | ||||
| 		// - 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. | ||||
|         FT_Error error = FT_Load_Glyph(Face, glyph_index, LoadFlags); | ||||
|         if (error) | ||||
|             return NULL; | ||||
|             return nullptr; | ||||
|  | ||||
|         // Need an outline for this to work | ||||
|         FT_GlyphSlot slot = Face->glyph; | ||||
| @@ -264,7 +264,7 @@ namespace | ||||
|         FT_GlyphSlot slot = Face->glyph; | ||||
|         FT_Error error = FT_Render_Glyph(slot, RenderMode); | ||||
|         if (error != 0) | ||||
|             return NULL; | ||||
|             return nullptr; | ||||
|  | ||||
|         FT_Bitmap* ft_bitmap = &Face->glyph->bitmap; | ||||
|         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) | ||||
|     { | ||||
|         IM_ASSERT(ft_bitmap != NULL); | ||||
|         IM_ASSERT(ft_bitmap != nullptr); | ||||
|         const uint32_t w = ft_bitmap->width; | ||||
|         const uint32_t h = ft_bitmap->rows; | ||||
|         const uint8_t* src = ft_bitmap->buffer; | ||||
| @@ -289,7 +289,7 @@ namespace | ||||
|         { | ||||
|         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 x = 0; x < w; x++) | ||||
| @@ -324,7 +324,7 @@ namespace | ||||
|             { | ||||
|                 // 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) | ||||
|                 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 x = 0; x < w; x++) | ||||
| @@ -403,7 +403,7 @@ bool ImFontAtlasBuildWithFreeTypeEx(FT_Library ft_library, ImFontAtlas* atlas, u | ||||
|     ImFontAtlasBuildInit(atlas); | ||||
|  | ||||
|     // Clear atlas | ||||
|     atlas->TexID = (ImTextureID)NULL; | ||||
|     atlas->TexID = (ImTextureID)nullptr; | ||||
|     atlas->TexWidth = atlas->TexHeight = 0; | ||||
|     atlas->TexUvScale = 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]; | ||||
|  | ||||
|             const FT_Glyph_Metrics* metrics = src_tmp.Font.LoadGlyph(src_glyph.Codepoint); | ||||
|             if (metrics == NULL) | ||||
|             if (metrics == nullptr) | ||||
|                 continue; | ||||
|  | ||||
|             // Render glyph into a bitmap (currently held by FreeType) | ||||
|             const FT_Bitmap* ft_bitmap = src_tmp.Font.RenderGlyphAndGetInfo(&src_glyph.Info); | ||||
|             if (ft_bitmap == NULL) | ||||
|             if (ft_bitmap == nullptr) | ||||
|                 continue; | ||||
|  | ||||
|             // 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. | ||||
|             src_glyph.BitmapData = (unsigned int*)(buf_bitmap_buffers.back() + buf_bitmap_current_used_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].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_dst_stride = (size_t)atlas->TexWidth; | ||||
|             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; | ||||
|                 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; | ||||
|  | ||||
| @@ -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) | ||||
| { | ||||
|     // Implement realloc() as we don't ask user to provide it. | ||||
|     if (block == NULL) | ||||
|     if (block == nullptr) | ||||
|         return GImGuiFreeTypeAllocFunc((size_t)new_size, GImGuiFreeTypeAllocatorUserData); | ||||
|  | ||||
|     if (new_size == 0) | ||||
|     { | ||||
|         GImGuiFreeTypeFreeFunc(block, GImGuiFreeTypeAllocatorUserData); | ||||
|         return NULL; | ||||
|         return nullptr; | ||||
|     } | ||||
|  | ||||
|     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 | ||||
|     FT_MemoryRec_ memory_rec = {}; | ||||
|     memory_rec.user = NULL; | ||||
|     memory_rec.user = nullptr; | ||||
|     memory_rec.alloc = &FreeType_Alloc; | ||||
|     memory_rec.free = &FreeType_Free; | ||||
|     memory_rec.realloc = &FreeType_Realloc; | ||||
|   | ||||
| @@ -40,7 +40,7 @@ namespace ImGuiFreeType | ||||
|  | ||||
|     // 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. | ||||
|     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) | ||||
|     // Prefer using '#define IMGUI_ENABLE_FREETYPE' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Michael Martz
					Michael Martz