Example #1
0
/**
 * ppg_cairo_add_color_stop:
 * @pattern: (in): A #cairo_pattern_t.
 * @offset: (in): The offset for the color.
 * @color: (in): A #GdkColor.
 *
 * Adds a color stop for a gradient using a #GdkColor.
 *
 * Returns: None.
 * Side effects: None.
 */
void
ppg_cairo_add_color_stop (cairo_pattern_t *pattern,
                          gdouble          offset,
                          const GdkColor  *color)
{
	g_return_if_fail(pattern != NULL);
	g_return_if_fail(color != NULL);

	cairo_pattern_add_color_stop_rgb(pattern, offset, TO_CAIRO_RGB(*color));
}
Example #2
0
static gboolean
ppg_header_expose_event (GtkWidget      *widget,
                         GdkEventExpose *expose)
{
	PpgHeader *header = (PpgHeader *)widget;
	PpgHeaderPrivate *priv;
	GtkStateType state = GTK_STATE_NORMAL;
	GtkAllocation alloc;
	GtkStyle *style;
	GdkColor begin;
	GdkColor end;
	GdkColor line;
	GdkColor v_begin;
	GdkColor v_end;
	cairo_pattern_t *p;
	cairo_t *cr;

	g_return_val_if_fail(PPG_IS_HEADER(header), FALSE);

	priv = header->priv;

	gtk_widget_get_allocation(widget, &alloc);
	style = gtk_widget_get_style(widget);
	begin = style->light[state];
	end = style->mid[state];
	line = style->dark[state];
	v_begin = style->mid[state];
	v_end = style->dark[state];

	cr = gdk_cairo_create(expose->window);
	p = cairo_pattern_create_linear(0, 0, 0, alloc.height);

	cairo_pattern_add_color_stop_rgb(p, 0.0, TO_CAIRO_RGB(begin));
	cairo_pattern_add_color_stop_rgb(p, 1.0, TO_CAIRO_RGB(end));
	cairo_set_source(cr, p);
	cairo_rectangle(cr, 0, 0, alloc.width, alloc.height);
	cairo_fill(cr);
	cairo_pattern_destroy(p);


	if (priv->bottom_separator) {
		cairo_set_source_rgb(cr, TO_CAIRO_RGB(line));
		cairo_set_line_width(cr, 1.0);
		cairo_move_to(cr, 0, alloc.height - 0.5);
		cairo_line_to(cr, alloc.width, alloc.height - 0.5);
		cairo_stroke(cr);
	}

	if (priv->right_separator) {
		p = cairo_pattern_create_linear(0, 0, 0, alloc.height);
		cairo_pattern_add_color_stop_rgb(p, 0.0, TO_CAIRO_RGB(v_begin));
		cairo_pattern_add_color_stop_rgb(p, 1.0, TO_CAIRO_RGB(v_end));
		cairo_set_source(cr, p);
		cairo_set_line_width(cr, 1.0);
		cairo_move_to(cr, alloc.width - 0.5, 0);
		cairo_line_to(cr, alloc.width - 0.5, alloc.height);
		cairo_stroke(cr);
		cairo_pattern_destroy(p);
	}

	cairo_destroy(cr);

	return FALSE;
}