Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffroy Krantz <kgeogeo@hotmail.com>2013-12-13 20:18:48 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2013-12-13 20:49:13 +0400
commit3ec7bc05b78be2782ce8e6ddf4bcc980fa49d79f (patch)
tree40634d83c90dea147ba375b0dabc9925a48efc01 /source/blender
parent242217f8a308736e603d8abfec53fc3c0647bb7d (diff)
UI: color ramp buttons were redesigned and get a button to pick the n-th color stop.
The add, delete and (f)lip buttons now use icons, and some button locations moved. Reviewed By: brecht, dingto, billrey Differential Revision: http://developer.blender.org/D97
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/interface/interface_templates.c129
1 files changed, 50 insertions, 79 deletions
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index ba827285ace..5b208a3b0c2 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -1464,114 +1464,85 @@ static void colorband_update_cb(bContext *UNUSED(C), void *bt_v, void *coba_v)
bt->rnapoin.data = coba->data + coba->cur;
}
-/* offset aligns from bottom, standard width 300, height 115 */
-static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand *coba,
- int xoffs, int yoffs, RNAUpdateCb *cb)
-{
- uiBut *bt;
- uiLayout *row;
- const int line1_y = yoffs + 65 + UI_UNIT_Y + 2; /* 2 for some space between the buttons */
- const int line2_y = yoffs + 65;
-
- if (coba == NULL) return;
-
- bt = uiDefBut(block, BUT, 0, IFACE_("Add"), 0 + xoffs, line1_y, 40, UI_UNIT_Y, NULL, 0, 0, 0, 0,
- TIP_("Add a new color stop to the colorband"));
- uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba);
-
- bt = uiDefBut(block, BUT, 0, IFACE_("Delete"), 45 + xoffs, line1_y, 45, UI_UNIT_Y, NULL, 0, 0, 0, 0,
- TIP_("Delete the active position"));
- uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba);
-
- /* XXX, todo for later - convert to operator - campbell */
- bt = uiDefBut(block, BUT, 0, "F", 95 + xoffs, line1_y, 20, UI_UNIT_Y,
- NULL, 0, 0, 0, 0, TIP_("Flip colorband"));
- uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba);
-
- uiDefButS(block, NUM, 0, "", 120 + xoffs, line1_y, 80, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot - 1)),
- 0, 0, TIP_("Choose active color stop"));
-
- bt = uiDefButS(block, MENU, 0, IFACE_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4"),
- 210 + xoffs, line1_y, 90, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0,
- TIP_("Set interpolation between color stops"));
- uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
- uiBlockEndAlign(block);
-
- bt = uiDefBut(block, BUT_COLORBAND, 0, "", xoffs, line2_y, 300, UI_UNIT_Y, coba, 0, 0, 0, 0, "");
- uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
-
- if (coba->tot) {
- CBData *cbd = coba->data + coba->cur;
-
- /* better to use rna so we can animate them */
- PointerRNA ptr;
- RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr);
- row = uiLayoutRow(layout, FALSE);
-
- uiItemR(row, &ptr, "position", 0, IFACE_("Pos"), ICON_NONE);
- bt = block->buttons.last;
- uiButSetFunc(bt, colorband_update_cb, bt, coba);
-
- uiItemR(row, &ptr, "color", 0, "", ICON_NONE);
- }
-
-}
-
-static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand *coba, const rctf *butr,
- RNAUpdateCb *cb)
+static void colorband_buttons_layout(uiLayout *layout, uiBlock *block, ColorBand *coba, const rctf *butr,
+ RNAUpdateCb *cb, int expand)
{
- uiLayout *row;
+ uiLayout *row, *split, *subsplit;
uiBut *bt;
float unit = BLI_rctf_size_x(butr) / 14.0f;
float xs = butr->xmin;
+ float ys = butr->ymin;
+ split = uiLayoutSplit(layout, 0.4f, FALSE);
+
+ uiBlockSetEmboss(block, UI_EMBOSSN);
uiBlockBeginAlign(block);
- bt = uiDefBut(block, BUT, 0, IFACE_("Add"), xs, butr->ymin + UI_UNIT_Y, 2.0f * unit, UI_UNIT_Y, NULL, 0, 0, 0, 0,
- TIP_("Add a new color stop to the colorband"));
+ row = uiLayoutRow(split, FALSE);
+
+ bt = uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, "", 0, 0, 2.0f * unit, UI_UNIT_Y, NULL,
+ 0, 0, 0, 0, TIP_("Add a new color stop to the colorband"));
+
uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba);
- bt = uiDefBut(block, BUT, 0, IFACE_("Delete"), xs + 2.0f * unit, butr->ymin + UI_UNIT_Y, 1.5f * unit, UI_UNIT_Y,
+
+ bt = uiDefIconTextBut(block, BUT, 0, ICON_ZOOMOUT, "", xs + 2.0f * unit, ys + UI_UNIT_Y, 2.0f * unit, UI_UNIT_Y,
NULL, 0, 0, 0, 0, TIP_("Delete the active position"));
uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba);
- bt = uiDefBut(block, BUT, 0, "F", xs + 3.5f * unit, butr->ymin + UI_UNIT_Y, 0.5f * unit, UI_UNIT_Y,
+
+ bt = uiDefIconTextBut(block, BUT, 0, ICON_ARROW_LEFTRIGHT, "", xs + 4.0f * unit, ys + UI_UNIT_Y, 2.0f * unit, UI_UNIT_Y,
NULL, 0, 0, 0, 0, TIP_("Flip the color ramp"));
uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba);
uiBlockEndAlign(block);
+ uiBlockSetEmboss(block, UI_EMBOSS);
- row = uiLayoutRow(layout, FALSE);
-
+ row = uiLayoutRow(split, FALSE);
bt = uiDefButS(block, MENU, 0, IFACE_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4"),
- xs + 10.0f * unit, butr->ymin + UI_UNIT_Y, unit * 4, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0,
+ 0, ys + UI_UNIT_Y, 8.0f * unit, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0,
TIP_("Set interpolation between color stops"));
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
row = uiLayoutRow(layout, FALSE);
- bt = uiDefBut(block, BUT_COLORBAND, 0, "", xs, butr->ymin, BLI_rctf_size_x(butr), UI_UNIT_Y, coba, 0, 0, 0, 0, "");
+ bt = uiDefBut(block, BUT_COLORBAND, 0, "", xs, ys, BLI_rctf_size_x(butr), UI_UNIT_Y, coba, 0, 0, 0, 0, "");
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
+ row = uiLayoutRow(layout, FALSE);
+
if (coba->tot) {
CBData *cbd = coba->data + coba->cur;
PointerRNA ptr;
RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr);
- row = uiLayoutRow(layout, FALSE);
+ if (!expand) {
+ split = uiLayoutSplit(layout, 0.3f, FALSE);
- uiItemR(row, &ptr, "position", 0, IFACE_("Pos"), ICON_NONE);
- bt = block->buttons.last;
- uiButSetFunc(bt, colorband_update_cb, bt, coba);
+ row = uiLayoutRow(split, FALSE);
+ uiDefButS(block, NUM, 0, "", 0, 0, 5.0f * UI_UNIT_X, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot - 1)),
+ 0, 0, TIP_("Choose active color stop"));
+ row = uiLayoutRow(split, FALSE);
+ uiItemR(row, &ptr, "position", 0, IFACE_("Pos"), ICON_NONE);
+ bt = block->buttons.last;
+ uiButSetFunc(bt, colorband_update_cb, bt, coba);
- uiItemR(row, &ptr, "color", 0, "", ICON_NONE);
- }
-}
+ row = uiLayoutRow(layout, FALSE);
+ uiItemR(row, &ptr, "color", 0, "", ICON_NONE);
+ }
+ else {
+ split = uiLayoutSplit(layout, 0.5f, FALSE);
+ subsplit = uiLayoutSplit(split, 0.35f, FALSE);
-static void colorband_buttons_layout(uiLayout *layout, uiBlock *block, ColorBand *coba, const rctf *butr,
- int small, RNAUpdateCb *cb)
-{
- if (small)
- colorband_buttons_small(layout, block, coba, butr, cb);
- else
- colorband_buttons_large(layout, block, coba, 0, 0, cb);
+ row = uiLayoutRow(subsplit, FALSE);
+ uiDefButS(block, NUM, 0, "", 0, 0, 5.0f * UI_UNIT_X, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot - 1)),
+ 0, 0, TIP_("Choose active color stop"));
+ row = uiLayoutRow(subsplit, FALSE);
+ uiItemR(row, &ptr, "position", 0, IFACE_("Pos"), ICON_NONE);
+ bt = block->buttons.last;
+ uiButSetFunc(bt, colorband_update_cb, bt, coba);
+
+ row = uiLayoutRow(split, FALSE);
+ uiItemR(row, &ptr, "color", 0, "", ICON_NONE);
+ }
+ }
}
void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, const char *propname, int expand)
@@ -1597,7 +1568,7 @@ void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, const char *propname
rect.ymin = 0; rect.ymax = 19.5f * UI_UNIT_X;
block = uiLayoutAbsoluteBlock(layout);
- colorband_buttons_layout(layout, block, cptr.data, &rect, !expand, cb);
+ colorband_buttons_layout(layout, block, cptr.data, &rect, cb, expand);
MEM_freeN(cb);
}