blob: 05cef08e3a4cb76b7aabe96dd635af2927969f86 [file] [log] [blame]
/* poppler-structure-element.h: glib interface to poppler
*
* Copyright (C) 2013 Igalia S.L.
*
* 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_STRUCTURE_ELEMENT_H__
#define __POPPLER_STRUCTURE_ELEMENT_H__
#include <glib-object.h>
#include "poppler.h"
G_BEGIN_DECLS
#define POPPLER_TYPE_STRUCTURE_ELEMENT (poppler_structure_element_get_type())
#define POPPLER_STRUCTURE_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), POPPLER_TYPE_STRUCTURE_ELEMENT, PopplerStructureElement))
#define POPPLER_IS_STRUCTURE_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), POPPLER_TYPE_STRUCTURE_ELEMENT))
/**
* PopplerStructureElementKind:
*/
typedef enum
{
POPPLER_STRUCTURE_ELEMENT_CONTENT,
POPPLER_STRUCTURE_ELEMENT_OBJECT_REFERENCE,
POPPLER_STRUCTURE_ELEMENT_DOCUMENT,
POPPLER_STRUCTURE_ELEMENT_PART,
POPPLER_STRUCTURE_ELEMENT_ARTICLE,
POPPLER_STRUCTURE_ELEMENT_SECTION,
POPPLER_STRUCTURE_ELEMENT_DIV,
POPPLER_STRUCTURE_ELEMENT_SPAN,
POPPLER_STRUCTURE_ELEMENT_QUOTE,
POPPLER_STRUCTURE_ELEMENT_NOTE,
POPPLER_STRUCTURE_ELEMENT_REFERENCE,
POPPLER_STRUCTURE_ELEMENT_BIBENTRY,
POPPLER_STRUCTURE_ELEMENT_CODE,
POPPLER_STRUCTURE_ELEMENT_LINK,
POPPLER_STRUCTURE_ELEMENT_ANNOT,
POPPLER_STRUCTURE_ELEMENT_BLOCKQUOTE,
POPPLER_STRUCTURE_ELEMENT_CAPTION,
POPPLER_STRUCTURE_ELEMENT_NONSTRUCT,
POPPLER_STRUCTURE_ELEMENT_TOC,
POPPLER_STRUCTURE_ELEMENT_TOC_ITEM,
POPPLER_STRUCTURE_ELEMENT_INDEX,
POPPLER_STRUCTURE_ELEMENT_PRIVATE,
POPPLER_STRUCTURE_ELEMENT_PARAGRAPH,
POPPLER_STRUCTURE_ELEMENT_HEADING,
POPPLER_STRUCTURE_ELEMENT_HEADING_1,
POPPLER_STRUCTURE_ELEMENT_HEADING_2,
POPPLER_STRUCTURE_ELEMENT_HEADING_3,
POPPLER_STRUCTURE_ELEMENT_HEADING_4,
POPPLER_STRUCTURE_ELEMENT_HEADING_5,
POPPLER_STRUCTURE_ELEMENT_HEADING_6,
POPPLER_STRUCTURE_ELEMENT_LIST,
POPPLER_STRUCTURE_ELEMENT_LIST_ITEM,
POPPLER_STRUCTURE_ELEMENT_LIST_LABEL,
POPPLER_STRUCTURE_ELEMENT_LIST_BODY,
POPPLER_STRUCTURE_ELEMENT_TABLE,
POPPLER_STRUCTURE_ELEMENT_TABLE_ROW,
POPPLER_STRUCTURE_ELEMENT_TABLE_HEADING,
POPPLER_STRUCTURE_ELEMENT_TABLE_DATA,
POPPLER_STRUCTURE_ELEMENT_TABLE_HEADER,
POPPLER_STRUCTURE_ELEMENT_TABLE_FOOTER,
POPPLER_STRUCTURE_ELEMENT_TABLE_BODY,
POPPLER_STRUCTURE_ELEMENT_RUBY,
POPPLER_STRUCTURE_ELEMENT_RUBY_BASE_TEXT,
POPPLER_STRUCTURE_ELEMENT_RUBY_ANNOT_TEXT,
POPPLER_STRUCTURE_ELEMENT_RUBY_PUNCTUATION,
POPPLER_STRUCTURE_ELEMENT_WARICHU,
POPPLER_STRUCTURE_ELEMENT_WARICHU_TEXT,
POPPLER_STRUCTURE_ELEMENT_WARICHU_PUNCTUATION,
POPPLER_STRUCTURE_ELEMENT_FIGURE,
POPPLER_STRUCTURE_ELEMENT_FORMULA,
POPPLER_STRUCTURE_ELEMENT_FORM,
} PopplerStructureElementKind;
/**
* PopplerStructureGetTextFlags:
* @POPPLER_STRUCTURE_GET_TEXT_NONE: No flags.
* @POPPLER_STRUCTURE_GET_TEXT_RECURSIVE: For non-leaf, non-content
* elements, recursively obtain the text from all the elements
* enclosed in the subtree.
*/
typedef enum
{
POPPLER_STRUCTURE_GET_TEXT_NONE = 0,
POPPLER_STRUCTURE_GET_TEXT_RECURSIVE = (1 << 0),
} PopplerStructureGetTextFlags;
/**
* PopplerStructurePlacement:
*/
typedef enum
{
POPPLER_STRUCTURE_PLACEMENT_BLOCK,
POPPLER_STRUCTURE_PLACEMENT_INLINE,
POPPLER_STRUCTURE_PLACEMENT_BEFORE,
POPPLER_STRUCTURE_PLACEMENT_START,
POPPLER_STRUCTURE_PLACEMENT_END,
} PopplerStructurePlacement;
/**
* PopplerStructureWritingMode:
*/
typedef enum
{
POPPLER_STRUCTURE_WRITING_MODE_LR_TB,
POPPLER_STRUCTURE_WRITING_MODE_RL_TB,
POPPLER_STRUCTURE_WRITING_MODE_TB_RL,
} PopplerStructureWritingMode;
/**
* PopplerStructureBorderStyle:
*/
typedef enum
{
POPPLER_STRUCTURE_BORDER_STYLE_NONE,
POPPLER_STRUCTURE_BORDER_STYLE_HIDDEN,
POPPLER_STRUCTURE_BORDER_STYLE_DOTTED,
POPPLER_STRUCTURE_BORDER_STYLE_DASHED,
POPPLER_STRUCTURE_BORDER_STYLE_SOLID,
POPPLER_STRUCTURE_BORDER_STYLE_DOUBLE,
POPPLER_STRUCTURE_BORDER_STYLE_GROOVE,
POPPLER_STRUCTURE_BORDER_STYLE_INSET,
POPPLER_STRUCTURE_BORDER_STYLE_OUTSET,
} PopplerStructureBorderStyle;
/**
* PopplerStructureTextAlign:
*/
typedef enum
{
POPPLER_STRUCTURE_TEXT_ALIGN_START,
POPPLER_STRUCTURE_TEXT_ALIGN_CENTER,
POPPLER_STRUCTURE_TEXT_ALIGN_END,
POPPLER_STRUCTURE_TEXT_ALIGN_JUSTIFY,
} PopplerStructureTextAlign;
/**
* PopplerStructureBlockAlign:
*/
typedef enum
{
POPPLER_STRUCTURE_BLOCK_ALIGN_BEFORE,
POPPLER_STRUCTURE_BLOCK_ALIGN_MIDDLE,
POPPLER_STRUCTURE_BLOCK_ALIGN_AFTER,
POPPLER_STRUCTURE_BLOCK_ALIGN_JUSTIFY,
} PopplerStructureBlockAlign;
/**
* PopplerStructureInlineAlign:
*/
typedef enum
{
POPPLER_STRUCTURE_INLINE_ALIGN_START,
POPPLER_STRUCTURE_INLINE_ALIGN_CENTER,
POPPLER_STRUCTURE_INLINE_ALIGN_END,
} PopplerStructureInlineAlign;
/**
* PopplerStructureTextDecoration:
*/
typedef enum
{
POPPLER_STRUCTURE_TEXT_DECORATION_NONE,
POPPLER_STRUCTURE_TEXT_DECORATION_UNDERLINE,
POPPLER_STRUCTURE_TEXT_DECORATION_OVERLINE,
POPPLER_STRUCTURE_TEXT_DECORATION_LINETHROUGH,
} PopplerStructureTextDecoration;
/**
* PopplerStructureRubyAlign:
*/
typedef enum
{
POPPLER_STRUCTURE_RUBY_ALIGN_START,
POPPLER_STRUCTURE_RUBY_ALIGN_CENTER,
POPPLER_STRUCTURE_RUBY_ALIGN_END,
POPPLER_STRUCTURE_RUBY_ALIGN_JUSTIFY,
POPPLER_STRUCTURE_RUBY_ALIGN_DISTRIBUTE,
} PopplerStructureRubyAlign;
/**
* PopplerStructureRubyPosition:
*/
typedef enum
{
POPPLER_STRUCTURE_RUBY_POSITION_BEFORE,
POPPLER_STRUCTURE_RUBY_POSITION_AFTER,
POPPLER_STRUCTURE_RUBY_POSITION_WARICHU,
POPPLER_STRUCTURE_RUBY_POSITION_INLINE,
} PopplerStructureRubyPosition;
/**
* PopplerStructureGlyphOrientation:
*/
typedef enum
{
POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO,
POPPLER_STRUCTURE_GLYPH_ORIENTATION_0 = POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO,
POPPLER_STRUCTURE_GLYPH_ORIENTATION_90,
POPPLER_STRUCTURE_GLYPH_ORIENTATION_180,
POPPLER_STRUCTURE_GLYPH_ORIENTATION_270,
} PopplerStructureGlyphOrientation;
/**
* PopplerStructureListNumbering:
*/
typedef enum
{
POPPLER_STRUCTURE_LIST_NUMBERING_NONE,
POPPLER_STRUCTURE_LIST_NUMBERING_DISC,
POPPLER_STRUCTURE_LIST_NUMBERING_CIRCLE,
POPPLER_STRUCTURE_LIST_NUMBERING_SQUARE,
POPPLER_STRUCTURE_LIST_NUMBERING_DECIMAL,
POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ROMAN,
POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ROMAN,
POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ALPHA,
POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ALPHA,
} PopplerStructureListNumbering;
/**
* PopplerStructureFormRole:
*/
typedef enum
{
POPPLER_STRUCTURE_FORM_ROLE_UNDEFINED,
POPPLER_STRUCTURE_FORM_ROLE_RADIO_BUTTON,
POPPLER_STRUCTURE_FORM_ROLE_PUSH_BUTTON,
POPPLER_STRUCTURE_FORM_ROLE_TEXT_VALUE,
POPPLER_STRUCTURE_FORM_ROLE_CHECKBOX,
} PopplerStructureFormRole;
/**
* PopplerStructureFormState:
*/
typedef enum
{
POPPLER_STRUCTURE_FORM_STATE_ON,
POPPLER_STRUCTURE_FORM_STATE_OFF,
POPPLER_STRUCTURE_FORM_STATE_NEUTRAL,
} PopplerStructureFormState;
/**
* PopplerStructureTableScope:
*/
typedef enum
{
POPPLER_STRUCTURE_TABLE_SCOPE_ROW,
POPPLER_STRUCTURE_TABLE_SCOPE_COLUMN,
POPPLER_STRUCTURE_TABLE_SCOPE_BOTH,
} PopplerStructureTableScope;
POPPLER_PUBLIC
GType poppler_structure_element_get_type(void) G_GNUC_CONST;
POPPLER_PUBLIC
PopplerStructureElementKind poppler_structure_element_get_kind(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gint poppler_structure_element_get_page(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_is_content(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_is_inline(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_is_block(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_is_grouping(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_id(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_title(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_abbreviation(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_language(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_text(PopplerStructureElement *poppler_structure_element, PopplerStructureGetTextFlags flags);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_alt_text(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_actual_text(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerTextSpan **poppler_structure_element_get_text_spans(PopplerStructureElement *poppler_structure_element, guint *n_text_spans);
POPPLER_PUBLIC
PopplerStructurePlacement poppler_structure_element_get_placement(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureWritingMode poppler_structure_element_get_writing_mode(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_background_color(PopplerStructureElement *poppler_structure_element, PopplerColor *color);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_border_color(PopplerStructureElement *poppler_structure_element, PopplerColor *colors);
POPPLER_PUBLIC
void poppler_structure_element_get_border_style(PopplerStructureElement *poppler_structure_element, PopplerStructureBorderStyle *border_styles);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_border_thickness(PopplerStructureElement *poppler_structure_element, gdouble *border_thicknesses);
POPPLER_PUBLIC
void poppler_structure_element_get_padding(PopplerStructureElement *poppler_structure_element, gdouble *paddings);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_color(PopplerStructureElement *poppler_structure_element, PopplerColor *color);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_space_before(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_space_after(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_start_indent(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_end_indent(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_text_indent(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureTextAlign poppler_structure_element_get_text_align(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_bounding_box(PopplerStructureElement *poppler_structure_element, PopplerRectangle *bounding_box);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_width(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_height(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureBlockAlign poppler_structure_element_get_block_align(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureInlineAlign poppler_structure_element_get_inline_align(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
void poppler_structure_element_get_table_border_style(PopplerStructureElement *poppler_structure_element, PopplerStructureBorderStyle *border_styles);
POPPLER_PUBLIC
void poppler_structure_element_get_table_padding(PopplerStructureElement *poppler_structure_element, gdouble *paddings);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_baseline_shift(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_line_height(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gboolean poppler_structure_element_get_text_decoration_color(PopplerStructureElement *poppler_structure_element, PopplerColor *color);
POPPLER_PUBLIC
gdouble poppler_structure_element_get_text_decoration_thickness(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureTextDecoration poppler_structure_element_get_text_decoration_type(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureRubyAlign poppler_structure_element_get_ruby_align(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureRubyPosition poppler_structure_element_get_ruby_position(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureGlyphOrientation poppler_structure_element_get_glyph_orientation(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
guint poppler_structure_element_get_column_count(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gdouble *poppler_structure_element_get_column_gaps(PopplerStructureElement *poppler_structure_element, guint *n_values);
POPPLER_PUBLIC
gdouble *poppler_structure_element_get_column_widths(PopplerStructureElement *poppler_structure_element, guint *n_values);
POPPLER_PUBLIC
PopplerStructureListNumbering poppler_structure_element_get_list_numbering(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureFormRole poppler_structure_element_get_form_role(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureFormState poppler_structure_element_get_form_state(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_form_description(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
guint poppler_structure_element_get_table_row_span(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
guint poppler_structure_element_get_table_column_span(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar **poppler_structure_element_get_table_headers(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
PopplerStructureTableScope poppler_structure_element_get_table_scope(PopplerStructureElement *poppler_structure_element);
POPPLER_PUBLIC
gchar *poppler_structure_element_get_table_summary(PopplerStructureElement *poppler_structure_element);
#define POPPLER_TYPE_STRUCTURE_ELEMENT_ITER (poppler_structure_element_iter_get_type())
POPPLER_PUBLIC
GType poppler_structure_element_iter_get_type(void) G_GNUC_CONST;
POPPLER_PUBLIC
PopplerStructureElementIter *poppler_structure_element_iter_new(PopplerDocument *poppler_document);
POPPLER_PUBLIC
PopplerStructureElementIter *poppler_structure_element_iter_get_child(PopplerStructureElementIter *parent);
POPPLER_PUBLIC
PopplerStructureElementIter *poppler_structure_element_iter_copy(PopplerStructureElementIter *iter);
POPPLER_PUBLIC
PopplerStructureElement *poppler_structure_element_iter_get_element(PopplerStructureElementIter *iter);
POPPLER_PUBLIC
gboolean poppler_structure_element_iter_next(PopplerStructureElementIter *iter);
POPPLER_PUBLIC
void poppler_structure_element_iter_free(PopplerStructureElementIter *iter);
#define POPPLER_TYPE_TEXT_SPAN (poppler_text_span_get_type())
POPPLER_PUBLIC
GType poppler_text_span_get_type(void) G_GNUC_CONST;
POPPLER_PUBLIC
PopplerTextSpan *poppler_text_span_copy(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
void poppler_text_span_free(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
gboolean poppler_text_span_is_fixed_width_font(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
gboolean poppler_text_span_is_serif_font(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
gboolean poppler_text_span_is_bold_font(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
void poppler_text_span_get_color(PopplerTextSpan *poppler_text_span, PopplerColor *color);
POPPLER_PUBLIC
const gchar *poppler_text_span_get_text(PopplerTextSpan *poppler_text_span);
POPPLER_PUBLIC
const gchar *poppler_text_span_get_font_name(PopplerTextSpan *poppler_text_span);
G_END_DECLS
#endif /* !__POPPLER_STRUCTURE_ELEMENT_H__ */