summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2018-03-24 06:50:31 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2018-03-24 06:50:31 +0000
commit06b7fc5990194d2924b0cf172c9313bfb395feed (patch)
tree2e49565cad084288fa4cf7acdbe61acf94a3069e /Build/source/texk/dvisvgm
parentde73f5fe8765d13a7e5ed73137e955dd85d0d62c (diff)
dvisvgm-2.3.5
git-svn-id: svn://tug.org/texlive/trunk@47098 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvisvgm')
-rw-r--r--Build/source/texk/dvisvgm/ChangeLog4
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/ChangeLog5
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles12
-rwxr-xr-xBuild/source/texk/dvisvgm/configure22
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/NEWS5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/configure.ac2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.cpp11
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Matrix.hpp17
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp3
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp10
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp20
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp1
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp53
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp18
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp73
-rw-r--r--Build/source/texk/dvisvgm/version.ac2
18 files changed, 160 insertions, 106 deletions
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 <kakuto@fuk.kindai.ac.jp>
+
+ * Import 2.3.5.
+
2018-03-16 Karl Berry <karl@freefriends.org>
* 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 <kakuto@fuk.kindai.ac.jp>
+
+ * Import 2.3.5.
+ * patch-08-makefiles: adapt.
+
2018-02-21 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
* 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 <tex-k@tug.org>.
#
@@ -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 <bug-libtool@gnu.org>."
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 <martin.gieseking@uos.de>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" 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<double> 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 <initializer_list>
#include <istream>
#include <string>
#include <vector>
@@ -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<double> &v, int start=0);
+ Matrix (std::initializer_list<double> initlist);
Matrix& set (double d);
Matrix& set (double v[], unsigned size);
Matrix& set (const std::vector<double> &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<double> &p) =0;
virtual void clip (std::vector<double> &p) =0;
@@ -72,6 +70,7 @@ struct PSActions
virtual void setmatrix (std::vector<double> &p) =0;
virtual void setmiterlimit (std::vector<double> &p) =0;
virtual void setopacityalpha (std::vector<double> &p) =0;
+ virtual void setpagedevice (std::vector<double> &p) =0;
virtual void setpattern (std::vector<double> &p) =0;
virtual void setrgbcolor (std::vector<double> &rgb) =0;
virtual void shfill (std::vector<double> &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<string,s
auto groupNode = util::make_unique<XMLElementNode>("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<double> &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<double>&) {
_clipStack.dup();
}
@@ -645,7 +659,7 @@ void PsSpecialHandler::fill (vector<double> &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<double> &p) override;
void setmiterlimit (std::vector<double> &p) override {_miterlimit = p[0];}
void setopacityalpha (std::vector<double> &p) override {_opacityalpha = p[0];}
+ void setpagedevice (std::vector<double> &p) override;
void setpattern (std::vector<double> &p) override;
void setrgbcolor (std::vector<double> &rgb) override;
void shfill (std::vector<double> &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<</mx 3 -1"
-" roll>>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<</mx 3 -1 roll>>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<double> 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<double> &p) {print("applyscalevals", p);}
- void clip (vector<double> &p) {print("clip", p);}
- void clippath (vector<double> &p) {print("clippath", p);}
- void closepath (vector<double> &p) {print("closepath", p);}
- void curveto (vector<double> &p) {print("curveto", p);}
- void eoclip (vector<double> &p) {print("eoclip", p);}
- void eofill (vector<double> &p) {print("eofill", p);}
- void fill (vector<double> &p) {print("fill", p);}
- void gsave (vector<double> &p) {print("gsave", p);}
- void grestore (vector<double> &p) {print("grestore", p);}
- void grestoreall(std::vector<double> &p) {print("grestoreall", p);}
- void initclip (vector<double> &p) {print("initclip", p);}
- void lineto (vector<double> &p) {print("lineto", p);}
- void moveto (vector<double> &p) {print("moveto", p);}
- void makepattern (vector<double> &p) {print("makepattern", p);}
- void setpattern (vector<double> &p) {print("setpattern", p);}
- void newpath (vector<double> &p) {print("newpath", p);}
- void querypos (vector<double> &p) {print("querypos", p);}
- void restore(std::vector<double> &p) {print("restore", p);}
- void rotate (vector<double> &p) {print("rotate", p);}
- void save(std::vector<double> &p) {print("save", p);}
- void scale (vector<double> &p) {print("scale", p);}
- void setcmykcolor (vector<double> &p) {print("setcmykcolor", p);}
- void setdash (vector<double> &p) {print("setdash", p);}
- void setgray (vector<double> &p) {print("setgray", p);}
- void sethsbcolor (vector<double> &p) {print("sethsbcolor", p);}
- void setlinecap (vector<double> &p) {print("setlinecap", p);}
- void setlinejoin (vector<double> &p) {print("setlinejoin", p);}
- void setlinewidth (vector<double> &p) {print("setlinewidth", p);}
- void setmatrix (vector<double> &p) {print("setmatrix", p);}
- void setmiterlimit (vector<double> &p) {print("setmiterlimit", p);}
- void setopacityalpha (vector<double> &p) {print("setopacityalpha", p);}
- void setrgbcolor (vector<double> &p) {print("setrgbcolor", p);}
- void shfill (vector<double> &p) {print("shfill", p);}
- void stroke (vector<double> &p) {print("stroke", p);}
- void translate (vector<double> &p) {print("translate", p);}
+ void applyscalevals (vector<double> &p) override {print("applyscalevals", p);}
+ void clip (vector<double> &p) override {print("clip", p);}
+ void clippath (vector<double> &p) override {print("clippath", p);}
+ void closepath (vector<double> &p) override {print("closepath", p);}
+ void curveto (vector<double> &p) override {print("curveto", p);}
+ void eoclip (vector<double> &p) override {print("eoclip", p);}
+ void eofill (vector<double> &p) override {print("eofill", p);}
+ void fill (vector<double> &p) override {print("fill", p);}
+ void gsave (vector<double> &p) override {print("gsave", p);}
+ void grestore (vector<double> &p) override {print("grestore", p);}
+ void grestoreall(std::vector<double> &p) override {print("grestoreall", p);}
+ void initclip (vector<double> &p) override {print("initclip", p);}
+ void lineto (vector<double> &p) override {print("lineto", p);}
+ void moveto (vector<double> &p) override {print("moveto", p);}
+ void makepattern (vector<double> &p) override {print("makepattern", p);}
+ void setpattern (vector<double> &p) override {print("setpattern", p);}
+ void setpagedevice (vector<double> &p) override {print("setpagedevice", p);}
+ void newpath (vector<double> &p) override {print("newpath", p);}
+ void querypos (vector<double> &p) override {print("querypos", p);}
+ void restore(std::vector<double> &p) override {print("restore", p);}
+ void rotate (vector<double> &p) override {print("rotate", p);}
+ void save(std::vector<double> &p) override {print("save", p);}
+ void scale (vector<double> &p) override {print("scale", p);}
+ void setcmykcolor (vector<double> &p) override {print("setcmykcolor", p);}
+ void setdash (vector<double> &p) override {print("setdash", p);}
+ void setgray (vector<double> &p) override {print("setgray", p);}
+ void sethsbcolor (vector<double> &p) override {print("sethsbcolor", p);}
+ void setlinecap (vector<double> &p) override {print("setlinecap", p);}
+ void setlinejoin (vector<double> &p) override {print("setlinejoin", p);}
+ void setlinewidth (vector<double> &p) override {print("setlinewidth", p);}
+ void setmatrix (vector<double> &p) override {print("setmatrix", p);}
+ void setmiterlimit (vector<double> &p) override {print("setmiterlimit", p);}
+ void setopacityalpha (vector<double> &p) override {print("setopacityalpha", p);}
+ void setrgbcolor (vector<double> &p) override {print("setrgbcolor", p);}
+ void shfill (vector<double> &p) override {print("shfill", p);}
+ void stroke (vector<double> &p) override {print("stroke", p);}
+ void translate (vector<double> &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])