static void
anjuta_cell_renderer_captioned_image_get_preferred_width (GtkCellRenderer *gtk_cell,
                                                          GtkWidget *widget,
                                                          gint *minimum,
                                                          gint *natural)
{
	gint text_min;
	gint text_nat;
	gint image_min;
	gint image_nat;
    
	AnjutaCellRendererCaptionedImage *cell = ANJUTA_CELL_RENDERER_CAPTIONED_IMAGE (gtk_cell);
	
	gtk_cell_renderer_get_preferred_width (cell->image, widget, &image_min, &image_nat);
	
	gtk_cell_renderer_get_preferred_width (cell->caption, widget,
	                                      &text_min, &text_nat);


	if (minimum) {
		*minimum = MAX (image_min, text_min);
		*minimum += SPACE * 2;
	}
	
	if (natural) {
		*natural = MAX (image_nat, text_nat);
		*natural += SPACE * 2;
	}
}
示例#2
0
static void
gd_two_lines_renderer_get_preferred_height (GtkCellRenderer *cell,
                                            GtkWidget       *widget,
                                            gint            *minimum_size,
                                            gint            *natural_size)
{
  gint min_width;

  gtk_cell_renderer_get_preferred_width (cell, widget, &min_width, NULL);
  gd_two_lines_renderer_get_preferred_height_for_width (cell, widget, min_width,
                                                        minimum_size, natural_size);
}
static void
anjuta_cell_renderer_captioned_image_render (GtkCellRenderer *gtk_cell,
					     cairo_t *cr,
					     GtkWidget *widget,
					     const GdkRectangle *background_area,
					     const GdkRectangle *cell_area,
					     GtkCellRendererState flags)

{
	AnjutaCellRendererCaptionedImage *cell = ANJUTA_CELL_RENDERER_CAPTIONED_IMAGE (gtk_cell);
	GdkRectangle text_area;
	GdkRectangle pixbuf_area;
	gint width, height;
	
	gtk_cell_renderer_get_preferred_width (cell->image, widget, NULL, &width);
	gtk_cell_renderer_get_preferred_height (cell->image, widget, NULL, &height);
	
	pixbuf_area.y = cell_area->y;
	pixbuf_area.x = cell_area->x;
	pixbuf_area.height = height;
	pixbuf_area.width = cell_area->width;
    
	gtk_cell_renderer_get_preferred_width (cell->caption, widget, NULL, &width);
	gtk_cell_renderer_get_preferred_height (cell->caption, widget, NULL, &height);

	text_area.x = cell_area->x + (cell_area->width - width) / 2;
	text_area.y = cell_area->y + (pixbuf_area.height + PAD);
	text_area.height = height;
	text_area.width = width;

	gtk_cell_renderer_render (cell->image, cr, widget, 
				  background_area, &pixbuf_area, flags);

	gtk_cell_renderer_render (cell->caption, cr, widget,
				  background_area, &text_area, flags);
}