mirror of
https://github.com/reactos/reactos.git
synced 2024-09-10 21:04:26 +00:00
243 lines
6.5 KiB
C
243 lines
6.5 KiB
C
![]() |
/*
|
||
|
* Resource store
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_store_s pdf_store;
|
||
|
|
||
|
typedef enum pdf_itemkind_e
|
||
|
{
|
||
|
PDF_KCOLORSPACE,
|
||
|
PDF_KFUNCTION,
|
||
|
PDF_KXOBJECT,
|
||
|
PDF_KIMAGE,
|
||
|
PDF_KPATTERN,
|
||
|
PDF_KSHADE,
|
||
|
PDF_KCMAP,
|
||
|
PDF_KFONT
|
||
|
} pdf_itemkind;
|
||
|
|
||
|
fz_error *pdf_newstore(pdf_store **storep);
|
||
|
void pdf_emptystore(pdf_store *store);
|
||
|
void pdf_dropstore(pdf_store *store);
|
||
|
|
||
|
fz_error *pdf_storeitem(pdf_store *store, pdf_itemkind tag, fz_obj *key, void *val);
|
||
|
void *pdf_finditem(pdf_store *store, pdf_itemkind tag, fz_obj *key);
|
||
|
|
||
|
fz_error *pdf_loadresources(fz_obj **rdb, pdf_xref *xref, fz_obj *orig);
|
||
|
|
||
|
/*
|
||
|
* Functions
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_function_s pdf_function;
|
||
|
|
||
|
fz_error *pdf_loadfunction(pdf_function **func, pdf_xref *xref, fz_obj *ref);
|
||
|
fz_error *pdf_evalfunction(pdf_function *func, float *in, int inlen, float *out, int outlen);
|
||
|
pdf_function *pdf_keepfunction(pdf_function *func);
|
||
|
void pdf_dropfunction(pdf_function *func);
|
||
|
|
||
|
/*
|
||
|
* ColorSpace
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_indexed_s pdf_indexed;
|
||
|
|
||
|
struct pdf_indexed_s
|
||
|
{
|
||
|
fz_colorspace super; /* hmmm... */
|
||
|
fz_colorspace *base;
|
||
|
int high;
|
||
|
unsigned char *lookup;
|
||
|
};
|
||
|
|
||
|
extern fz_colorspace *pdf_devicegray;
|
||
|
extern fz_colorspace *pdf_devicergb;
|
||
|
extern fz_colorspace *pdf_devicecmyk;
|
||
|
extern fz_colorspace *pdf_devicelab;
|
||
|
extern fz_colorspace *pdf_devicepattern;
|
||
|
|
||
|
void pdf_convcolor(fz_colorspace *ss, float *sv, fz_colorspace *ds, float *dv);
|
||
|
void pdf_convpixmap(fz_colorspace *ss, fz_pixmap *sp, fz_colorspace *ds, fz_pixmap *dp);
|
||
|
|
||
|
fz_error *pdf_loadcolorspace(fz_colorspace **csp, pdf_xref *xref, fz_obj *obj);
|
||
|
|
||
|
/*
|
||
|
* Pattern
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_pattern_s pdf_pattern;
|
||
|
|
||
|
struct pdf_pattern_s
|
||
|
{
|
||
|
int refs;
|
||
|
int ismask;
|
||
|
float xstep;
|
||
|
float ystep;
|
||
|
fz_matrix matrix;
|
||
|
fz_rect bbox;
|
||
|
fz_tree *tree;
|
||
|
};
|
||
|
|
||
|
fz_error *pdf_loadpattern(pdf_pattern **patp, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
pdf_pattern *pdf_keeppattern(pdf_pattern *pat);
|
||
|
void pdf_droppattern(pdf_pattern *pat);
|
||
|
|
||
|
/*
|
||
|
* Shading
|
||
|
*/
|
||
|
|
||
|
void pdf_setmeshvalue(float *mesh, int i, float x, float y, float t);
|
||
|
fz_error *pdf_loadshadefunction(fz_shade *shade, pdf_xref *xref, fz_obj *dict, float t0, float t1);
|
||
|
fz_error *pdf_loadtype1shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype2shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype3shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype4shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype5shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype6shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadtype7shade(fz_shade *, pdf_xref *, fz_obj *dict, fz_obj *ref);
|
||
|
fz_error *pdf_loadshade(fz_shade **shadep, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
|
||
|
/*
|
||
|
* XObject
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_xobject_s pdf_xobject;
|
||
|
|
||
|
struct pdf_xobject_s
|
||
|
{
|
||
|
int refs;
|
||
|
fz_matrix matrix;
|
||
|
fz_rect bbox;
|
||
|
fz_obj *resources;
|
||
|
fz_buffer *contents;
|
||
|
};
|
||
|
|
||
|
fz_error *pdf_loadxobject(pdf_xobject **xobjp, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
pdf_xobject *pdf_keepxobject(pdf_xobject *xobj);
|
||
|
void pdf_dropxobject(pdf_xobject *xobj);
|
||
|
|
||
|
/*
|
||
|
* Image
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_image_s pdf_image;
|
||
|
|
||
|
struct pdf_image_s
|
||
|
{
|
||
|
fz_image super;
|
||
|
fz_image *mask; /* explicit mask with subimage */
|
||
|
int usecolorkey; /* explicit color-keyed masking */
|
||
|
int colorkey[FZ_MAXCOLORS * 2];
|
||
|
pdf_indexed *indexed;
|
||
|
float decode[32];
|
||
|
int bpc;
|
||
|
int stride;
|
||
|
fz_buffer *samples;
|
||
|
};
|
||
|
|
||
|
fz_error *pdf_loadinlineimage(pdf_image **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz_stream *file);
|
||
|
fz_error *pdf_loadimage(pdf_image **imgp, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
fz_error *pdf_loadtile(fz_image *image, fz_pixmap *tile);
|
||
|
|
||
|
/*
|
||
|
* CMap
|
||
|
*/
|
||
|
|
||
|
typedef struct pdf_cmap_s pdf_cmap;
|
||
|
|
||
|
fz_error *pdf_newcmap(pdf_cmap **cmapp);
|
||
|
pdf_cmap *pdf_keepcmap(pdf_cmap *cmap);
|
||
|
void pdf_dropcmap(pdf_cmap *cmap);
|
||
|
|
||
|
void pdf_debugcmap(pdf_cmap *cmap);
|
||
|
int pdf_getwmode(pdf_cmap *cmap);
|
||
|
pdf_cmap *fz_getusecmap(pdf_cmap *cmap);
|
||
|
void fz_setwmode(pdf_cmap *cmap, int wmode);
|
||
|
void fz_setusecmap(pdf_cmap *cmap, pdf_cmap *usecmap);
|
||
|
|
||
|
fz_error *pdf_addcodespace(pdf_cmap *cmap, unsigned lo, unsigned hi, int n);
|
||
|
|
||
|
fz_error *pdf_maprangetotable(pdf_cmap *cmap, int low, int *map, int len);
|
||
|
fz_error *pdf_maprangetorange(pdf_cmap *cmap, int srclo, int srchi, int dstlo);
|
||
|
fz_error *pdf_maponetomany(pdf_cmap *cmap, int one, int *many, int len);
|
||
|
fz_error *pdf_sortcmap(pdf_cmap *cmap);
|
||
|
|
||
|
int pdf_lookupcmap(pdf_cmap *cmap, int cpt);
|
||
|
unsigned char *pdf_decodecmap(pdf_cmap *cmap, unsigned char *s, int *cpt);
|
||
|
|
||
|
fz_error *pdf_parsecmap(pdf_cmap **cmapp, fz_stream *file);
|
||
|
fz_error *pdf_loadembeddedcmap(pdf_cmap **cmapp, pdf_xref *xref, fz_obj *ref);
|
||
|
fz_error *pdf_loadsystemcmap(pdf_cmap **cmapp, char *name);
|
||
|
fz_error *pdf_newidentitycmap(pdf_cmap **cmapp, int wmode, int bytes);
|
||
|
|
||
|
/*
|
||
|
* Font
|
||
|
*/
|
||
|
|
||
|
void pdf_loadencoding(char **estrings, char *encoding);
|
||
|
int pdf_lookupagl(char *name, int *ucsbuf, int ucscap);
|
||
|
|
||
|
extern const unsigned short pdf_docencoding[256];
|
||
|
extern const char * const pdf_macroman[256];
|
||
|
extern const char * const pdf_macexpert[256];
|
||
|
extern const char * const pdf_winansi[256];
|
||
|
extern const char * const pdf_standard[256];
|
||
|
extern const char * const pdf_expert[256];
|
||
|
extern const char * const pdf_symbol[256];
|
||
|
extern const char * const pdf_zapfdingbats[256];
|
||
|
|
||
|
typedef struct pdf_font_s pdf_font;
|
||
|
|
||
|
struct pdf_font_s
|
||
|
{
|
||
|
fz_font super;
|
||
|
|
||
|
/* FontDescriptor */
|
||
|
int flags;
|
||
|
float italicangle;
|
||
|
float ascent;
|
||
|
float descent;
|
||
|
float capheight;
|
||
|
float xheight;
|
||
|
float missingwidth;
|
||
|
|
||
|
/* Encoding (CMap) */
|
||
|
pdf_cmap *encoding;
|
||
|
pdf_cmap *tottfcmap;
|
||
|
int ncidtogid;
|
||
|
unsigned short *cidtogid;
|
||
|
|
||
|
/* ToUnicode */
|
||
|
pdf_cmap *tounicode;
|
||
|
int ncidtoucs;
|
||
|
unsigned short *cidtoucs;
|
||
|
|
||
|
/* Freetype */
|
||
|
int substitute;
|
||
|
void *ftface;
|
||
|
char *filename;
|
||
|
fz_buffer *fontdata;
|
||
|
|
||
|
/* Type3 data */
|
||
|
fz_matrix matrix;
|
||
|
fz_tree *charprocs[256];
|
||
|
};
|
||
|
|
||
|
/* unicode.c */
|
||
|
fz_error *pdf_loadtounicode(pdf_font *font, pdf_xref *xref, char **strings, char *collection, fz_obj *cmapstm);
|
||
|
|
||
|
/* fontfile.c */
|
||
|
fz_error *pdf_loadbuiltinfont(pdf_font *font, char *basefont);
|
||
|
fz_error *pdf_loadembeddedfont(pdf_font *font, pdf_xref *xref, fz_obj *stmref);
|
||
|
fz_error *pdf_loadsystemfont(pdf_font *font, char *basefont, char *collection);
|
||
|
fz_error *pdf_loadsubstitutefont(pdf_font *font, int fdflags, char *collection);
|
||
|
|
||
|
/* type3.c */
|
||
|
fz_error *pdf_loadtype3font(pdf_font **fontp, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
|
||
|
/* font.c */
|
||
|
fz_error *pdf_loadfontdescriptor(pdf_font *font, pdf_xref *xref, fz_obj *desc, char *collection);
|
||
|
fz_error *pdf_loadfont(pdf_font **fontp, pdf_xref *xref, fz_obj *obj, fz_obj *ref);
|
||
|
void pdf_dropfont(pdf_font *font);
|
||
|
|