diff options
author | David Robillard <d@drobilla.net> | 2012-03-28 04:26:07 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-03-28 04:26:07 +0000 |
commit | 791587fe9408856a658e5780f0dc5b9231f6c021 (patch) | |
tree | 7a4c8d1fd0ef428ff8a7db245a1ee20a87cf53c4 /src | |
parent | 97ede5001777de4bb36491f4f2571b2037eb0cda (diff) | |
download | ganv-791587fe9408856a658e5780f0dc5b9231f6c021.tar.gz ganv-791587fe9408856a658e5780f0dc5b9231f6c021.tar.bz2 ganv-791587fe9408856a658e5780f0dc5b9231f6c021.zip |
Fix control rect colour and label stacking.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@4124 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r-- | src/box.c | 2 | ||||
-rw-r--r-- | src/module.c | 9 | ||||
-rw-r--r-- | src/node.c | 11 | ||||
-rw-r--r-- | src/port.c | 12 |
4 files changed, 24 insertions, 10 deletions
@@ -51,7 +51,7 @@ ganv_box_init(GanvBox* box) box, GANV_TYPE_BOX, GanvBoxImpl); memset(&box->impl->coords, '\0', sizeof(GanvBoxCoords)); - box->impl->coords.border_width = box->node.impl->border_width; + box->impl->coords.border_width = 0.0; box->impl->old_coords = box->impl->coords; box->impl->radius_tl = 0.0; diff --git a/src/module.c b/src/module.c index ff85c6f..36d45a2 100644 --- a/src/module.c +++ b/src/module.c @@ -656,13 +656,20 @@ ganv_module_draw(GanvItem* item, int cx, int cy, int width, int height) { + GanvNode* node = GANV_NODE(item); GanvModule* module = GANV_MODULE(item); - // Draw box and label + // Draw box if (GANV_ITEM_CLASS(parent_class)->draw) { (*GANV_ITEM_CLASS(parent_class)->draw)(item, cr, cx, cy, width, height); } + // Draw label + if (node->impl->label) { + GanvItem* label_item = GANV_ITEM(node->impl->label); + GANV_ITEM_GET_CLASS(label_item)->draw(label_item, cr, cx, cy, width, height); + } + // Draw ports FOREACH_PORT(module->impl->ports, p) { GANV_ITEM_GET_CLASS(GANV_ITEM(*p))->draw( @@ -109,13 +109,10 @@ ganv_node_draw(GanvItem* item, int cx, int cy, int width, int height) { - GanvNode* node = GANV_NODE(item); - - // Draw label - if (node->impl->label) { - GanvItem* label_item = GANV_ITEM(node->impl->label); - GANV_ITEM_GET_CLASS(label_item)->draw(label_item, cr, cx, cy, width, height); - } + /* TODO: Label is not drawn here because ports need to draw control + rects then the label on top. I can't see a way of solving this since + there's no single time parent class draw needs to be called, so perhaps + label shouldn't be part of this class... */ } static void @@ -21,6 +21,7 @@ #include "ganv/module.h" #include "./boilerplate.h" +#include "./color.h" #include "./ganv-private.h" #include "./gettext.h" @@ -132,6 +133,12 @@ ganv_port_draw(GanvItem* item, GanvItem* const rect = GANV_ITEM(port->impl->control->rect); GANV_ITEM_GET_CLASS(rect)->draw(rect, cr, cx, cy, width, height); } + + GanvNode* node = GANV_NODE(item); + if (node->impl->label) { + GanvItem* label_item = GANV_ITEM(node->impl->label); + GANV_ITEM_GET_CLASS(label_item)->draw(label_item, cr, cx, cy, width, height); + } } static void @@ -334,6 +341,8 @@ ganv_port_show_control(GanvPort* port) GanvPortControl* control = (GanvPortControl*)malloc(sizeof(GanvPortControl)); port->impl->control = control; + guint control_col = highlight_color(GANV_NODE(port)->impl->fill_color, 0x40); + control->value = 0.0f; control->min = 0.0f; control->max = 0.0f; @@ -345,7 +354,8 @@ ganv_port_show_control(GanvPort* port) "y1", 0.0, "x2", 0.0, "y2", ganv_box_get_height(&port->box), - "fill-color", 0xFFFFFF80, + "fill-color", control_col, + "border-color", control_col, "border-width", 0.0, NULL)); ganv_item_show(GANV_ITEM(control->rect)); |