/* poppler-action.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_ACTION_H__ #define __POPPLER_ACTION_H__ #include #include "poppler.h" G_BEGIN_DECLS /** * PopplerActionType: * @POPPLER_ACTION_UNKNOWN: unknown action * @POPPLER_ACTION_NONE: no action specified * @POPPLER_ACTION_GOTO_DEST: go to destination * @POPPLER_ACTION_GOTO_REMOTE: go to destination in another document * @POPPLER_ACTION_LAUNCH: launch app (or open document * @POPPLER_ACTION_URI: URI * @POPPLER_ACTION_NAMED: predefined action * @POPPLER_ACTION_MOVIE: play movies. Since 0.14 * @POPPLER_ACTION_RENDITION: play multimedia content. Since 0.14 * @POPPLER_ACTION_OCG_STATE: state of layer. Since 0.14 * @POPPLER_ACTION_JAVASCRIPT: Javascript. Since 0.18 * * Action types */ typedef enum { POPPLER_ACTION_UNKNOWN, /* unknown action */ POPPLER_ACTION_NONE, /* no action specified */ POPPLER_ACTION_GOTO_DEST, /* go to destination */ POPPLER_ACTION_GOTO_REMOTE, /* go to destination in new file */ POPPLER_ACTION_LAUNCH, /* launch app (or open document) */ POPPLER_ACTION_URI, /* URI */ POPPLER_ACTION_NAMED, /* named action*/ POPPLER_ACTION_MOVIE, /* movie action */ POPPLER_ACTION_RENDITION, /* rendition action */ POPPLER_ACTION_OCG_STATE, /* Set-OCG-State action */ POPPLER_ACTION_JAVASCRIPT /* Javascript action */ } PopplerActionType; /** * PopplerDestType: * @POPPLER_DEST_UNKNOWN: unknown destination * @POPPLER_DEST_XYZ: go to page with coordinates (left, top) * positioned at the upper-left corner of the window and the contents of * the page magnified by the factor zoom * @POPPLER_DEST_FIT: go to page with its contents magnified just * enough to fit the entire page within the window both horizontally and * vertically * @POPPLER_DEST_FITH: go to page with the vertical coordinate top * positioned at the top edge of the window and the contents of the page * magnified just enough to fit the entire width of the page within the window * @POPPLER_DEST_FITV: go to page with the horizontal coordinate * left positioned at the left edge of the window and the contents of the * page magnified just enough to fit the entire height of the page within the window * @POPPLER_DEST_FITR: go to page with its contents magnified just * enough to fit the rectangle specified by the coordinates left, bottom, * right, and top entirely within the window both horizontally and vertically * @POPPLER_DEST_FITB: go to page with its contents magnified just enough to fit * its bounding box entirely within the window both horizontally and vertically * @POPPLER_DEST_FITBH: go to page with the vertical * coordinate top positioned at the top edge of the window and the * contents of the page magnified just enough to fit the entire width of its * bounding box within the window * @POPPLER_DEST_FITBV: go to page with the horizontal * coordinate left positioned at the left edge of the window and the * contents of the page magnified just enough to fit the entire height of its * bounding box within the window * @POPPLER_DEST_NAMED: got to page specified by a name. See poppler_document_find_dest() * * Destination types */ typedef enum { POPPLER_DEST_UNKNOWN, POPPLER_DEST_XYZ, POPPLER_DEST_FIT, POPPLER_DEST_FITH, POPPLER_DEST_FITV, POPPLER_DEST_FITR, POPPLER_DEST_FITB, POPPLER_DEST_FITBH, POPPLER_DEST_FITBV, POPPLER_DEST_NAMED } PopplerDestType; /** * PopplerActionMovieOperation: * @POPPLER_ACTION_MOVIE_PLAY: play movie * @POPPLER_ACTION_MOVIE_PAUSE: pause playing movie * @POPPLER_ACTION_MOVIE_RESUME: resume paused movie * @POPPLER_ACTION_MOVIE_STOP: stop playing movie * * Movie operations * * Since: 0.14 */ typedef enum { POPPLER_ACTION_MOVIE_PLAY, POPPLER_ACTION_MOVIE_PAUSE, POPPLER_ACTION_MOVIE_RESUME, POPPLER_ACTION_MOVIE_STOP } PopplerActionMovieOperation; /** * PopplerActionLayerAction: * @POPPLER_ACTION_LAYER_ON: set layer visibility on * @POPPLER_ACTION_LAYER_OFF: set layer visibility off * @POPPLER_ACTION_LAYER_TOGGLE: reverse the layer visibility state * * Layer actions * * Since: 0.14 */ typedef enum { POPPLER_ACTION_LAYER_ON, POPPLER_ACTION_LAYER_OFF, POPPLER_ACTION_LAYER_TOGGLE } PopplerActionLayerAction; /* Define the PopplerAction types */ typedef struct _PopplerActionAny PopplerActionAny; typedef struct _PopplerActionGotoDest PopplerActionGotoDest; typedef struct _PopplerActionGotoRemote PopplerActionGotoRemote; typedef struct _PopplerActionLaunch PopplerActionLaunch; typedef struct _PopplerActionUri PopplerActionUri; typedef struct _PopplerActionNamed PopplerActionNamed; typedef struct _PopplerActionMovie PopplerActionMovie; typedef struct _PopplerActionRendition PopplerActionRendition; typedef struct _PopplerActionOCGState PopplerActionOCGState; typedef struct _PopplerActionJavascript PopplerActionJavascript; /** * PopplerDest: * @type: type of destination * @page_num: page number * @left: left coordinate * @bottom: bottom coordinate * @right: right coordinate * @top: top coordinate * @zoom: scale factor * @named_dest: name of the destination (#POPPLER_DEST_NAMED only) * @change_left: whether left coordinate should be changed * @change_top: whether top coordinate should be changed * @change_zoom: whether scale factor should be changed * * Data structure for holding a destination * * Note that @named_dest is the string representation of the named * destination. This is the right form to pass to poppler functions, * e.g. poppler_document_find_dest(), but to get the destination as * it appears in the PDF itself, you need to convert it to a bytestring * with poppler_named_dest_to_bytestring() first. * Also note that @named_dest does not have a defined encoding and * is not in a form suitable to be displayed to the user. */ struct _PopplerDest { PopplerDestType type; int page_num; double left; double bottom; double right; double top; double zoom; gchar *named_dest; guint change_left : 1; guint change_top : 1; guint change_zoom : 1; }; /** * PopplerActionLayer: * @action: a #PopplerActionLayerAction * @layers: list of #PopplerLayers * * Action to perform over a list of layers */ struct _PopplerActionLayer { PopplerActionLayerAction action; GList *layers; }; struct _PopplerActionAny { PopplerActionType type; gchar *title; }; struct _PopplerActionGotoDest { PopplerActionType type; gchar *title; PopplerDest *dest; }; struct _PopplerActionGotoRemote { PopplerActionType type; gchar *title; gchar *file_name; PopplerDest *dest; }; struct _PopplerActionLaunch { PopplerActionType type; gchar *title; gchar *file_name; gchar *params; }; struct _PopplerActionUri { PopplerActionType type; gchar *title; char *uri; }; struct _PopplerActionNamed { PopplerActionType type; gchar *title; gchar *named_dest; }; struct _PopplerActionMovie { PopplerActionType type; gchar *title; PopplerActionMovieOperation operation; PopplerMovie *movie; }; struct _PopplerActionRendition { PopplerActionType type; gchar *title; gint op; PopplerMedia *media; }; struct _PopplerActionOCGState { PopplerActionType type; gchar *title; GList *state_list; }; struct _PopplerActionJavascript { PopplerActionType type; gchar *title; gchar *script; }; /** * PopplerAction: * * A data structure for holding actions */ union _PopplerAction { PopplerActionType type; PopplerActionAny any; PopplerActionGotoDest goto_dest; PopplerActionGotoRemote goto_remote; PopplerActionLaunch launch; PopplerActionUri uri; PopplerActionNamed named; PopplerActionMovie movie; PopplerActionRendition rendition; PopplerActionOCGState ocg_state; PopplerActionJavascript javascript; }; #define POPPLER_TYPE_ACTION (poppler_action_get_type ()) #define POPPLER_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_ACTION, PopplerAction)) POPPLER_PUBLIC GType poppler_action_get_type (void) G_GNUC_CONST; POPPLER_PUBLIC void poppler_action_free (PopplerAction *action); POPPLER_PUBLIC PopplerAction *poppler_action_copy (PopplerAction *action); #define POPPLER_TYPE_DEST (poppler_dest_get_type ()) POPPLER_PUBLIC GType poppler_dest_get_type (void) G_GNUC_CONST; POPPLER_PUBLIC void poppler_dest_free (PopplerDest *dest); POPPLER_PUBLIC PopplerDest *poppler_dest_copy (PopplerDest *dest); POPPLER_PUBLIC char *poppler_named_dest_from_bytestring (const guint8 *data, gsize length); POPPLER_PUBLIC guint8 *poppler_named_dest_to_bytestring (const char *named_dest, gsize *length); G_END_DECLS #endif /* __POPPLER_GLIB_H__ */