Update packages/ Add org-ref
This commit is contained in:
252
elpa/pdf-tools-20180428.827/build/server/epdfinfo.h
Normal file
252
elpa/pdf-tools-20180428.827/build/server/epdfinfo.h
Normal file
@@ -0,0 +1,252 @@
|
||||
// Copyright (C) 2013, 2014 Andreas Politz
|
||||
|
||||
// Author: Andreas Politz <politza@fh-trier.de>
|
||||
|
||||
// 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef _EPDF_H_
|
||||
#define _EPDF_H_ _EPDF_H_
|
||||
#include "config.h"
|
||||
#include <glib.h>
|
||||
#include <poppler.h>
|
||||
#include <png.h>
|
||||
|
||||
/* Some library functions print warnings to stdout, inhibit it. */
|
||||
#define DISCARD_STDOUT(saved_fd) \
|
||||
do { \
|
||||
int __fd; \
|
||||
fflush(stdout); \
|
||||
saved_fd = dup(1); \
|
||||
__fd = open("/dev/null", O_WRONLY); \
|
||||
dup2(__fd, 1); \
|
||||
close(__fd); \
|
||||
} while (0)
|
||||
|
||||
#define UNDISCARD_STDOUT(saved_fd) \
|
||||
do { \
|
||||
fflush(stdout); \
|
||||
dup2(saved_fd, 1); \
|
||||
close(saved_fd); \
|
||||
} while (0)
|
||||
|
||||
/* Writing responses */
|
||||
#define OK_BEGIN() \
|
||||
do { \
|
||||
puts("OK"); \
|
||||
} while (0)
|
||||
|
||||
#define OK_END() \
|
||||
do { \
|
||||
puts("."); \
|
||||
fflush (stdout); \
|
||||
} while (0)
|
||||
|
||||
#define OK() \
|
||||
do { \
|
||||
puts ("OK\n."); \
|
||||
fflush (stdout); \
|
||||
} while (0)
|
||||
|
||||
/* Dealing with image data. */
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define ARGB_TO_RGB(rgb, argb) \
|
||||
do { \
|
||||
rgb[0] = argb[1]; \
|
||||
rgb[1] = argb[2]; \
|
||||
rgb[2] = argb[3]; \
|
||||
} while (0)
|
||||
|
||||
#define ARGB_EQUAL(argb1, argb2) \
|
||||
(argb1[1] == argb2[1] \
|
||||
&& argb1[2] == argb2[2] \
|
||||
&& argb1[3] == argb2[3])
|
||||
|
||||
#else
|
||||
#define ARGB_TO_RGB(rgb, argb) \
|
||||
do { \
|
||||
rgb[0] = argb[2]; \
|
||||
rgb[1] = argb[1]; \
|
||||
rgb[2] = argb[0]; \
|
||||
} while (0)
|
||||
|
||||
#define ARGB_EQUAL(argb1, argb2) \
|
||||
(argb1[0] == argb2[0] \
|
||||
&& argb1[1] == argb2[1] \
|
||||
&& argb1[2] == argb2[2])
|
||||
#endif
|
||||
|
||||
#define NORMALIZE_PAGE_ARG(doc, first, last) \
|
||||
*first = MAX(1, *first); \
|
||||
if (*last <= 0) \
|
||||
*last = poppler_document_get_n_pages (doc); \
|
||||
else \
|
||||
*last = MIN(*last, poppler_document_get_n_pages (doc));
|
||||
|
||||
/* png_jmpbuf is supposed to be not available in older versions of
|
||||
libpng. */
|
||||
#ifndef png_jmpbuf
|
||||
# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_ERROR_H
|
||||
# define error(status, errno, fmt, args...) \
|
||||
do { \
|
||||
int error = (errno); \
|
||||
fflush (stdout); \
|
||||
fprintf (stderr, "%s: " fmt, PACKAGE_NAME, ## args); \
|
||||
if (error) \
|
||||
fprintf (stderr, ": %s", strerror (error)); \
|
||||
fprintf (stderr, "\n"); \
|
||||
exit (status); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define internal_error(fmt, args...) \
|
||||
error (2, 0, "internal error in %s: " fmt, __func__, ## args)
|
||||
|
||||
#define error_if_not(expr) \
|
||||
if (! (expr)) goto error;
|
||||
|
||||
#define perror_if_not(expr, fmt, args...) \
|
||||
do { \
|
||||
if (! (expr)) \
|
||||
{ \
|
||||
printf_error_response ((fmt), ## args); \
|
||||
goto error; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define cerror_if_not(expr, error_msg, fmt, args...) \
|
||||
do { \
|
||||
if (! (expr)) \
|
||||
{ \
|
||||
if (error_msg) \
|
||||
*(error_msg) = g_strdup_printf((fmt), ## args); \
|
||||
goto error; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Declare commands */
|
||||
#define DEC_CMD(name) \
|
||||
{#name, cmd_ ## name, cmd_ ## name ## _spec, \
|
||||
G_N_ELEMENTS (cmd_ ## name ## _spec)}
|
||||
|
||||
#define DEC_CMD2(command, name) \
|
||||
{name, cmd_ ## command, cmd_ ## command ## _spec, \
|
||||
G_N_ELEMENTS (cmd_ ## command ## _spec)}
|
||||
|
||||
/* Declare option */
|
||||
#define DEC_DOPT(name, type, sname) \
|
||||
{name, type, offsetof (document_options_t, sname)}
|
||||
|
||||
enum suffix_char { NONE, COLON, NEWLINE};
|
||||
|
||||
enum image_type { PPM, PNG };
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PopplerAnnotMapping *amap;
|
||||
gchar *key;
|
||||
} annotation_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ARG_INVALID = 0,
|
||||
ARG_DOC,
|
||||
ARG_BOOL,
|
||||
ARG_STRING,
|
||||
ARG_NONEMPTY_STRING,
|
||||
ARG_NATNUM,
|
||||
ARG_EDGE,
|
||||
ARG_EDGE_OR_NEGATIVE,
|
||||
ARG_EDGES,
|
||||
ARG_EDGES_OR_POSITION,
|
||||
ARG_COLOR,
|
||||
ARG_REST
|
||||
} command_arg_type_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
command_arg_type_t type;
|
||||
size_t offset;
|
||||
} document_option_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PopplerColor bg, fg;
|
||||
gboolean usecolors;
|
||||
gboolean printed;
|
||||
} render_options_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
render_options_t render;
|
||||
} document_options_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PopplerDocument *pdf;
|
||||
char *filename;
|
||||
char *passwd;
|
||||
struct
|
||||
{
|
||||
GHashTable *keys; /* key => page */
|
||||
GList **pages; /* page array */
|
||||
} annotations;
|
||||
document_options_t options;
|
||||
} document_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
command_arg_type_t type;
|
||||
union
|
||||
{
|
||||
gboolean flag;
|
||||
const char *string;
|
||||
long natnum;
|
||||
document_t *doc;
|
||||
gdouble edge;
|
||||
PopplerColor color;
|
||||
PopplerRectangle rectangle;
|
||||
#ifdef HAVE_POPPLER_ANNOT_MARKUP
|
||||
PopplerQuadrilateral quadrilateral;
|
||||
#endif
|
||||
struct
|
||||
{
|
||||
char * const *args;
|
||||
int nargs;
|
||||
} rest;
|
||||
} value;
|
||||
} command_arg_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GHashTable *documents;
|
||||
} epdfinfo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
void (* execute) (const epdfinfo_t *ctxt, const command_arg_t *args);
|
||||
const command_arg_type_t *args_spec;
|
||||
int nargs;
|
||||
} command_t;
|
||||
|
||||
/* Defined in poppler-hack.cc */
|
||||
#ifdef HAVE_POPPLER_ANNOT_WRITE
|
||||
extern void xpoppler_annot_set_rectangle (PopplerAnnot*, PopplerRectangle*);
|
||||
#endif
|
||||
extern gchar *xpoppler_annot_markup_get_created (PopplerAnnotMarkup*);
|
||||
#endif /* _EPDF_H_ */
|
||||
Reference in New Issue
Block a user