[Bf-blender-cvs] [47881791be0] master: UI Code Quality: Store curve-button gradient type in derived struct

Julian Eisel noreply at git.blender.org
Fri Sep 4 21:29:43 CEST 2020


Commit: 47881791be0538f9558b2ef091e1761187df250d
Author: Julian Eisel
Date:   Fri Sep 4 19:26:12 2020 +0200
Branches: master
https://developer.blender.org/rB47881791be0538f9558b2ef091e1761187df250d

UI Code Quality: Store curve-button gradient type in derived struct

We want to move away from using `uiBut.a1`/`a2`, which is a hard to
reason about design.

Part of T74432.

Also correct comment.

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

M	source/blender/editors/interface/interface_draw.c
M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_query.c
M	source/blender/editors/interface/interface_templates.c

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

diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index 13dd4ce3001..4d53018cd32 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -1922,7 +1922,7 @@ void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol,
               BLI_rcti_size_y(&scissor_new));
 
   /* Do this first to not mess imm context */
-  if (but->a1 == UI_GRAD_H) {
+  if (but_cumap->gradient_type == UI_GRAD_H) {
     /* magic trigger for curve backgrounds */
     const float col[3] = {0.0f, 0.0f, 0.0f}; /* dummy arg */
 
@@ -1945,7 +1945,7 @@ void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol,
   /* backdrop */
   float color_backdrop[4] = {0, 0, 0, 1};
 
-  if (but->a1 == UI_GRAD_H) {
+  if (but_cumap->gradient_type == UI_GRAD_H) {
     /* grid, hsv uses different grid */
     GPU_blend(GPU_BLEND_ALPHA);
     ARRAY_SET_ITEMS(color_backdrop, 0, 0, 0, 48.0 / 255.0);
@@ -2002,7 +2002,7 @@ void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol,
 
   if (cumap->flag & CUMA_DRAW_SAMPLE) {
     immBegin(GPU_PRIM_LINES, 2); /* will draw one of the following 3 lines */
-    if (but->a1 == UI_GRAD_H) {
+    if (but_cumap->gradient_type == UI_GRAD_H) {
       float tsample[3];
       float hsv[3];
       linearrgb_to_srgb_v3_v3(tsample, cumap->sample);
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 2b9d684ad96..e53309d43b7 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -334,7 +334,7 @@ typedef struct uiButHSVCube {
   eButGradientType gradient_type;
 } uiButHSVCube;
 
-/** Derived struct for #UI_BTYPE_CURVEPROFILE. */
+/** Derived struct for #UI_BTYPE_COLORBAND. */
 typedef struct uiButColorBand {
   uiBut but;
 
@@ -353,6 +353,7 @@ typedef struct uiButCurveMapping {
   uiBut but;
 
   struct CurveMapping *edit_cumap;
+  eButGradientType gradient_type;
 } uiButCurveMapping;
 
 /**
diff --git a/source/blender/editors/interface/interface_query.c b/source/blender/editors/interface/interface_query.c
index 9dcfe8c872b..4ad5d85e959 100644
--- a/source/blender/editors/interface/interface_query.c
+++ b/source/blender/editors/interface/interface_query.c
@@ -427,9 +427,9 @@ bool ui_but_is_cursor_warp(const uiBut *but)
     if (ELEM(but->type,
              UI_BTYPE_NUM,
              UI_BTYPE_NUM_SLIDER,
-             UI_BTYPE_HSVCIRCLE,
              UI_BTYPE_TRACK_PREVIEW,
              UI_BTYPE_HSVCUBE,
+             UI_BTYPE_HSVCIRCLE,
              UI_BTYPE_CURVE,
              UI_BTYPE_CURVEPROFILE)) {
       return true;
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 0440a1531c8..e5b485def65 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -4439,8 +4439,9 @@ static void curvemap_buttons_layout(uiLayout *layout,
   /* curve itself */
   size = max_ii(uiLayoutGetWidth(layout), UI_UNIT_X);
   row = uiLayoutRow(layout, false);
-  uiDefBut(
-      block, UI_BTYPE_CURVE, 0, "", 0, 0, size, 8.0f * UI_UNIT_X, cumap, 0.0f, 1.0f, bg, 0, "");
+  uiButCurveMapping *curve_but = (uiButCurveMapping *)uiDefBut(
+      block, UI_BTYPE_CURVE, 0, "", 0, 0, size, 8.0f * UI_UNIT_X, cumap, 0.0f, 1.0f, 0, 0, "");
+  curve_but->gradient_type = bg;
 
   /* sliders for selected point */
   for (i = 0; i < cm->totpoint; i++) {



More information about the Bf-blender-cvs mailing list