summaryrefslogtreecommitdiff
path: root/pcl
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2022-09-14 17:39:02 +0100
committerRobin Watts <Robin.Watts@artifex.com>2022-09-19 12:44:06 +0100
commit90fa745b793dc439d59bdab2255867fb7dfb5420 (patch)
tree9e505a53f95d8decd721dba96e52b5d96a2bd617 /pcl
parent9e6faf9495945ba6471f693fe01a0f1d1f538edf (diff)
downloadghostpdl-90fa745b793dc439d59bdab2255867fb7dfb5420.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.c7
-rw-r--r--pcl/pl/plmain.c53
-rw-r--r--pcl/pl/plmain.h6
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 */