| /* poppler-page.h: glib interface to poppler | 
 |  * Copyright (C) 2004, Red Hat, Inc. | 
 |  * | 
 |  * 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. | 
 |  */ | 
 |  | 
 | #ifndef __POPPLER_PAGE_H__ | 
 | #define __POPPLER_PAGE_H__ | 
 |  | 
 | #include <glib-object.h> | 
 |  | 
 | #include "poppler.h" | 
 |  | 
 | #include <cairo.h> | 
 |  | 
 | G_BEGIN_DECLS | 
 |  | 
 | #define POPPLER_TYPE_PAGE             (poppler_page_get_type ()) | 
 | #define POPPLER_PAGE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_PAGE, PopplerPage)) | 
 | #define POPPLER_IS_PAGE(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_PAGE)) | 
 |  | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType      	       poppler_page_get_type             (void) G_GNUC_CONST; | 
 |  | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_render               (PopplerPage        *page, | 
 | 							  cairo_t            *cairo); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_render_for_printing  (PopplerPage        *page, | 
 | 							  cairo_t            *cairo); | 
 | POPPLER_PUBLIC | 
 | void       poppler_page_render_for_printing_with_options (PopplerPage        *page, | 
 |                                                           cairo_t            *cairo, | 
 |                                                           PopplerPrintFlags   options); | 
 | POPPLER_PUBLIC | 
 | cairo_surface_t       *poppler_page_get_thumbnail        (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_render_selection     (PopplerPage        *page, | 
 | 							  cairo_t            *cairo, | 
 | 							  PopplerRectangle   *selection, | 
 | 							  PopplerRectangle   *old_selection, | 
 | 							  PopplerSelectionStyle style, | 
 | 							  PopplerColor       *glyph_color, | 
 | 							  PopplerColor       *background_color); | 
 |  | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_get_size             (PopplerPage        *page, | 
 | 							  double             *width, | 
 | 							  double             *height); | 
 | POPPLER_PUBLIC | 
 | int                    poppler_page_get_index            (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | gchar                 *poppler_page_get_label            (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | double                 poppler_page_get_duration         (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | PopplerPageTransition *poppler_page_get_transition       (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | gboolean               poppler_page_get_thumbnail_size   (PopplerPage        *page, | 
 | 							  int                *width, | 
 | 							  int                *height); | 
 | POPPLER_PUBLIC | 
 | GList             *poppler_page_find_text_with_options   (PopplerPage        *page, | 
 | 							  const  char        *text, | 
 | 							  PopplerFindFlags    options); | 
 | POPPLER_PUBLIC | 
 | GList     	      *poppler_page_find_text            (PopplerPage        *page, | 
 | 							  const  char        *text); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_render_to_ps         (PopplerPage        *page, | 
 | 							  PopplerPSFile      *ps_file); | 
 | POPPLER_PUBLIC | 
 | char                  *poppler_page_get_text             (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | char                  *poppler_page_get_text_for_area    (PopplerPage        *page, | 
 |                                                           PopplerRectangle   *area); | 
 | POPPLER_PUBLIC | 
 | char                  *poppler_page_get_selected_text    (PopplerPage        *page, | 
 | 							  PopplerSelectionStyle style, | 
 | 							  PopplerRectangle   *selection); | 
 | POPPLER_PUBLIC | 
 | cairo_region_t        *poppler_page_get_selected_region  (PopplerPage        *page, | 
 |                                                           gdouble             scale, | 
 |                                                           PopplerSelectionStyle  style, | 
 |                                                           PopplerRectangle   *selection); | 
 | POPPLER_PUBLIC | 
 | GList                 *poppler_page_get_selection_region (PopplerPage        *page, | 
 | 							  gdouble             scale, | 
 | 							  PopplerSelectionStyle style, | 
 | 							  PopplerRectangle   *selection); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_selection_region_free(GList              *region); | 
 | POPPLER_PUBLIC | 
 | GList                 *poppler_page_get_link_mapping     (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_free_link_mapping    (GList              *list); | 
 | POPPLER_PUBLIC | 
 | GList                 *poppler_page_get_image_mapping    (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_free_image_mapping   (GList              *list); | 
 | POPPLER_PUBLIC | 
 | cairo_surface_t       *poppler_page_get_image            (PopplerPage        *page, | 
 | 							  gint                image_id); | 
 | POPPLER_PUBLIC | 
 | GList              *poppler_page_get_form_field_mapping  (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                poppler_page_free_form_field_mapping (GList              *list); | 
 | POPPLER_PUBLIC | 
 | GList                 *poppler_page_get_annot_mapping    (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_free_annot_mapping   (GList              *list); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_add_annot            (PopplerPage        *page, | 
 | 							  PopplerAnnot       *annot); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_remove_annot         (PopplerPage        *page, | 
 |                                                           PopplerAnnot       *annot); | 
 | POPPLER_PUBLIC | 
 | void 		      poppler_page_get_crop_box 	 (PopplerPage        *page, | 
 | 							  PopplerRectangle   *rect); | 
 | POPPLER_PUBLIC | 
 | gboolean               poppler_page_get_text_layout      (PopplerPage        *page, | 
 |                                                           PopplerRectangle  **rectangles, | 
 |                                                           guint              *n_rectangles); | 
 | POPPLER_PUBLIC | 
 | gboolean           poppler_page_get_text_layout_for_area (PopplerPage        *page, | 
 |                                                           PopplerRectangle   *area, | 
 |                                                           PopplerRectangle  **rectangles, | 
 |                                                           guint              *n_rectangles); | 
 | POPPLER_PUBLIC | 
 | GList                 *poppler_page_get_text_attributes  (PopplerPage        *page); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_free_text_attributes (GList              *list); | 
 | POPPLER_PUBLIC | 
 | GList *        poppler_page_get_text_attributes_for_area (PopplerPage        *page, | 
 |                                                           PopplerRectangle   *area); | 
 |  | 
 | /* A rectangle on a page, with coordinates in PDF points. */ | 
 | #define POPPLER_TYPE_RECTANGLE             (poppler_rectangle_get_type ()) | 
 | /** | 
 |  * PopplerRectangle: | 
 |  * @x1: x coordinate of lower left corner | 
 |  * @y1: y coordinate of lower left corner | 
 |  * @x2: x coordinate of upper right corner | 
 |  * @y2: y coordinate of upper right corner | 
 |  * | 
 |  * A #PopplerRectangle is used to describe | 
 |  * locations on a page and bounding boxes | 
 |  */ | 
 | struct _PopplerRectangle | 
 | { | 
 |   gdouble x1; | 
 |   gdouble y1; | 
 |   gdouble x2; | 
 |   gdouble y2; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType             poppler_rectangle_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerRectangle *poppler_rectangle_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerRectangle *poppler_rectangle_copy     (PopplerRectangle *rectangle); | 
 | POPPLER_PUBLIC | 
 | void              poppler_rectangle_free     (PopplerRectangle *rectangle); | 
 |  | 
 | /* A point on a page, with coordinates in PDF points. */ | 
 | #define POPPLER_TYPE_POINT             (poppler_point_get_type ()) | 
 | /** | 
 |  * PopplerPoint: | 
 |  * @x: x coordinate | 
 |  * @y: y coordinate | 
 |  * | 
 |  * A #PopplerPoint is used to describe a location point on a page | 
 |  */ | 
 | struct _PopplerPoint | 
 | { | 
 |   gdouble x; | 
 |   gdouble y; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType             poppler_point_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerPoint     *poppler_point_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerPoint     *poppler_point_copy     (PopplerPoint *point); | 
 | POPPLER_PUBLIC | 
 | void              poppler_point_free     (PopplerPoint *point); | 
 |  | 
 | /* PopplerQuadrilateral */ | 
 |  | 
 | /* A quadrilateral encompasses a word or group of contiguous words in the | 
 |  * text underlying the annotation. The coordinates for each quadrilateral are | 
 |  * given in the order x1 y1 x2 y2 x3 y3 x4 y4 specifying the quadrilateral’s four | 
 |  *  vertices in counterclockwise order */ | 
 |  | 
 | #define POPPLER_TYPE_QUADRILATERAL             (poppler_quadrilateral_get_type ()) | 
 | /** | 
 |  *  PopplerQuadrilateral: | 
 |  *  @p1: a #PopplerPoint with the first vertex coordinates | 
 |  *  @p2: a #PopplerPoint with the second vertex coordinates | 
 |  *  @p3: a #PopplerPoint with the third vertex coordinates | 
 |  *  @p4: a #PopplerPoint with the fourth vertex coordinates | 
 |  * | 
 |  *  A #PopplerQuadrilateral is used to describe rectangle-like polygon | 
 |  *  with arbitrary inclination on a page. | 
 |  * | 
 |  *  Since: 0.26 | 
 |  **/ | 
 | struct _PopplerQuadrilateral | 
 | { | 
 |   PopplerPoint p1; | 
 |   PopplerPoint p2; | 
 |   PopplerPoint p3; | 
 |   PopplerPoint p4; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                 poppler_quadrilateral_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerQuadrilateral *poppler_quadrilateral_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerQuadrilateral *poppler_quadrilateral_copy     (PopplerQuadrilateral *quad); | 
 | POPPLER_PUBLIC | 
 | void                 poppler_quadrilateral_free     (PopplerQuadrilateral *quad); | 
 |  | 
 | /* A color in RGB */ | 
 | #define POPPLER_TYPE_COLOR                 (poppler_color_get_type ()) | 
 |  | 
 | /** | 
 |  * PopplerColor: | 
 |  * @red: the red componment of color | 
 |  * @green: the green component of color | 
 |  * @blue: the blue component of color | 
 |  * | 
 |  * A #PopplerColor describes a RGB color. Color components | 
 |  * are values between 0 and 65535 | 
 |  */ | 
 | struct _PopplerColor | 
 | { | 
 |   guint16 red; | 
 |   guint16 green; | 
 |   guint16 blue; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType             poppler_color_get_type      (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerColor     *poppler_color_new           (void); | 
 | POPPLER_PUBLIC | 
 | PopplerColor     *poppler_color_copy          (PopplerColor *color); | 
 | POPPLER_PUBLIC | 
 | 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 #PopplerTextAttributes is used to describe text attributes of a range of text | 
 |  * | 
 |  * Since: 0.18 | 
 |  */ | 
 | struct _PopplerTextAttributes | 
 | { | 
 |   gchar *font_name; | 
 |   gdouble font_size; | 
 |   gboolean is_underlined; | 
 |   PopplerColor color; | 
 |  | 
 |   gint start_index; | 
 |   gint end_index; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                  poppler_text_attributes_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerTextAttributes *poppler_text_attributes_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerTextAttributes *poppler_text_attributes_copy     (PopplerTextAttributes *text_attrs); | 
 | POPPLER_PUBLIC | 
 | 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 ()) | 
 |  | 
 | /** | 
 |  * PopplerLinkMapping: | 
 |  * @area: a #PopplerRectangle representing an area of the page | 
 |  * @action: a #PopplerAction | 
 |  * | 
 |  * A #PopplerLinkMapping structure represents the location | 
 |  * of @action on the page | 
 |  */ | 
 | struct  _PopplerLinkMapping | 
 | { | 
 |   PopplerRectangle area; | 
 |   PopplerAction *action; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType               poppler_link_mapping_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerLinkMapping *poppler_link_mapping_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerLinkMapping *poppler_link_mapping_copy     (PopplerLinkMapping *mapping); | 
 | POPPLER_PUBLIC | 
 | void                poppler_link_mapping_free     (PopplerLinkMapping *mapping); | 
 |  | 
 | /* Page Transition */ | 
 | #define POPPLER_TYPE_PAGE_TRANSITION                (poppler_page_transition_get_type ()) | 
 |  | 
 | /** | 
 |  * PopplerPageTransition: | 
 |  * @type: the type of transtition | 
 |  * @alignment: the dimension in which the transition effect shall occur. | 
 |  * Only for #POPPLER_PAGE_TRANSITION_SPLIT and #POPPLER_PAGE_TRANSITION_BLINDS transition types | 
 |  * @direction: the direccion of motion for the transition effect. | 
 |  * Only for #POPPLER_PAGE_TRANSITION_SPLIT, #POPPLER_PAGE_TRANSITION_BOX and #POPPLER_PAGE_TRANSITION_FLY | 
 |  * transition types | 
 |  * @duration: the duration of the transition effect | 
 |  * @angle: the direction in which the specified transition effect shall moves, | 
 |  * expressed in degrees counterclockwise starting from a left-to-right direction. | 
 |  * Only for #POPPLER_PAGE_TRANSITION_WIPE, #POPPLER_PAGE_TRANSITION_GLITTER, #POPPLER_PAGE_TRANSITION_FLY, | 
 |  * #POPPLER_PAGE_TRANSITION_COVER, #POPPLER_PAGE_TRANSITION_UNCOVER and #POPPLER_PAGE_TRANSITION_PUSH | 
 |  * transition types | 
 |  * @scale: the starting or ending scale at which the changes shall be drawn. | 
 |  * Only for #POPPLER_PAGE_TRANSITION_FLY transition type | 
 |  * @rectangular: whether the area that will be flown is rectangular and opaque. | 
 |  * Only for #POPPLER_PAGE_TRANSITION_FLY transition type | 
 |  * | 
 |  * A #PopplerPageTransition structures describes a visual transition | 
 |  * to use when moving between pages during a presentation | 
 |  */ | 
 | struct _PopplerPageTransition | 
 | { | 
 |   PopplerPageTransitionType type; | 
 |   PopplerPageTransitionAlignment alignment; | 
 |   PopplerPageTransitionDirection direction; | 
 |   gint duration; | 
 |   gint angle; | 
 |   gdouble scale; | 
 |   gboolean rectangular; | 
 |   gdouble duration_real; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                  poppler_page_transition_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerPageTransition *poppler_page_transition_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerPageTransition *poppler_page_transition_copy     (PopplerPageTransition *transition); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_page_transition_free     (PopplerPageTransition *transition); | 
 |  | 
 | /* Mapping between areas on the current page and images */ | 
 | #define POPPLER_TYPE_IMAGE_MAPPING             (poppler_image_mapping_get_type ()) | 
 |  | 
 | /** | 
 |  * PopplerImageMapping: | 
 |  * @area: a #PopplerRectangle representing an area of the page | 
 |  * @image_id: an image identifier | 
 |  * | 
 |  * A #PopplerImageMapping structure represents the location | 
 |  * of an image on the page | 
 |  */ | 
 | struct  _PopplerImageMapping | 
 | { | 
 |   PopplerRectangle area; | 
 |   gint image_id;	 | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                  poppler_image_mapping_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerImageMapping   *poppler_image_mapping_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerImageMapping   *poppler_image_mapping_copy     (PopplerImageMapping *mapping); | 
 | POPPLER_PUBLIC | 
 | void                   poppler_image_mapping_free     (PopplerImageMapping *mapping); | 
 |  | 
 | /* Mapping between areas on the current page and form fields */ | 
 | #define POPPLER_TYPE_FORM_FIELD_MAPPING               (poppler_form_field_mapping_get_type ()) | 
 |  | 
 | /** | 
 |  * PopplerFormFieldMapping: | 
 |  * @area: a #PopplerRectangle representing an area of the page | 
 |  * @field: a #PopplerFormField | 
 |  * | 
 |  * A #PopplerFormFieldMapping structure represents the location | 
 |  * of @field on the page | 
 |  */ | 
 | struct  _PopplerFormFieldMapping | 
 | { | 
 |   PopplerRectangle area; | 
 |   PopplerFormField *field; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                    poppler_form_field_mapping_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerFormFieldMapping *poppler_form_field_mapping_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerFormFieldMapping *poppler_form_field_mapping_copy     (PopplerFormFieldMapping *mapping); | 
 | POPPLER_PUBLIC | 
 | void                     poppler_form_field_mapping_free     (PopplerFormFieldMapping *mapping); | 
 |  | 
 | /* Mapping between areas on the current page and annots */ | 
 | #define POPPLER_TYPE_ANNOT_MAPPING                  (poppler_annot_mapping_get_type ()) | 
 |  | 
 | /** | 
 |  * PopplerAnnotMapping: | 
 |  * @area: a #PopplerRectangle representing an area of the page | 
 |  * @annot: a #PopplerAnnot | 
 |  * | 
 |  * A #PopplerAnnotMapping structure represents the location | 
 |  * of @annot on the page | 
 |  */ | 
 | struct _PopplerAnnotMapping | 
 | { | 
 |   PopplerRectangle area; | 
 |   PopplerAnnot *annot; | 
 | }; | 
 |  | 
 | POPPLER_PUBLIC | 
 | GType                poppler_annot_mapping_get_type (void) G_GNUC_CONST; | 
 | POPPLER_PUBLIC | 
 | PopplerAnnotMapping *poppler_annot_mapping_new      (void); | 
 | POPPLER_PUBLIC | 
 | PopplerAnnotMapping *poppler_annot_mapping_copy     (PopplerAnnotMapping *mapping); | 
 | POPPLER_PUBLIC | 
 | void                 poppler_annot_mapping_free     (PopplerAnnotMapping *mapping); | 
 |  | 
 | G_END_DECLS | 
 |  | 
 | #endif /* __POPPLER_PAGE_H__ */ |