diff options
author | Robin Watts <Robin.Watts@artifex.com> | 2022-09-14 17:39:02 +0100 |
---|---|---|
committer | Robin Watts <Robin.Watts@artifex.com> | 2022-10-04 18:19:06 +0100 |
commit | 93280bb0cdca7a9ed2f5ccbee7df7ac87b33ccd8 (patch) | |
tree | 7f892545ea72b9948125d312c62e5fa87604feb8 /pcl | |
parent | becc456ac376e4634a431b21bc3d8f9d22fa3067 (diff) | |
download | ghostpdl-93280bb0cdca7a9ed2f5ccbee7df7ac87b33ccd8.tar.gz |
Add gpdl support for SmartOffice integration.
No actual SmartOffice code here, just the framework for adding
the (private) "SO" interpreter.
Diffstat (limited to 'pcl')
-rw-r--r-- | pcl/pl/plimpl.c | 7 | ||||
-rw-r--r-- | pcl/pl/plmain.c | 53 | ||||
-rw-r--r-- | pcl/pl/plmain.h | 6 |
3 files changed, 52 insertions, 14 deletions
diff --git a/pcl/pl/plimpl.c b/pcl/pl/plimpl.c index 4c88b06e9..80d7e1845 100644 --- a/pcl/pl/plimpl.c +++ b/pcl/pl/plimpl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2021 Artifex Software, Inc. +/* Copyright (C) 2001-2022 Artifex Software, Inc. All Rights Reserved. This software is provided AS-IS with no warranty, either express or @@ -51,6 +51,8 @@ extern pl_interp_implementation_t jp2k_implementation; extern pl_interp_implementation_t png_implementation; +extern pl_interp_implementation_t so_implementation; + /* Zero-terminated list of pointers to implementations */ pl_interp_implementation_t *pdl_implementations[] = { &pjl_implementation, @@ -88,6 +90,9 @@ pl_interp_implementation_t *pdl_implementations[] = { #ifdef PNG_INCLUDED &png_implementation, #endif +#ifdef SO_INCLUDED + &so_implementation, +#endif 0 }; diff --git a/pcl/pl/plmain.c b/pcl/pl/plmain.c index de221df4f..04f330909 100644 --- a/pcl/pl/plmain.c +++ b/pcl/pl/plmain.c @@ -2993,18 +2993,6 @@ pl_log_string(const gs_memory_t * mem, const char *str, int wait_for_key) (void)fgetc(mem->gs_lib_ctx->core->fstdin); } -pl_interp_implementation_t * -pl_main_get_pcl_instance(const gs_memory_t *mem) -{ - return pl_main_get_instance(mem)->implementations[1]; -} - -pl_interp_implementation_t * -pl_main_get_pjl_instance(const gs_memory_t *mem) -{ - return pl_main_get_instance(mem)->implementations[0]; -} - bool pl_main_get_interpolate(const gs_memory_t *mem) { return pl_main_get_instance(mem)->interpolate; @@ -3106,3 +3094,44 @@ pl_finish_page(pl_main_instance_t * pmi, gs_gstate * pgs, int num_copies, int fl pl_print_usage(pmi, "render done :"); return 0; } + +pl_interp_implementation_t * +pl_main_get_language_instance(const gs_memory_t *mem, const char *name) +{ + pl_main_instance_t *minst = pl_main_get_instance(mem); + pl_interp_implementation_t **inst = minst->implementations; + + while (*inst) + { + const pl_interp_characteristics_t *chars = (*inst)->proc_characteristics(*inst); + + if (strcmp(chars->language, name) == 0) + return *inst; + inst++; + } + + return NULL; +} + +pl_interp_implementation_t *pl_main_get_pdf_instance(const gs_memory_t *mem) +{ + return pl_main_get_language_instance(mem, "PDF"); +} + +pl_interp_implementation_t * +pl_main_get_pcl_instance(const gs_memory_t *mem) +{ + return pl_main_get_language_instance(mem, "PCLXL"); +} + +pl_interp_implementation_t * +pl_main_get_pjl_instance(const gs_memory_t *mem) +{ + return pl_main_get_language_instance(mem, "PJL"); +} + +pl_interp_implementation_t * +pl_main_get_xps_instance(const gs_memory_t *mem) +{ + return pl_main_get_language_instance(mem, "XPS"); +} diff --git a/pcl/pl/plmain.h b/pcl/pl/plmain.h index d1e8912af..883dfc6e9 100644 --- a/pcl/pl/plmain.h +++ b/pcl/pl/plmain.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2021 Artifex Software, Inc. +/* Copyright (C) 2001-2022 Artifex Software, Inc. All Rights Reserved. This software is provided AS-IS with no warranty, either express or @@ -121,4 +121,8 @@ char *pl_main_get_pcl_personality(const gs_memory_t *mem); pl_interp_implementation_t *pl_main_get_pcl_instance(const gs_memory_t *mem); pl_interp_implementation_t *pl_main_get_pjl_instance(const gs_memory_t *mem); +pl_interp_implementation_t *pl_main_get_pdf_instance(const gs_memory_t *mem); +pl_interp_implementation_t *pl_main_get_xps_instance(const gs_memory_t *mem); +pl_interp_implementation_t *pl_main_get_language_instance(const gs_memory_t *mem, const char *name); + #endif /* plmain_INCLUDED */ |