diff options
Diffstat (limited to 'Build/source/libs/poppler/poppler-0.12.4/glib/demo/images.c')
-rw-r--r-- | Build/source/libs/poppler/poppler-0.12.4/glib/demo/images.c | 342 |
1 files changed, 0 insertions, 342 deletions
diff --git a/Build/source/libs/poppler/poppler-0.12.4/glib/demo/images.c b/Build/source/libs/poppler/poppler-0.12.4/glib/demo/images.c deleted file mode 100644 index 76cfed20846..00000000000 --- a/Build/source/libs/poppler/poppler-0.12.4/glib/demo/images.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (C) 2008 Carlos Garcia Campos <carlosgc@gnome.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "config.h" - -#include <gtk/gtk.h> - -#include "images.h" - -enum { - IMAGES_ID_COLUMN, - IMAGES_X1_COLUMN, - IMAGES_Y1_COLUMN, - IMAGES_X2_COLUMN, - IMAGES_Y2_COLUMN, - N_COLUMNS -}; - -typedef struct { - PopplerDocument *doc; - - GtkListStore *model; - GtkWidget *timer_label; - GtkWidget *image_view; - - gint page; -} PgdImagesDemo; - -static void -pgd_images_free (PgdImagesDemo *demo) -{ - if (!demo) - return; - - if (demo->doc) { - g_object_unref (demo->doc); - demo->doc = NULL; - } - - if (demo->model) { - g_object_unref (demo->model); - demo->model = NULL; - } - - g_free (demo); -} - -static gboolean -pgd_image_view_drawing_area_expose (GtkWidget *area, - GdkEventExpose *event, - GtkWidget *image_view) -{ - cairo_t *cr; - cairo_surface_t *image; - - image = g_object_get_data (G_OBJECT (image_view), "image-surface"); - if (!image) - return FALSE; - - gtk_widget_set_size_request (area, - cairo_image_surface_get_width (image), - cairo_image_surface_get_height (image)); - - cr = gdk_cairo_create (area->window); - cairo_set_source_surface (cr, image, 0, 0); - cairo_paint (cr); - cairo_destroy (cr); - - return TRUE; -} - -static GtkWidget * -pgd_image_view_new () -{ - GtkWidget *swindow; - GtkWidget *darea; - - swindow = gtk_scrolled_window_new (NULL, NULL); - - darea = gtk_drawing_area_new (); - g_signal_connect (G_OBJECT (darea), "expose_event", - G_CALLBACK (pgd_image_view_drawing_area_expose), - (gpointer)swindow); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swindow), - darea); - gtk_widget_show (darea); - - return swindow; -} - -static void -pgd_image_view_set_image (GtkWidget *image_view, - cairo_surface_t *image) -{ - g_object_set_data_full (G_OBJECT (image_view), "image-surface", - image, - (GDestroyNotify)cairo_surface_destroy); - gtk_widget_queue_draw (image_view); -} - -static void -pgd_images_get_images (GtkWidget *button, - PgdImagesDemo *demo) -{ - PopplerPage *page; - GList *mapping, *l; - gint n_images; - GTimer *timer; - - gtk_list_store_clear (demo->model); - pgd_image_view_set_image (demo->image_view, NULL); - - page = poppler_document_get_page (demo->doc, demo->page); - if (!page) - return; - - timer = g_timer_new (); - mapping = poppler_page_get_image_mapping (page); - g_timer_stop (timer); - - n_images = g_list_length (mapping); - if (n_images > 0) { - gchar *str; - - str = g_strdup_printf ("<i>%d images found in %.4f seconds</i>", - n_images, g_timer_elapsed (timer, NULL)); - gtk_label_set_markup (GTK_LABEL (demo->timer_label), str); - g_free (str); - } else { - gtk_label_set_markup (GTK_LABEL (demo->timer_label), "<i>No images found</i>"); - } - - g_timer_destroy (timer); - - for (l = mapping; l; l = g_list_next (l)) { - PopplerImageMapping *imapping; - GtkTreeIter iter; - gchar *x1, *y1, *x2, *y2; - - imapping = (PopplerImageMapping *)l->data; - - x1 = g_strdup_printf ("%.2f", imapping->area.x1); - y1 = g_strdup_printf ("%.2f", imapping->area.y1); - x2 = g_strdup_printf ("%.2f", imapping->area.x2); - y2 = g_strdup_printf ("%.2f", imapping->area.y2); - - gtk_list_store_append (demo->model, &iter); - gtk_list_store_set (demo->model, &iter, - IMAGES_ID_COLUMN, imapping->image_id, - IMAGES_X1_COLUMN, x1, - IMAGES_Y1_COLUMN, y1, - IMAGES_X2_COLUMN, x2, - IMAGES_Y2_COLUMN, y2, - -1); - g_free (x1); - g_free (y1); - g_free (x2); - g_free (y2); - } - - poppler_page_free_image_mapping (mapping); - g_object_unref (page); -} - -static void -pgd_images_page_selector_value_changed (GtkSpinButton *spinbutton, - PgdImagesDemo *demo) -{ - demo->page = (gint)gtk_spin_button_get_value (spinbutton) - 1; -} - -static void -pgd_images_selection_changed (GtkTreeSelection *treeselection, - PgdImagesDemo *demo) -{ - GtkTreeModel *model; - GtkTreeIter iter; - - if (gtk_tree_selection_get_selected (treeselection, &model, &iter)) { - PopplerPage *page; - gint image_id; - - gtk_tree_model_get (model, &iter, - IMAGES_ID_COLUMN, &image_id, - -1); - page = poppler_document_get_page (demo->doc, demo->page); -#if defined (HAVE_CAIRO) - pgd_image_view_set_image (demo->image_view, - poppler_page_get_image (page, image_id)); -#endif - g_object_unref (page); - - } -} - -GtkWidget * -pgd_images_create_widget (PopplerDocument *document) -{ - PgdImagesDemo *demo; - GtkWidget *label; - GtkWidget *vbox; - GtkWidget *hbox, *page_selector; - GtkWidget *button; - GtkWidget *hpaned; - GtkWidget *swindow, *treeview; - GtkTreeSelection *selection; - GtkCellRenderer *renderer; - gchar *str; - gint n_pages; - - demo = g_new0 (PgdImagesDemo, 1); - - demo->doc = g_object_ref (document); - - n_pages = poppler_document_get_n_pages (document); - - vbox = gtk_vbox_new (FALSE, 12); - - hbox = gtk_hbox_new (FALSE, 6); - - label = gtk_label_new ("Page:"); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); - gtk_widget_show (label); - - page_selector = gtk_spin_button_new_with_range (1, n_pages, 1); - g_signal_connect (G_OBJECT (page_selector), "value-changed", - G_CALLBACK (pgd_images_page_selector_value_changed), - (gpointer)demo); - gtk_box_pack_start (GTK_BOX (hbox), page_selector, FALSE, TRUE, 0); - gtk_widget_show (page_selector); - - str = g_strdup_printf ("of %d", n_pages); - label = gtk_label_new (str); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); - gtk_widget_show (label); - g_free (str); - - button = gtk_button_new_with_label ("Get Images"); - g_signal_connect (G_OBJECT (button), "clicked", - G_CALLBACK (pgd_images_get_images), - (gpointer)demo); - gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); - gtk_widget_show (button); - - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); - gtk_widget_show (hbox); - - demo->timer_label = gtk_label_new (NULL); - gtk_label_set_markup (GTK_LABEL (demo->timer_label), "<i>No images found</i>"); - g_object_set (G_OBJECT (demo->timer_label), "xalign", 1.0, NULL); - gtk_box_pack_start (GTK_BOX (vbox), demo->timer_label, FALSE, TRUE, 0); - gtk_widget_show (demo->timer_label); - - hpaned = gtk_hpaned_new (); - - demo->image_view = pgd_image_view_new (); - - swindow = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - - demo->model = gtk_list_store_new (N_COLUMNS, G_TYPE_INT, - G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_STRING, G_TYPE_STRING); - treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (demo->model)); - - renderer = gtk_cell_renderer_text_new (); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 0, "Image", - renderer, - "text", IMAGES_ID_COLUMN, - NULL); - - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 1, "X1", - renderer, - "text", IMAGES_X1_COLUMN, - NULL); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 2, "Y1", - renderer, - "text", IMAGES_Y1_COLUMN, - NULL); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 3, "X2", - renderer, - "text", IMAGES_X2_COLUMN, - NULL); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 4, "Y2", - renderer, - "text", IMAGES_Y2_COLUMN, - NULL); - - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); - g_signal_connect (G_OBJECT (selection), "changed", - G_CALLBACK (pgd_images_selection_changed), - (gpointer)demo); - - gtk_container_add (GTK_CONTAINER (swindow), treeview); - gtk_widget_show (treeview); - - gtk_paned_add1 (GTK_PANED (hpaned), swindow); - gtk_widget_show (swindow); - - gtk_paned_add2 (GTK_PANED (hpaned), demo->image_view); - gtk_widget_show (demo->image_view); - - gtk_paned_set_position (GTK_PANED (hpaned), 300); - - gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0); - gtk_widget_show (hpaned); - - g_object_weak_ref (G_OBJECT (vbox), - (GWeakNotify)pgd_images_free, - demo); - - return vbox; -} |