ply_label_plugin_control_t *control;
char *text;
+ float red;
+ float green;
+ float blue;
+ float alpha;
};
typedef const ply_label_plugin_interface_t *
ply_label_t *label;
label = calloc (1, sizeof (struct _ply_label));
+ label->red = 1;
+ label->green = 1;
+ label->blue = 1;
+ label->alpha = 1;
return label;
}
label->plugin_interface->set_text_for_control (label->control,
label->text);
+ label->plugin_interface->set_color_for_control (label->control,
+ label->red,
+ label->green,
+ label->blue,
+ label->alpha);
return true;
}
text);
}
+void
+ply_label_set_color (ply_label_t *label,
+ float red,
+ float green,
+ float blue,
+ float alpha)
+{
+ label->red = red;
+ label->green = green;
+ label->blue = blue;
+ label->alpha = alpha;
+
+ if (label->plugin_interface == NULL)
+ return;
+
+ label->plugin_interface->set_color_for_control (label->control,
+ red,
+ green,
+ blue,
+ alpha);
+}
+
long
ply_label_get_width (ply_label_t *label)
{
ply_rectangle_t area;
char *text;
+ float red;
+ float green;
+ float blue;
+ float alpha;
uint32_t is_hidden : 1;
};
pango_layout_set_text (pango_layout, label->text, -1);
pango_cairo_update_layout (cairo_context, pango_layout);
pango_layout_get_size (pango_layout, &text_width, &text_height);
- label->area.width = (long) ((double) text_width / PANGO_SCALE) + 1;
- label->area.height = (long) ((double) text_height / PANGO_SCALE) + 1;
+ label->area.width = (long) ((double) text_width / PANGO_SCALE);
+ label->area.height = (long) ((double) text_height / PANGO_SCALE);
g_object_unref (pango_layout);
cairo_destroy (cairo_context);
pango_layout_set_text (pango_layout, label->text, -1);
pango_cairo_update_layout (cairo_context, pango_layout);
pango_layout_get_size (pango_layout, &text_width, &text_height);
- label->area.width = (long) ((double) text_width / PANGO_SCALE) + 1;
- label->area.height = (long) ((double) text_height / PANGO_SCALE) + 1;
+ label->area.width = (long) ((double) text_width / PANGO_SCALE);
+ label->area.height = (long) ((double) text_height / PANGO_SCALE);
cairo_rectangle (cairo_context, x, y, width, height);
cairo_clip (cairo_context);
- cairo_move_to (cairo_context,
- label->area.x + 1,
- label->area.y + 1);
- cairo_set_source_rgba (cairo_context, 0.0, 0.0, 0.0, 0.7);
- pango_cairo_show_layout (cairo_context,
- pango_layout);
cairo_move_to (cairo_context,
label->area.x,
label->area.y);
- cairo_set_source_rgb (cairo_context, 1.0, 1.0, 1.0);
+ cairo_set_source_rgba (cairo_context,
+ label->red,
+ label->green,
+ label->blue,
+ label->alpha);
pango_cairo_show_layout (cairo_context,
pango_layout);
}
}
+void
+set_color_for_control (ply_label_plugin_control_t *label,
+ float red,
+ float green,
+ float blue,
+ float alpha)
+{
+ label->red = red;
+ label->green = green;
+ label->blue = blue;
+ label->alpha = alpha;
+
+ if (!label->is_hidden && label->display != NULL)
+ ply_pixel_display_draw_area (label->display,
+ label->area.x, label->area.y,
+ label->area.width, label->area.height);
+}
+
bool
show_control (ply_label_plugin_control_t *label,
ply_pixel_display_t *display,
.draw_control = draw_control,
.is_control_hidden = is_control_hidden,
.set_text_for_control = set_text_for_control,
+ .set_color_for_control = set_color_for_control,
.get_width_of_control = get_width_of_control,
.get_height_of_control = get_height_of_control
};