summaryrefslogtreecommitdiff
path: root/Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c')
-rw-r--r--Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c335
1 files changed, 0 insertions, 335 deletions
diff --git a/Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c b/Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c
deleted file mode 100644
index ee034f0d8b4..00000000000
--- a/Build/source/libs/poppler/poppler-0.12.4/glib/demo/page.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Copyright (C) 2007 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 "page.h"
-#include "utils.h"
-
-typedef struct {
- PopplerDocument *doc;
-
- GtkWidget *index;
- GtkWidget *label;
- GtkWidget *size;
- GtkWidget *duration;
- GtkWidget *thumbnail;
- GtkWidget *thumbnail_size;
-
- gint page;
-} PgdPageDemo;
-
-static void
-pgd_page_free (PgdPageDemo *demo)
-{
- if (!demo)
- return;
-
- if (demo->doc) {
- g_object_unref (demo->doc);
- demo->doc = NULL;
- }
-
- g_free (demo);
-}
-
-#ifndef POPPLER_WITH_GDK
-static void
-image_set_from_surface (GtkImage *gtkimage,
- cairo_surface_t *surface)
-{
- GdkPixbuf *pixbuf;
- cairo_surface_t *image;
- cairo_t *cr;
- gboolean has_alpha;
- gint width, height;
- cairo_format_t surface_format;
- gint pixbuf_n_channels;
- gint pixbuf_rowstride;
- guchar *pixbuf_pixels;
- gint x, y;
-
- width = cairo_image_surface_get_width (surface);
- height = cairo_image_surface_get_height (surface);
-
- surface_format = cairo_image_surface_get_format (surface);
- has_alpha = (surface_format == CAIRO_FORMAT_ARGB32);
-
- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
- TRUE, 8,
- width, height);
- pixbuf_n_channels = gdk_pixbuf_get_n_channels (pixbuf);
- pixbuf_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
- pixbuf_pixels = gdk_pixbuf_get_pixels (pixbuf);
-
- image = cairo_image_surface_create_for_data (pixbuf_pixels,
- surface_format,
- width, height,
- pixbuf_rowstride);
- cr = cairo_create (image);
- cairo_set_source_surface (cr, surface, 0, 0);
-
- if (has_alpha)
- cairo_mask_surface (cr, surface, 0, 0);
- else
- cairo_paint (cr);
-
- cairo_destroy (cr);
- cairo_surface_destroy (image);
-
- for (y = 0; y < height; y++) {
- guchar *p = pixbuf_pixels + y * pixbuf_rowstride;
-
- for (x = 0; x < width; x++) {
- guchar tmp;
-
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- tmp = p[0];
- p[0] = p[2];
- p[2] = tmp;
- p[3] = (has_alpha) ? p[3] : 0xff;
-#else
- tmp = p[0];
- p[0] = (has_alpha) ? p[3] : 0xff;
- p[3] = p[2];
- p[2] = p[1];
- p[1] = tmp;
-#endif
- p += pixbuf_n_channels;
- }
- }
-
- gtk_image_set_from_pixbuf (gtkimage, pixbuf);
- g_object_unref (pixbuf);
-}
-#endif /* !POPPLER_WITH_GDK */
-
-static void
-pgd_page_set_page (PgdPageDemo *demo,
- PopplerPage *page)
-{
-#ifdef POPPLER_WITH_GDK
- GdkPixbuf *thumbnail;
-#else
- cairo_surface_t *thumbnail;
-#endif
- gchar *str;
-
- str = page ? g_strdup_printf ("%d", poppler_page_get_index (page)) : NULL;
- gtk_label_set_text (GTK_LABEL (demo->index), str);
- g_free (str);
-
- if (page) {
- g_object_get (G_OBJECT (page), "label", &str, NULL);
- gtk_label_set_text (GTK_LABEL (demo->label), str);
- g_free (str);
- } else {
- gtk_label_set_text (GTK_LABEL (demo->label), NULL);
- }
-
- if (page) {
- gdouble width, height;
-
- poppler_page_get_size (page, &width, &height);
- str = g_strdup_printf ("%.2f x %.2f", width, height);
- gtk_label_set_text (GTK_LABEL (demo->size), str);
- g_free (str);
- } else {
- gtk_label_set_text (GTK_LABEL (demo->size), NULL);
- }
-
- str = page ? g_strdup_printf ("%.2f seconds", poppler_page_get_duration (page)) : NULL;
- gtk_label_set_text (GTK_LABEL (demo->duration), str);
- g_free (str);
-
-#ifdef POPPLER_WITH_GDK
- thumbnail = page ? poppler_page_get_thumbnail_pixbuf (page) : NULL;
-#else
- thumbnail = page ? poppler_page_get_thumbnail (page) : NULL;
-#endif
- if (thumbnail) {
- gint width, height;
-
- poppler_page_get_thumbnail_size (page, &width, &height);
- str = g_strdup_printf ("%d x %d", width, height);
- gtk_label_set_text (GTK_LABEL (demo->thumbnail_size), str);
- g_free (str);
-
-#ifdef POPPLER_WITH_GDK
- gtk_image_set_from_pixbuf (GTK_IMAGE (demo->thumbnail), thumbnail);
- g_object_unref (thumbnail);
-#else
- image_set_from_surface (GTK_IMAGE (demo->thumbnail), thumbnail);
- cairo_surface_destroy (thumbnail);
-#endif
- } else {
- str = g_strdup ("<i>No thumbnail found</i>");
- gtk_label_set_markup (GTK_LABEL (demo->thumbnail_size), str);
- g_free (str);
-
- gtk_image_set_from_stock (GTK_IMAGE (demo->thumbnail),
- GTK_STOCK_MISSING_IMAGE,
- GTK_ICON_SIZE_DIALOG);
- }
-}
-
-static void
-pgd_page_get_info (GtkWidget *button,
- PgdPageDemo *demo)
-{
- PopplerPage *page;
-
- page = poppler_document_get_page (demo->doc, demo->page);
- pgd_page_set_page (demo, page);
- g_object_unref (page);
-}
-
-static void
-pgd_page_page_selector_value_changed (GtkSpinButton *spinbutton,
- PgdPageDemo *demo)
-{
- demo->page = (gint)gtk_spin_button_get_value (spinbutton) - 1;
-}
-
-GtkWidget *
-pgd_page_create_widget (PopplerDocument *document)
-{
- PgdPageDemo *demo;
- GtkWidget *vbox;
- GtkWidget *hbox, *page_selector;
- GtkWidget *button;
- GtkWidget *frame, *alignment;
- GtkWidget *table;
- GtkWidget *label;
- GtkWidget *thumnail_box;
- gchar *str;
- gint n_pages;
- gint row = 0;
-
- demo = g_new0 (PgdPageDemo, 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_page_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 Info");
- g_signal_connect (G_OBJECT (button), "clicked",
- G_CALLBACK (pgd_page_get_info),
- (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);
-
- hbox = gtk_hbox_new (FALSE, 6);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), "<b>Page Properties</b>");
- gtk_frame_set_label_widget (GTK_FRAME (frame), label);
- gtk_widget_show (label);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5);
- gtk_container_add (GTK_CONTAINER (frame), alignment);
- gtk_widget_show (alignment);
-
- table = gtk_table_new (3, 2, FALSE);
-
- gtk_table_set_col_spacings (GTK_TABLE (table), 6);
- gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-
- pgd_table_add_property_with_value_widget (GTK_TABLE (table), "<b>Page Index:</b>",
- &(demo->index), NULL, &row);
- pgd_table_add_property_with_value_widget (GTK_TABLE (table), "<b>Page Label:</b>",
- &(demo->label), NULL, &row);
- pgd_table_add_property_with_value_widget (GTK_TABLE (table), "<b>Page Size:</b>",
- &(demo->size), NULL, &row);
- pgd_table_add_property_with_value_widget (GTK_TABLE (table), "<b>Page Duration:</b>",
- &(demo->duration), NULL, &row);
-
- gtk_container_add (GTK_CONTAINER (alignment), table);
- gtk_widget_show (table);
-
- gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
- gtk_widget_show (frame);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
- gtk_frame_set_label_align (GTK_FRAME (frame), 0.5, 0.5);
- label = gtk_label_new (NULL);
- gtk_label_set_markup (GTK_LABEL (label), "<b>Page Thumbnail</b>");
- gtk_frame_set_label_widget (GTK_FRAME (frame), label);
- gtk_widget_show (label);
-
- alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
- gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5);
- gtk_container_add (GTK_CONTAINER (frame), alignment);
- gtk_widget_show (alignment);
-
- thumnail_box = gtk_vbox_new (FALSE, 6);
-
- demo->thumbnail = gtk_image_new ();
- gtk_box_pack_start (GTK_BOX (thumnail_box), demo->thumbnail, TRUE, TRUE, 0);
- gtk_widget_show (demo->thumbnail);
-
- demo->thumbnail_size = gtk_label_new (NULL);
- g_object_set (G_OBJECT (demo->thumbnail_size), "xalign", 0.5, NULL);
- gtk_box_pack_start (GTK_BOX (thumnail_box), demo->thumbnail_size, TRUE, TRUE, 0);
- gtk_widget_show (demo->thumbnail_size);
-
- gtk_container_add (GTK_CONTAINER (alignment), thumnail_box);
- gtk_widget_show (thumnail_box);
-
- gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
- gtk_widget_show (frame);
-
- gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
- gtk_widget_show (hbox);
-
- g_object_weak_ref (G_OBJECT (vbox),
- (GWeakNotify)pgd_page_free,
- (gpointer)demo);
-
- return vbox;
-}