diff options
author | Robin Watts <robin.watts@artifex.com> | 2014-01-03 16:50:41 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2014-01-07 10:25:42 +0000 |
commit | 7f009acebb75ff88c1ee934b03fa2d15f7785b32 (patch) | |
tree | 7be547523d730d104c62e4b5d43685dd8bb5bd40 /include/mupdf/fitz/document.h | |
parent | 016adfa063293281a0896c62bf22e406b09ddf21 (diff) | |
download | mupdf-7f009acebb75ff88c1ee934b03fa2d15f7785b32.tar.xz |
Introduce 'document handlers'.
We define a document handler for each file type (2 in the case of PDF, one
to handle files with the ability to 'run' them, and one without).
We then register these handlers with the context at startup, and then
call fz_open_document... as usual. This enables people to select the
document types they want at will (and even to extend the library with more
document types should they wish).
Diffstat (limited to 'include/mupdf/fitz/document.h')
-rw-r--r-- | include/mupdf/fitz/document.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/mupdf/fitz/document.h b/include/mupdf/fitz/document.h index 887ca151..cda8870a 100644 --- a/include/mupdf/fitz/document.h +++ b/include/mupdf/fitz/document.h @@ -13,6 +13,7 @@ Document interface */ typedef struct fz_document_s fz_document; +typedef struct fz_document_handler_s fz_document_handler; typedef struct fz_page_s fz_page; typedef struct fz_annot_s fz_annot; @@ -60,6 +61,28 @@ struct fz_document_s fz_document_rebind_fn *rebind; }; +typedef fz_document *(fz_document_open_fn)(fz_context *ctx, const char *filename); +typedef fz_document *(fz_document_open_with_stream_fn)(fz_context *ctx, fz_stream *stream); +typedef int (fz_document_recognize_fn)(fz_context *ctx, const char *magic); + +struct fz_document_handler_s +{ + fz_document_recognize_fn *recognize; + fz_document_open_fn *open; + fz_document_open_with_stream_fn *open_with_stream; +}; + +extern fz_document_handler pdf_document_handler; +extern fz_document_handler pdf_no_run_document_handler; +extern fz_document_handler xps_document_handler; +extern fz_document_handler cbz_document_handler; +extern fz_document_handler img_document_handler; + +void fz_register_document_handler(fz_context *ctx, const fz_document_handler *handler); + +void fz_register_document_handlers(fz_context *ctx); +void fz_register_no_run_document_handlers(fz_context *ctx); + /* fz_open_document: Open a PDF, XPS or CBZ document. |