UI Code Quality: Use derived struct for curve mapping buttons

The same changes as in rB570044e9f412.
This commit is contained in:
2020-08-13 21:33:47 -04:00
parent 570044e9f4
commit 0ab21bf06a
4 changed files with 38 additions and 20 deletions

View File

@@ -768,7 +768,6 @@ static bool ui_but_update_from_old_block(const bContext *C,
but->editval = oldbut->editval;
but->editvec = oldbut->editvec;
but->editcoba = oldbut->editcoba;
but->editcumap = oldbut->editcumap;
but->selsta = oldbut->selsta;
but->selend = oldbut->selend;
but->softmin = oldbut->softmin;
@@ -3797,6 +3796,10 @@ static void ui_but_alloc_info(const eButType type,
alloc_size = sizeof(uiButHSVCube);
alloc_str = "uiButHSVCube";
break;
case UI_BTYPE_CURVE:
alloc_size = sizeof(uiButCurveMapping);
alloc_str = "uiButCurveMapping";
break;
case UI_BTYPE_CURVEPROFILE:
alloc_size = sizeof(uiButCurveProfile);
alloc_str = "uiButCurveProfile";

View File

@@ -1888,14 +1888,9 @@ static void gl_shaded_color(const uchar *color, int shade)
void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
{
CurveMapping *cumap;
if (but->editcumap) {
cumap = but->editcumap;
}
else {
cumap = (CurveMapping *)but->poin;
}
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
CurveMapping *cumap = (but_cumap->edit_cumap == NULL) ? (CurveMapping *)but->poin :
but_cumap->edit_cumap;
float clip_size_x = BLI_rctf_size_x(&cumap->curr);
float clip_size_y = BLI_rctf_size_y(&cumap->curr);

View File

@@ -2087,8 +2087,11 @@ static void ui_apply_but(
editval = but->editval;
editvec = but->editvec;
editcoba = but->editcoba;
editcumap = but->editcumap;
if (but->type == UI_BTYPE_CURVEPROFILE) {
if (but->type == UI_BTYPE_CURVE) {
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
editcumap = but_cumap->edit_cumap;
}
else if (but->type == UI_BTYPE_CURVEPROFILE) {
uiButCurveProfile *but_profile = (uiButCurveProfile *)but;
editprofile = but_profile->edit_profile;
}
@@ -2096,8 +2099,11 @@ static void ui_apply_but(
but->editval = NULL;
but->editvec = NULL;
but->editcoba = NULL;
but->editcumap = NULL;
if (but->type == UI_BTYPE_CURVEPROFILE) {
if (but->type == UI_BTYPE_CURVE) {
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
but_cumap->edit_cumap = NULL;
}
else if (but->type == UI_BTYPE_CURVEPROFILE) {
uiButCurveProfile *but_profile = (uiButCurveProfile *)but;
but_profile->edit_profile = NULL;
}
@@ -2210,8 +2216,11 @@ static void ui_apply_but(
but->editval = editval;
but->editvec = editvec;
but->editcoba = editcoba;
but->editcumap = editcumap;
if (but->type == UI_BTYPE_CURVEPROFILE) {
if (but->type == UI_BTYPE_CURVE) {
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
but_cumap->edit_cumap = editcumap;
}
else if (but->type == UI_BTYPE_CURVEPROFILE) {
uiButCurveProfile *but_profile = (uiButCurveProfile *)but;
but_profile->edit_profile = editprofile;
}
@@ -3857,9 +3866,10 @@ static void ui_do_but_textedit_select(
static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
{
if (but->type == UI_BTYPE_CURVE) {
but->editcumap = (CurveMapping *)but->poin;
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
but_cumap->edit_cumap = (CurveMapping *)but->poin;
}
if (but->type == UI_BTYPE_CURVEPROFILE) {
else if (but->type == UI_BTYPE_CURVEPROFILE) {
uiButCurveProfile *but_profile = (uiButCurveProfile *)but;
but_profile->edit_profile = (CurveProfile *)but->poin;
}
@@ -3952,8 +3962,11 @@ static void ui_numedit_end(uiBut *but, uiHandleButtonData *data)
but->editval = NULL;
but->editvec = NULL;
but->editcoba = NULL;
but->editcumap = NULL;
if (but->type == UI_BTYPE_CURVEPROFILE) {
if (but->type == UI_BTYPE_CURVE) {
uiButCurveMapping *but_cumap = (uiButCurveMapping *)but;
but_cumap->edit_cumap = NULL;
}
else if (but->type == UI_BTYPE_CURVEPROFILE) {
uiButCurveProfile *but_profile = (uiButCurveProfile *)but;
but_profile->edit_profile = NULL;
}

View File

@@ -33,6 +33,7 @@
struct AnimationEvalContext;
struct ARegion;
struct CurveMapping;
struct CurveProfile;
struct ID;
struct ImBuf;
@@ -268,7 +269,6 @@ struct uiBut {
double *editval;
float *editvec;
void *editcoba;
void *editcumap;
uiButPushedStateFunc pushed_state_func;
void *pushed_state_arg;
@@ -342,6 +342,13 @@ typedef struct uiButCurveProfile {
struct CurveProfile *edit_profile;
} uiButCurveProfile;
/** Derived struct for #UI_BTYPE_CURVE. */
typedef struct uiButCurveMapping {
uiBut but;
struct CurveMapping *edit_cumap;
} uiButCurveMapping;
/**
* Additional, superimposed icon for a button, invoking an operator.
*/