/* 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__ */
