From f0c5ffcc4e1cf6df5c1f6f8221998fbc0feabb59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Aliste?= Date: Thu, 8 Nov 2012 10:41:44 +0100 Subject: [PATCH 2/8] glib: Add PopplerAnnotTextMarkup object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Germán Poo-Caamaño --- glib/poppler-annot.cc | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ glib/poppler-annot.h | 15 ++++++++++ glib/poppler-page.cc | 6 ++++ glib/poppler-private.h | 1 + glib/poppler.h | 1 + 5 files changed, 97 insertions(+) diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc index f298be6..1b6050b 100644 --- a/glib/poppler-annot.cc +++ b/glib/poppler-annot.cc @@ -32,6 +32,7 @@ typedef struct _PopplerAnnotClass PopplerAnnotClass; typedef struct _PopplerAnnotMarkupClass PopplerAnnotMarkupClass; typedef struct _PopplerAnnotFreeTextClass PopplerAnnotFreeTextClass; typedef struct _PopplerAnnotTextClass PopplerAnnotTextClass; +typedef struct _PopplerAnnotTextMarkupClass PopplerAnnotTextMarkupClass; typedef struct _PopplerAnnotFileAttachmentClass PopplerAnnotFileAttachmentClass; typedef struct _PopplerAnnotMovieClass PopplerAnnotMovieClass; typedef struct _PopplerAnnotScreenClass PopplerAnnotScreenClass; @@ -61,6 +62,16 @@ struct _PopplerAnnotTextClass PopplerAnnotMarkupClass parent_class; }; +struct _PopplerAnnotTextMarkup +{ + PopplerAnnotMarkup parent_instance; +}; + +struct _PopplerAnnotTextMarkupClass +{ + PopplerAnnotMarkupClass parent_class; +}; + struct _PopplerAnnotFreeText { PopplerAnnotMarkup parent_instance; @@ -108,6 +119,7 @@ struct _PopplerAnnotScreenClass G_DEFINE_TYPE (PopplerAnnot, poppler_annot, G_TYPE_OBJECT) G_DEFINE_TYPE (PopplerAnnotMarkup, poppler_annot_markup, POPPLER_TYPE_ANNOT) +G_DEFINE_TYPE (PopplerAnnotTextMarkup, poppler_annot_text_markup, POPPLER_TYPE_ANNOT_MARKUP) G_DEFINE_TYPE (PopplerAnnotText, poppler_annot_text, POPPLER_TYPE_ANNOT_MARKUP) G_DEFINE_TYPE (PopplerAnnotFreeText, poppler_annot_free_text, POPPLER_TYPE_ANNOT_MARKUP) G_DEFINE_TYPE (PopplerAnnotFileAttachment, poppler_annot_file_attachment, POPPLER_TYPE_ANNOT_MARKUP) @@ -261,6 +273,22 @@ poppler_annot_text_new (PopplerDocument *doc, return _poppler_annot_text_new (annot); } +PopplerAnnot * +_poppler_annot_text_markup_new (Annot *annot) +{ + return _poppler_create_annot (POPPLER_TYPE_ANNOT_TEXT_MARKUP, annot); +} + +static void +poppler_annot_text_markup_init (PopplerAnnotTextMarkup *poppler_annot) +{ +} + +static void +poppler_annot_text_markup_class_init (PopplerAnnotTextMarkupClass *klass) +{ +} + static void poppler_annot_free_text_init (PopplerAnnotFreeText *poppler_annot) { @@ -1191,6 +1219,52 @@ poppler_annot_text_get_state (PopplerAnnotText *poppler_annot) return POPPLER_ANNOT_TEXT_STATE_UNKNOWN; } +/* PopplerAnnotTextMarkup */ +void +poppler_annot_text_markup_set_quadrilaterals (PopplerAnnotTextMarkup *poppler_annot, + PopplerAnnotQuadrilateral *quads, + gint length_quads) +{ + AnnotTextMarkup *annot; + g_return_if_fail (POPPLER_IS_ANNOT_TEXT_MARKUP (poppler_annot)); + + annot = static_cast(POPPLER_ANNOT (poppler_annot)->annot); +} + +PopplerAnnotQuadrilateral ** +poppler_annot_text_markup_get_quadrilaterals (PopplerAnnotTextMarkup *poppler_annot, + gint *length_quads) +{ + AnnotTextMarkup *annot; + AnnotQuadrilaterals *back_quads; + PopplerAnnotQuadrilateral **quads; + int i; + + g_return_val_if_fail (POPPLER_IS_ANNOT_TEXT_MARKUP (poppler_annot), NULL); + + annot = static_cast(POPPLER_ANNOT (poppler_annot)->annot); + + back_quads = annot->getQuadrilaterals(); + *length_quads = back_quads->getQuadrilateralsLength(); + + quads = g_new (PopplerAnnotQuadrilateral *, *length_quads); + + for (i = 0; i < *length_quads; ++i) { + quads[i] = poppler_annot_quadrilateral_new (); + quads[i]->x1 = back_quads->getX1(i); + quads[i]->y1 = back_quads->getX1(i); + quads[i]->x2 = back_quads->getX2(i); + quads[i]->y2 = back_quads->getY2(i); + quads[i]->x3 = back_quads->getX3(i); + quads[i]->y3 = back_quads->getY3(i); + quads[i]->x4 = back_quads->getX4(i); + quads[i]->y4 = back_quads->getY4(i); + } + + + return quads; +} + /* PopplerAnnotFreeText */ /** * poppler_annot_free_text_get_quadding: diff --git a/glib/poppler-annot.h b/glib/poppler-annot.h index 7478126..d7917e0 100644 --- a/glib/poppler-annot.h +++ b/glib/poppler-annot.h @@ -38,6 +38,11 @@ G_BEGIN_DECLS #define POPPLER_ANNOT_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_ANNOT_TEXT, PopplerAnnotText)) #define POPPLER_IS_ANNOT_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_ANNOT_TEXT)) +#define POPPLER_TYPE_ANNOT_TEXT_MARKUP (poppler_annot_text_markup_get_type ()) +#define POPPLER_ANNOT_TEXT_MARKUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_ANNOT_TEXT_MARKUP, PopplerAnnotTextMarkup)) +#define POPPLER_IS_ANNOT_TEXT_MARKUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_ANNOT_TEXT_MARKUP)) + + #define POPPLER_TYPE_ANNOT_FREE_TEXT (poppler_annot_free_text_get_type ()) #define POPPLER_ANNOT_FREE_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_ANNOT_FREE_TEXT, PopplerAnnotFreeText)) #define POPPLER_IS_ANNOT_FREE_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_ANNOT_FREE_TEXT)) @@ -243,6 +248,16 @@ void poppler_annot_text_set_icon ( const gchar *icon); PopplerAnnotTextState poppler_annot_text_get_state (PopplerAnnotText *poppler_annot); +/* PopplerAnnotTextMarkup */ +GType poppler_annot_text_markup_get_type (void) G_GNUC_CONST; +void poppler_annot_text_markup_set_annot_type (PopplerAnnotTextMarkup *poppler_annot, + PopplerAnnotType type); +void poppler_annot_text_markup_set_quadrilaterals (PopplerAnnotTextMarkup *poppler_annot, + PopplerAnnotQuadrilateral **quads, + gint *length_quads); +PopplerAnnotQuadrilateral **poppler_annot_text_markup_get_quadrilaterals (PopplerAnnotTextMarkup *poppler_annot, + gint *length_quads); + /* PopplerAnnotFreeText */ GType poppler_annot_free_text_get_type (void) G_GNUC_CONST; PopplerAnnotFreeTextQuadding poppler_annot_free_text_get_quadding (PopplerAnnotFreeText *poppler_annot); diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc index b88c70b..0d2b23a 100644 --- a/glib/poppler-page.cc +++ b/glib/poppler-page.cc @@ -1372,6 +1372,12 @@ poppler_page_get_annot_mapping (PopplerPage *page) case Annot::typeScreen: mapping->annot = _poppler_annot_screen_new (annot); break; + case Annot::typeHighlight: + case Annot::typeUnderline: + case Annot::typeSquiggly: + case Annot::typeStrikeOut: + mapping->annot = _poppler_annot_text_markup_new (annot); + break; default: mapping->annot = _poppler_annot_new (annot); break; diff --git a/glib/poppler-private.h b/glib/poppler-private.h index ab39b49..af56ae7 100644 --- a/glib/poppler-private.h +++ b/glib/poppler-private.h @@ -117,6 +117,7 @@ PopplerMedia *_poppler_media_new (MediaRendition *media); PopplerAnnot *_poppler_annot_new (Annot *annot); PopplerAnnot *_poppler_annot_text_new (Annot *annot); PopplerAnnot *_poppler_annot_free_text_new (Annot *annot); +PopplerAnnot *_poppler_annot_text_markup_new (Annot *annot); PopplerAnnot *_poppler_annot_file_attachment_new (Annot *annot); PopplerAnnot *_poppler_annot_movie_new (Annot *annot); PopplerAnnot *_poppler_annot_screen_new (Annot *annot); diff --git a/glib/poppler.h b/glib/poppler.h index 837c414..d0c0468 100644 --- a/glib/poppler.h +++ b/glib/poppler.h @@ -197,6 +197,7 @@ typedef struct _PopplerMedia PopplerMedia; typedef struct _PopplerAnnot PopplerAnnot; typedef struct _PopplerAnnotMarkup PopplerAnnotMarkup; typedef struct _PopplerAnnotText PopplerAnnotText; +typedef struct _PopplerAnnotTextMarkup PopplerAnnotTextMarkup; typedef struct _PopplerAnnotFreeText PopplerAnnotFreeText; typedef struct _PopplerAnnotFileAttachment PopplerAnnotFileAttachment; typedef struct _PopplerAnnotMovie PopplerAnnotMovie; -- 1.7.9.5