forked from bartvdbraak/blender
option for color wheel widget to make it easier to select values closer to white, enable for color balance.
This commit is contained in:
parent
aea7ea5b30
commit
deb7402299
@ -749,15 +749,15 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel):
|
||||
row = layout.row()
|
||||
row.active = strip.use_color_balance
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "lift", value_slider=False)
|
||||
col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True)
|
||||
col.row().prop(strip.color_balance, "lift")
|
||||
col.prop(strip.color_balance, "inverse_lift", text="Inverse")
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True)
|
||||
col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True)
|
||||
col.row().prop(strip.color_balance, "gamma")
|
||||
col.prop(strip.color_balance, "inverse_gamma", text="Inverse")
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True)
|
||||
col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True)
|
||||
col.row().prop(strip.color_balance, "gain")
|
||||
col.prop(strip.color_balance, "inverse_gain", text="Inverse")
|
||||
|
||||
|
@ -153,6 +153,7 @@ typedef struct uiLayout uiLayout;
|
||||
#define UI_BUT_NO_TOOLTIP (1<<27)
|
||||
|
||||
#define UI_BUT_VEC_SIZE_LOCK (1<<28) /* used to flag if color hsv-circle should keep luminance */
|
||||
#define UI_BUT_COLOR_CUBIC (1<<29) /* cubic saturation for the color wheel */
|
||||
|
||||
#define UI_PANEL_WIDTH 340
|
||||
#define UI_COMPACT_PANEL_WIDTH 160
|
||||
@ -685,7 +686,7 @@ void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propnam
|
||||
void uiTemplateWaveform(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
|
||||
void uiTemplateVectorscope(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
|
||||
void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush);
|
||||
void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity);
|
||||
void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic);
|
||||
void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);
|
||||
void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname,
|
||||
PointerRNA *used_ptr, char *used_propname, int active_layer);
|
||||
|
@ -3073,7 +3073,10 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx
|
||||
}
|
||||
|
||||
ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my);
|
||||
|
||||
|
||||
if(but->flag & UI_BUT_COLOR_CUBIC)
|
||||
hsv[1]= 1.0f - sqrt3f(1.0f - hsv[1]);
|
||||
|
||||
hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2);
|
||||
|
||||
if((but->flag & UI_BUT_VEC_SIZE_LOCK) && (rgb[0] || rgb[1] || rgb[2])) {
|
||||
|
@ -1953,7 +1953,7 @@ void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, char *propname, i
|
||||
|
||||
#define WHEEL_SIZE 100
|
||||
|
||||
void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity)
|
||||
void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic)
|
||||
{
|
||||
PropertyRNA *prop= RNA_struct_find_property(ptr, propname);
|
||||
uiBlock *block= uiLayoutGetBlock(layout);
|
||||
@ -1984,6 +1984,9 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int
|
||||
but->a2= len_v3(color);
|
||||
}
|
||||
|
||||
if(cubic)
|
||||
but->flag |= UI_BUT_COLOR_CUBIC;
|
||||
|
||||
uiItemS(row);
|
||||
|
||||
if (value_slider)
|
||||
|
@ -1675,6 +1675,7 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect)
|
||||
|
||||
ui_hsvcircle_vals_from_pos(hsv, hsv+1, rect, centx + co*radius, centy + si*radius);
|
||||
CLAMP(hsv[2], 0.0f, 1.0f); /* for display only */
|
||||
|
||||
hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2);
|
||||
glColor3fv(col);
|
||||
glVertex2f( centx + co*radius, centy + si*radius);
|
||||
@ -1696,7 +1697,12 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect)
|
||||
|
||||
/* cursor */
|
||||
ang= 2.0f*M_PI*hsvo[0] + 0.5f*M_PI;
|
||||
radius= hsvo[1]*radius;
|
||||
|
||||
if(but->flag & UI_BUT_COLOR_CUBIC)
|
||||
radius= (1.0f - pow(1.0f - hsvo[1], 3.0f)) *radius;
|
||||
else
|
||||
radius= hsvo[1] * radius;
|
||||
|
||||
ui_hsv_cursor(centx + cos(-ang)*radius, centy + sin(-ang)*radius);
|
||||
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
||||
RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
|
||||
|
||||
col = uiLayoutColumn(layout, 0);
|
||||
uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0);
|
||||
uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0, 0);
|
||||
uiItemR(col, &sockptr, "default_value", 0, "", 0);
|
||||
}
|
||||
|
||||
@ -947,17 +947,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point
|
||||
|
||||
split = uiLayoutSplit(layout, 0, 0);
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0);
|
||||
uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "lift", 0, NULL, 0);
|
||||
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1);
|
||||
uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "gamma", 0, NULL, 0);
|
||||
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1);
|
||||
uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "gain", 0, NULL, 0);
|
||||
|
||||
@ -965,17 +965,17 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point
|
||||
|
||||
split = uiLayoutSplit(layout, 0, 0);
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0);
|
||||
uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "offset", 0, NULL, 0);
|
||||
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "power", 1, 1, 0);
|
||||
uiTemplateColorWheel(col, ptr, "power", 1, 1, 0, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "power", 0, NULL, 0);
|
||||
|
||||
col = uiLayoutColumn(split, 0);
|
||||
uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0);
|
||||
uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0, 1);
|
||||
row = uiLayoutRow(col, 0);
|
||||
uiItemR(row, ptr, "slope", 0, NULL, 0);
|
||||
}
|
||||
|
@ -361,6 +361,7 @@ void RNA_api_ui_layout(StructRNA *srna)
|
||||
RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel");
|
||||
RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color");
|
||||
RNA_def_boolean(func, "lock_luminosity", 0, "", "Keep the color at its original vector length");
|
||||
RNA_def_boolean(func, "cubic", 1, "", "Cubic saturation for picking values close to white");
|
||||
|
||||
func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet");
|
||||
api_ui_item_rna_common(func);
|
||||
|
Loading…
Reference in New Issue
Block a user