diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-06-26 10:10:01 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-06-26 10:10:01 +0000 |
commit | 4e17498848c230539b58d870938a77805039046d (patch) | |
tree | 9eac3775be9f2369a92665103a780d260f39afd4 /Build/source/texk/dvipdfm-x/src | |
parent | d0c3117e5c8cea5fe0d1a44f1e71e52238eda87e (diff) |
dvipdfm-x: Bug fix, Reduce dvipdfmx/xdvipdfmx diffs
git-svn-id: svn://tug.org/texlive/trunk@30951 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipdfm-x/src')
-rwxr-xr-x | Build/source/texk/dvipdfm-x/src/dvipdfmx.test | 2 | ||||
-rw-r--r-- | Build/source/texk/dvipdfm-x/src/spc_dvips.c | 53 | ||||
-rw-r--r-- | Build/source/texk/dvipdfm-x/src/spc_dvips.h | 5 | ||||
-rw-r--r-- | Build/source/texk/dvipdfm-x/src/specials.c | 20 |
4 files changed, 79 insertions, 1 deletions
diff --git a/Build/source/texk/dvipdfm-x/src/dvipdfmx.test b/Build/source/texk/dvipdfm-x/src/dvipdfmx.test index 56f7857e236..2a18fdf9be7 100755 --- a/Build/source/texk/dvipdfm-x/src/dvipdfmx.test +++ b/Build/source/texk/dvipdfm-x/src/dvipdfmx.test @@ -7,5 +7,5 @@ TEXMFCNF=${srcdir}/../../kpathsea \ DVIPDFMXINPUTS=${srcdir}/../data \ - dvipdfmx --help || exit 1 + ./dvipdfmx --help || exit 1 diff --git a/Build/source/texk/dvipdfm-x/src/spc_dvips.c b/Build/source/texk/dvipdfm-x/src/spc_dvips.c index bf5f4e5051c..07ea009172e 100644 --- a/Build/source/texk/dvipdfm-x/src/spc_dvips.c +++ b/Build/source/texk/dvipdfm-x/src/spc_dvips.c @@ -292,10 +292,63 @@ static struct spc_handler dvips_handlers[] = { {"\" ", spc_handler_ps_default} }; +#ifdef XETEX +int +spc_dvips_at_begin_document (void) +{ + FILE* fp; + + /* This, together with \pscharpath support code, must be moved to xtex.pro header. */ + global_defs = dpx_create_temp_file(); + if (!global_defs) { + WARN("Failed to create temporary input file for PSTricks image conversion."); + return -1; + } + + fp = fopen(global_defs, "wb"); + fprintf(fp, "tx@Dict begin /STV {} def end\n"); + fclose(fp); + return 0; +} + +int +spc_dvips_at_end_document (void) +{ + if (ps_headers) { + while (num_ps_headers > 0) + RELEASE(ps_headers[--num_ps_headers]); + free(ps_headers); + ps_headers = NULL; + } + dpx_delete_temp_file(global_defs, true); + dpx_delete_temp_file(page_defs, true); + return 0; +} + +int +spc_dvips_at_begin_page (void) +{ + if (page_defs) { + dpx_delete_temp_file(page_defs, true); + page_defs = 0; + } + + put_stack_depth = -1; + + return 0; +} +#endif + int spc_dvips_at_end_page (void) { mps_eop_cleanup(); +#ifdef XETEX + if (!temporary_defs) { + dpx_delete_temp_file(temporary_defs, true); + temporary_defs = 0; + } +#endif return 0; } diff --git a/Build/source/texk/dvipdfm-x/src/spc_dvips.h b/Build/source/texk/dvipdfm-x/src/spc_dvips.h index 85353786839..74b50ffa733 100644 --- a/Build/source/texk/dvipdfm-x/src/spc_dvips.h +++ b/Build/source/texk/dvipdfm-x/src/spc_dvips.h @@ -27,6 +27,11 @@ #include "specials.h" +#ifdef XETEX +extern int spc_dvips_at_begin_document (void); +extern int spc_dvips_at_end_document (void); +extern int spc_dvips_at_begin_page (void); +#endif extern int spc_dvips_at_end_page (void); extern int spc_dvips_check_special (const char *buffer, long size); diff --git a/Build/source/texk/dvipdfm-x/src/specials.c b/Build/source/texk/dvipdfm-x/src/specials.c index d55860b25ed..dc5bf600028 100644 --- a/Build/source/texk/dvipdfm-x/src/specials.c +++ b/Build/source/texk/dvipdfm-x/src/specials.c @@ -49,6 +49,9 @@ #include "spc_misc.h" #include "spc_color.h" #include "spc_dvips.h" +#ifdef XETEX +#include "spc_xtx.h" +#endif #include "specials.h" @@ -376,10 +379,27 @@ static struct { spc_pdfm_setup_handler }, +#ifdef XETEX + {"x:", + NULL, + NULL, + NULL, + NULL, + spc_xtx_check_special, + spc_xtx_setup_handler + }, +#endif + {"ps:", +#ifdef XETEX + spc_dvips_at_begin_document, + spc_dvips_at_end_document, + spc_dvips_at_begin_page, +#else NULL, NULL, NULL, +#endif spc_dvips_at_end_page, spc_dvips_check_special, spc_dvips_setup_handler |