[evolution/wip/webkit2] Bug 762075 - Recognize calendar colors encoded by gdk_rgba_to_string()
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] Bug 762075 - Recognize calendar colors encoded by gdk_rgba_to_string()
- Date: Thu, 3 Mar 2016 15:26:54 +0000 (UTC)
commit 6d01287fa3d353f4d2e0dead7e836da3f9f4a664
Author: Milan Crha <mcrha redhat com>
Date: Tue Feb 16 12:29:38 2016 +0100
Bug 762075 - Recognize calendar colors encoded by gdk_rgba_to_string()
calendar/gui/e-cal-model.c | 42 ++++++++++------
calendar/gui/e-cal-model.h | 4 ++
calendar/gui/e-day-view-main-item.c | 60 +++++++++++-----------
calendar/gui/e-day-view-top-item.c | 32 ++++-------
calendar/gui/e-day-view.c | 25 ++++-----
calendar/gui/e-week-view-event-item.c | 81 +++++++++--------------------
calendar/gui/e-week-view.c | 26 +++++-----
calendar/gui/print.c | 90 +++++++++++++++++---------------
e-util/e-cell-text.c | 29 ++++-------
9 files changed, 183 insertions(+), 206 deletions(-)
---
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 081e900..ad1cdfd 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -3892,8 +3892,24 @@ e_cal_model_get_color_for_component (ECalModel *model,
return color;
}
+gboolean
+e_cal_model_get_rgba_for_component (ECalModel *model,
+ ECalModelComponent *comp_data,
+ GdkRGBA *rgba)
+{
+ const gchar *color;
+
+ color = e_cal_model_get_color_for_component (model, comp_data);
+ if (!color)
+ return FALSE;
+
+ return gdk_rgba_parse (rgba, color);
+}
+
/**
- * e_cal_model_get_rgb_color_for_component
+ * e_cal_model_get_rgb_color_for_component:
+ *
+ * Deprecated: 3.20: Use e_cal_model_get_rgba_for_component() instead
*/
gboolean
e_cal_model_get_rgb_color_for_component (ECalModel *model,
@@ -3902,23 +3918,19 @@ e_cal_model_get_rgb_color_for_component (ECalModel *model,
gdouble *green,
gdouble *blue)
{
- GdkColor gdk_color;
- const gchar *color;
+ GdkRGBA rgba;
- color = e_cal_model_get_color_for_component (model, comp_data);
- if (color && gdk_color_parse (color, &gdk_color)) {
+ if (!e_cal_model_get_rgba_for_component (model, comp_data, &rgba))
+ return FALSE;
- if (red)
- *red = ((gdouble) gdk_color.red)/0xffff;
- if (green)
- *green = ((gdouble) gdk_color.green)/0xffff;
- if (blue)
- *blue = ((gdouble) gdk_color.blue)/0xffff;
+ if (red)
+ *red = rgba.red;
+ if (green)
+ *green = rgba.green;
+ if (blue)
+ *blue = rgba.blue;
- return TRUE;
- }
-
- return FALSE;
+ return TRUE;
}
/**
diff --git a/calendar/gui/e-cal-model.h b/calendar/gui/e-cal-model.h
index 9e0d51a..9282911 100644
--- a/calendar/gui/e-cal-model.h
+++ b/calendar/gui/e-cal-model.h
@@ -346,6 +346,10 @@ gchar * e_cal_model_get_attendees_status_info
const gchar * e_cal_model_get_color_for_component
(ECalModel *model,
ECalModelComponent *comp_data);
+gboolean e_cal_model_get_rgba_for_component
+ (ECalModel *model,
+ ECalModelComponent *comp_data,
+ GdkRGBA *rgba);
gboolean e_cal_model_get_rgb_color_for_component
(ECalModel *model,
ECalModelComponent *comp_data,
diff --git a/calendar/gui/e-day-view-main-item.c b/calendar/gui/e-day-view-main-item.c
index 3b2d437..5f6ee1f 100644
--- a/calendar/gui/e-day-view-main-item.c
+++ b/calendar/gui/e-day-view-main-item.c
@@ -102,7 +102,6 @@ day_view_main_item_draw_long_events_in_vbars (EDayViewMainItem *main_item,
ECalendarView *cal_view;
gint time_divisions;
gint event_num, start_day, end_day, day, bar_y1, bar_y2, grid_x;
- GdkColor bg_color;
day_view = e_day_view_main_item_get_day_view (main_item);
@@ -154,10 +153,12 @@ day_view_main_item_draw_long_events_in_vbars (EDayViewMainItem *main_item,
gdk_cairo_set_source_color (cr,
&day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND]);
if (first) {
+ GdkRGBA rgba;
+
first = FALSE;
- if (gdk_color_parse (e_cal_model_get_color_for_component
(e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)), event->comp_data), &bg_color)) {
- gdk_cairo_set_source_color (cr, &bg_color);
+ if (e_cal_model_get_rgba_for_component (e_calendar_view_get_model
(E_CALENDAR_VIEW (day_view)), event->comp_data, &rgba)) {
+ gdk_cairo_set_source_rgba (cr, &rgba);
}
}
@@ -186,7 +187,7 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
ECalendarView *cal_view;
gint time_divisions;
gint item_x, item_y, item_w, item_h, bar_y1, bar_y2;
- GdkColor bg_color;
+ GdkRGBA bg_rgba;
ECalComponent *comp;
gint num_icons, icon_x = 0, icon_y, icon_x_inc = 0, icon_y_inc = 0;
gint max_icon_w, max_icon_h;
@@ -194,10 +195,8 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
gboolean draw_attach_icon;
ECalComponentTransparency transparency;
cairo_pattern_t *pat;
- guint16 red, green, blue;
gint i;
gdouble radius, x0, y0, rect_height, rect_width, text_x_offset = 0.0;
- gdouble cc = 65535.0;
gdouble date_fraction;
gboolean short_event = FALSE, resize_flag = FALSE, is_editing;
const gchar *end_resize_suffix;
@@ -255,15 +254,16 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
* where the event in the first column finishes. The border is drawn
* along with the event using cairo */
- red = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red;
- green = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green;
- blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue;
+ bg_rgba.red = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red;
+ bg_rgba.green = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green;
+ bg_rgba.blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue;
+ bg_rgba.alpha = 1.0;
- if (gdk_color_parse (e_cal_model_get_color_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW
(day_view)), event->comp_data),
- &bg_color)) {
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
+ if (!e_cal_model_get_rgba_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
event->comp_data, &bg_rgba)) {
+ bg_rgba.red = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red;
+ bg_rgba.green = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green;
+ bg_rgba.blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue;
+ bg_rgba.alpha = 1.0;
}
is_editing = day_view->editing_event_day == day && day_view->editing_event_num == event_num;
@@ -447,7 +447,7 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
draw_curved_rectangle (cr, x0, y0, rect_width,rect_height, radius);
cairo_set_line_width (cr, 2.);
- cairo_set_source_rgb (cr, red / cc, green / cc, blue / cc);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_stroke (cr);
cairo_restore (cr);
@@ -484,19 +484,19 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
item_x + E_DAY_VIEW_BAR_WIDTH + 1.75, item_y + 7.75,
item_x + E_DAY_VIEW_BAR_WIDTH + 1.75, item_y + item_h - 7.75);
if (!short_event) {
- cairo_pattern_add_color_stop_rgba (pat, 1, red / cc, green / cc, blue / cc, 0.8);
- cairo_pattern_add_color_stop_rgba (pat, 1 / (date_fraction + (rect_height / 18)), red / cc,
green / cc, blue / cc, 0.8);
- cairo_pattern_add_color_stop_rgba (pat, 1 / (date_fraction + (rect_height / 18)), red / cc,
green / cc, blue / cc, 0.4);
- cairo_pattern_add_color_stop_rgba (pat, 1, red / cc, green / cc, blue / cc, 0.8);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.8 *
bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 1 / (date_fraction + (rect_height / 18)),
bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.8 * bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 1 / (date_fraction + (rect_height / 18)),
bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.4 * bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.8 *
bg_rgba.alpha);
} else {
- cairo_pattern_add_color_stop_rgba (pat, 1, red / cc, green / cc, blue / cc, 0.8);
- cairo_pattern_add_color_stop_rgba (pat, 0, red / cc, green / cc, blue / cc, 0.4);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.8 *
bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.4 *
bg_rgba.alpha);
}
cairo_set_source (cr, pat);
cairo_fill_preserve (cr);
cairo_pattern_destroy (pat);
- cairo_set_source_rgba (cr, red / cc, green / cc, blue / cc, 0.2);
+ cairo_set_source_rgba (cr, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.2 * bg_rgba.alpha);
cairo_set_line_width (cr, 0.5);
cairo_stroke (cr);
cairo_restore (cr);
@@ -570,7 +570,7 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
layout = gtk_widget_create_pango_layout (GTK_WIDGET (GNOME_CANVAS_ITEM
(main_item)->canvas), end_regsizeime);
cairo_set_font_size (cr, 13);
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7))
+ if ((bg_rgba.red > 0.7) || (bg_rgba.green > 0.7) || (bg_rgba.blue > 0.7))
cairo_set_source_rgb (cr, 0, 0, 0);
else
cairo_set_source_rgb (cr, 1, 1, 1);
@@ -596,9 +596,9 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
pat = cairo_pattern_create_linear (
item_x + E_DAY_VIEW_BAR_WIDTH, item_y + 1,
item_x + E_DAY_VIEW_BAR_WIDTH, item_y + item_h - 1);
- cairo_pattern_add_color_stop_rgba (pat, 1, red / cc, green / cc, blue / cc, 0.7);
- cairo_pattern_add_color_stop_rgba (pat, 0.5, red / cc, green / cc, blue / cc, 0.7);
- cairo_pattern_add_color_stop_rgba (pat, 0, red / cc, green / cc, blue / cc, 0.2);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.7 *
bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0.5, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.7 *
bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.2 *
bg_rgba.alpha);
cairo_rectangle (
cr, item_x + 1, bar_y1,
@@ -807,7 +807,7 @@ day_view_main_item_draw_day_event (EDayViewMainItem *main_item,
if (icon_x_inc == 0)
icon_x += 14;
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7))
+ if ((bg_rgba.red > 0.7) || (bg_rgba.green > 0.7) || (bg_rgba.blue > 0.7))
cairo_set_source_rgb (cr, 0, 0, 0);
else
cairo_set_source_rgb (cr, 1, 1, 1);
@@ -868,7 +868,7 @@ day_view_main_item_draw_events_in_vbars (EDayViewMainItem *main_item,
ECalendarView *cal_view;
gint time_divisions;
gint grid_x, event_num, bar_y, bar_h;
- GdkColor bg_color;
+ GdkRGBA bg_rgba;
day_view = e_day_view_main_item_get_day_view (main_item);
@@ -908,8 +908,8 @@ day_view_main_item_draw_events_in_vbars (EDayViewMainItem *main_item,
gdk_cairo_set_source_color (cr, &day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND]);
- if (gdk_color_parse (e_cal_model_get_color_for_component (e_calendar_view_get_model
(E_CALENDAR_VIEW (day_view)), event->comp_data), &bg_color)) {
- gdk_cairo_set_source_color (cr, &bg_color);
+ if (e_cal_model_get_rgba_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW
(day_view)), event->comp_data, &bg_rgba)) {
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
}
cairo_rectangle (cr, grid_x, bar_y, E_DAY_VIEW_BAR_WIDTH - 2, bar_h);
diff --git a/calendar/gui/e-day-view-top-item.c b/calendar/gui/e-day-view-top-item.c
index e97121d..74fedd6 100644
--- a/calendar/gui/e-day-view-top-item.c
+++ b/calendar/gui/e-day-view-top-item.c
@@ -98,10 +98,9 @@ day_view_top_item_draw_triangle (EDayViewTopItem *top_item,
cairo_save (cr);
/* Fill it in. */
- if (gdk_rgba_parse (&bg_color,
- e_cal_model_get_color_for_component (
+ if (e_cal_model_get_rgba_for_component (
e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
- event->comp_data))) {
+ event->comp_data, &bg_color)) {
gdk_cairo_set_source_rgba (cr, &bg_color);
} else {
gdk_cairo_set_source_color (
@@ -151,9 +150,8 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
gboolean draw_start_triangle, draw_end_triangle;
GSList *categories_list, *elem;
PangoLayout *layout;
- GdkRGBA bg_color, rgba;
+ GdkRGBA bg_rgba, rgba;
cairo_pattern_t *pat;
- gdouble red, green, blue;
gdouble x0, y0, rect_height, rect_width, radius;
day_view = e_day_view_top_item_get_day_view (top_item);
@@ -184,17 +182,11 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
e_cal_component_set_icalcomponent (
comp, icalcomponent_new_clone (event->comp_data->icalcomp));
- if (gdk_rgba_parse (&bg_color,
- e_cal_model_get_color_for_component (
- e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
- event->comp_data))) {
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
- } else {
- red = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].red / 65535.0;
- green = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].green / 65535.0;
- blue = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].blue / 65535.0;
+ if (!e_cal_model_get_rgba_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
event->comp_data, &bg_rgba)) {
+ bg_rgba.red = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].red / 65535.0;
+ bg_rgba.green = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].green / 65535.0;
+ bg_rgba.blue = day_view->colors[E_DAY_VIEW_COLOR_LONG_EVENT_BACKGROUND].blue / 65535.0;
+ bg_rgba.alpha = 1.0;
}
/* Fill the background with white to play with transparency */
@@ -225,7 +217,7 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
draw_curved_rectangle (cr, x0, y0, rect_width, rect_height, radius);
- cairo_set_source_rgb (cr, red, green, blue);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_set_line_width (cr, 1.5);
cairo_stroke (cr);
cairo_restore (cr);
@@ -246,13 +238,13 @@ day_view_top_item_draw_long_event (EDayViewTopItem *top_item,
pat = cairo_pattern_create_linear (
item_x - x + 5.5, item_y + 2.5 - y,
item_x - x + 5, item_y - y + item_h + 7.5);
- cairo_pattern_add_color_stop_rgba (pat, 1, red, green, blue, 0.8);
- cairo_pattern_add_color_stop_rgba (pat, 0, red, green, blue, 0.4);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.8 *
bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.4 *
bg_rgba.alpha);
cairo_set_source (cr, pat);
cairo_fill_preserve (cr);
cairo_pattern_destroy (pat);
- cairo_set_source_rgba (cr, red, green, blue, 0);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_set_line_width (cr, 0.5);
cairo_stroke (cr);
cairo_restore (cr);
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index dcf7d2a..0d36119 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -665,21 +665,20 @@ e_day_view_get_text_color (EDayView *day_view,
EDayViewEvent *event)
{
GdkColor color;
- guint16 red, green, blue;
- gdouble cc = 65535.0;
+ GdkRGBA rgba;
- red = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red;
- green = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green;
- blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue;
+ if (is_comp_data_valid (event) &&
+ e_cal_model_get_rgba_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)),
event->comp_data, &rgba)) {
+ } else {
+ gdouble cc = 65535.0;
- if (is_comp_data_valid (event) && gdk_color_parse (e_cal_model_get_color_for_component
(e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)), event->comp_data),
- &color)) {
- red = color.red;
- green = color.green;
- blue = color.blue;
+ rgba.red = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].red / cc;
+ rgba.green = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].green / cc;
+ rgba.blue = day_view->colors[E_DAY_VIEW_COLOR_EVENT_BACKGROUND].blue / cc;
+ rgba.alpha = 1.0;
}
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7)) {
+ if ((rgba.red > 0.7) || (rgba.green > 0.7) || (rgba.blue > 0.7)) {
color.red = 0.0;
color.green = 0.0;
color.blue = 0.0;
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c
index 618d150..dadd940 100644
--- a/calendar/gui/e-week-view-event-item.c
+++ b/calendar/gui/e-week-view-event-item.c
@@ -292,7 +292,7 @@ week_view_event_item_button_release (EWeekViewEventItem *event_item,
static void
week_view_draw_time (EWeekView *week_view,
- GdkColor bg_color,
+ GdkRGBA bg_rgba,
cairo_t *cr,
gint time_x,
gint time_y,
@@ -308,11 +308,10 @@ week_view_draw_time (EWeekView *week_view,
PangoFontDescription *small_font_desc;
PangoContext *pango_context;
GdkColor color;
- gdouble cc = 65535.0;
color.pixel = 0;
- if ((bg_color.red / cc > 0.7) || (bg_color.green / cc > 0.7) || (bg_color.blue / cc > 0.7)) {
+ if ((bg_rgba.red > 0.7) || (bg_rgba.green > 0.7) || (bg_rgba.blue > 0.7)) {
color.red = 0.0;
color.green = 0.0;
color.blue = 0.0;
@@ -549,20 +548,18 @@ week_view_event_item_draw_icons (EWeekViewEventItem *event_item,
static void
week_view_event_item_draw_triangle (EWeekViewEventItem *event_item,
cairo_t *cr,
- GdkColor bg_color,
+ GdkRGBA bg_rgba,
gint x,
gint y,
gint w,
gint h,
cairo_region_t *draw_region)
{
- ECalModel *model;
EWeekView *week_view;
EWeekViewEvent *event;
GnomeCanvas *canvas;
GtkWidget *parent;
GdkPoint points[3];
- const gchar *color_spec;
gint c1, c2;
if (!can_draw_in_region (draw_region, x, y, w, h))
@@ -588,22 +585,7 @@ week_view_event_item_draw_triangle (EWeekViewEventItem *event_item,
points[2].x = x;
points[2].y = y + h - 1;
- model = e_calendar_view_get_model (E_CALENDAR_VIEW (week_view));
-
- color_spec =
- e_cal_model_get_color_for_component (model, event->comp_data);
-
- if (gdk_color_parse (color_spec, &bg_color)) {
- gdk_cairo_set_source_color (cr, &bg_color);
- } else {
- EWeekViewColors wvc;
- GdkColor *color;
-
- wvc = E_WEEK_VIEW_COLOR_EVENT_BACKGROUND;
- color = &week_view->colors[wvc];
-
- gdk_cairo_set_source_color (cr, color);
- }
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_save (cr);
cairo_set_line_width (cr, 0.7);
@@ -744,14 +726,11 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
gint start_hour, start_minute, end_hour, end_minute;
gboolean draw_start, draw_end;
gboolean draw_start_triangle = FALSE, draw_end_triangle = FALSE;
- GdkColor bg_color;
+ GdkRGBA bg_rgba;
cairo_pattern_t *pat;
- guint16 red, green, blue;
gdouble radius, cx0, cy0, rect_height, rect_width;
- gdouble cc = 65535.0;
cairo_region_t *draw_region;
GdkRectangle rect;
- const gchar *color_spec;
event_item = E_WEEK_VIEW_EVENT_ITEM (canvas_item);
parent = gtk_widget_get_parent (GTK_WIDGET (canvas_item->canvas));
@@ -828,18 +807,15 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
model = e_calendar_view_get_model (E_CALENDAR_VIEW (week_view));
- color_spec =
- e_cal_model_get_color_for_component (model, event->comp_data);
+ if (!e_cal_model_get_rgba_for_component (model, event->comp_data, &bg_rgba)) {
+ gdouble cc = 65535.0;
- bg_color = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND];
- if (!gdk_color_parse (color_spec, &bg_color)) {
- bg_color = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND];
+ bg_rgba.red = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red / cc;
+ bg_rgba.green = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green / cc;
+ bg_rgba.blue = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue / cc;
+ bg_rgba.alpha = 1.0;
}
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
-
if (one_day_event) {
time_x = x1 + E_WEEK_VIEW_EVENT_L_PAD + 1;
rect_x = x1 + E_WEEK_VIEW_EVENT_L_PAD;
@@ -857,7 +833,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
cairo_save (cr);
draw_curved_rectangle (cr, cx0, cy0, rect_width, rect_height, radius);
cairo_set_line_width (cr, 2.0);
- cairo_set_source_rgb (cr, red / cc, green / cc, blue / cc);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_stroke (cr);
cairo_restore (cr);
}
@@ -878,14 +854,12 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
pat = cairo_pattern_create_linear (
rect_x + 2, y1 + 1, rect_x + 2, y2 - 7.25);
- cairo_pattern_add_color_stop_rgba (
- pat, 1, red / cc, green / cc, blue / cc, 0.8);
- cairo_pattern_add_color_stop_rgba (
- pat, 0, red / cc, green / cc, blue / cc, 0.4);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue,
0.8 * bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0, bg_rgba.red, bg_rgba.green, bg_rgba.blue,
0.4 * bg_rgba.alpha);
cairo_set_source (cr, pat);
cairo_fill_preserve (cr);
cairo_pattern_destroy (pat);
- cairo_set_source_rgba (cr, red / cc, green / cc, blue / cc, 0.2);
+ cairo_set_source_rgba (cr, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.2 *
bg_rgba.alpha);
cairo_set_line_width (cr, 0.5);
cairo_stroke (cr);
cairo_restore (cr);
@@ -918,7 +892,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_start) {
week_view_draw_time (
- week_view, bg_color, cr, time_x,
+ week_view, bg_rgba, cr, time_x,
time_y, start_hour, start_minute);
time_x += time_width;
}
@@ -926,7 +900,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_end) {
time_x += E_WEEK_VIEW_EVENT_TIME_SPACING;
week_view_draw_time (
- week_view, bg_color, cr, time_x,
+ week_view, bg_rgba, cr, time_x,
time_y, end_hour, end_minute);
time_x += time_width;
}
@@ -974,7 +948,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
cairo_save (cr);
draw_curved_rectangle (cr, cx0, cy0, rect_width, rect_height, radius);
cairo_set_line_width (cr, 2.0);
- cairo_set_source_rgb (cr, red / cc, green / cc, blue / cc);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_stroke (cr);
cairo_restore (cr);
}
@@ -993,16 +967,13 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
draw_curved_rectangle (
cr, cx0, cy0, rect_width, rect_height, radius);
- pat = cairo_pattern_create_linear (
- rect_x + 2, y1 + 1, rect_x + 2, y2 - 7.25);
- cairo_pattern_add_color_stop_rgba (
- pat, 1, red / cc, green / cc, blue / cc, 0.8);
- cairo_pattern_add_color_stop_rgba (
- pat, 0, red / cc, green / cc, blue / cc, 0.4);
+ pat = cairo_pattern_create_linear (rect_x + 2, y1 + 1, rect_x + 2, y2 - 7.25);
+ cairo_pattern_add_color_stop_rgba (pat, 1, bg_rgba.red, bg_rgba.green, bg_rgba.blue,
0.8 * bg_rgba.alpha);
+ cairo_pattern_add_color_stop_rgba (pat, 0, bg_rgba.red, bg_rgba.green, bg_rgba.blue,
0.4 * bg_rgba.alpha);
cairo_set_source (cr, pat);
cairo_fill_preserve (cr);
cairo_pattern_destroy (pat);
- cairo_set_source_rgba (cr, red / cc, green / cc, blue / cc, 0.2);
+ cairo_set_source_rgba (cr, bg_rgba.red, bg_rgba.green, bg_rgba.blue, 0.2 *
bg_rgba.alpha);
cairo_set_line_width (cr, 0.5);
cairo_stroke (cr);
cairo_restore (cr);
@@ -1010,7 +981,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_start_triangle) {
week_view_event_item_draw_triangle (
- event_item, cr, bg_color,
+ event_item, cr, bg_rgba,
x1 + E_WEEK_VIEW_EVENT_L_PAD + 2,
y1, -3, y2 - y1 + 1, draw_region);
} else if (can_draw_in_region (draw_region, rect_x, y1, 1, y2 - y1)) {
@@ -1031,7 +1002,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
if (draw_end_triangle) {
week_view_event_item_draw_triangle (
- event_item, cr, bg_color,
+ event_item, cr, bg_rgba,
x2 - E_WEEK_VIEW_EVENT_R_PAD - 2,
y1, 3, y2 - y1 + 1, draw_region);
} else if (can_draw_in_region (draw_region, rect_x2, y2, 1, 1)) {
@@ -1081,7 +1052,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
cairo_clip (cr);
week_view_draw_time (
- week_view, bg_color, cr, time_x,
+ week_view, bg_rgba, cr, time_x,
time_y, start_hour, start_minute);
cairo_restore (cr);
@@ -1109,7 +1080,7 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item,
* the minimum calculated above. */
if (time_x >= min_end_time_x) {
week_view_draw_time (
- week_view, bg_color, cr, time_x,
+ week_view, bg_rgba, cr, time_x,
time_y, end_hour, end_minute);
max_icon_x -= time_width
+ E_WEEK_VIEW_EVENT_TIME_X_PAD;
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 4fa8985..bc93c59 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -936,23 +936,23 @@ e_week_view_get_text_color (EWeekView *week_view,
EWeekViewEvent *event)
{
GdkColor color;
- guint16 red, green, blue;
- gdouble cc = 65535.0;
+ GdkRGBA bg_rgba;
- red = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red;
- green = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green;
- blue = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue;
+ if (is_comp_data_valid (event) &&
+ e_cal_model_get_rgba_for_component (e_calendar_view_get_model (E_CALENDAR_VIEW (week_view)),
event->comp_data, &bg_rgba)) {
+ } else {
+ gdouble cc = 65535.0;
+
+ bg_rgba.red = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].red / cc;
+ bg_rgba.green = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].green / cc;
+ bg_rgba.blue = week_view->colors[E_WEEK_VIEW_COLOR_EVENT_BACKGROUND].blue / cc;
+ bg_rgba.alpha = 1.0;
- if (is_comp_data_valid (event) && gdk_color_parse (e_cal_model_get_color_for_component
(e_calendar_view_get_model (E_CALENDAR_VIEW (week_view)), event->comp_data),
- &color)) {
- red = color.red;
- green = color.green;
- blue = color.blue;
}
color.pixel = 0;
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7)) {
+ if ((bg_rgba.red > 0.7) || (bg_rgba.green > 0.7) || (bg_rgba.blue > 0.7)) {
color.red = 0.0;
color.green = 0.0;
color.blue = 0.0;
diff --git a/calendar/gui/print.c b/calendar/gui/print.c
index 7cc5f63..fa4034c 100644
--- a/calendar/gui/print.c
+++ b/calendar/gui/print.c
@@ -343,9 +343,7 @@ print_border_with_triangles (GtkPrintContext *pc,
gdouble y1,
gdouble y2,
gdouble line_width,
- gdouble red,
- gdouble green,
- gdouble blue,
+ GdkRGBA bg_rgba,
gdouble left_triangle_width,
gdouble right_triangle_width)
{
@@ -354,7 +352,7 @@ print_border_with_triangles (GtkPrintContext *pc,
cairo_save (cr);
/* Fill in the interior of the rectangle, if desired. */
- if (red >= -EPSILON && green >= -EPSILON && blue >= -EPSILON) {
+ if (bg_rgba.red >= -EPSILON && bg_rgba.green >= -EPSILON && bg_rgba.blue >= -EPSILON) {
cairo_move_to (cr, x1, y1);
@@ -371,7 +369,7 @@ print_border_with_triangles (GtkPrintContext *pc,
cairo_line_to (cr, x2, y1);
cairo_close_path (cr);
- cairo_set_source_rgb (cr, red, green, blue);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_fill (cr);
cairo_restore (cr);
cairo_save (cr);
@@ -416,13 +414,11 @@ print_border_rgb (GtkPrintContext *pc,
gdouble y1,
gdouble y2,
gdouble line_width,
- gdouble red,
- gdouble green,
- gdouble blue)
+ GdkRGBA bg_rgba)
{
print_border_with_triangles (
pc, x1, x2, y1, y2, line_width,
- red, green, blue, -1.0, -1.0);
+ bg_rgba, -1.0, -1.0);
}
static void
@@ -434,9 +430,14 @@ print_border (GtkPrintContext *pc,
gdouble line_width,
gdouble fillcolor)
{
- print_border_rgb (
- pc, x1, x2, y1, y2, line_width,
- fillcolor, fillcolor, fillcolor);
+ GdkRGBA bg_rgba;
+
+ bg_rgba.red = fillcolor;
+ bg_rgba.green = fillcolor;
+ bg_rgba.blue = fillcolor;
+ bg_rgba.alpha = 1.0;
+
+ print_border_rgb (pc, x1, x2, y1, y2, line_width, bg_rgba);
}
static void
@@ -445,16 +446,14 @@ print_rectangle (GtkPrintContext *context,
gdouble y,
gdouble width,
gdouble height,
- gdouble red,
- gdouble green,
- gdouble blue)
+ GdkRGBA bg_rgba)
{
cairo_t *cr = gtk_print_context_get_cairo_context (context);
cairo_save (cr);
cairo_rectangle (cr, x, y, width, height);
- cairo_set_source_rgb (cr, red, green, blue);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
cairo_fill (cr);
cairo_restore (cr);
@@ -1375,7 +1374,7 @@ print_day_long_event (GtkPrintContext *context,
gchar *text;
gchar buffer[32];
struct tm date_tm;
- gdouble red, green, blue;
+ GdkRGBA bg_rgba;
if (!is_comp_data_valid (event))
return;
@@ -1395,11 +1394,16 @@ print_day_long_event (GtkPrintContext *context,
x2 = right - 10;
y1 = top + event->start_row_or_col * row_height + 1;
y2 = y1 + row_height - 1;
- red = green = blue = 0.95;
- e_cal_model_get_rgb_color_for_component (
- model, event->comp_data, &red, &green, &blue);
+
+ if (!e_cal_model_get_rgba_for_component (model, event->comp_data, &bg_rgba)) {
+ bg_rgba.red = 0.95;
+ bg_rgba.green = 0.95;
+ bg_rgba.blue = 0.95;
+ bg_rgba.alpha = 1.0;
+ }
+
print_border_with_triangles (
- context, x1, x2, y1, y2, 0.5, red, green, blue,
+ context, x1, x2, y1, y2, 0.5, bg_rgba,
left_triangle_width,
right_triangle_width);
@@ -1465,7 +1469,7 @@ print_day_event (GtkPrintContext *context,
gchar *text, start_buffer[32], end_buffer[32];
gboolean display_times = FALSE;
struct tm date_tm;
- gdouble red, green, blue;
+ GdkRGBA bg_rgba;
if (!is_comp_data_valid (event))
return;
@@ -1500,10 +1504,14 @@ print_day_event (GtkPrintContext *context,
x1, y1, x2, y2, row_height, start_row, top, pdi->rows);
#endif
- red = green = blue = 0.95;
- e_cal_model_get_rgb_color_for_component (
- model, event->comp_data, &red, &green, &blue);
- print_border_rgb (context, x1, x2, y1, y2, 1.0, red, green, blue);
+ if (!e_cal_model_get_rgba_for_component (model, event->comp_data, &bg_rgba)) {
+ bg_rgba.red = 0.95;
+ bg_rgba.green = 0.95;
+ bg_rgba.blue = 0.95;
+ bg_rgba.alpha = 1.0;
+ }
+
+ print_border_rgb (context, x1, x2, y1, y2, 1.0, bg_rgba);
text = get_summary_with_location (event->comp_data->icalcomp);
@@ -1763,9 +1771,7 @@ print_week_long_event (GtkPrintContext *context,
EWeekViewEvent *event,
EWeekViewEventSpan *span,
gchar *text,
- gdouble red,
- gdouble green,
- gdouble blue)
+ GdkRGBA bg_rgba)
{
gdouble left_triangle_width = -1.0, right_triangle_width = -1.0;
struct tm date_tm;
@@ -1782,7 +1788,7 @@ print_week_long_event (GtkPrintContext *context,
right_triangle_width = 4;
print_border_with_triangles (
- context, x1 + 6, x2 - 6, y1, y1 + row_height, 0.0, red, green, blue,
+ context, x1 + 6, x2 - 6, y1, y1 + row_height, 0.0, bg_rgba,
left_triangle_width, right_triangle_width);
x1 += 6;
@@ -1844,9 +1850,7 @@ print_week_day_event (GtkPrintContext *context,
EWeekViewEvent *event,
EWeekViewEventSpan *span,
gchar *text,
- gdouble red,
- gdouble green,
- gdouble blue)
+ GdkRGBA bg_rgba)
{
struct tm date_tm;
gchar buffer[32];
@@ -1861,7 +1865,7 @@ print_week_day_event (GtkPrintContext *context,
e_time_format_time (&date_tm, psi->use_24_hour_format, FALSE,
buffer, sizeof (buffer));
- print_rectangle (context, x1 + 1, y1, x2 - x1 - 2, row_height, red, green, blue);
+ print_rectangle (context, x1 + 1, y1, x2 - x1 - 2, row_height, bg_rgba);
x1 += print_text_line (
context, font, buffer, PANGO_ALIGN_LEFT,
x1 + 2, x2 - 3, y1, y1 + row_height, TRUE) + 4;
@@ -1900,7 +1904,7 @@ print_week_event (GtkPrintContext *context,
gchar *text;
gint num_days, start_x, start_y, start_h, end_x, end_y, end_h;
gdouble x1, x2, y1;
- gdouble red, green, blue;
+ GdkRGBA bg_rgba;
GdkPixbuf *pixbuf = NULL;
if (!is_comp_data_valid (event))
@@ -1949,22 +1953,24 @@ print_week_event (GtkPrintContext *context,
+ psi->header_row_height
+ span->row * (psi->row_height + 2);
- red = .9;
- green = .9;
- blue = .9;
- e_cal_model_get_rgb_color_for_component (
- model, event->comp_data, &red, &green, &blue);
+ if (!e_cal_model_get_rgba_for_component (model, event->comp_data, &bg_rgba)) {
+ bg_rgba.red = 0.9;
+ bg_rgba.green = 0.9;
+ bg_rgba.blue = 0.9;
+ bg_rgba.alpha = 1.0;
+ }
+
if (print_is_one_day_week_event (event, span,
psi->day_starts)) {
print_week_day_event (
context, font, psi,
x1, x2, y1, psi->row_height,
- event, span, text, red, green, blue);
+ event, span, text, bg_rgba);
} else {
print_week_long_event (
context, font, psi,
x1, x2, y1, psi->row_height,
- event, span, text, red, green, blue);
+ event, span, text, bg_rgba);
}
} else {
cairo_t *cr = gtk_print_context_get_cairo_context (context);
diff --git a/e-util/e-cell-text.c b/e-util/e-cell-text.c
index 2e49858..3e39fad 100644
--- a/e-util/e-cell-text.c
+++ b/e-util/e-cell-text.c
@@ -773,7 +773,7 @@ ect_draw (ECellView *ecell_view,
}
if (!color_overwritten && ect->bg_color_column != -1) {
- GdkColor bg_color;
+ GdkRGBA bg_rgba;
gchar *color_spec;
/* if the background color is overwritten and the text color is not, then
@@ -783,27 +783,20 @@ ect_draw (ECellView *ecell_view,
ecell_view->e_table_model,
ect->bg_color_column, row);
- if (color_spec && gdk_color_parse (color_spec, &bg_color)) {
- guint16 red, green, blue;
- gdouble cc = 65535.0;
- GdkRGBA rgba;
+ if (color_spec && gdk_rgba_parse (&bg_rgba, color_spec)) {
+ bg_rgba.alpha = 1.0;
- red = bg_color.red;
- green = bg_color.green;
- blue = bg_color.blue;
- rgba.alpha = 1.0;
-
- if ((red / cc > 0.7) || (green / cc > 0.7) || (blue / cc > 0.7)) {
- rgba.red = 0.0;
- rgba.green = 0.0;
- rgba.blue = 0.0;
+ if ((bg_rgba.red > 0.7) || (bg_rgba.green > 0.7) || (bg_rgba.blue > 0.7)) {
+ bg_rgba.red = 0.0;
+ bg_rgba.green = 0.0;
+ bg_rgba.blue = 0.0;
} else {
- rgba.red = 1.0;
- rgba.green = 1.0;
- rgba.blue = 1.0;
+ bg_rgba.red = 1.0;
+ bg_rgba.green = 1.0;
+ bg_rgba.blue = 1.0;
}
- gdk_cairo_set_source_rgba (cr, &rgba);
+ gdk_cairo_set_source_rgba (cr, &bg_rgba);
}
if (color_spec)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]