| /* poppler-annot.cc: glib interface to poppler |
| * |
| * Copyright (C) 2007 Inigo Martinez <inigomartinez@gmail.com> |
| * |
| * 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 "poppler.h" |
| #include "poppler-private.h" |
| |
| typedef struct _PopplerAnnotClass PopplerAnnotClass; |
| typedef struct _PopplerAnnotMarkupClass PopplerAnnotMarkupClass; |
| typedef struct _PopplerAnnotFreeTextClass PopplerAnnotFreeTextClass; |
| typedef struct _PopplerAnnotTextClass PopplerAnnotTextClass; |
| |
| struct _PopplerAnnot |
| { |
| GObject parent_instance; |
| Annot *annot; |
| }; |
| |
| struct _PopplerAnnotClass |
| { |
| GObjectClass parent_class; |
| }; |
| |
| struct _PopplerAnnotMarkup |
| { |
| PopplerAnnot parent_instance; |
| }; |
| |
| struct _PopplerAnnotMarkupClass |
| { |
| PopplerAnnotClass parent_class; |
| }; |
| |
| struct _PopplerAnnotText |
| { |
| PopplerAnnotMarkup parent_instance; |
| }; |
| |
| struct _PopplerAnnotTextClass |
| { |
| PopplerAnnotMarkupClass parent_class; |
| }; |
| |
| struct _PopplerAnnotFreeText |
| { |
| PopplerAnnotMarkup parent_instance; |
| }; |
| |
| struct _PopplerAnnotFreeTextClass |
| { |
| PopplerAnnotMarkupClass parent_class; |
| }; |
| |
| G_DEFINE_TYPE (PopplerAnnot, poppler_annot, G_TYPE_OBJECT); |
| G_DEFINE_TYPE (PopplerAnnotMarkup, poppler_annot_markup, POPPLER_TYPE_ANNOT); |
| G_DEFINE_TYPE (PopplerAnnotText, poppler_annot_text, POPPLER_TYPE_ANNOT_MARKUP); |
| G_DEFINE_TYPE (PopplerAnnotFreeText, poppler_annot_free_text, POPPLER_TYPE_ANNOT_MARKUP); |
| |
| static void |
| poppler_annot_finalize (GObject *object) |
| { |
| PopplerAnnot *poppler_annot = POPPLER_ANNOT (object); |
| |
| poppler_annot->annot = NULL; |
| |
| G_OBJECT_CLASS (poppler_annot_parent_class)->finalize (object); |
| } |
| |
| static void |
| poppler_annot_init (PopplerAnnot *poppler_annot) |
| { |
| } |
| |
| static void |
| poppler_annot_class_init (PopplerAnnotClass *klass) |
| { |
| GObjectClass *gobject_class = G_OBJECT_CLASS (klass); |
| |
| gobject_class->finalize = poppler_annot_finalize; |
| } |
| |
| PopplerAnnot * |
| _poppler_annot_new (Annot *annot) |
| { |
| PopplerAnnot *poppler_annot; |
| |
| poppler_annot = POPPLER_ANNOT (g_object_new (POPPLER_TYPE_ANNOT, NULL)); |
| poppler_annot->annot = annot; |
| |
| return poppler_annot; |
| } |
| |
| static void |
| poppler_annot_markup_init (PopplerAnnotMarkup *poppler_annot) |
| { |
| } |
| |
| static void |
| poppler_annot_markup_class_init (PopplerAnnotMarkupClass *klass) |
| { |
| } |
| |
| static void |
| poppler_annot_text_init (PopplerAnnotText *poppler_annot) |
| { |
| } |
| |
| static void |
| poppler_annot_text_class_init (PopplerAnnotTextClass *klass) |
| { |
| } |
| |
| PopplerAnnot * |
| _poppler_annot_text_new (Annot *annot) |
| { |
| PopplerAnnot *poppler_annot; |
| |
| poppler_annot = POPPLER_ANNOT (g_object_new (POPPLER_TYPE_ANNOT_TEXT, NULL)); |
| poppler_annot->annot = annot; |
| |
| return poppler_annot; |
| } |
| |
| static void |
| poppler_annot_free_text_init (PopplerAnnotFreeText *poppler_annot) |
| { |
| } |
| |
| static void |
| poppler_annot_free_text_class_init (PopplerAnnotFreeTextClass *klass) |
| { |
| } |
| |
| PopplerAnnot * |
| _poppler_annot_free_text_new (Annot *annot) |
| { |
| PopplerAnnot *poppler_annot; |
| |
| poppler_annot = POPPLER_ANNOT (g_object_new (POPPLER_TYPE_ANNOT_FREE_TEXT, NULL)); |
| poppler_annot->annot = annot; |
| |
| return poppler_annot; |
| } |
| |
| /* Public methods */ |
| /** |
| * poppler_annot_get_annot_type: |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Gets the type of @poppler_annot |
| * |
| * Return value: #PopplerAnnotType of @poppler_annot. |
| **/ |
| PopplerAnnotType |
| poppler_annot_get_annot_type (PopplerAnnot *poppler_annot) |
| { |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), POPPLER_ANNOT_UNKNOWN); |
| |
| switch (poppler_annot->annot->getType ()) |
| { |
| case Annot::typeText: |
| return POPPLER_ANNOT_TEXT; |
| case Annot::typeLink: |
| return POPPLER_ANNOT_LINK; |
| case Annot::typeFreeText: |
| return POPPLER_ANNOT_FREE_TEXT; |
| case Annot::typeLine: |
| return POPPLER_ANNOT_LINE; |
| case Annot::typeSquare: |
| return POPPLER_ANNOT_SQUARE; |
| case Annot::typeCircle: |
| return POPPLER_ANNOT_CIRCLE; |
| case Annot::typePolygon: |
| return POPPLER_ANNOT_POLYGON; |
| case Annot::typePolyLine: |
| return POPPLER_ANNOT_POLY_LINE; |
| case Annot::typeHighlight: |
| return POPPLER_ANNOT_HIGHLIGHT; |
| case Annot::typeUnderline: |
| return POPPLER_ANNOT_UNDERLINE; |
| case Annot::typeSquiggly: |
| return POPPLER_ANNOT_SQUIGGLY; |
| case Annot::typeStrikeOut: |
| return POPPLER_ANNOT_STRIKE_OUT; |
| case Annot::typeStamp: |
| return POPPLER_ANNOT_STAMP; |
| case Annot::typeCaret: |
| return POPPLER_ANNOT_CARET; |
| case Annot::typeInk: |
| return POPPLER_ANNOT_INK; |
| case Annot::typePopup: |
| return POPPLER_ANNOT_POPUP; |
| case Annot::typeFileAttachment: |
| return POPPLER_ANNOT_FILE_ATTACHMENT; |
| case Annot::typeSound: |
| return POPPLER_ANNOT_SOUND; |
| case Annot::typeMovie: |
| return POPPLER_ANNOT_MOVIE; |
| case Annot::typeWidget: |
| return POPPLER_ANNOT_WIDGET; |
| case Annot::typeScreen: |
| return POPPLER_ANNOT_SCREEN; |
| case Annot::typePrinterMark: |
| return POPPLER_ANNOT_PRINTER_MARK; |
| case Annot::typeTrapNet: |
| return POPPLER_ANNOT_TRAP_NET; |
| case Annot::typeWatermark: |
| return POPPLER_ANNOT_WATERMARK; |
| case Annot::type3D: |
| return POPPLER_ANNOT_3D; |
| default: |
| g_warning ("Unsupported Annot Type"); |
| } |
| |
| return POPPLER_ANNOT_UNKNOWN; |
| } |
| |
| /** |
| * poppler_annot_get_contents: |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Retrieves the contents of @poppler_annot. |
| * |
| * Return value: a new allocated string with the contents of @poppler_annot. It |
| * must be freed with g_free() when done. |
| **/ |
| gchar * |
| poppler_annot_get_contents (PopplerAnnot *poppler_annot) |
| { |
| GooString *contents; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), NULL); |
| |
| contents = poppler_annot->annot->getContents (); |
| |
| return contents ? _poppler_goo_string_to_utf8 (contents) : NULL; |
| } |
| |
| /** |
| * poppler_annot_get_name: |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Retrieves the name of @poppler_annot. |
| * |
| * Return value: a new allocated string with the name of @poppler_annot. It must |
| * be freed with g_free() when done. |
| **/ |
| gchar * |
| poppler_annot_get_name (PopplerAnnot *poppler_annot) |
| { |
| GooString *name; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), NULL); |
| |
| name = poppler_annot->annot->getName (); |
| |
| return name ? _poppler_goo_string_to_utf8 (name) : NULL; |
| } |
| |
| /** |
| * poppler_annot_get_modified: |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Retrieves the last modification data of @poppler_annot. |
| * |
| * Return value: a new allocated string with the last modification data of |
| * @poppler_annot. It must be freed with g_free() when done. |
| **/ |
| gchar * |
| poppler_annot_get_modified (PopplerAnnot *poppler_annot) |
| { |
| GooString *text; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), NULL); |
| |
| text = poppler_annot->annot->getModified (); |
| |
| return text ? _poppler_goo_string_to_utf8 (text) : NULL; |
| } |
| |
| /** |
| * poppler_annot_get_flags |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Retrieves the flag field specifying various characteristics of the |
| * @poppler_annot. |
| * |
| * Return value: the flag field of @poppler_annot. |
| **/ |
| PopplerAnnotFlag |
| poppler_annot_get_flags (PopplerAnnot *poppler_annot) |
| { |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), (PopplerAnnotFlag) 0); |
| |
| return (PopplerAnnotFlag) poppler_annot->annot->getFlags (); |
| } |
| |
| /** |
| * poppler_annot_get_color: |
| * @poppler_annot: a #PopplerAnnot |
| * |
| * Retrieves the color of @poppler_annot. |
| * |
| * Return value: a new allocated #PopplerColor with the color values of |
| * @poppler_annot. It must be freed with g_free() when done. |
| **/ |
| PopplerColor * |
| poppler_annot_get_color (PopplerAnnot *poppler_annot) |
| { |
| AnnotColor *color; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT (poppler_annot), NULL); |
| |
| if ((color = poppler_annot->annot->getColor ())) { |
| PopplerColor *poppler_color; |
| double *values = color->getValues (); |
| |
| switch (color->getSpace ()) |
| { |
| case AnnotColor::colorGray: |
| poppler_color = g_new (PopplerColor, 1); |
| poppler_color->red = (guint16) values[0]; |
| poppler_color->green = (guint16) values[0]; |
| poppler_color->blue = (guint16) values[0]; |
| return poppler_color; |
| case AnnotColor::colorRGB: |
| poppler_color = g_new (PopplerColor, 1); |
| poppler_color->red = (guint16) values[0]; |
| poppler_color->green = (guint16) values[1]; |
| poppler_color->blue = (guint16) values[2]; |
| return poppler_color; |
| case AnnotColor::colorTransparent: |
| case AnnotColor::colorCMYK: |
| default: |
| g_warning ("Unsupported Annot Color"); |
| } |
| } |
| |
| return NULL; |
| } |
| |
| /* PopplerAnnotMarkup */ |
| /** |
| * poppler_annot_markup_get_label: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Retrieves the label text of @poppler_annot. |
| * |
| * Return value: the label text of @poppler_annot. |
| */ |
| gchar * |
| poppler_annot_markup_get_label (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| GooString *text; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), NULL); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| text = annot->getLabel (); |
| |
| return text ? _poppler_goo_string_to_utf8 (text) : NULL; |
| } |
| |
| /** |
| * poppler_annot_markup_get_popup_is_open: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Retrieves the state of the popup annot related to @poppler_annot. |
| * |
| * Return value: the state of @poppler_annot. %TRUE if it's open, %FALSE in |
| * other case. |
| **/ |
| gboolean |
| poppler_annot_markup_get_popup_is_open (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| AnnotPopup *annot_popup; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), FALSE); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| if ((annot_popup = annot->getPopup ())) |
| return annot_popup->getOpen (); |
| |
| return FALSE; |
| } |
| |
| /** |
| * poppler_annot_markup_get_opacity: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Retrieves the opacity value of @poppler_annot. |
| * |
| * Return value: the opacity value of @poppler_annot. |
| */ |
| gdouble |
| poppler_annot_markup_get_opacity (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), 0); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| return annot->getOpacity (); |
| } |
| |
| GDate * |
| poppler_annot_markup_get_date (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| GooString *annot_date; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), NULL); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| if ((annot_date = annot->getDate ())) { |
| GDateYear year = g_ascii_digit_value (annot_date->getChar(2)) * 1000 + |
| g_ascii_digit_value (annot_date->getChar(3)) * 100 + |
| g_ascii_digit_value (annot_date->getChar(4)) * 10 + |
| g_ascii_digit_value (annot_date->getChar(5)); |
| GDateMonth month = (GDateMonth) (g_ascii_digit_value (annot_date->getChar(6)) * 10 + |
| g_ascii_digit_value (annot_date->getChar(7))); |
| GDateDay day = g_ascii_digit_value (annot_date->getChar(8)) * 10 + |
| g_ascii_digit_value (annot_date->getChar(9)); |
| |
| return g_date_new_dmy (day, month, year); |
| } |
| |
| return NULL; |
| } |
| |
| /** |
| * poppler_annot_markup_get_subject: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Retrives the subject text of @poppler_annot. |
| * |
| * Return value: the subject text of @poppler_annot. |
| */ |
| gchar * |
| poppler_annot_markup_get_subject (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| GooString *text; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), NULL); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| text = annot->getSubject (); |
| |
| return text ? _poppler_goo_string_to_utf8 (text) : NULL; |
| } |
| |
| /** |
| * poppler_annot_markup_get_reply_to: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Gets the reply type of @poppler_annot. |
| * |
| * Return value: #PopplerAnnotMarkupReplyType of @poppler_annot. |
| */ |
| PopplerAnnotMarkupReplyType |
| poppler_annot_markup_get_reply_to (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), POPPLER_ANNOT_MARKUP_REPLY_TYPE_R); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| switch (annot->getReplyTo ()) |
| { |
| case AnnotMarkup::replyTypeR: |
| return POPPLER_ANNOT_MARKUP_REPLY_TYPE_R; |
| case AnnotMarkup::replyTypeGroup: |
| return POPPLER_ANNOT_MARKUP_REPLY_TYPE_GROUP; |
| default: |
| g_warning ("Unsupported Annot Markup Reply To Type"); |
| } |
| |
| return POPPLER_ANNOT_MARKUP_REPLY_TYPE_R; |
| } |
| |
| /** |
| * poppler_annot_markup_get_external_data: |
| * @poppler_annot: a #PopplerAnnotMarkup |
| * |
| * Gets the external data type of @poppler_annot. |
| * |
| * Return value: #PopplerAnnotExternalDataType of @poppler_annot. |
| */ |
| PopplerAnnotExternalDataType |
| poppler_annot_markup_get_external_data (PopplerAnnotMarkup *poppler_annot) |
| { |
| AnnotMarkup *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_MARKUP (poppler_annot), POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_UNKNOWN); |
| |
| annot = static_cast<AnnotMarkup *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| switch (annot->getExData ()) |
| { |
| case annotExternalDataMarkup3D: |
| return POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_3D; |
| case annotExternalDataMarkupUnknown: |
| return POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_UNKNOWN; |
| default: |
| g_warning ("Unsupported Annot Markup External Data"); |
| } |
| |
| return POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_UNKNOWN; |
| } |
| |
| /* PopplerAnnotText */ |
| /** |
| * poppler_annot_text_get_is_open: |
| * @poppler_annot: a #PopplerAnnotText |
| * |
| * Retrieves the state of @poppler_annot. |
| * |
| * Return value: the state of @poppler_annot. %TRUE if it's open, %FALSE in |
| * other case. |
| **/ |
| gboolean |
| poppler_annot_text_get_is_open (PopplerAnnotText *poppler_annot) |
| { |
| AnnotText *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_TEXT (poppler_annot), FALSE); |
| |
| annot = static_cast<AnnotText *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| return annot->getOpen (); |
| } |
| |
| /** |
| * poppler_annot_text_get_icon: |
| * @poppler_annot: a #PopplerAnnotText |
| * |
| * Gets the icon type of @poppler_annot. |
| * |
| * Return value: #PopplerAnnotTextIcon of @poppler_annot. |
| **/ |
| PopplerAnnotTextIcon |
| poppler_annot_text_get_icon (PopplerAnnotText *poppler_annot) |
| { |
| AnnotText *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_TEXT (poppler_annot), POPPLER_ANNOT_TEXT_ICON_NOTE); |
| |
| annot = static_cast<AnnotText *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| switch (annot->getIcon ()) |
| { |
| case AnnotText::iconComment: |
| return POPPLER_ANNOT_TEXT_ICON_COMMENT; |
| case AnnotText::iconKey: |
| return POPPLER_ANNOT_TEXT_ICON_KEY; |
| case AnnotText::iconNote: |
| return POPPLER_ANNOT_TEXT_ICON_NOTE; |
| case AnnotText::iconHelp: |
| return POPPLER_ANNOT_TEXT_ICON_HELP; |
| case AnnotText::iconNewParagraph: |
| return POPPLER_ANNOT_TEXT_ICON_NEW_PARAGRAPH; |
| case AnnotText::iconParagraph: |
| return POPPLER_ANNOT_TEXT_ICON_PARAGRAPH; |
| case AnnotText::iconInsert: |
| return POPPLER_ANNOT_TEXT_ICON_INSERT; |
| default: |
| g_warning ("Unsupported Annot Text Icon"); |
| } |
| |
| return POPPLER_ANNOT_TEXT_ICON_NOTE; |
| } |
| |
| /** |
| * poppler_annot_text_get_state: |
| * @poppler_annot: a #PopplerAnnotText |
| * |
| * Retrieves the state of @poppler_annot. |
| * |
| * Return value: #PopplerAnnotTextState of @poppler_annot. |
| **/ |
| PopplerAnnotTextState |
| poppler_annot_text_get_state (PopplerAnnotText *poppler_annot) |
| { |
| AnnotText *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_TEXT (poppler_annot), POPPLER_ANNOT_TEXT_STATE_UNKNOWN); |
| |
| annot = static_cast<AnnotText *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| switch (annot->getState ()) |
| { |
| case AnnotText::stateUnknown: |
| return POPPLER_ANNOT_TEXT_STATE_UNKNOWN; |
| case AnnotText::stateMarked: |
| return POPPLER_ANNOT_TEXT_STATE_MARKED; |
| case AnnotText::stateUnmarked: |
| return POPPLER_ANNOT_TEXT_STATE_UNMARKED; |
| case AnnotText::stateAccepted: |
| return POPPLER_ANNOT_TEXT_STATE_ACCEPTED; |
| case AnnotText::stateRejected: |
| return POPPLER_ANNOT_TEXT_STATE_REJECTED; |
| case AnnotText::stateCancelled: |
| return POPPLER_ANNOT_TEXT_STATE_CANCELLED; |
| case AnnotText::stateCompleted: |
| return POPPLER_ANNOT_TEXT_STATE_COMPLETED; |
| case AnnotText::stateNone: |
| return POPPLER_ANNOT_TEXT_STATE_NONE; |
| default: |
| g_warning ("Unsupported Annot Text State"); |
| } |
| |
| return POPPLER_ANNOT_TEXT_STATE_UNKNOWN; |
| } |
| |
| /* PopplerAnnotFreeText */ |
| /** |
| * poppler_annot_free_text_get_quadding: |
| * @poppler_annot: a #PopplerAnnotFreeText |
| * |
| * Retrieves the justification of the text of @poppler_annot. |
| * |
| * Return value: #PopplerAnnotFreeTextQuadding of @poppler_annot. |
| **/ |
| PopplerAnnotFreeTextQuadding |
| poppler_annot_free_text_get_quadding (PopplerAnnotFreeText *poppler_annot) |
| { |
| AnnotFreeText *annot; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_FREE_TEXT (poppler_annot), POPPLER_ANNOT_FREE_TEXT_QUADDING_LEFT_JUSTIFIED); |
| |
| annot = static_cast<AnnotFreeText *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| switch (annot->getQuadding ()) |
| { |
| case AnnotFreeText::quaddingLeftJustified: |
| return POPPLER_ANNOT_FREE_TEXT_QUADDING_LEFT_JUSTIFIED; |
| case AnnotFreeText::quaddingCentered: |
| return POPPLER_ANNOT_FREE_TEXT_QUADDING_CENTERED; |
| case AnnotFreeText::quaddingRightJustified: |
| return POPPLER_ANNOT_FREE_TEXT_QUADDING_RIGHT_JUSTIFIED; |
| default: |
| g_warning ("Unsupported Annot Free Text Quadding"); |
| } |
| |
| return POPPLER_ANNOT_FREE_TEXT_QUADDING_LEFT_JUSTIFIED; |
| } |
| |
| /** |
| * poppler_annot_free_text_get_callout_line: |
| * @poppler_annot: a #PopplerAnnotFreeText |
| * |
| * Retrieves a #PopplerCalloutLine of four or six numbers specifying a callout |
| * line attached to the @poppler_annot. |
| * |
| * Return value: a new allocated #PopplerCalloutLine if the annot has a callout |
| * line, NULL in other case. It must be freed with g_free() when |
| * done. |
| **/ |
| PopplerAnnotCalloutLine * |
| poppler_annot_free_text_get_callout_line (PopplerAnnotFreeText *poppler_annot) |
| { |
| AnnotFreeText *annot; |
| AnnotCalloutLine *line; |
| |
| g_return_val_if_fail (POPPLER_IS_ANNOT_FREE_TEXT (poppler_annot), NULL); |
| |
| annot = static_cast<AnnotFreeText *>(POPPLER_ANNOT (poppler_annot)->annot); |
| |
| if ((line = annot->getCalloutLine ())) { |
| AnnotCalloutMultiLine *multiline; |
| PopplerAnnotCalloutLine *callout = g_new0 (PopplerAnnotCalloutLine, 1); |
| |
| callout->x1 = line->getX1(); |
| callout->y1 = line->getY1(); |
| callout->x2 = line->getX2(); |
| callout->y2 = line->getY2(); |
| |
| if ((multiline = static_cast<AnnotCalloutMultiLine *>(line))) { |
| callout->multiline = TRUE; |
| callout->x3 = multiline->getX3(); |
| callout->y3 = multiline->getY3(); |
| return callout; |
| } |
| |
| callout->multiline = FALSE; |
| return callout; |
| } |
| |
| return NULL; |
| } |
| |
| /* PopplerAnnotCalloutLine */ |
| GType |
| poppler_annot_callout_line_get_type (void) |
| { |
| static GType our_type = 0; |
| |
| if (our_type == 0) |
| our_type = g_boxed_type_register_static ("PopplerAnnotCalloutLine", |
| (GBoxedCopyFunc) poppler_annot_callout_line_copy, |
| (GBoxedFreeFunc) poppler_annot_callout_line_free); |
| |
| return our_type; |
| } |
| |
| /** |
| * poppler_annot_callout_line_new: |
| * |
| * Creates a new empty #PopplerAnnotCalloutLine. |
| * |
| * Return value: a new allocated #PopplerAnnotCalloutLine, NULL in other case. |
| * It must be freed when done. |
| **/ |
| PopplerAnnotCalloutLine * |
| poppler_annot_callout_line_new (void) |
| { |
| return g_new0 (PopplerAnnotCalloutLine, 1); |
| } |
| |
| /** |
| * poppler_annot_callout_line_copy: |
| * @callout: the #PopplerAnnotCalloutline to be copied. |
| * |
| * It does copy @callout to a new #PopplerAnnotCalloutLine. |
| * |
| * Return value: a new allocated #PopplerAnnotCalloutLine as exact copy of |
| * @callout, NULL in other case. It must be freed when done. |
| **/ |
| PopplerAnnotCalloutLine * |
| poppler_annot_callout_line_copy (PopplerAnnotCalloutLine *callout) |
| { |
| PopplerAnnotCalloutLine *new_callout; |
| |
| g_return_val_if_fail (callout != NULL, NULL); |
| |
| new_callout = g_new0 (PopplerAnnotCalloutLine, 1); |
| *new_callout = *callout; |
| |
| return new_callout; |
| } |
| |
| /** |
| * poppler_annot_callout_line_free: |
| * @callout: a #PopplerAnnotCalloutLine |
| * |
| * Frees the memory used by #PopplerAnnotCalloutLine. |
| **/ |
| void |
| poppler_annot_callout_line_free (PopplerAnnotCalloutLine *callout) |
| { |
| g_free (callout); |
| } |