[Bf-blender-cvs] [3c5620aabd3] master: Cleanup: Move interface_region_tooltip.c and header to C++

Hans Goudey noreply at git.blender.org
Sat Jul 30 23:40:54 CEST 2022


Commit: 3c5620aabd33c39caa48192e978d0bf237b5b59b
Author: Hans Goudey
Date:   Sat Jul 30 16:40:41 2022 -0500
Branches: master
https://developer.blender.org/rB3c5620aabd33c39caa48192e978d0bf237b5b59b

Cleanup: Move interface_region_tooltip.c and header to C++

===================================================================

M	source/blender/editors/interface/CMakeLists.txt
M	source/blender/editors/interface/interface_region_menu_pie.cc
M	source/blender/editors/interface/interface_region_menu_popup.cc
M	source/blender/editors/interface/interface_region_popover.cc
M	source/blender/editors/interface/interface_region_popup.cc
M	source/blender/editors/interface/interface_region_search.cc
R067	source/blender/editors/interface/interface_region_tooltip.c	source/blender/editors/interface/interface_region_tooltip.cc
M	source/blender/editors/interface/interface_regions.cc
R060	source/blender/editors/interface/interface_regions_intern.h	source/blender/editors/interface/interface_regions_intern.hh

===================================================================

diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt
index 56a639920a7..c54bcad905f 100644
--- a/source/blender/editors/interface/CMakeLists.txt
+++ b/source/blender/editors/interface/CMakeLists.txt
@@ -57,7 +57,7 @@ set(SRC
   interface_region_popover.cc
   interface_region_popup.cc
   interface_region_search.cc
-  interface_region_tooltip.c
+  interface_region_tooltip.cc
   interface_regions.cc
   interface_style.cc
   interface_template_asset_view.cc
@@ -83,7 +83,7 @@ set(SRC
 
   eyedroppers/eyedropper_intern.h
   interface_intern.h
-  interface_regions_intern.h
+  interface_regions_intern.hh
 )
 
 set(LIB
diff --git a/source/blender/editors/interface/interface_region_menu_pie.cc b/source/blender/editors/interface/interface_region_menu_pie.cc
index 8572e938b30..becdfaf4e25 100644
--- a/source/blender/editors/interface/interface_region_menu_pie.cc
+++ b/source/blender/editors/interface/interface_region_menu_pie.cc
@@ -37,7 +37,7 @@
 #include "ED_screen.h"
 
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 /* -------------------------------------------------------------------- */
 /** \name Pie Menu
diff --git a/source/blender/editors/interface/interface_region_menu_popup.cc b/source/blender/editors/interface/interface_region_menu_popup.cc
index a22f7218203..0647e1a4a70 100644
--- a/source/blender/editors/interface/interface_region_menu_popup.cc
+++ b/source/blender/editors/interface/interface_region_menu_popup.cc
@@ -39,7 +39,7 @@
 #include "ED_screen.h"
 
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 /* -------------------------------------------------------------------- */
 /** \name Utility Functions
diff --git a/source/blender/editors/interface/interface_region_popover.cc b/source/blender/editors/interface/interface_region_popover.cc
index 2e10261a4f7..c152a9aacd5 100644
--- a/source/blender/editors/interface/interface_region_popover.cc
+++ b/source/blender/editors/interface/interface_region_popover.cc
@@ -46,7 +46,7 @@
 #include "UI_interface.h"
 
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 /* -------------------------------------------------------------------- */
 /** \name Popup Menu with Callback or String
diff --git a/source/blender/editors/interface/interface_region_popup.cc b/source/blender/editors/interface/interface_region_popup.cc
index 74c228e3338..f6b078c033e 100644
--- a/source/blender/editors/interface/interface_region_popup.cc
+++ b/source/blender/editors/interface/interface_region_popup.cc
@@ -31,7 +31,7 @@
 #include "ED_screen.h"
 
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 /* -------------------------------------------------------------------- */
 /** \name Utility Functions
diff --git a/source/blender/editors/interface/interface_region_search.cc b/source/blender/editors/interface/interface_region_search.cc
index 81c0c29d09a..f04229609f9 100644
--- a/source/blender/editors/interface/interface_region_search.cc
+++ b/source/blender/editors/interface/interface_region_search.cc
@@ -41,7 +41,7 @@
 
 #include "GPU_state.h"
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 #define MENU_BORDER (int)(0.3f * U.widget_unit)
 
diff --git a/source/blender/editors/interface/interface_region_tooltip.c b/source/blender/editors/interface/interface_region_tooltip.cc
similarity index 67%
rename from source/blender/editors/interface/interface_region_tooltip.c
rename to source/blender/editors/interface/interface_region_tooltip.cc
index f460a159a5f..e18d23c8a1c 100644
--- a/source/blender/editors/interface/interface_region_tooltip.c
+++ b/source/blender/editors/interface/interface_region_tooltip.cc
@@ -16,9 +16,9 @@
  * For now it's not a priority, so leave as-is.
  */
 
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdarg>
+#include <cstdlib>
+#include <cstring>
 
 #include "MEM_guardedalloc.h"
 
@@ -53,7 +53,7 @@
 #include "ED_screen.h"
 
 #include "interface_intern.h"
-#include "interface_regions_intern.h"
+#include "interface_regions_intern.hh"
 
 #define UI_TIP_PAD_FAC 1.3f
 #define UI_TIP_PADDING (int)(UI_TIP_PAD_FAC * UI_UNIT_Y)
@@ -61,24 +61,32 @@
 
 #define UI_TIP_STR_MAX 1024
 
-typedef struct uiTooltipFormat {
-  enum {
-    UI_TIP_STYLE_NORMAL = 0,
-    UI_TIP_STYLE_HEADER,
-    UI_TIP_STYLE_MONO,
-  } style : 3;
-  enum {
-    UI_TIP_LC_MAIN = 0, /* primary text */
-    UI_TIP_LC_VALUE,    /* the value of buttons (also shortcuts) */
-    UI_TIP_LC_ACTIVE,   /* titles of active enum values */
-    UI_TIP_LC_NORMAL,   /* regular text */
-    UI_TIP_LC_PYTHON,   /* Python snippet */
-    UI_TIP_LC_ALERT,    /* description of why operator can't run */
-  } color_id : 4;
-  int is_pad : 1;
-} uiTooltipFormat;
-
-typedef struct uiTooltipField {
+struct uiTooltipFormat {
+  enum class Style : int8_t {
+    Normal,
+    Header,
+    Mono,
+  };
+  enum class ColorID : int8_t {
+    /** Primary Text. */
+    Main = 0,
+    /** The value of buttons (also shortcuts). */
+    Value = 1,
+    /** Titles of active enum values. */
+    Active = 2,
+    /** Regular text. */
+    Normal = 3,
+    /** Python snippet. */
+    Python = 4,
+    /** Description of why an operator can't run. */
+    Alert = 5,
+  };
+  Style style;
+  ColorID color_id;
+  bool is_pad;
+};
+
+struct uiTooltipField {
   char *text;
   char *text_suffix;
   struct {
@@ -86,34 +94,47 @@ typedef struct uiTooltipField {
     uint lines; /* number of lines, 1 or more with word-wrap */
   } geom;
   uiTooltipFormat format;
+};
 
-} uiTooltipField;
-
-typedef struct uiTooltipData {
+struct uiTooltipData {
   rcti bbox;
   uiTooltipField *fields;
   uint fields_len;
   uiFontStyle fstyle;
   int wrap_width;
   int toth, lineh;
-} uiTooltipData;
+};
 
 #define UI_TIP_LC_MAX 6
 
-BLI_STATIC_ASSERT(UI_TIP_LC_MAX == UI_TIP_LC_ALERT + 1, "invalid lc-max");
+BLI_STATIC_ASSERT(UI_TIP_LC_MAX == static_cast<int>(uiTooltipFormat::ColorID::Alert) + 1,
+                  "invalid lc-max");
 BLI_STATIC_ASSERT(sizeof(uiTooltipFormat) <= sizeof(int), "oversize");
 
 static uiTooltipField *text_field_add_only(uiTooltipData *data)
 {
   data->fields_len += 1;
-  data->fields = MEM_recallocN(data->fields, sizeof(*data->fields) * data->fields_len);
+  data->fields = static_cast<uiTooltipField *>(
+      MEM_recallocN(data->fields, sizeof(*data->fields) * data->fields_len));
   return &data->fields[data->fields_len - 1];
 }
 
-static uiTooltipField *text_field_add(uiTooltipData *data, const uiTooltipFormat *format)
+// static uiTooltipField *text_field_add(uiTooltipData *data, const uiTooltipFormat *format)
+// {
+//   uiTooltipField *field = text_field_add_only(data);
+//   field->format = *format;
+//   return field;
+// }
+
+static uiTooltipField *text_field_add(uiTooltipData *data,
+                                      const uiTooltipFormat::Style style,
+                                      const uiTooltipFormat::ColorID color,
+                                      const bool is_pad = false)
 {
   uiTooltipField *field = text_field_add_only(data);
-  field->format = *format;
+  field->format = {};
+  field->format.style = style;
+  field->format.color_id = color, field->format.is_pad = is_pad;
   return field;
 }
 
@@ -138,25 +159,26 @@ static void rgb_tint(float col[3], float h, float h_strength, float v, float v_s
 static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region)
 {
   const float pad_px = UI_TIP_PADDING;
-  uiTooltipData *data = region->regiondata;
+  uiTooltipData *data = static_cast<uiTooltipData *>(region->regiondata);
   const uiWidgetColors *theme = ui_tooltip_get_theme();
   rcti bbox = data->bbox;
   float tip_colors[UI_TIP_LC_MAX][3];
   uchar drawcol[4] = {0, 0, 0, 255}; /* to store color in while drawing (alpha is always 255) */
 
-  float *main_color = tip_colors[UI_TIP_LC_MAIN]; /* the color from the theme */
-  float *value_color = tip_colors[UI_TIP_LC_VALUE];
-  float *active_color = tip_colors[UI_TIP_LC_ACTIVE];
-  float *normal_color = tip_colors[UI_TIP_LC_NORMAL];
-  float *python_color = tip_colors[UI_TIP_LC_PYTHON];
-  float *alert_color = tip_colors[UI_TIP_LC_ALERT];
+  /* the color from the theme */
+  float *main_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Main)];
+  float *value_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Value)];
+  float *active_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Active)];
+  float *normal_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Normal)];
+  float *python_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Python)];
+  float *alert_color = tip_colors[static_cast<int>(uiTooltipFormat::ColorID::Alert)];
 
   float background_color[3];
 
   wmOrtho2_region_pixelspace(region);
 
   /* draw background */
-  ui_draw_tooltip_background(UI_style_get(), NULL, &bbox);
+  ui_draw_tooltip_background(UI_style_get(), nullptr, &bbox);
 
   /* set background_color */
   rgb_uchar_to_float(background_color, theme->inner);
@@ -190,16 +212,17 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *region
 
   for (int i = 0; i < data->fields_len; i++) {
     const uiTooltipField *field = &data->fields[i];
-    const uiTooltipField *field_next = (i + 1) != data->fields_len ? &data->fields[i + 1] : NULL;
+    const uiTooltipField *field_next = (i + 1) != data->fields_len ? &data->fields[i + 1] :
+                                                                     nullptr;
 
     bbox.ymin = bbox.ymax - (data->lineh * field->geom.lines);
-    if (field->format.style == UI_TIP_STYLE_HEADER) {
-      const struct uiFontStyleDraw_Params fs_params = {
-          .align = UI_STYLE_TEXT_LEFT,
-          .word_wrap = true,
-      };
+    if (field->format.style == uiTooltipFormat::Style::Header) {
+      uiFontStyleDraw_Params fs_params{};
+      fs_params.align = UI_STYLE_TEXT_LEFT;
+      fs_params.word_wrap = tr

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list