imgui.patch 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. diff --git a/deps/imgui/CMakeLists.txt b/deps/imgui/CMakeLists.txt
  2. index 71301973..502319ce 100644
  3. --- a/deps/imgui/CMakeLists.txt
  4. +++ b/deps/imgui/CMakeLists.txt
  5. @@ -19,7 +19,7 @@ endif()
  6. if("${POLYSCOPE_BACKEND_OPENGL3_GLFW}")
  7. - set(SRCS imgui/imgui.cpp imgui/imgui_draw.cpp imgui/imgui_widgets.cpp imgui/imgui_demo.cpp imgui/examples/imgui_impl_glfw.cpp imgui/examples/imgui_impl_opengl3.cpp)
  8. + set(SRCS imgui/imgui.cpp imgui/imgui_draw.cpp imgui/imgui_tables.cpp imgui/imgui_widgets.cpp imgui/imgui_demo.cpp imgui/backends/imgui_impl_glfw.cpp imgui/backends/imgui_impl_opengl3.cpp)
  9. add_library(
  10. imgui
  11. @@ -36,7 +36,6 @@ if("${POLYSCOPE_BACKEND_OPENGL3_GLFW}")
  12. # On macOS, get openGL & friends from Frameworks; do not use GLAD at all
  13. add_definitions(-DGLFW_INCLUDE_GLCOREARB)
  14. - add_definitions(-DIMGUI_IMPL_OPENGL_LOADER_CUSTOM=<GLFW/glfw3.h>)
  15. # NOTE: This code is essentially duplicated here and in polyscope/src/CMakeLists.txt
  16. @@ -60,7 +59,7 @@ elseif("${POLYSCOPE_BACKEND_OPENGL_MOCK}")
  17. add_definitions(-DIMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS)
  18. add_definitions(-DIMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS)
  19. - set(SRCS imgui/imgui.cpp imgui/imgui_draw.cpp imgui/imgui_widgets.cpp)
  20. + set(SRCS imgui/imgui.cpp imgui/imgui_draw.cpp imgui/imgui_tables.cpp imgui/imgui_widgets.cpp imgui/imgui_demo.cpp)
  21. add_library(
  22. imgui
  23. diff --git a/deps/imgui/imgui b/deps/imgui/imgui
  24. index 5503c0a1..512c54bb 160000
  25. --- a/deps/imgui/imgui
  26. +++ b/deps/imgui/imgui
  27. @@ -1 +1 @@
  28. -Subproject commit 5503c0a12e0c929e84b3f61b2cb4bb9177ea3da1
  29. +Subproject commit 512c54bbc062c41c74f8a8bd8ff1fd6bebd1e6d0
  30. diff --git a/include/polyscope/render/opengl/gl_engine.h b/include/polyscope/render/opengl/gl_engine.h
  31. index 04a1a9e7..7c6074cc 100644
  32. --- a/include/polyscope/render/opengl/gl_engine.h
  33. +++ b/include/polyscope/render/opengl/gl_engine.h
  34. @@ -23,8 +23,8 @@
  35. #include "imgui.h"
  36. #define IMGUI_IMPL_OPENGL_LOADER_GLAD
  37. -#include "examples/imgui_impl_glfw.h"
  38. -#include "examples/imgui_impl_opengl3.h"
  39. +#include "backends/imgui_impl_glfw.h"
  40. +#include "backends/imgui_impl_opengl3.h"
  41. #include <unordered_map>
  42. diff --git a/include/polyscope/scalar_quantity.ipp b/include/polyscope/scalar_quantity.ipp
  43. index dab47e43..5a0cc072 100644
  44. --- a/include/polyscope/scalar_quantity.ipp
  45. +++ b/include/polyscope/scalar_quantity.ipp
  46. @@ -65,14 +65,14 @@ void ScalarQuantity<QuantityT>::buildScalarUI() {
  47. ImGui::SameLine();
  48. if (isolineWidth.get().isRelative()) {
  49. if (ImGui::DragFloat("##Isoline width relative", isolineWidth.get().getValuePtr(), .001, 0.0001, 1.0, "%.4f",
  50. - 2.0)) {
  51. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  52. isolineWidth.manuallyChanged();
  53. requestRedraw();
  54. }
  55. } else {
  56. float scaleWidth = dataRange.second - dataRange.first;
  57. if (ImGui::DragFloat("##Isoline width absolute", isolineWidth.get().getValuePtr(), scaleWidth / 1000, 0.,
  58. - scaleWidth, "%.4f", 2.0)) {
  59. + scaleWidth, "%.4f", ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  60. isolineWidth.manuallyChanged();
  61. requestRedraw();
  62. }
  63. @@ -81,7 +81,7 @@ void ScalarQuantity<QuantityT>::buildScalarUI() {
  64. // Isoline darkness
  65. ImGui::TextUnformatted("Isoline darkness");
  66. ImGui::SameLine();
  67. - if (ImGui::DragFloat("##Isoline darkness", &isolineDarkness.get(), 0.01, 0., 1.)) {
  68. + if (ImGui::DragFloat("##Isoline darkness", &isolineDarkness.get(), 0.01, 0.)) {
  69. isolineDarkness.manuallyChanged();
  70. requestRedraw();
  71. }
  72. diff --git a/src/curve_network.cpp b/src/curve_network.cpp
  73. index 378cae0f..85d736ff 100644
  74. --- a/src/curve_network.cpp
  75. +++ b/src/curve_network.cpp
  76. @@ -330,7 +330,8 @@ void CurveNetwork::buildCustomUI() {
  77. }
  78. ImGui::SameLine();
  79. ImGui::PushItemWidth(100);
  80. - if (ImGui::SliderFloat("Radius", radius.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  81. + if (ImGui::SliderFloat("Radius", radius.get().getValuePtr(), 0.0, .1, "%.5f",
  82. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  83. radius.manuallyChanged();
  84. requestRedraw();
  85. }
  86. diff --git a/src/imgui_config.cpp b/src/imgui_config.cpp
  87. index 4526b890..bba99f7f 100644
  88. --- a/src/imgui_config.cpp
  89. +++ b/src/imgui_config.cpp
  90. @@ -63,7 +63,7 @@ void configureImGuiStyle() {
  91. colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.00f, 1.00f);
  92. colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.60f, 0.00f, 1.00f);
  93. colors[ImGuiCol_TextSelectedBg] = ImVec4(0.00f, 0.00f, 1.00f, 0.35f);
  94. - colors[ImGuiCol_ModalWindowDarkening] = ImVec4(0.20f, 0.20f, 0.20f, 0.35f);
  95. + colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.35f);
  96. colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
  97. colors[ImGuiCol_Tab] = ImVec4(0.27f, 0.54f, 0.42f, 0.83f);
  98. colors[ImGuiCol_TabHovered] = ImVec4(0.34f, 0.68f, 0.53f, 0.83f);
  99. diff --git a/src/point_cloud.cpp b/src/point_cloud.cpp
  100. index efae01f6..bd81c056 100644
  101. --- a/src/point_cloud.cpp
  102. +++ b/src/point_cloud.cpp
  103. @@ -255,7 +255,8 @@ void PointCloud::buildCustomUI() {
  104. }
  105. ImGui::SameLine();
  106. ImGui::PushItemWidth(70);
  107. - if (ImGui::SliderFloat("Radius", pointRadius.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  108. + if (ImGui::SliderFloat("Radius", pointRadius.get().getValuePtr(), 0.0, .1, "%.5f",
  109. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  110. pointRadius.manuallyChanged();
  111. requestRedraw();
  112. }
  113. diff --git a/src/point_cloud_parameterization_quantity.cpp b/src/point_cloud_parameterization_quantity.cpp
  114. index c5c38f08..9c0c0a13 100644
  115. --- a/src/point_cloud_parameterization_quantity.cpp
  116. +++ b/src/point_cloud_parameterization_quantity.cpp
  117. @@ -149,7 +149,8 @@ void PointCloudParameterizationQuantity::buildCustomUI() {
  118. // Modulo stripey width
  119. - if (ImGui::DragFloat("period", &checkerSize.get(), .001, 0.0001, 1.0, "%.4f", 2.0)) {
  120. + if (ImGui::DragFloat("period", &checkerSize.get(), .001, 0.0001, 1.0, "%.4f",
  121. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  122. setCheckerSize(getCheckerSize());
  123. }
  124. diff --git a/src/render/engine.cpp b/src/render/engine.cpp
  125. index a0a5125d..267b741f 100644
  126. --- a/src/render/engine.cpp
  127. +++ b/src/render/engine.cpp
  128. @@ -208,9 +208,12 @@ void Engine::buildEngineGui() {
  129. ImGui::SetNextTreeNodeOpen(false, ImGuiCond_FirstUseEver);
  130. if (ImGui::TreeNode("Tone Mapping")) {
  131. - ImGui::SliderFloat("exposure", &exposure, 0.1, 2.0, "%.3f", 2.);
  132. - ImGui::SliderFloat("white level", &whiteLevel, 0.0, 2.0, "%.3f", 2.);
  133. - ImGui::SliderFloat("gamma", &gamma, 0.5, 3.0, "%.3f", 2.);
  134. + ImGui::SliderFloat("exposure", &exposure, 0.1, 2.0, "%.3f",
  135. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat);
  136. + ImGui::SliderFloat("white level", &whiteLevel, 0.0, 2.0, "%.3f",
  137. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat);
  138. + ImGui::SliderFloat("gamma", &gamma, 0.5, 3.0, "%.3f",
  139. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat);
  140. ImGui::TreePop();
  141. }
  142. diff --git a/src/ribbon_artist.cpp b/src/ribbon_artist.cpp
  143. index 417817ac..88d3d5b4 100644
  144. --- a/src/ribbon_artist.cpp
  145. +++ b/src/ribbon_artist.cpp
  146. @@ -152,7 +152,8 @@ void RibbonArtist::buildParametersGUI() {
  147. }
  148. ImGui::PushItemWidth(150);
  149. - if (ImGui::SliderFloat("Ribbon width", ribbonWidth.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  150. + if (ImGui::SliderFloat("Ribbon width", ribbonWidth.get().getValuePtr(), 0.0, .1, "%.5f",
  151. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  152. ribbonWidth.manuallyChanged();
  153. requestRedraw();
  154. }
  155. diff --git a/src/surface_count_quantity.cpp b/src/surface_count_quantity.cpp
  156. index 9d9fcc67..b4040f3e 100644
  157. --- a/src/surface_count_quantity.cpp
  158. +++ b/src/surface_count_quantity.cpp
  159. @@ -104,7 +104,8 @@ void SurfaceCountQuantity::buildCustomUI() {
  160. ImGui::DragFloatRange2("Color Range", &vizRangeLow, &vizRangeHigh, (dataRangeHigh - dataRangeLow) / 100.,
  161. dataRangeLow, dataRangeHigh, "Min: %.3e", "Max: %.3e");
  162. - if (ImGui::SliderFloat("Radius", pointRadius.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  163. + if (ImGui::SliderFloat("Radius", pointRadius.get().getValuePtr(), 0.0, .1, "%.5f",
  164. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  165. pointRadius.manuallyChanged();
  166. requestRedraw();
  167. }
  168. diff --git a/src/surface_distance_quantity.cpp b/src/surface_distance_quantity.cpp
  169. index 3b9851af..57b3d303 100644
  170. --- a/src/surface_distance_quantity.cpp
  171. +++ b/src/surface_distance_quantity.cpp
  172. @@ -93,7 +93,8 @@ void SurfaceDistanceQuantity::buildCustomUI() {
  173. }
  174. // Modulo stripey width
  175. - if (ImGui::DragFloat("Stripe size", stripeSize.get().getValuePtr(), .001, 0.0001, 1.0, "%.4f", 2.0)) {
  176. + if (ImGui::DragFloat("Stripe size", stripeSize.get().getValuePtr(), .001, 0.0001, 1.0, "%.4f",
  177. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  178. stripeSize.manuallyChanged();
  179. requestRedraw();
  180. }
  181. diff --git a/src/surface_graph_quantity.cpp b/src/surface_graph_quantity.cpp
  182. index ce4d2e64..b559a680 100644
  183. --- a/src/surface_graph_quantity.cpp
  184. +++ b/src/surface_graph_quantity.cpp
  185. @@ -101,7 +101,8 @@ void SurfaceGraphQuantity::buildCustomUI() {
  186. ImGui::SameLine();
  187. if (ImGui::ColorEdit3("Color", &color.get()[0], ImGuiColorEditFlags_NoInputs)) setColor(getColor());
  188. ImGui::Text("Nodes: %lu Edges: %lu", nodes.size(), edges.size());
  189. - if (ImGui::SliderFloat("Radius", radius.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  190. + if (ImGui::SliderFloat("Radius", radius.get().getValuePtr(), 0.0, .1, "%.5f",
  191. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  192. radius.manuallyChanged();
  193. requestRedraw();
  194. }
  195. diff --git a/src/surface_parameterization_quantity.cpp b/src/surface_parameterization_quantity.cpp
  196. index c9e8ebea..7d1d2d8a 100644
  197. --- a/src/surface_parameterization_quantity.cpp
  198. +++ b/src/surface_parameterization_quantity.cpp
  199. @@ -154,7 +154,8 @@ void SurfaceParameterizationQuantity::buildCustomUI() {
  200. // Modulo stripey width
  201. - if (ImGui::DragFloat("period", &checkerSize.get(), .001, 0.0001, 1.0, "%.4f", 2.0)) {
  202. + if (ImGui::DragFloat("period", &checkerSize.get(), .001, 0.0001, 1.0, "%.4f",
  203. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  204. setCheckerSize(getCheckerSize());
  205. }
  206. diff --git a/src/vector_artist.cpp b/src/vector_artist.cpp
  207. index 633a12ff..6135bbfe 100644
  208. --- a/src/vector_artist.cpp
  209. +++ b/src/vector_artist.cpp
  210. @@ -90,13 +90,15 @@ void VectorArtist::buildParametersUI() {
  211. // Only get to set length for non-ambient vectors
  212. if (vectorType != VectorType::AMBIENT) {
  213. - if (ImGui::SliderFloat("Length", vectorLengthMult.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  214. + if (ImGui::SliderFloat("Length", vectorLengthMult.get().getValuePtr(), 0.0, .1, "%.5f",
  215. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  216. vectorLengthMult.manuallyChanged();
  217. requestRedraw();
  218. }
  219. }
  220. - if (ImGui::SliderFloat("Radius", vectorRadius.get().getValuePtr(), 0.0, .1, "%.5f", 3.)) {
  221. + if (ImGui::SliderFloat("Radius", vectorRadius.get().getValuePtr(), 0.0, .1, "%.5f",
  222. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  223. vectorRadius.manuallyChanged();
  224. requestRedraw();
  225. }
  226. diff --git a/src/view.cpp b/src/view.cpp
  227. index 6b93f885..27a16bfd 100644
  228. --- a/src/view.cpp
  229. +++ b/src/view.cpp
  230. @@ -725,18 +725,21 @@ void buildViewGui() {
  231. // Clip planes
  232. float nearClipRatioF = nearClipRatio;
  233. float farClipRatioF = farClipRatio;
  234. - if (ImGui::SliderFloat(" Clip Near", &nearClipRatioF, 0., 10., "%.5f", 3.)) {
  235. + if (ImGui::SliderFloat(" Clip Near", &nearClipRatioF, 0., 10., "%.5f",
  236. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  237. nearClipRatio = nearClipRatioF;
  238. requestRedraw();
  239. }
  240. - if (ImGui::SliderFloat(" Clip Far", &farClipRatioF, 1., 1000., "%.2f", 3.)) {
  241. + if (ImGui::SliderFloat(" Clip Far", &farClipRatioF, 1., 1000., "%.2f",
  242. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat)) {
  243. farClipRatio = farClipRatioF;
  244. requestRedraw();
  245. }
  246. // Move speed
  247. float moveScaleF = view::moveScale;
  248. - ImGui::SliderFloat(" Move Speed", &moveScaleF, 0.0, 1.0, "%.5f", 3.);
  249. + ImGui::SliderFloat(" Move Speed", &moveScaleF, 0.0, 1.0, "%.5f",
  250. + ImGuiSliderFlags_Logarithmic | ImGuiSliderFlags_NoRoundToFormat);
  251. view::moveScale = moveScaleF;