aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/table/e-cell-pixbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/table/e-cell-pixbuf.c')
-rw-r--r--widgets/table/e-cell-pixbuf.c389
1 files changed, 0 insertions, 389 deletions
diff --git a/widgets/table/e-cell-pixbuf.c b/widgets/table/e-cell-pixbuf.c
deleted file mode 100644
index 41b030ec5a..0000000000
--- a/widgets/table/e-cell-pixbuf.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Authors:
- * Vladimir Vukicevic <vladimir@ximian.com>
- *
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include <libgnomecanvas/libgnomecanvas.h>
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include "e-cell-pixbuf.h"
-
-G_DEFINE_TYPE (ECellPixbuf, e_cell_pixbuf, E_TYPE_CELL)
-
-typedef struct _ECellPixbufView ECellPixbufView;
-
-struct _ECellPixbufView {
- ECellView cell_view;
- GnomeCanvas *canvas;
-};
-
-/* Object argument IDs */
-enum {
- PROP_0,
-
- PROP_SELECTED_COLUMN,
- PROP_FOCUSED_COLUMN,
- PROP_UNSELECTED_COLUMN
-};
-
-/*
- * ECellPixbuf functions
- */
-
-ECell *
-e_cell_pixbuf_new (void)
-{
- return g_object_new (E_TYPE_CELL_PIXBUF, NULL);
-}
-
-/*
- * ECell methods
- */
-
-static ECellView *
-pixbuf_new_view (ECell *ecell,
- ETableModel *table_model,
- gpointer e_table_item_view)
-{
- ECellPixbufView *pixbuf_view = g_new0 (ECellPixbufView, 1);
- ETableItem *eti = E_TABLE_ITEM (e_table_item_view);
- GnomeCanvas *canvas = GNOME_CANVAS_ITEM (eti)->canvas;
-
- pixbuf_view->cell_view.ecell = ecell;
- pixbuf_view->cell_view.e_table_model = table_model;
- pixbuf_view->cell_view.e_table_item_view = e_table_item_view;
- pixbuf_view->cell_view.kill_view_cb = NULL;
- pixbuf_view->cell_view.kill_view_cb_data = NULL;
-
- pixbuf_view->canvas = canvas;
-
- return (ECellView *) pixbuf_view;
-}
-
-static void
-pixbuf_kill_view (ECellView *ecell_view)
-{
- ECellPixbufView *pixbuf_view = (ECellPixbufView *) ecell_view;
-
- if (pixbuf_view->cell_view.kill_view_cb)
- pixbuf_view->cell_view.kill_view_cb (
- ecell_view, pixbuf_view->cell_view.kill_view_cb_data);
-
- if (pixbuf_view->cell_view.kill_view_cb_data)
- g_list_free (pixbuf_view->cell_view.kill_view_cb_data);
-
- g_free (pixbuf_view);
-}
-
-static void
-pixbuf_draw (ECellView *ecell_view,
- cairo_t *cr,
- gint model_col,
- gint view_col,
- gint row,
- ECellFlags flags,
- gint x1,
- gint y1,
- gint x2,
- gint y2)
-{
- GdkPixbuf *cell_pixbuf;
- gint real_x, real_y;
- gint pix_w, pix_h;
-
- cell_pixbuf = e_table_model_value_at (ecell_view->e_table_model,
- 1, row);
-
- /* we can't make sure we really got a pixbuf since, well, it's a Gdk thing */
-
- if (x2 - x1 == 0)
- return;
-
- if (!cell_pixbuf)
- return;
-
- pix_w = gdk_pixbuf_get_width (cell_pixbuf);
- pix_h = gdk_pixbuf_get_height (cell_pixbuf);
-
- /* We center the pixbuf within our allocated space */
- if (x2 - x1 > pix_w) {
- gint diff = (x2 - x1) - pix_w;
- real_x = x1 + diff / 2;
- } else {
- real_x = x1;
- }
-
- if (y2 - y1 > pix_h) {
- gint diff = (y2 - y1) - pix_h;
- real_y = y1 + diff / 2;
- } else {
- real_y = y1;
- }
-
- cairo_save (cr);
- gdk_cairo_set_source_pixbuf (cr, cell_pixbuf, real_x, real_y);
- cairo_paint_with_alpha (cr, 1);
- cairo_restore (cr);
-}
-
-static gint
-pixbuf_event (ECellView *ecell_view,
- GdkEvent *event,
- gint model_col,
- gint view_col,
- gint row,
- ECellFlags flags,
- ECellActions *actions)
-{
- /* noop */
-
- return FALSE;
-}
-
-static gint
-pixbuf_height (ECellView *ecell_view,
- gint model_col,
- gint view_col,
- gint row)
-{
- GdkPixbuf *pixbuf;
- if (row == -1) {
- if (e_table_model_row_count (ecell_view->e_table_model) > 0) {
- row = 0;
- } else {
- return 6;
- }
- }
-
- pixbuf = (GdkPixbuf *) e_table_model_value_at (ecell_view->e_table_model, 1, row);
- if (!pixbuf)
- return 0;
-
- /* We give ourselves 3 pixels of padding on either side */
- return gdk_pixbuf_get_height (pixbuf) + 6;
-}
-
-/*
- * ECell::print method
- */
-static void
-pixbuf_print (ECellView *ecell_view,
- GtkPrintContext *context,
- gint model_col,
- gint view_col,
- gint row,
- gdouble width,
- gdouble height)
-{
- GdkPixbuf *pixbuf;
- gint scale;
- cairo_t *cr = gtk_print_context_get_cairo_context (context);
-
- pixbuf = (GdkPixbuf *) e_table_model_value_at (ecell_view->e_table_model, 1, row);
- if (pixbuf == NULL)
- return;
-
- scale = gdk_pixbuf_get_height (pixbuf);
- cairo_save (cr);
- cairo_translate (cr, 0, (gdouble)(height - scale) / (gdouble) 2);
- gdk_cairo_set_source_pixbuf (cr, pixbuf, (gdouble) scale, (gdouble) scale);
- cairo_paint (cr);
- cairo_restore (cr);
-}
-
-static gdouble
-pixbuf_print_height (ECellView *ecell_view,
- GtkPrintContext *context,
- gint model_col,
- gint view_col,
- gint row,
- gdouble width)
-{
- GdkPixbuf *pixbuf;
-
- if (row == -1) {
- if (e_table_model_row_count (ecell_view->e_table_model) > 0) {
- row = 0;
- } else {
- return 6;
- }
- }
-
- pixbuf = (GdkPixbuf *) e_table_model_value_at (ecell_view->e_table_model, 1, row);
- if (!pixbuf)
- return 0;
-
- /* We give ourselves 3 pixels of padding on either side */
- return gdk_pixbuf_get_height (pixbuf);
-}
-
-static gint
-pixbuf_max_width (ECellView *ecell_view,
- gint model_col,
- gint view_col)
-{
- gint pw;
- gint num_rows, i;
- gint max_width = -1;
-
- if (model_col == 0) {
- num_rows = e_table_model_row_count (ecell_view->e_table_model);
-
- for (i = 0; i <= num_rows; i++) {
- GdkPixbuf *pixbuf = (GdkPixbuf *) e_table_model_value_at
- (ecell_view->e_table_model,
- 1,
- i);
- if (!pixbuf)
- continue;
- pw = gdk_pixbuf_get_width (pixbuf);
- if (max_width < pw)
- max_width = pw;
- }
- } else {
- return -1;
- }
-
- return max_width;
-}
-
-static void
-pixbuf_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- ECellPixbuf *pixbuf;
-
- pixbuf = E_CELL_PIXBUF (object);
-
- switch (property_id) {
- case PROP_SELECTED_COLUMN:
- pixbuf->selected_column = g_value_get_int (value);
- break;
-
- case PROP_FOCUSED_COLUMN:
- pixbuf->focused_column = g_value_get_int (value);
- break;
-
- case PROP_UNSELECTED_COLUMN:
- pixbuf->unselected_column = g_value_get_int (value);
- break;
-
- default:
- return;
- }
-}
-
-/* Get_arg handler for the pixbuf item */
-static void
-pixbuf_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- ECellPixbuf *pixbuf;
-
- pixbuf = E_CELL_PIXBUF (object);
-
- switch (property_id) {
- case PROP_SELECTED_COLUMN:
- g_value_set_int (value, pixbuf->selected_column);
- break;
-
- case PROP_FOCUSED_COLUMN:
- g_value_set_int (value, pixbuf->focused_column);
- break;
-
- case PROP_UNSELECTED_COLUMN:
- g_value_set_int (value, pixbuf->unselected_column);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-e_cell_pixbuf_init (ECellPixbuf *ecp)
-{
- ecp->selected_column = -1;
- ecp->focused_column = -1;
- ecp->unselected_column = -1;
-}
-
-static void
-e_cell_pixbuf_class_init (ECellPixbufClass *class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (class);
- ECellClass *ecc = E_CELL_CLASS (class);
-
- object_class->set_property = pixbuf_set_property;
- object_class->get_property = pixbuf_get_property;
-
- ecc->new_view = pixbuf_new_view;
- ecc->kill_view = pixbuf_kill_view;
- ecc->draw = pixbuf_draw;
- ecc->event = pixbuf_event;
- ecc->height = pixbuf_height;
- ecc->print = pixbuf_print;
- ecc->print_height = pixbuf_print_height;
- ecc->max_width = pixbuf_max_width;
-
- g_object_class_install_property (
- object_class,
- PROP_SELECTED_COLUMN,
- g_param_spec_int (
- "selected_column",
- "Selected Column",
- NULL,
- 0, G_MAXINT, 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (
- object_class,
- PROP_FOCUSED_COLUMN,
- g_param_spec_int (
- "focused_column",
- "Focused Column",
- NULL,
- 0, G_MAXINT, 0,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (
- object_class,
- PROP_UNSELECTED_COLUMN,
- g_param_spec_int (
- "unselected_column",
- "Unselected Column",
- NULL,
- 0, G_MAXINT, 0,
- G_PARAM_READWRITE));
-}
-