[Bf-blender-cvs] [f18172b0239] master: Cleanup: Pass cursor position as a single array to eyedropper functions

Aaron Carlisle noreply at git.blender.org
Sun Jan 30 02:45:24 CET 2022


Commit: f18172b0239548a1b762e9499c77f162fffbd7a7
Author: Aaron Carlisle
Date:   Sat Jan 29 20:44:27 2022 -0500
Branches: master
https://developer.blender.org/rBf18172b0239548a1b762e9499c77f162fffbd7a7

Cleanup: Pass cursor position as a single array to eyedropper functions

Since `event->xy` is now an array these functions can be
simplified to accept the sample point as an array.

Clarifications were also made to variable names:
- `eye->last_x/y` --> `eye->cursor_last`
- `mx/my` --> `cursor`

Differential Revision: https://developer.blender.org/D13671

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

M	source/blender/editors/interface/interface_eyedropper.c
M	source/blender/editors/interface/interface_eyedropper_color.c
M	source/blender/editors/interface/interface_eyedropper_colorband.c
M	source/blender/editors/interface/interface_eyedropper_datablock.c
M	source/blender/editors/interface/interface_eyedropper_depth.c
M	source/blender/editors/interface/interface_eyedropper_gpencil_color.c
M	source/blender/editors/interface/interface_eyedropper_intern.h

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

diff --git a/source/blender/editors/interface/interface_eyedropper.c b/source/blender/editors/interface/interface_eyedropper.c
index fd03cc5e12c..6fa94730365 100644
--- a/source/blender/editors/interface/interface_eyedropper.c
+++ b/source/blender/editors/interface/interface_eyedropper.c
@@ -25,6 +25,7 @@
 #include "DNA_space_types.h"
 
 #include "BLI_math_color.h"
+#include "BLI_math_vector.h"
 
 #include "BKE_context.h"
 #include "BKE_screen.h"
@@ -107,7 +108,7 @@ wmKeyMap *eyedropper_colorband_modal_keymap(wmKeyConfig *keyconf)
 /** \name Generic Shared Functions
  * \{ */
 
-static void eyedropper_draw_cursor_text_ex(const int x, const int y, const char *name)
+static void eyedropper_draw_cursor_text_ex(const int xy[2], const char *name)
 {
   const uiFontStyle *fstyle = UI_FSTYLE_WIDGET;
 
@@ -119,7 +120,7 @@ static void eyedropper_draw_cursor_text_ex(const int x, const int y, const char
   rgba_uchar_to_float(col_fg, wcol->text);
   rgba_uchar_to_float(col_bg, wcol->inner);
 
-  UI_fontstyle_draw_simple_backdrop(fstyle, x, y + U.widget_unit, name, col_fg, col_bg);
+  UI_fontstyle_draw_simple_backdrop(fstyle, xy[0], xy[1] + U.widget_unit, name, col_fg, col_bg);
 }
 
 void eyedropper_draw_cursor_text_window(const struct wmWindow *window, const char *name)
@@ -128,19 +129,16 @@ void eyedropper_draw_cursor_text_window(const struct wmWindow *window, const cha
     return;
   }
 
-  const int x = window->eventstate->xy[0];
-  const int y = window->eventstate->xy[1];
-
-  eyedropper_draw_cursor_text_ex(x, y, name);
+  eyedropper_draw_cursor_text_ex(window->eventstate->xy, name);
 }
 
-void eyedropper_draw_cursor_text_region(const int x, const int y, const char *name)
+void eyedropper_draw_cursor_text_region(const int xy[2], const char *name)
 {
   if (name[0] == '\0') {
     return;
   }
 
-  eyedropper_draw_cursor_text_ex(x, y, name);
+  eyedropper_draw_cursor_text_ex(xy, name);
 }
 
 uiBut *eyedropper_get_property_button_under_mouse(bContext *C, const wmEvent *event)
@@ -173,8 +171,7 @@ void datadropper_win_area_find(
     }
   }
   else if (mval != r_mval) {
-    r_mval[0] = mval[0];
-    r_mval[1] = mval[1];
+    copy_v2_v2_int(r_mval, mval);
   }
 }
 
diff --git a/source/blender/editors/interface/interface_eyedropper_color.c b/source/blender/editors/interface/interface_eyedropper_color.c
index 05840175fab..b5eed2534a3 100644
--- a/source/blender/editors/interface/interface_eyedropper_color.c
+++ b/source/blender/editors/interface/interface_eyedropper_color.c
@@ -254,8 +254,10 @@ static bool eyedropper_cryptomatte_sample_image_fl(const bNode *node,
   return success;
 }
 
