[poppler] 4 commits - glib/demo glib/poppler.h glib/poppler-page.cc glib/poppler-page.h glib/reference poppler/TextOutputDev.cc poppler/TextOutputDev.h
Carlos Garcia Campos
carlosgc at kemper.freedesktop.org
Mon Aug 22 04:42:54 PDT 2011
glib/demo/annots.c | 22 ---
glib/demo/text.c | 103 +++++++++++++++++-
glib/demo/utils.c | 27 ++++
glib/demo/utils.h | 1
glib/poppler-page.cc | 202 ++++++++++++++++++++++++++++++++++++
glib/poppler-page.h | 33 +++++
glib/poppler.h | 1
glib/reference/poppler-sections.txt | 7 +
poppler/TextOutputDev.cc | 4
poppler/TextOutputDev.h | 1
10 files changed, 374 insertions(+), 27 deletions(-)
New commits:
commit eb740dac838d2a1e32899327ca6d25c3dca641df
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date: Mon Aug 22 13:41:56 2011 +0200
glib-demo: Add text attributes information to text demo
diff --git a/glib/demo/text.c b/glib/demo/text.c
index 54d140b..3a7b2cd 100644
--- a/glib/demo/text.c
+++ b/glib/demo/text.c
@@ -19,6 +19,7 @@
#include <string.h>
#include "text.h"
+#include "utils.h"
enum {
TEXT_X1_COLUMN,
@@ -38,6 +39,13 @@ typedef struct {
GtkWidget *treeview;
GtkListStore *model;
+ /* Text attributes */
+ GList *text_attrs;
+ GtkWidget *font_name;
+ GtkWidget *font_size;
+ GtkWidget *is_underlined;
+ GtkWidget *text_color;
+
gint page;
} PgdTextDemo;
@@ -57,6 +65,11 @@ pgd_text_free (PgdTextDemo *demo)
demo->buffer = NULL;
}
+ if (demo->text_attrs) {
+ poppler_page_free_text_attributes (demo->text_attrs);
+ demo->text_attrs = NULL;
+ }
+
if (demo->model) {
g_object_unref (demo->model);
demo->model = NULL;
@@ -81,6 +94,9 @@ pgd_text_get_text (GtkWidget *button,
return;
gtk_list_store_clear (demo->model);
+ if (demo->text_attrs)
+ poppler_page_free_text_attributes (demo->text_attrs);
+ demo->text_attrs = NULL;
timer = g_timer_new ();
text = poppler_page_get_text (page);
@@ -88,7 +104,7 @@ pgd_text_get_text (GtkWidget *button,
if (text) {
gchar *str;
- gdouble text_elapsed;
+ gdouble text_elapsed, layout_elapsed;
text_elapsed = g_timer_elapsed (timer, NULL);
@@ -96,8 +112,14 @@ pgd_text_get_text (GtkWidget *button,
poppler_page_get_text_layout (page, &recs, &n_recs);
g_timer_stop (timer);
- str = g_strdup_printf ("<i>got text in %.4f seconds, text layout in %.4f seconds</i>",
- text_elapsed, g_timer_elapsed (timer, NULL));
+ layout_elapsed = g_timer_elapsed (timer, NULL);
+
+ g_timer_start (timer);
+ demo->text_attrs = poppler_page_get_text_attributes (page);
+ g_timer_stop (timer);
+
+ str = g_strdup_printf ("<i>got text in %.4f seconds, text layout in %.4f seconds, text attrs in %.4f seconds</i>",
+ text_elapsed, layout_elapsed, g_timer_elapsed (timer, NULL));
gtk_label_set_markup (GTK_LABEL (demo->timer_label), str);
g_free (str);
} else {
@@ -146,6 +168,34 @@ pgd_text_get_text (GtkWidget *button,
}
static void
+pgd_text_set_text_attrs_for_offset (PgdTextDemo *demo,
+ gint offset)
+{
+ GList *l;
+
+ for (l = demo->text_attrs; l; l = g_list_next (l)) {
+ PopplerTextAttributes *attrs = (PopplerTextAttributes *)l->data;
+
+ if (offset >= attrs->start_index && offset <= attrs->end_index) {
+ gchar *str;
+ GdkPixbuf *pixbuf;
+
+ gtk_label_set_text (GTK_LABEL (demo->font_name), attrs->font_name);
+
+ str = g_strdup_printf ("%.2f", attrs->font_size);
+ gtk_label_set_text (GTK_LABEL (demo->font_size), str);
+ g_free (str);
+
+ gtk_label_set_text (GTK_LABEL (demo->is_underlined), attrs->is_underlined ? "Yes" : "No");
+
+ pixbuf = pgd_pixbuf_new_for_color (&(attrs->color));
+ gtk_image_set_from_pixbuf (GTK_IMAGE (demo->text_color), pixbuf);
+ g_object_unref (pixbuf);
+ }
+ }
+}
+
+static void
pgd_text_selection_changed (GtkTreeSelection *treeselection,
PgdTextDemo *demo)
{
@@ -164,6 +214,8 @@ pgd_text_selection_changed (GtkTreeSelection *treeselection,
end_iter = begin_iter;
gtk_text_iter_forward_char (&end_iter);
gtk_text_buffer_select_range (demo->buffer, &begin_iter, &end_iter);
+
+ pgd_text_set_text_attrs_for_offset (demo, GPOINTER_TO_INT (offset));
}
}
@@ -232,15 +284,18 @@ pgd_text_create_widget (PopplerDocument *document)
{
PgdTextDemo *demo;
GtkWidget *label;
- GtkWidget *vbox;
+ GtkWidget *vbox, *vbox2;
+ GtkWidget *textinfo;
GtkWidget *hbox, *page_selector;
GtkWidget *button;
GtkWidget *swindow, *textview, *treeview;
GtkTreeSelection *selection;
+ GtkWidget *frame, *alignment, *table;
GtkWidget *hpaned;
GtkCellRenderer *renderer;
gchar *str;
gint n_pages;
+ gint row = 0;
demo = g_new0 (PgdTextDemo, 1);
@@ -249,6 +304,8 @@ pgd_text_create_widget (PopplerDocument *document)
n_pages = poppler_document_get_n_pages (document);
vbox = gtk_vbox_new (FALSE, 12);
+ vbox2 = gtk_vbox_new (FALSE, 12);
+ textinfo = gtk_label_new ("TextInfo");
hbox = gtk_hbox_new (FALSE, 6);
@@ -341,8 +398,42 @@ pgd_text_create_widget (PopplerDocument *document)
gtk_container_add (GTK_CONTAINER (swindow), treeview);
gtk_widget_show (treeview);
- gtk_paned_add1 (GTK_PANED (hpaned), swindow);
- gtk_widget_show (swindow);
+ gtk_container_add (GTK_CONTAINER (vbox2), swindow);
+ gtk_widget_show (swindow);
+
+ /* Text attributes */
+ 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>Text Attributes</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 (4, 2, FALSE);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 6);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 6);
+
+ demo->font_name = gtk_label_new (NULL);
+ pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Font Name:</b>", demo->font_name, &row);
+ demo->font_size = gtk_label_new (NULL);
+ pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Font Size:</b>", demo->font_size, &row);
+ demo->is_underlined = gtk_label_new (NULL);
+ pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Underlined:</b>", demo->is_underlined, &row);
+ demo->text_color = gtk_image_new ();
+ pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Color:</b>", demo->text_color, &row);
+
+ gtk_container_add (GTK_CONTAINER (alignment), table);
+ gtk_widget_show (table);
+
+ gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 12);
+ gtk_widget_show (frame);
+ gtk_paned_add1 (GTK_PANED (hpaned), vbox2);
+ gtk_widget_show (vbox2);
swindow = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
commit cda4aefaa136ae07778de3b1593808a5aaa2db5b
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date: Mon Aug 22 13:40:49 2011 +0200
glib-demo: Add pgd_pixbuf_new_for_color() to utils
To get a pixbuf for a given poppler color.
diff --git a/glib/demo/annots.c b/glib/demo/annots.c
index 856fbef..9d99c34 100644
--- a/glib/demo/annots.c
+++ b/glib/demo/annots.c
@@ -154,27 +154,7 @@ get_annot_color (PopplerAnnot *poppler_annot)
PopplerColor *poppler_color;
if ((poppler_color = poppler_annot_get_color (poppler_annot))) {
- GdkPixbuf *pixbuf;
- gint rowstride, num, x;
- guchar *pixels;
-
- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
- FALSE, 8,
- 64, 16);
-
- rowstride = gdk_pixbuf_get_rowstride (pixbuf);
- pixels = gdk_pixbuf_get_pixels (pixbuf);
-
- num = gdk_pixbuf_get_width (pixbuf) *
- gdk_pixbuf_get_height (pixbuf);
-
- for (x = 0; x < num; x++) {
- pixels[0] = poppler_color->red;
- pixels[1] = poppler_color->green;
- pixels[2] = poppler_color->blue;
- pixels += 3;
- }
-
+ GdkPixbuf *pixbuf = pgd_pixbuf_new_for_color (poppler_color);
g_free (poppler_color);
return pixbuf;
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index 1e59e10..625596c 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -583,3 +583,30 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
gtk_container_add (GTK_CONTAINER (alignment), table);
gtk_widget_show (table);
}
+
+GdkPixbuf *
+pgd_pixbuf_new_for_color (PopplerColor *poppler_color)
+{
+ GdkPixbuf *pixbuf;
+ gint num, x;
+ guchar *pixels;
+
+ if (!poppler_color)
+ return NULL;
+
+ pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
+ FALSE, 8,
+ 64, 16);
+
+ pixels = gdk_pixbuf_get_pixels (pixbuf);
+ num = gdk_pixbuf_get_width (pixbuf) * gdk_pixbuf_get_height (pixbuf);
+
+ for (x = 0; x < num; x++) {
+ pixels[0] = poppler_color->red;
+ pixels[1] = poppler_color->green;
+ pixels[2] = poppler_color->blue;
+ pixels += 3;
+ }
+
+ return pixbuf;
+}
diff --git a/glib/demo/utils.h b/glib/demo/utils.h
index aafcf83..452f3fa 100644
--- a/glib/demo/utils.h
+++ b/glib/demo/utils.h
@@ -44,6 +44,7 @@ gchar *pgd_format_date (time_t utime);
GtkWidget *pgd_movie_view_new (void);
void pgd_movie_view_set_movie (GtkWidget *movie_view,
PopplerMovie *movie);
+GdkPixbuf *pgd_pixbuf_new_for_color (PopplerColor *poppler_color);
G_END_DECLS
commit 2a11b2963a548186654722a393db1e19d57828f1
Author: danigm <danigm at wadobo.com>
Date: Mon Aug 22 12:51:50 2011 +0200
glib: Add poppler_page_get_text_attributes()
It returns a list of text attributes that apply to a range of text as
returned by poppler_page_get_text(). Text attributes are represented by
a PopplerTextAttributes struct that contains font name, font size,
whether text is undrlined and foreground color for a range of text.
Fixes bug #33269.
diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc
index d1f1bcf..9850d44 100644
--- a/glib/poppler-page.cc
+++ b/glib/poppler-page.cc
@@ -1479,6 +1479,107 @@ poppler_rectangle_free (PopplerRectangle *rectangle)
g_slice_free (PopplerRectangle, rectangle);
}
+/* PopplerTextAttributes type */
+
+POPPLER_DEFINE_BOXED_TYPE (PopplerTextAttributes, poppler_text_attributes,
+ poppler_text_attributes_copy,
+ poppler_text_attributes_free)
+
+/**
+ * poppler_text_attributes_new:
+ *
+ * Creates a new #PopplerTextAttributes
+ *
+ * Returns: a new #PopplerTextAttributes, use poppler_text_attributes_free() to free it
+ *
+ * Since: 0.18
+ */
+PopplerTextAttributes *
+poppler_text_attributes_new (void)
+{
+ return (PopplerTextAttributes *) g_slice_new0 (PopplerTextAttributes);
+}
+
+static gchar *
+get_font_name_from_word (TextWord *word)
+{
+ GooString *font_name = word->getFontName();
+ const gchar *name;
+ gboolean subset;
+ gint i;
+
+ if (!font_name || font_name->getLength () == 0)
+ return g_strdup ("Default");
+
+ // check for a font subset name: capital letters followed by a '+' sign
+ for (i = 0; i < font_name->getLength (); ++i) {
+ if (font_name->getChar (i) < 'A' || font_name->getChar (i) > 'Z') {
+ break;
+ }
+ }
+ subset = i > 0 && i < font_name->getLength () && font_name->getChar (i) == '+';
+ name = font_name->getCString ();
+ if (subset)
+ name += i + 1;
+
+ return g_strdup (name);
+}
+
+/*
+ * Allocates a new PopplerTextAttributes with word attributes
+ */
+static PopplerTextAttributes *
+poppler_text_attributes_new_from_word (TextWord *word)
+{
+ PopplerTextAttributes *attrs = poppler_text_attributes_new ();
+ gdouble r, g, b;
+
+ attrs->font_name = get_font_name_from_word (word);
+ attrs->font_size = word->getFontSize();
+ attrs->is_underlined = word->isUnderlined();
+ word->getColor (&r, &g, &b);
+ attrs->color.red = (int) (r * 65535. + 0.5);
+ attrs->color.green = (int)(g * 65535. + 0.5);
+ attrs->color.blue = (int)(b * 65535. + 0.5);
+
+ return attrs;
+}
+
+/**
+ * poppler_text_attributes_copy:
+ * @text_attrs: a #PopplerTextAttributes to copy
+ *
+ * Creates a copy of @text_attrs
+ *
+ * Returns: a new allocated copy of @text_attrs
+ *
+ * Since: 0.18
+ */
+PopplerTextAttributes *
+poppler_text_attributes_copy (PopplerTextAttributes *text_attrs)
+{
+ PopplerTextAttributes *attrs;
+
+ attrs = g_slice_dup (PopplerTextAttributes, text_attrs);
+ attrs->font_name = g_strdup (text_attrs->font_name);
+ return attrs;
+}
+
+/**
+ * poppler_text_attributes_free:
+ * @text_attrs: a #PopplerTextAttributes
+ *
+ * Frees the given #PopplerTextAttributes
+ *
+ * Since: 0.18
+ */
+void
+poppler_text_attributes_free (PopplerTextAttributes *text_attrs)
+{
+ g_free (text_attrs->font_name);
+ g_slice_free (PopplerTextAttributes, text_attrs);
+}
+
/* PopplerColor type */
POPPLER_DEFINE_BOXED_TYPE (PopplerColor, poppler_color, poppler_color_copy, poppler_color_free)
@@ -1904,3 +2005,104 @@ poppler_page_get_text_layout (PopplerPage *page,
return TRUE;
}
+
+/**
+ * poppler_page_free_text_attributes;
+ * @list: A list of #PopplerTextAttributes<!-- -->s
+ *
+ * Frees a list of #PopplerTextAttributes<!-- -->s allocated by
+ * poppler_page_get_text_attributes().
+ *
+ * Since: 0.18
+ **/
+void
+poppler_page_free_text_attributes (GList *list)
+{
+ if (G_UNLIKELY (list == NULL))
+ return;
+
+ g_list_foreach (list, (GFunc)poppler_text_attributes_free, NULL);
+ g_list_free (list);
+}
+
+static gboolean
+word_text_attributes_equal (TextWord *a, TextWord *b)
+{
+ double ar, ag, ab, br, bg, bb;
+
+ if (!a->getFontInfo()->matches (b->getFontInfo()))
+ return FALSE;
+
+ if (a->getFontSize() != b->getFontSize())
+ return FALSE;
+
+ if (a->isUnderlined() != b->isUnderlined())
+ return FALSE;
+
+ a->getColor(&ar, &ag, &ab);
+ b->getColor(&br, &bg, &bb);
+ return (ar == br && ag == bg && ab == bb);
+}
+
+/**
+ * poppler_page_get_text_attributes:
+ * @page: A #PopplerPage
+ *
+ * Obtains the attributes of the text as a GList of #PopplerTextAttributes.
+ * This list must be freed with poppler_page_free_text_attributes() when done.
+ *
+ * Each list element is a #PopplerTextAttributes struct where start_index and
+ * end_index indicates the range of text (as returned by poppler_page_get_text())
+ * to which text attributes apply.
+ *
+ * Return value: (element-type PopplerTextAttributes) (transfer full): A #GList of #PopplerTextAttributes
+ *
+ * Since: 0.18
+ **/
+GList *
+poppler_page_get_text_attributes (PopplerPage *page)
+{
+ TextPage *text;
+ TextWordList *wordlist;
+ PopplerTextAttributes *attrs = NULL;
+ PopplerTextAttributes *previous = NULL;
+ gint i, offset = 0;
+ GList *attributes = NULL;
+
+ g_return_val_if_fail (POPPLER_IS_PAGE (page), NULL);
+
+ text = poppler_page_get_text_page (page);
+ wordlist = text->makeWordList (gFalse);
+
+ if (wordlist->getLength () <= 0)
+ {
+ delete wordlist;
+ return NULL;
+ }
+
+ // Calculating each word attributes
+ for (i = 0; i < wordlist->getLength (); i++)
+ {
+ TextWord *word = wordlist->get (i);
+
+ // each char of the word has the same attributes
+ if (i > 0 && word_text_attributes_equal (word, wordlist->get (i - 1))) {
+ attrs = previous;
+ } else {
+ attrs = poppler_text_attributes_new_from_word (word);
+ attrs->start_index = offset;
+ if (previous)
+ previous->end_index--;
+ previous = attrs;
+ attributes = g_list_prepend (attributes, attrs);
+ }
+ offset += word->getLength () + 1;
+ attrs->end_index = offset;
+ }
+ if (attrs)
+ attrs->end_index--;
+
+ delete wordlist;
+
+ return g_list_reverse(attributes);
+}
diff --git a/glib/poppler-page.h b/glib/poppler-page.h
index 03e22ec..c151cdc 100644
--- a/glib/poppler-page.h
+++ b/glib/poppler-page.h
@@ -94,6 +94,8 @@ void poppler_page_get_crop_box (PopplerPage *page,
gboolean poppler_page_get_text_layout (PopplerPage *page,
PopplerRectangle **rectangles,
guint *n_rectangles);
+GList *poppler_page_get_text_attributes (PopplerPage *page);
+void poppler_page_free_text_attributes (GList *list);
/* A rectangle on a page, with coordinates in PDF points. */
#define POPPLER_TYPE_RECTANGLE (poppler_rectangle_get_type ())
@@ -144,6 +146,37 @@ PopplerColor *poppler_color_new (void);
PopplerColor *poppler_color_copy (PopplerColor *color);
void poppler_color_free (PopplerColor *color);
+/* Text attributes. */
+#define POPPLER_TYPE_TEXT_ATTRIBUTES (poppler_text_attributes_get_type ())
+/**
+ * PopplerTextAttributes:
+ * @font_name: font name
+ * @font_size: font size
+ * @is_underlined: if text is underlined
+ * @color: a #PopplerColor, the foreground color
+ * @start_index: start position this text attributes apply
+ * @end_index: end position this text text attributes apply
+ *
+ * A #PopplerTextInfo is used to describe text attriutes of a reange of text
+ *
+ * Since: 0.18
+ */
+struct _PopplerTextAttributes
+{
+ gchar *font_name;
+ gdouble font_size;
+ gboolean is_underlined;
+ PopplerColor color;
+
+ gint start_index;
+ gint end_index;
+};
+
+GType poppler_text_attributes_get_type (void) G_GNUC_CONST;
+PopplerTextAttributes *poppler_text_attributes_new (void);
+PopplerTextAttributes *poppler_text_attributes_copy (PopplerTextAttributes *text_attrs);
+void poppler_text_attributes_free (PopplerTextAttributes *text_attrs);
+
/* Mapping between areas on the current page and PopplerActions */
#define POPPLER_TYPE_LINK_MAPPING (poppler_link_mapping_get_type ())
diff --git a/glib/poppler.h b/glib/poppler.h
index 008f5d8..f139bb1 100644
--- a/glib/poppler.h
+++ b/glib/poppler.h
@@ -158,6 +158,7 @@ typedef struct _PopplerIndexIter PopplerIndexIter;
typedef struct _PopplerFontsIter PopplerFontsIter;
typedef struct _PopplerLayersIter PopplerLayersIter;
typedef struct _PopplerRectangle PopplerRectangle;
+typedef struct _PopplerTextAttributes PopplerTextAttributes;
typedef struct _PopplerColor PopplerColor;
typedef struct _PopplerLinkMapping PopplerLinkMapping;
typedef struct _PopplerPageTransition PopplerPageTransition;
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index 9495052..51bbbb5 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -14,6 +14,7 @@ PopplerPageTransitionType
PopplerPageTransitionAlignment
PopplerPageTransitionDirection
PopplerSelectionStyle
+PopplerTextAttributes
poppler_page_get_index
poppler_page_get_label
poppler_page_get_size
@@ -38,6 +39,8 @@ poppler_page_get_selected_text
poppler_page_find_text
poppler_page_get_text
poppler_page_get_text_layout
+poppler_page_get_text_attributes
+poppler_page_free_text_attributes
poppler_page_get_link_mapping
poppler_page_free_link_mapping
poppler_page_get_image_mapping
@@ -66,6 +69,9 @@ poppler_form_field_mapping_free
poppler_annot_mapping_new
poppler_annot_mapping_copy
poppler_annot_mapping_free
+poppler_text_attributes_new
+poppler_text_attributes_copy
+poppler_text_attributes_free
<SUBSECTION Standard>
POPPLER_PAGE
@@ -93,6 +99,7 @@ poppler_page_transition_alignment_get_type
poppler_page_transition_direction_get_type
poppler_page_transition_type_get_type
poppler_selection_style_get_type
+poppler_text_attributes_get_type
</SECTION>
<SECTION>
commit 15f99157cf3900bf20cf619e204ae53085af497d
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date: Mon Aug 22 12:43:12 2011 +0200
textoutputdev: Add TextFontInfo::matches()
It checks whether two TextFontInfo objects contain the same font.
diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc
index 6c89510..3d7ba6d 100644
--- a/poppler/TextOutputDev.cc
+++ b/poppler/TextOutputDev.cc
@@ -226,6 +226,10 @@ GBool TextFontInfo::matches(GfxState *state) {
return state->getFont() == gfxFont;
}
+GBool TextFontInfo::matches(TextFontInfo *fontInfo) {
+ return gfxFont == fontInfo->gfxFont;
+}
+
//------------------------------------------------------------------------
// TextWord
//------------------------------------------------------------------------
diff --git a/poppler/TextOutputDev.h b/poppler/TextOutputDev.h
index d647340..63f3670 100644
--- a/poppler/TextOutputDev.h
+++ b/poppler/TextOutputDev.h
@@ -78,6 +78,7 @@ public:
~TextFontInfo();
GBool matches(GfxState *state);
+ GBool matches(TextFontInfo *fontInfo);
#if TEXTOUT_WORD_LIST
// Get the font name (which may be NULL).
More information about the poppler
mailing list