From 06b7fc5990194d2924b0cf172c9313bfb395feed Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Sat, 24 Mar 2018 06:50:31 +0000 Subject: dvisvgm-2.3.5 git-svn-id: svn://tug.org/texlive/trunk@47098 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dvisvgm/ChangeLog | 4 ++ Build/source/texk/dvisvgm/TLpatches/ChangeLog | 5 ++ .../texk/dvisvgm/TLpatches/patch-08-makefiles | 12 ++-- Build/source/texk/dvisvgm/configure | 22 +++---- Build/source/texk/dvisvgm/dvisvgm-src/NEWS | 5 ++ Build/source/texk/dvisvgm/dvisvgm-src/configure.ac | 2 +- .../source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 | 6 +- .../source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp | 11 ++++ .../source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp | 17 +++-- .../texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp | 3 +- .../texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp | 10 ++- .../dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp | 20 +++++- .../dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp | 1 + .../source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp | 53 ++++++++-------- .../texk/dvisvgm/dvisvgm-src/src/version.hpp | 2 +- .../texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp | 18 +++++- .../dvisvgm-src/tests/PSInterpreterTest.cpp | 73 +++++++++++----------- Build/source/texk/dvisvgm/version.ac | 2 +- 18 files changed, 160 insertions(+), 106 deletions(-) (limited to 'Build/source/texk/dvisvgm') diff --git a/Build/source/texk/dvisvgm/ChangeLog b/Build/source/texk/dvisvgm/ChangeLog index ec0339c4873..e6795ae380c 100644 --- a/Build/source/texk/dvisvgm/ChangeLog +++ b/Build/source/texk/dvisvgm/ChangeLog @@ -1,3 +1,7 @@ +2018-03-24 Akira Kakuto + + * Import 2.3.5. + 2018-03-16 Karl Berry * Import 2.3.4. diff --git a/Build/source/texk/dvisvgm/TLpatches/ChangeLog b/Build/source/texk/dvisvgm/TLpatches/ChangeLog index f41da93cf5a..23e078530ce 100644 --- a/Build/source/texk/dvisvgm/TLpatches/ChangeLog +++ b/Build/source/texk/dvisvgm/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2018-03-24 Akira Kakuto + + * Import 2.3.5. + * patch-08-makefiles: adapt. + 2018-02-21 Akira Kakuto * Import 2.3.3. diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles index 6642a071988..aa4d787d7fb 100644 --- a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles +++ b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles @@ -1,6 +1,6 @@ -diff -u2r dvisvgm-2.3.3/Makefile.am dvisvgm-src/Makefile.am ---- dvisvgm-2.3.3/Makefile.am Tue Jan 02 18:32:38 2018 -+++ dvisvgm-src/Makefile.am Thu Feb 22 07:02:50 2018 +diff -u2r dvisvgm-2.3.5/Makefile.am dvisvgm-src/Makefile.am +--- dvisvgm-2.3.5/Makefile.am Mon Feb 05 19:10:22 2018 ++++ dvisvgm-src/Makefile.am Sat Mar 24 15:28:20 2018 @@ -6,5 +6,5 @@ AUTOMAKE_OPTIONS = foreign EXTRA_DIST = COPYING @@ -8,9 +8,9 @@ diff -u2r dvisvgm-2.3.3/Makefile.am dvisvgm-src/Makefile.am +SUBDIRS = libs src #not for TL: tests doc ACLOCAL_AMFLAGS = -I m4 -diff -u2r dvisvgm-2.3.3/src/Makefile.am dvisvgm-src/src/Makefile.am ---- dvisvgm-2.3.3/src/Makefile.am Tue Jan 02 18:32:38 2018 -+++ dvisvgm-src/src/Makefile.am Thu Feb 22 07:09:47 2018 +diff -u2r dvisvgm-2.3.5/src/Makefile.am dvisvgm-src/src/Makefile.am +--- dvisvgm-2.3.5/src/Makefile.am Thu Mar 22 18:24:00 2018 ++++ dvisvgm-src/src/Makefile.am Sat Mar 24 15:28:48 2018 @@ -14,8 +14,5 @@ $(noinst_LIBRARIES) \ ../libs/clipper/libclipper.a \ diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure index b6969bae08a..fff542dcf2b 100755 --- a/Build/source/texk/dvisvgm/configure +++ b/Build/source/texk/dvisvgm/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.4. +# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.5. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dvisvgm (TeX Live)' PACKAGE_TARNAME='dvisvgm--tex-live-' -PACKAGE_VERSION='2.3.4' -PACKAGE_STRING='dvisvgm (TeX Live) 2.3.4' +PACKAGE_VERSION='2.3.5' +PACKAGE_STRING='dvisvgm (TeX Live) 2.3.5' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1375,7 +1375,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dvisvgm (TeX Live) 2.3.4 to adapt to many kinds of systems. +\`configure' configures dvisvgm (TeX Live) 2.3.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1446,7 +1446,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.4:";; + short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.5:";; esac cat <<\_ACEOF @@ -1581,7 +1581,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dvisvgm (TeX Live) configure 2.3.4 +dvisvgm (TeX Live) configure 2.3.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2449,7 +2449,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dvisvgm (TeX Live) $as_me 2.3.4, which was +It was created by dvisvgm (TeX Live) $as_me 2.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -8188,7 +8188,7 @@ fi # Define the identity of the package. PACKAGE='dvisvgm--tex-live-' - VERSION='2.3.4' + VERSION='2.3.5' cat >>confdefs.h <<_ACEOF @@ -20189,7 +20189,7 @@ Usage: $0 [OPTIONS] Report bugs to ." lt_cl_version="\ -dvisvgm (TeX Live) config.lt 2.3.4 +dvisvgm (TeX Live) config.lt 2.3.5 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -23585,7 +23585,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dvisvgm (TeX Live) $as_me 2.3.4, which was +This file was extended by dvisvgm (TeX Live) $as_me 2.3.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23651,7 +23651,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dvisvgm (TeX Live) config.status 2.3.4 +dvisvgm (TeX Live) config.status 2.3.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS index cabef9a1cf0..c0b1b2c16ce 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS +++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS @@ -1,3 +1,8 @@ +dvisvgm-2.3.5 (2018-03-23) +- added evaluation of PS operator 'setpagedevice' in psfile specials +- fixed evaluation of dvips color names +- fixed warning printed when using Ghostscript 9.23 + dvisvgm-2.3.4 (2018-03-14) - fixed error message printed when addding a single '-' on the command-line - added missing data file that lead to failing tests (GH bug #87) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac index fce8a90baf7..94cb240c008 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac +++ b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac @@ -4,7 +4,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([dvisvgm],[2.3.4],[martin.gieseking@uos.de]) +AC_INIT([dvisvgm],[2.3.5],[martin.gieseking@uos.de]) DATE="March 2018" AC_CONFIG_SRCDIR(src) AC_CONFIG_HEADERS([config.h]) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 index c45dd449d6b..a7624a4f082 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 +++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 @@ -2,12 +2,12 @@ .\" Title: dvisvgm .\" Author: Martin Gieseking .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 03/14/2018 +.\" Date: 03/23/2018 .\" Manual: dvisvgm Manual -.\" Source: dvisvgm 2.3.4 +.\" Source: dvisvgm 2.3.5 .\" Language: English .\" -.TH "DVISVGM" "1" "03/14/2018" "dvisvgm 2\&.3\&.4" "dvisvgm Manual" +.TH "DVISVGM" "1" "03/23/2018" "dvisvgm 2\&.3\&.5" "dvisvgm Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp index 57456ba36b0..433787739ef 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp @@ -90,6 +90,17 @@ Matrix::Matrix (const string &cmds, Calculator &calc) { } +Matrix::Matrix (initializer_list initlist) { + int count=0; + for (auto it=initlist.begin(); it != initlist.end() && count < 9; ++it) { + _values[count/3][count%3] = *it; + count++; + } + for (; count < 9; count++) + _values[count/3][count%3] = (count%4 ? 0 : 1); +} + + Matrix& Matrix::set (double d) { for (int i=0; i < 3; i++) for (int j=0; j < 3; j++) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp index 9ea836b9837..8be82df4e13 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp @@ -21,6 +21,7 @@ #ifndef MATRIX_HPP #define MATRIX_HPP +#include #include #include #include @@ -28,15 +29,13 @@ #include "Pair.hpp" -struct ParserException : public MessageException -{ +struct ParserException : public MessageException { ParserException (const std::string &msg) : MessageException(msg) {} }; class Calculator; -class Matrix -{ +class Matrix { friend double det (const Matrix &m); friend double det (const Matrix &m, int row, int col); @@ -45,6 +44,7 @@ class Matrix Matrix (double d=0); Matrix (double v[], unsigned size=9); Matrix (const std::vector &v, int start=0); + Matrix (std::initializer_list initlist); Matrix& set (double d); Matrix& set (double v[], unsigned size); Matrix& set (const std::vector &v, int start=0); @@ -80,20 +80,17 @@ class Matrix }; -struct TranslationMatrix : public Matrix -{ +struct TranslationMatrix : public Matrix { TranslationMatrix (double tx, double ty); }; -struct ScalingMatrix : public Matrix -{ +struct ScalingMatrix : public Matrix { ScalingMatrix (double sx, double sy); }; -struct RotationMatrix : public Matrix -{ +struct RotationMatrix : public Matrix { RotationMatrix (double deg); }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp index c33bffb8927..57441da6eca 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp @@ -36,7 +36,7 @@ using namespace std; const char *PSInterpreter::GSARGS[] = { "gs", // dummy name "-q", // be quiet, suppress gs banner - "-dSAFER", // disallow writing of files +// "-dSAFER", // disallow writing of files "-dNODISPLAY", // we don't need a display device "-dNOPAUSE", // keep going "-dWRITESYSTEMDICT", // leave systemdict writable as some operators must be replaced @@ -281,6 +281,7 @@ void PSInterpreter::callActions (InputReader &in) { {"setmatrix", { 6, &PSActions::setmatrix}}, {"setmiterlimit", { 1, &PSActions::setmiterlimit}}, {"setopacityalpha",{ 1, &PSActions::setopacityalpha}}, + {"setpagedevice", { 0, &PSActions::setpagedevice}}, {"setpattern", {-1, &PSActions::setpattern}}, {"setrgbcolor", { 3, &PSActions::setrgbcolor}}, {"shfill", {-1, &PSActions::shfill}}, diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp index 503c45dac65..ae75152899e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp @@ -30,16 +30,14 @@ #include "MessageException.hpp" -struct PSException : public MessageException -{ +struct PSException : public MessageException { PSException (const std::string &msg) : MessageException(msg) {} }; /** This interface provides the template methods called by PSInterpreter when executing a PS snippet. * Each method corresponds to a PostScript operator of the same name. */ -struct PSActions -{ +struct PSActions { virtual ~PSActions () =default; virtual void applyscalevals (std::vector &p) =0; virtual void clip (std::vector &p) =0; @@ -72,6 +70,7 @@ struct PSActions virtual void setmatrix (std::vector &p) =0; virtual void setmiterlimit (std::vector &p) =0; virtual void setopacityalpha (std::vector &p) =0; + virtual void setpagedevice (std::vector &p) =0; virtual void setpattern (std::vector &p) =0; virtual void setrgbcolor (std::vector &rgb) =0; virtual void shfill (std::vector &rgb) =0; @@ -84,8 +83,7 @@ class PSFilter; /** This class provides methods to execute chunks of PostScript code and calls * several template methods on invocation of selected PS operators (see PSActions). */ -class PSInterpreter -{ +class PSInterpreter { enum Mode {PS_NONE, PS_RUNNING, PS_QUIT}; public: diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp index c0624cc8c8a..8c5e7276ddb 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp @@ -69,7 +69,7 @@ void PsSpecialHandler::initialize () { if (_psSection == PS_NONE) { initgraphics(); // execute dvips prologue/header files - for (const char *fname : {"tex.pro", "texps.pro", "special.pro"}) + for (const char *fname : {"tex.pro", "texps.pro", "special.pro", "color.pro"}) processHeaderFile(fname); // disable bop/eop operators to prevent side-effects by // unexpected bops/eops present in PS specials @@ -330,7 +330,7 @@ void PsSpecialHandler::psfile (const string &fname, const unordered_map("g"); // append following elements to this group _xmlnode = groupNode.get(); - _psi.execute("\n@beginspecial @setspecial "); // enter \special environment + _psi.execute("\n@beginspecial @setspecial /setpagedevice{@setpagedevice}def "); // enter \special environment EPSFile epsfile(filepath); _psi.limit(epsfile.pslength()); // limit the number of bytes going to be processed _psi.execute(epsfile.istream()); // process EPS file @@ -470,6 +470,20 @@ void PsSpecialHandler::dviEndPage (unsigned, SpecialActions &actions) { /////////////////////////////////////////////////////// +void PsSpecialHandler::setpagedevice (std::vector &p) { + _linewidth = 1; + _linecap = _linejoin = 0; // butt end caps and miter joins + _miterlimit = 4; + _opacityalpha = 1; // fully opaque + _sx = _sy = _cos = 1.0; + _pattern = nullptr; + _currentcolor = Color::BLACK; + _dashoffset = 0; + _dashpattern.clear(); + _path.clear(); +} + + void PsSpecialHandler::gsave (vector&) { _clipStack.dup(); } @@ -645,7 +659,7 @@ void PsSpecialHandler::fill (vector &p, bool evenodd) { } -/** Creates a Matrix object out of a given sequence of 6 double values. +/** Creates a Matrix object from a given sequence of 6 double values. * The given values must be arranged in PostScript matrix order. * @param[in] v vector containing the matrix values * @param[in] startindex vector index of first component diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp index 310a6b8c34e..a9683be77d6 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp @@ -142,6 +142,7 @@ class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, prote void setmatrix (std::vector &p) override; void setmiterlimit (std::vector &p) override {_miterlimit = p[0];} void setopacityalpha (std::vector &p) override {_opacityalpha = p[0];} + void setpagedevice (std::vector &p) override; void setpattern (std::vector &p) override; void setrgbcolor (std::vector &rgb) override; void shfill (std::vector &p) override; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp index 520d831a1d1..4b17c9cd7e4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp @@ -71,29 +71,30 @@ const char *PSInterpreter::PSDEFS = "ength 1 add string dup 0 46 put dup 3 -1 roll 1 exch putinterval}def/setlinewi" "dth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}def/setlinecap 1 defpr/setli" "nejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 roll 2 copy/setdash syse" -"xec exch aload length 1 add -1 roll counttomark(setdash)prcmd pop}def/setgstat" -"e{currentlinewidth 1(setlinewidth)prcmd currentlinecap 1(setlinecap)prcmd curr" -"entlinejoin 1(setlinejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd curren" -"trgbcolor 3(setrgbcolor)prcmd matrix currentmatrix aload pop 6(setmatrix)prcmd" -" applyscalevals currentdash mark 3 1 roll exch aload length 1 add -1 roll coun" -"ttomark(setdash)prcmd pop}def/save{@UD begin/@saveID vmstatus pop pop def end " -":save @saveID 1(save)prcmd}def/restore{:restore setgstate @UD/@saveID known{@U" -"D begin @saveID end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestore{:gres" -"tore setgstate 0(grestore)prcmd}def/grestoreall{:grestoreall setstate 0(gresto" -"reall)prcmd}def/rotate{dup type/arraytype ne{dup 1(rotate)prcmd}if/rotate syse" -"xec applyscalevals}def/scale{dup type/arraytype ne{2 copy 2(scale)prcmd}if/sca" -"le sysexec applyscalevals}def/translate{dup type/arraytype ne{2 copy 2(transla" -"te)prcmd}if/translate sysexec}def/setmatrix{dup/setmatrix sysexec aload pop 6(" -"setmatrix)prcmd applyscalevals}def/initmatrix{matrix setmatrix}def/concat{matr" -"ix currentmatrix matrix concatmatrix setmatrix}def/makepattern{gsave<>begin dup/XUID[1000000 @patcnt]put mx/makepattern sysexec dup dup begin" -" PatternType @patcnt BBox aload pop XStep YStep PaintType mx aload pop 15(make" -"pattern)prcmd :newpath matrix setmatrix PaintProc 0 1(makepattern)prcmd end/@p" -"atcnt @patcnt 1 add store end grestore}def/setpattern{begin PatternType 1 eq{P" -"aintType 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorspace aload length" -" -1 roll pop]setcolorspace/setcolor sysexec XUID aload pop exch pop currentrgb" -"color :grestore 4}ifelse(setpattern)prcmd}{/setpattern sysexec}ifelse end}def/" -"setcolor{dup type/dicttype eq{setpattern}{/setcolor sysexec/currentrgbcolor sy" -"sexec setrgbcolor}ifelse}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor " -"3 defpr/setrgbcolor 3 defpr/.setopacityalpha{dup/.setopacityalpha sysexec 1(se" -"topacityalpha)prcmd}def "; +"xec exch aload length 1 add -1 roll counttomark(setdash)prcmd pop}def/@setpage" +"device{pop<<>>/setpagedevice sysexec[1 0 0 -1 0 0]setmatrix newpath 0(setpaged" +"evice)prcmd}def/setgstate{currentlinewidth 1(setlinewidth)prcmd currentlinecap" +" 1(setlinecap)prcmd currentlinejoin 1(setlinejoin)prcmd currentmiterlimit 1(se" +"tmiterlimit)prcmd currentrgbcolor 3(setrgbcolor)prcmd matrix currentmatrix alo" +"ad pop 6(setmatrix)prcmd applyscalevals currentdash mark 3 1 roll exch aload l" +"ength 1 add -1 roll counttomark(setdash)prcmd pop}def/save{@UD begin/@saveID v" +"mstatus pop pop def end :save @saveID 1(save)prcmd}def/restore{:restore setgst" +"ate @UD/@saveID known{@UD begin @saveID end}{0}ifelse 1(restore)prcmd}def/gsav" +"e 0 defpr/grestore{:grestore setgstate 0(grestore)prcmd}def/grestoreall{:grest" +"oreall setstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne{dup 1(rot" +"ate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arraytype ne{2 c" +"opy 2(scale)prcmd}if/scale sysexec applyscalevals}def/translate{dup type/array" +"type ne{2 copy 2(translate)prcmd}if/translate sysexec}def/setmatrix{dup/setmat" +"rix sysexec aload pop 6(setmatrix)prcmd applyscalevals}def/initmatrix{matrix s" +"etmatrix}def/concat{matrix currentmatrix matrix concatmatrix setmatrix}def/mak" +"epattern{gsave<>begin dup/XUID[1000000 @patcnt]put mx/makepatte" +"rn sysexec dup dup begin PatternType @patcnt BBox aload pop XStep YStep PaintT" +"ype mx aload pop 15(makepattern)prcmd :newpath matrix setmatrix PaintProc 0 1(" +"makepattern)prcmd end/@patcnt @patcnt 1 add store end grestore}def/setpattern{" +"begin PatternType 1 eq{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[curren" +"tcolorspace aload length -1 roll pop]setcolorspace/setcolor sysexec XUID aload" +" pop exch pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd}{/setpattern" +" sysexec}ifelse end}def/setcolor{dup type/dicttype eq{setpattern}{/setcolor sy" +"sexec/currentrgbcolor sysexec setrgbcolor}ifelse}def/setgray 1 defpr/setcmykco" +"lor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3 defpr/.setopacityalpha{dup/.seto" +"pacityalpha sysexec 1(setopacityalpha)prcmd}def "; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp index 38a8e51c3f9..95200e15cf9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp @@ -22,7 +22,7 @@ #define VERSION_HPP constexpr const char *PROGRAM_NAME = "dvisvgm"; -constexpr const char *PROGRAM_VERSION = "2.3.4"; +constexpr const char *PROGRAM_VERSION = "2.3.5"; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp index 7ab8d231896..025569306de 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp @@ -27,7 +27,7 @@ using namespace std; -TEST(MatrixTest, construct) { +TEST(MatrixTest, construct1) { const vector vec{1, 2, 3, 4, 5, 6, 7, 8, 9}; Matrix m1(vec); for (int row=0; row < 3; row++) @@ -46,6 +46,22 @@ TEST(MatrixTest, construct) { } +TEST(MatrixTest, construct2) { + Matrix m1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + for (int row=0; row < 3; row++) + for (int col=0; col < 3; col++) + ASSERT_EQ(m1.get(row, col), 3*row+col+1) << "row=" << row << ", col=" << col; + + Matrix m2 = {1, 2, 3, 4, 5, 6}; + for (int row=0; row < 2; row++) + for (int col=0; col < 3; col++) + ASSERT_EQ(m2.get(row, col), 3*row+col+1) << "row=" << row << ", col=" << col; + ASSERT_EQ(m2.get(2, 0), 0); + ASSERT_EQ(m2.get(2, 1), 0); + ASSERT_EQ(m2.get(2, 2), 1); +} + + TEST(MatrixTest, svg) { double v1[] = {1,2,3,4,5,6,7,8,9}; Matrix m1(v1); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp index 24f11dddf74..6b306d700c9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp @@ -28,42 +28,43 @@ using namespace std; class PSTestActions : public PSActions { public: - void applyscalevals (vector &p) {print("applyscalevals", p);} - void clip (vector &p) {print("clip", p);} - void clippath (vector &p) {print("clippath", p);} - void closepath (vector &p) {print("closepath", p);} - void curveto (vector &p) {print("curveto", p);} - void eoclip (vector &p) {print("eoclip", p);} - void eofill (vector &p) {print("eofill", p);} - void fill (vector &p) {print("fill", p);} - void gsave (vector &p) {print("gsave", p);} - void grestore (vector &p) {print("grestore", p);} - void grestoreall(std::vector &p) {print("grestoreall", p);} - void initclip (vector &p) {print("initclip", p);} - void lineto (vector &p) {print("lineto", p);} - void moveto (vector &p) {print("moveto", p);} - void makepattern (vector &p) {print("makepattern", p);} - void setpattern (vector &p) {print("setpattern", p);} - void newpath (vector &p) {print("newpath", p);} - void querypos (vector &p) {print("querypos", p);} - void restore(std::vector &p) {print("restore", p);} - void rotate (vector &p) {print("rotate", p);} - void save(std::vector &p) {print("save", p);} - void scale (vector &p) {print("scale", p);} - void setcmykcolor (vector &p) {print("setcmykcolor", p);} - void setdash (vector &p) {print("setdash", p);} - void setgray (vector &p) {print("setgray", p);} - void sethsbcolor (vector &p) {print("sethsbcolor", p);} - void setlinecap (vector &p) {print("setlinecap", p);} - void setlinejoin (vector &p) {print("setlinejoin", p);} - void setlinewidth (vector &p) {print("setlinewidth", p);} - void setmatrix (vector &p) {print("setmatrix", p);} - void setmiterlimit (vector &p) {print("setmiterlimit", p);} - void setopacityalpha (vector &p) {print("setopacityalpha", p);} - void setrgbcolor (vector &p) {print("setrgbcolor", p);} - void shfill (vector &p) {print("shfill", p);} - void stroke (vector &p) {print("stroke", p);} - void translate (vector &p) {print("translate", p);} + void applyscalevals (vector &p) override {print("applyscalevals", p);} + void clip (vector &p) override {print("clip", p);} + void clippath (vector &p) override {print("clippath", p);} + void closepath (vector &p) override {print("closepath", p);} + void curveto (vector &p) override {print("curveto", p);} + void eoclip (vector &p) override {print("eoclip", p);} + void eofill (vector &p) override {print("eofill", p);} + void fill (vector &p) override {print("fill", p);} + void gsave (vector &p) override {print("gsave", p);} + void grestore (vector &p) override {print("grestore", p);} + void grestoreall(std::vector &p) override {print("grestoreall", p);} + void initclip (vector &p) override {print("initclip", p);} + void lineto (vector &p) override {print("lineto", p);} + void moveto (vector &p) override {print("moveto", p);} + void makepattern (vector &p) override {print("makepattern", p);} + void setpattern (vector &p) override {print("setpattern", p);} + void setpagedevice (vector &p) override {print("setpagedevice", p);} + void newpath (vector &p) override {print("newpath", p);} + void querypos (vector &p) override {print("querypos", p);} + void restore(std::vector &p) override {print("restore", p);} + void rotate (vector &p) override {print("rotate", p);} + void save(std::vector &p) override {print("save", p);} + void scale (vector &p) override {print("scale", p);} + void setcmykcolor (vector &p) override {print("setcmykcolor", p);} + void setdash (vector &p) override {print("setdash", p);} + void setgray (vector &p) override {print("setgray", p);} + void sethsbcolor (vector &p) override {print("sethsbcolor", p);} + void setlinecap (vector &p) override {print("setlinecap", p);} + void setlinejoin (vector &p) override {print("setlinejoin", p);} + void setlinewidth (vector &p) override {print("setlinewidth", p);} + void setmatrix (vector &p) override {print("setmatrix", p);} + void setmiterlimit (vector &p) override {print("setmiterlimit", p);} + void setopacityalpha (vector &p) override {print("setopacityalpha", p);} + void setrgbcolor (vector &p) override {print("setrgbcolor", p);} + void shfill (vector &p) override {print("shfill", p);} + void stroke (vector &p) override {print("stroke", p);} + void translate (vector &p) override {print("translate", p);} string result () const {return _oss.str();} diff --git a/Build/source/texk/dvisvgm/version.ac b/Build/source/texk/dvisvgm/version.ac index 8775e274216..b8eabe844fe 100644 --- a/Build/source/texk/dvisvgm/version.ac +++ b/Build/source/texk/dvisvgm/version.ac @@ -9,4 +9,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current dvisvgm version -m4_define([dvisvgm_version], [2.3.4]) +m4_define([dvisvgm_version], [2.3.5]) -- cgit v1.2.3