-static bool eyedropper_cryptomatte_sample_fl(
-    bContext *C, Eyedropper *eye, int mx, int my, float r_col[3])
+static bool eyedropper_cryptomatte_sample_fl(bContext *C,
+                                             Eyedropper *eye,
+                                             const int m_xy[2],
+                                             float r_col[3])
 {
   bNode *node = eye->crypto_node;
   NodeCryptomatte *crypto = node ? ((NodeCryptomatte *)node->storage) : NULL;
@@ -265,17 +267,17 @@ static bool eyedropper_cryptomatte_sample_fl(
   }
 
   bScreen *screen = CTX_wm_screen(C);
-  ScrArea *area = BKE_screen_find_area_xy(screen, SPACE_TYPE_ANY, (const int[2]){mx, my});
+  ScrArea *area = BKE_screen_find_area_xy(screen, SPACE_TYPE_ANY, m_xy);
   if (!area || !ELEM(area->spacetype, SPACE_IMAGE, SPACE_NODE, SPACE_CLIP)) {
     return false;
   }
 
-  ARegion *region = BKE_area_find_region_xy(area, RGN_TYPE_WINDOW, (const int[2]){mx, my});
+  ARegion *region = BKE_area_find_region_xy(area, RGN_TYPE_WINDOW, m_xy);
   if (!region) {
     return false;
   }
 
-  int mval[2] = {mx - region->winrct.xmin, my - region->winrct.ymin};
+  int mval[2] = {m_xy[0] - region->winrct.xmin, m_xy[1] - region->winrct.ymin};
   float fpos[2] = {-1.0f, -1.0};
   switch (area->spacetype) {
     case SPACE_IMAGE: {
@@ -324,7 +326,7 @@ static bool eyedropper_cryptomatte_sample_fl(
   return false;
 }
 
-void eyedropper_color_sample_fl(bContext *C, int mx, int my, float r_col[3])
+void eyedropper_color_sample_fl(bContext *C, const int m_xy[2], float r_col[3])
 {
   /* we could use some clever */
   Main *bmain = CTX_data_main(C);
@@ -332,10 +334,10 @@ void eyedropper_color_sample_fl(bContext *C, int mx, int my, float r_col[3])
   const char *display_device = CTX_data_scene(C)->display_settings.display_device;
   struct ColorManagedDisplay *display = IMB_colormanagement_display_get_named(display_device);
 
+  int mval[2];
   wmWindow *win;
   ScrArea *area;
-  int mval[2] = {mx, my};
-  datadropper_win_area_find(C, mval, mval, &win, &area);
+  datadropper_win_area_find(C, m_xy, mval, &win, &area);
 
   if (area) {
     if (area->spacetype == SPACE_IMAGE) {
@@ -406,17 +408,17 @@ static void eyedropper_color_set(bContext *C, Eyedropper *eye, const float col[3
   RNA_property_update(C, &eye->ptr, eye->prop);
 }
 
-static void eyedropper_color_sample(bContext *C, Eyedropper *eye, int mx, int my)
+static void eyedropper_color_sample(bContext *C, Eyedropper *eye, const int m_xy[2])
 {
   /* Accumulate color. */
   float col[3];
   if (eye->crypto_node) {
-    if (!eyedropper_cryptomatte_sample_fl(C, eye, mx, my, col)) {
+    if (!eyedropper_cryptomatte_sample_fl(C, eye, m_xy, col)) {
       return;
     }
   }
   else {
-    eyedropper_color_sample_fl(C, mx, my, col);
+    eyedropper_color_sample_fl(C, m_xy, col);
   }
 
   if (!eye->crypto_node) {
@@ -439,13 +441,13 @@ static void eyedropper_color_sample(bContext *C, Eyedropper *eye, int mx, int my
   eyedropper_color_set(C, eye, accum_col);
 }
 
-static void eyedropper_color_sample_text_update(bContext *C, Eyedropper *eye, int mx, int my)
+static void eyedropper_color_sample_text_update(bContext *C, Eyedropper *eye, const int m_xy[2])
 {
   float col[3];
   eye->sample_text[0] = '\0';
 
   if (eye->cryptomatte_session) {
-    if (eyedropper_cryptomatte_sample_fl(C, eye, mx, my, col)) {
+    if (eyedropper_cryptomatte_sample_fl(C, eye, m_xy, col)) {
       BKE_cryptomatte_find_name(
           eye->cryptomatte_session, col[0], eye->sample_text, sizeof(eye->sample_text));
       eye->sample_text[sizeof(eye->sample_text) - 1] = '\0';
@@ -476,7 +478,7 @@ static int eyedropper_modal(bContext *C, wmOperator *op, const wmEvent *event)
       case EYE_MODAL_SAMPLE_CONFIRM: {
         const bool is_undo = eye->is_undo;
         if (eye->accum_tot == 0) {
-          eyedropper_color_sample(C, eye, event->xy[0], event->xy[1]);
+          eyedropper_color_sample(C, eye, event->xy);
         }
         eyedropper_exit(C, op);
         /* Could support finished & undo-skip. */
@@ -485,23 +487,23 @@ static int eyedropper_modal(bContext *C, wmOperator *op, const wmEvent *event)
       case EYE_MODAL_SAMPLE_BEGIN:
         /* enable accum and make first sample */
         eye->accum_start = true;
-        eyedropper_color_sample(C, eye, event->xy[0], event->xy[1]);
+        eyedropper_color_sample(C, eye, event->xy);
         break;
       case EYE_MODAL_SAMPLE_RESET:
         eye->accum_tot = 0;
         zero_v3(eye->accum_col);
-        eyedropper_color_sample(C, eye, event->xy[0], event->xy[1]);
+        eyedropper_color_sample(C, eye, event->xy);
         break;
     }
   }
   else if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE)) {
     if (eye->accum_start) {
       /* button is pressed so keep sampling */
-      eyedropper_color_sample(C, eye, event->xy[0], event->xy[1]);
+      eyedropper_color_sample(C, eye, event->xy);
     }
 
     if (eye->draw_handle_sample_text) {
-      eyedropper_color_sample_text_update(C, eye, event->xy[0], event->xy[1]);
+      eyedropper_color_sample_text_update(C, eye, event->xy);
       ED_region_tag_redraw(CTX_wm_region(C));
     }
   }
diff --git a/source/blender/editors/interface/interface_eyedropper_colorband.c b/source/blender/editors/interface/interface_eyedropper_colorband.c
index 22320282766..05ed4ecf601 100644
--- a/source/blender/editors/interface/interface_eyedropper_colorband.c
+++ b/source/blender/editors/interface/interface_eyedropper_colorband.c
@@ -58,7 +58,7 @@ typedef struct Colorband_RNAUpdateCb {
 } Colorband_RNAUpdateCb;
 
 typedef struct EyedropperColorband {
-  int last_x, last_y;
+  int event_xy_last[2];
   /* Alpha is currently fixed at 1.0, may support in future. */
   float (*color_buffer)[4];
   int color_buffer_alloc;
@@ -142,13 +142,12 @@ static bool eyedropper_colorband_init(bContext *C, wmOperator *op)
 
 static void eyedropper_colorband_sample_point(bContext *C,
                                               EyedropperColorband *eye,
-                                              int mx,
-                                              int my)
+                                              const int m_xy[2])
 {
-  if (eye->last_x != mx || eye->last_y != my) {
+  if (eye->event_xy_last[0] != m_xy[0] || eye->event_xy_last[1] != m_xy[1]) {
     float col[4];
     col[3] = 1.0f; /* TODO: sample alpha */
-    eyedropper_color_sample_fl(C, mx, my, col);
+    eyedropper_color_sample_fl(C, m_xy, col);
     if (eye->color_buffer_len + 1 == eye->color_buffer_alloc) {
       eye->color_buffer_alloc *= 2;
       eye->color_buffer = MEM_reallocN(eye->color_buffer,
@@ -156,8 +155,7 @@ static void eyedropper_colorband_sample_point(bContext *C,
     }
     copy_v4_v4(eye->color_buffer[eye->color_buffer_len], col);
     eye->color_buffer_len += 1;
-    eye->last_x = mx;
-    eye->last_y = my;
+    copy_v2_v2_int(eye->event_xy_last, m_xy);
     eye->is_set = true;
   }
 }
@@ -167,21 +165,20 @@ static bool eyedropper_colorband_sample_callback(int mx, int my, void *userdata)
   struct EyedropperColorband_Context *data = userdata;
   bContext *C = data->context;
   EyedropperColorband *eye = data->eye;
-  eyedropper_colorband_sample_point(C, eye, mx, my);
+  const int cursor[2] = {mx, my};
+  eyedropper_colorband_sample_point(C, eye, cursor);
   return true;
 }
 
 static void eyedropper_colorband_sample_segment(bContext *C,
                                                 EyedropperColorband *eye,
-                                                int mx,
-                                                int my)
+  

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list