From 90fa745b793dc439d59bdab2255867fb7dfb5420 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Wed, 14 Sep 2022 17:39:02 +0100 Subject: Add gpdl support for SmartOffice integration. No actual SmartOffice code here, just the framework for adding the (private) "SO" interpreter. --- pcl/pl/plimpl.c | 7 ++++++- pcl/pl/plmain.c | 53 +++++++++++++++++++++++++++++++++++++++++------------ pcl/pl/plmain.h | 6 +++++- 3 files changed, 52 insertions(+), 14 deletions(-) (limited to 'pcl') 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, @@ -87,6 +89,9 @@ pl_interp_implementation_t *pdl_implementations[] = { #endif #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 */ -- cgit v1.2.1