summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-1.6
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2014-06-20 09:30:04 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2014-06-20 09:30:04 +0000
commitff2b3637ce66eb629ed6b5df7a6d10e319d94082 (patch)
treea8a32a1318c1fb5d4b2155a233013e549f36b5ef /Build/source/texk/dvisvgm/dvisvgm-1.6
parent698e2e5430155bce1cadc1d8252978f770a5d2e7 (diff)
dvisvgm 1.7
git-svn-id: svn://tug.org/texlive/trunk@34333 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-1.6')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/AUTHORS7
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/COPYING674
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/ChangeLog3666
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/INSTALL229
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/LGPL-2.1.txt504
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/Makefile.am9
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/NEWS349
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/README110
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/config.h.in169
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/configure.ac166
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/doc/Makefile.am39
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.11103
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.txt.in676
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.cpp38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.h34
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.cpp126
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.h109
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.cpp263
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.h86
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.cpp230
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.h148
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.cpp142
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.h52
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.cpp265
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.h81
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.cpp113
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.h51
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.cpp179
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.h57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.cpp57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.h51
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.cpp35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.h58
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Character.h46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.cpp372
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.h99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.cpp264
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.h67
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.cpp126
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.cpp316
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.h174
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.cpp60
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.h50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIActions.h54
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.cpp840
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.h161
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.cpp370
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.h65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.cpp368
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.h107
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.cpp129
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.h56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.cpp208
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.h35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.cpp115
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.h46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.cpp74
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.h69
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.cpp233
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.h57
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.cpp134
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.h50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.cpp278
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.h35
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.cpp258
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.h59
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.cpp330
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.h48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.cpp668
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.h388
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.cpp390
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.h70
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.cpp98
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.h65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.cpp426
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.h84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.cpp344
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.h84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.cpp305
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.h78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.cpp41
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.h64
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontStyle.h12
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.cpp93
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.h60
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.cpp357
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.h110
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.cpp103
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.h47
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.cpp299
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.h103
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Glyph.h28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GlyphTracerMessages.h65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/GraphicPath.h340
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.cpp263
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.h75
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.cpp138
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.h145
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.cpp330
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.h89
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.cpp99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.h44
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.cpp85
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.h62
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Makefile.am53
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.cpp276
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.h72
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.cpp491
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.h108
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.cpp274
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.h114
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MessageException.h39
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.cpp134
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.h43
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.cpp106
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.h52
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.cpp46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSFilter.h41
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.cpp357
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.h127
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.cpp175
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.h100
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.cpp118
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.h56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.cpp135
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.h49
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.cpp157
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.h48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Pair.h79
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.cpp77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.h39
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.cpp190
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.h41
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.cpp874
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.h149
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGOutputBase.h33
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.cpp433
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.h111
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.cpp86
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.h50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialActions.h91
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialHandler.h66
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.cpp170
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.h72
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.cpp165
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.h65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.cpp82
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.h46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.cpp267
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.h102
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.cpp50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.h29
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.cpp156
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.h66
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.cpp208
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.h58
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.cpp327
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.h50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFActions.h38
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.cpp192
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.h65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/VectorStream.h46
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.cpp101
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.h44
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.cpp344
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.h134
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.cpp150
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.h40
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/dvisvgm.cpp436
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.cpp172
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.h121
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/iapi.h300
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/ierrors.h153
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/macros.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/options.xml155
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/psdefs.cpp83
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-1.6/src/types.h84
179 files changed, 0 insertions, 31868 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/AUTHORS b/Build/source/texk/dvisvgm/dvisvgm-1.6/AUTHORS
deleted file mode 100644
index d9b6468421e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/AUTHORS
+++ /dev/null
@@ -1,7 +0,0 @@
-Martin Gieseking <martin.gieseking@uos.de>
- author of dvisvgm
-
-Deepak Bandyopadhyay, Lutz Kettner
- authors of gzstream library
- dvisvgm uses a slightly modified version
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/COPYING b/Build/source/texk/dvisvgm/dvisvgm-1.6/COPYING
deleted file mode 100644
index 94a9ed024d3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/ChangeLog b/Build/source/texk/dvisvgm/dvisvgm-1.6/ChangeLog
deleted file mode 100644
index 67663e1a0d7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/ChangeLog
+++ /dev/null
@@ -1,3666 +0,0 @@
-2014-04-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- set version to 1.6
-
-2014-04-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/EPSToSVG.cpp:
- removed date and machine triplet from generated SVG files
-
-2014-04-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/HtmlSpecialHandler.cpp,
- src/HtmlSpecialHandler.h:
- added optional selection of line/box colors to option --linkmark
-
-2014-04-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/options.xml:
- changed default argument of option --linkmark to 'box'
-
- * src/DVIReader.h, src/DVIToSVGActions.h, src/HtmlSpecialHandler.cpp,
- src/HtmlSpecialHandler.h, src/SpecialActions.h:
- only split hyperlink boxes on line breaks
-
- * src/CommandLine.h, src/DVIToSVG.cpp, src/EPSToSVG.cpp:
- don't link GS messages unnecessarily if HAVE_LIBGS is defined
-
-2014-04-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp, src/options.xml:
- added command-line option --zoom
-
- * src/Ghostscript.cpp, src/dvisvgm.cpp:
- moved lookup of MiKTeX's GS DLL to get_libgs()
-
- * doc/dvisvgm.txt.in, src/Ghostscript.cpp:
- if libgs is loaded during runtime, look for libgs.so.X instead of
- libgs.so
-
- * src/DLLoader.cpp:
- prevent calling dlopen() if the length of the string argument is 0
-
-2014-04-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.5.3
-
- * src/CMap.cpp, src/CmdLineParserBase.cpp, src/ColorSpecialHandler.cpp,
- src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Doxyfile,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EPSFile.cpp, src/EmSpecialHandler.cpp, src/FileFinder.cpp,
- src/FileSystem.cpp, src/Font.cpp, src/FontCache.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontMap.cpp, src/GraphicPath.h,
- src/PSInterpreter.cpp, src/PageRanges.cpp, src/PsSpecialHandler.cpp,
- src/SVGTree.cpp, src/SVGTree.h, src/SpecialManager.cpp, src/Subfont.cpp,
- src/TFM.cpp, src/TpicSpecialHandler.cpp, src/XMLDocument.cpp,
- src/XMLNode.cpp, src/dvisvgm.cpp:
- fixed issues in the doxygen documentation
-
-2014-04-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.h, src/DVIActions.cpp, src/DVIActions.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/DvisvgmSpecialHandler.cpp, src/EPSToSVG.cpp,
- src/EmSpecialHandler.cpp, src/Font.h, src/FontManager.cpp,
- src/GFGlyphTracer.cpp, src/GFReader.cpp, src/GFTracer.cpp,
- src/GFTracer.h, src/GraphicPath.h, src/HtmlSpecialHandler.h,
- src/Makefile.am, src/PSPattern.cpp, src/PSPreviewFilter.cpp,
- src/PSPreviewFilter.h, src/PageSize.cpp, src/PageSize.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/TFM.cpp, src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h,
- src/VFReader.cpp:
- switched internal computations from TeX points (pt) to PS points (bp)
-
- * src/DVIToSVGActions.cpp:
- equalize implementations of moveToX and moveToY
-
-2014-02-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/DVIReader.h:
- ensure updating the SVG cursor position when executing DVI command
- set_rule
-
-2014-01-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Ghostscript.cpp:
- check if library given by --libgs is actually a GS library
-
-2014-01-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
-2014-01-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- set version to 1.5.2
-
- * src/FileFinder.cpp:
- return 'unknown' if MiKTeX version can't be retrieved
-
- * src/Directory.cpp:
- initialize Directory member variables (Win only)
-
- * src/FileFinder.cpp:
- catch exceptions thrown by MiKTeXCom object
-
-2014-01-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h,
- src/CMapReader.cpp, src/CMapReader.h, src/CRC32.cpp, src/CRC32.h,
- src/Calculator.cpp, src/Calculator.h, src/CharMap.cpp, src/CharMap.h,
- src/CharMapID.cpp, src/CharMapID.h, src/Character.h,
- src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp,
- src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EPSFile.cpp, src/EPSFile.h, src/EPSToSVG.cpp, src/EPSToSVG.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/EncFile.cpp,
- src/EncFile.h, src/FileFinder.cpp, src/FileFinder.h, src/FilePath.cpp,
- src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp,
- src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp,
- src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h,
- src/FontMetrics.cpp, src/FontMetrics.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h,
- src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.cpp,
- src/HtmlSpecialHandler.h, src/InputBuffer.cpp, src/InputBuffer.h,
- src/InputReader.cpp, src/InputReader.h, src/JFM.cpp, src/JFM.h,
- src/Length.cpp, src/Length.h, src/Makefile.am, src/Makefile.old,
- src/MapLine.cpp, src/MapLine.h, src/Matrix.cpp, src/Matrix.h,
- src/Message.cpp, src/Message.h, src/MessageException.h,
- src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/MiKTeXCom.cpp,
- src/MiKTeXCom.h, src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h,
- src/PSFilter.h, src/PSInterpreter.cpp, src/PSInterpreter.h,
- src/PSPattern.cpp, src/PSPattern.h, src/PSPreviewFilter.cpp,
- src/PSPreviewFilter.h, src/PageRanges.cpp, src/PageRanges.h,
- src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/PdfSpecialHandler.cpp,
- src/PdfSpecialHandler.h, src/Process.cpp, src/Process.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGOutputBase.h,
- src/SVGTree.cpp, src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h,
- src/SignalHandler.cpp, src/SignalHandler.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp,
- src/StreamWriter.h, src/Subfont.cpp, src/Subfont.h, src/System.cpp,
- src/System.h, src/TFM.cpp, src/TFM.h, src/Terminal.cpp, src/Terminal.h,
- src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, src/VFActions.h,
- src/VFReader.cpp, src/VFReader.h, src/VectorStream.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h,
- src/options.dtd, src/options.xml, src/psdefs.cpp, src/psdefs.ps,
- src/types.h, tests/BoundingBoxTest.cpp, tests/CMapReaderTest.cpp,
- tests/CMapTest.cpp, tests/CRC32Test.cpp, tests/CalculatorTest.cpp,
- tests/ColorSpecialTest.cpp, tests/ColorTest.cpp,
- tests/CommandLineTest.cpp, tests/DirectoryTest.cpp,
- tests/FileFinderTest.cpp, tests/FilePathTest.cpp,
- tests/FileSystemTest.cpp, tests/FontManagerTest.cpp,
- tests/FontMapTest.cpp, tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp,
- tests/LengthTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp,
- tests/MatrixTest.cpp, tests/MessageExceptionTest.cpp,
- tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp,
- tests/PageSizeTest.cpp, tests/PairTest.cpp,
- tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp,
- tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp,
- tests/SubfontTest.cpp, tests/TypesTest.cpp, tests/VectorStreamTest.cpp,
- tests/check-conv, tests/create-makefile, tests/normalize.xsl:
- updated year in copyright statements to 2014
-
-2013-12-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp:
- catch potential StreamReaderException
-
- * src/Directory.cpp, src/Directory.h, src/FontMap.cpp,
- tests/DirectoryTest.cpp:
- changed directory entry types from char to enums
-
- * src/Font.cpp:
- check if units per EM are not 0 to prevent divisions by zero
-
-2013-12-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/Directory.cpp, src/GFReader.cpp:
- added missing initializations of member variables
-
- * src/FontCache.cpp, src/SpecialManager.cpp:
- restore stream format flags
-
- * src/DvisvgmSpecialHandler.cpp, src/FontCache.cpp:
- ensure null pointer checks before dereferencing
-
- * src/DVIReader.cpp:
- check if denominator of DVI unit is non-zero
-
- * src/Matrix.cpp:
- ensure return value of istream::get() is assigned to int vars
-
- * src/FontCache.cpp:
- avoid accessing strings constructed from temporaries
-
- * src/BoundingBox.cpp:
- explicitely initialize BoundingBox fields
-
-2013-11-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/SVGTree.cpp, src/SVGTree.h:
- don't let global font colors interfere with color specials
-
-2013-10-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
-2013-10-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- set version to 1.5.1
-
- * src/DVIReader.cpp:
- temporarily reactivated processing of font definitions located in the
- postamble
-
- * src/FileSystem.cpp, src/MetafontWrapper.cpp:
- added explicit casts from ifstream to bool
-
- * src/Bitmap.cpp, src/Color.cpp, src/JFM.cpp, src/Matrix.cpp:
- added missing #includes of header file <algorithm>
-
-2013-10-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- suppress output of logical page number if it equals physical page number
-
-2013-10-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp:
- ensure proper evaluation of tightpage data if multiple pages are
- processed
-
-2013-10-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Color.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
- added 'const' to read-only methods
-
- * src/InputBuffer.h:
- don't check unsigned variables for negative values
-
-2013-09-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- changed warning message that appears if PS support has been disabled
- permanently
-
- * src/DVIToSVG.cpp, src/Ghostscript.h, src/dvisvgm.cpp:
- added missing guards and functions to prevent compilation errors if
- DISABLE_GS is set
-
- * src/FontCache.cpp, src/FontCache.h:
- renamed FontCache::VERSION to FontCache::FORMAT_VERSION
-
-2013-09-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.5
-
- * src/DLLoader.h, src/Directory.h:
- moved #define NOMINMAX to Windows config.h
-
- * src/BgColorSpecialHandler.cpp, src/Bitmap.cpp, src/BoundingBox.cpp,
- src/CMap.cpp, src/CMapManager.cpp, src/CMapReader.cpp, src/CRC32.cpp,
- src/Calculator.cpp, src/CharMap.cpp, src/CmdLineParserBase.cpp,
- src/Color.cpp, src/ColorSpecialHandler.cpp, src/CommandLine.cpp,
- src/CommandLine.h, src/DLLoader.cpp, src/DVIActions.cpp,
- src/DVIReader.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp,
- src/Directory.cpp, src/DvisvgmSpecialHandler.cpp, src/EPSFile.cpp,
- src/EPSToSVG.cpp, src/EmSpecialHandler.cpp, src/EncFile.cpp,
- src/FileFinder.cpp, src/FilePath.cpp, src/FileSystem.cpp, src/Font.cpp,
- src/FontCache.cpp, src/FontEncoding.cpp, src/FontEngine.cpp,
- src/FontManager.cpp, src/FontMap.cpp, src/FontMetrics.cpp,
- src/GFGlyphTracer.cpp, src/GFReader.cpp, src/GFTracer.cpp,
- src/Ghostscript.cpp, src/Ghostscript.h, src/HtmlSpecialHandler.cpp,
- src/InputBuffer.cpp, src/InputReader.cpp, src/JFM.cpp, src/Length.cpp,
- src/MapLine.cpp, src/Matrix.cpp, src/Message.cpp,
- src/MetafontWrapper.cpp, src/MiKTeXCom.cpp, src/NoPsSpecialHandler.cpp,
- src/PSInterpreter.cpp, src/PSPattern.cpp, src/PSPreviewFilter.cpp,
- src/PageRanges.cpp, src/PageSize.cpp, src/PdfSpecialHandler.cpp,
- src/Process.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp,
- src/SignalHandler.cpp, src/SpecialManager.cpp, src/StreamReader.cpp,
- src/StreamWriter.cpp, src/Subfont.cpp, src/System.cpp, src/TFM.cpp,
- src/Terminal.cpp, src/TpicSpecialHandler.cpp, src/VFReader.cpp,
- src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/dvisvgm.cpp:
- include config.h at the top of every translation unit
-
-2013-08-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- updated manpage
-
- * src/Font.cpp, src/Font.h, src/XMLString.cpp:
- replaced entity references by corresponding UTF-8 characters; use
- correct unicode points rather than DVI charcodes
-
- * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontManager.h, src/FontStyle.h, src/SVGTree.cpp, src/dvisvgm.cpp:
- added support for XDV (DVI format 5) files
-
- * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontMetrics.h, src/JFM.h,
- src/SVGTree.cpp, src/SVGTree.h, src/TFM.h, src/dvisvgm.cpp:
- added support for DVI format 3 (pTeX, vertical mode)
-
- * src/FontMetrics.h, src/JFM.cpp, src/JFM.h, src/TFM.h:
- added retrieval of vertical mode flag to class FontMetrics
-
-2013-08-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/Font.h,
- src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontManager.cpp, src/Makefile.am:
- replaced local std::map tables used in Font classes with new class
- CharMap
-
-2013-08-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/SVGTree.cpp:
- appended px unit to font-size attributes in style section
-
-2013-08-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp:
- suppress error messages from makeFOO tools
-
-2013-08-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h:
- moved assignment of base font map to Font class
-
- * src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h,
- src/EncFile.h, src/Font.cpp, src/Font.h, src/FontEncoding.cpp,
- src/FontEncoding.h, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h:
- derive EncodingPair from FontEncoding
-
-2013-08-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/dvisvgm.cpp:
- fix number of dashes printed by -V1
-
- * configure.ac, src/FileFinder.cpp:
- check if the kpathsea library is C++-safe (patch by Peter Breitenlohner)
-
-2013-08-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Matrix.cpp, src/Matrix.h:
- renamed Matrix skewing methods
-
-2013-08-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Ghostscript.h, src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp:
- added missing variable initializations
-
- * src/Font.cpp, src/Font.h, src/FontEngine.cpp, src/FontManager.cpp,
- src/FontMap.cpp, src/FontMap.h, src/FontStyle.h, src/Makefile.am:
- store pointers to font map and encoding in Font objects to speed up
- looking them up
-
-2013-08-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CMapManager.cpp, src/CMapManager.h, src/FontManager.cpp:
- avoid const_cast in CMapManager
-
-2013-08-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CMap.h, src/CMapManager.cpp:
- properly handle 'unicode' encoding entries set in font map
-
- * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp:
- disable font processing while scanning PS header specials
-
-2013-08-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- set version to 1.4
-
- * NEWS:
- updated NEWS
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.h, src/EPSToSVG.h,
- src/Matrix.cpp, src/Matrix.h, src/PsSpecialHandler.cpp,
- src/SpecialActions.h, src/dvisvgm.cpp:
- apply page transformations to width, height, and depth of preview bbox
-
- * src/DVIToSVG.cpp:
- removed redundant #include statements
-
- * src/DVIToSVG.cpp, src/Makefile.am, src/SVGTree.cpp,
- src/XMLDocTypeNode.h:
- removed DOCTYPE declaration from generated files as suggested by the SVG
- specification
-
- * src/XMLDocument.cpp, src/XMLString.cpp:
- changed encoding of SVG files from ISO-8859-1 to UTF-8
-
-2013-07-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, src/CMapReader.cpp,
- src/CharMapID.cpp, src/CharMapID.h, src/Font.cpp, src/Font.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontMap.cpp, src/FontMap.h, src/Makefile.am:
- try to decode characters of non-CID fonts that have a CMap assigned in
- the fontmap
-
- * src/CMap.cpp, src/CMap.h, src/CMapReader.cpp, src/CMapReader.h,
- tests/CMapReaderTest.cpp, tests/CMapTest.cpp, tests/Makefile.am:
- added evaluation of base font (bf) sections in CMap files
-
- * src/Font.cpp, src/Font.h, src/FontMetric.cpp, src/FontMetric.h,
- src/FontMetrics.cpp, src/FontMetrics.h, src/Makefile.am, src/TFM.h:
- renamed class FontMetric to FontMetrics
-
- * src/FileFinder.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp:
- added support for OTF fonts
-
- * src/CMap.cpp, src/CMap.h, src/Character.h, src/EncFile.h, src/Font.cpp,
- src/Font.h, src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h,
- src/Makefile.am, tests/CMapTest.cpp:
- added Character class to handle character names, codes, and indexes
- consistently
-
- * src/CMap.cpp, src/CMap.h, src/CMapManager.h, src/EncFile.cpp,
- src/EncFile.h, src/FileFinder.cpp, src/Font.cpp, src/Font.h,
- src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontManager.cpp, src/Makefile.am,
- tests/CMapTest.cpp:
- derive .enc encoding vectors and CMaps from common base class
- FontEncoding
-
- * src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h,
- src/CMapReader.cpp, src/CMapReader.h, src/FontManager.cpp,
- src/Makefile.am, tests/CMapTest.cpp, tests/Makefile.am:
- added classes to handle CMap files
-
-2013-07-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/DVIActions.h, src/DVIReader.cpp,
- src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/EPSToSVG.cpp, src/Makefile.am, src/PSFilter.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PSPreviewFilter.cpp, src/PSPreviewFilter.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h:
- added evaluation of bounding box information created by preview package
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp:
- added funtion to execute PS code snippets and retrieve their results
-
- * src/BgColorSpecialHandler.h, src/DVIToSVG.cpp, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h:
- ensure that PS header code is evaluated before the page/body code; also
- execute bop-hook and eop-hook
-
- * src/JFM.cpp:
- fixed retrieval of char indexes if a JFM contains entries of chartype 0
- only
-
-2013-07-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontMap.cpp:
- check for EOF prior to try to parse another mapline
-
- * src/psdefs.cpp, src/psdefs.ps:
- PS handler: call newpath before executing charpath in operator show
-
- * src/EPSToSVG.cpp:
- print warning message if height or width of EPS bbox is 0
-
-2013-07-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.cpp, src/psdefs.ps:
- replaced PS operator prval with =only in psdefs
-
-2013-07-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.cpp, src/psdefs.ps:
- properly store PS operator applyscalevals in systemdict
-
- * src/DVIToSVG.cpp:
- ensure catching PSExceptions while processing PS header specials to
- prevent segfaults
-
-2013-07-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/FileFinder.h:
- FileFinder: added lookup of cmap files
-
- * src/Process.cpp, src/Process.h:
- extended Process::run() to grab the output written to stdout
-
-2013-07-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp:
- command-line parser: changed type of argument mode from char to enum
-
-2013-06-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp:
- removed redundant 'using namespace std'
-
-2013-06-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/HtmlSpecialHandler.cpp,
- src/HtmlSpecialHandler.h, src/dvisvgm.cpp:
- extend option --linkmark to highlight linked areas by a given background
- color
-
-2013-06-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp,
- src/ColorSpecialHandler.h, src/SpecialActions.h,
- tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, tests/Makefile.am:
- use Color class in ColorSpecialHandler rather than local code; added
- ColorTest
-
-2013-05-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/dvisvgm.cpp:
- added a missing (underlining) hyphen to the output of -V1
-
-2013-05-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.3
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/HtmlSpecialHandler.cpp, src/dvisvgm.cpp, src/options.xml:
- added option --linkmark to select the highlighing variant for hyperlinks
-
- * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/HtmlSpecialHandler.cpp,
- src/HtmlSpecialHandler.h, src/Makefile.am, src/SpecialManager.cpp:
- added support of hyperref specials
-
- * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/dvisvgm.cpp:
- try to load the Ghostscript library that comes with MiKTeX
-
- * src/Font.cpp, src/FontMetric.cpp, src/FontMetric.h, src/JFM.cpp,
- src/JFM.h, src/Makefile.am, src/StreamReader.h, src/TFM.cpp, src/TFM.h:
- added support for Japanese font metric (JFM) files
-
- * src/Font.cpp, src/Font.h, src/FontManager.h, src/FontMetric.cpp,
- src/FontMetric.h, src/Makefile.am, src/TFM.cpp, src/TFM.h:
- handle invalid TFM files properly
-
-2013-05-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h,
- src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h:
- added page number parameter to DVIEndPageListener::dviEndPage()
-
- * src/EmSpecialHandler.h, src/NoPsSpecialHandler.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.h:
- moved DVI listener methods to dedicated listener interface classes
-
- * src/HtmlSpecialHandler.h:
- dropped old HtmlSpecialHandler.h that should had been removed long time
- ago
-
- * src/InputReader.cpp, src/InputReader.h:
- added optional parameter 'quotechar' to InputReader::parseAttributes()
-
- * src/DVIToSVGActions.h, src/EPSToSVG.h, src/SpecialActions.h:
- provide the context push/pop methods of class SVGTree to special
- handlers
-
- * src/SVGTree.cpp, src/SVGTree.h:
- added methods to push and pop 'context elements' to a page that wrap
- parts of the page contents
-
- * AUTHORS, Makefile.am, README, configure.ac, potracelib/Makefile.am,
- potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h:
- removed bundled potrace library
-
-2013-05-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/Terminal.cpp, src/Terminal.h:
- disable cursor when showing the progress indicator (Windows only)
-
-2013-04-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- don't link NoPsSpecialHandler if HAVE_LIBGS
-
-2013-04-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontEncoding.cpp:
- fixed bracketing bug that prevented lookup of fontmap files
-
-2013-04-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.2.2
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp,
- src/Calculator.h, src/Matrix.cpp, src/Matrix.h, src/MessageException.h,
- src/PageSize.cpp, src/PageSize.h, src/StreamReader.cpp,
- src/StreamReader.h, src/VFReader.cpp, src/VFReader.h, src/VectorStream.h,
- src/XMLDocument.cpp, src/XMLDocument.h:
- added missing underscores to private member variables
-
-2013-04-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.h,
- src/CmdLineParserBase.h, src/DVIToSVGActions.cpp, src/Message.cpp,
- src/VFReader.cpp:
- added missing member initializations to some classes
-
- * doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp, src/CommandLine.cpp,
- src/options.dtd, src/options.xml:
- added information about 'dvisvgm -E' to usage line
-
-2013-04-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp, src/Makefile.am, src/NoPsSpecialHandler.cpp,
- src/NoPsSpecialHandler.h, src/SpecialManager.cpp:
- print a warning message if PS specials are found but ignored
-
-2013-04-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/dvisvgm.cpp:
- catch MessageException if MiKTeX version can't be obtained
-
-2013-04-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.2.1
-
- * tests/Makefile.am, tests/create-makefile:
- updated tests/Makefile.am to honor system potracelib if present
-
-2013-04-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PageRanges.h:
- dropped unused variable PageRanges::_max
-
- * src/CmdLineParserBase.h, src/InputReader.h:
- changed 'struct InputReader' to 'class InputReader'
-
- * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp:
- allow the background color special to insert white rectancles
-
-2013-04-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/XMLNode.cpp, src/XMLNode.h:
- unhide derived method XMLDeclarationNode::append
-
-2013-03-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile.am, configure.ac:
- don't build bundled potracelib if system library is used (patch by
- Alexis Ballier)
-
-2013-03-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h:
- updated bundled potrace library to version 1.11
-
-2013-03-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/decompose.h, potracelib/lists.h, potracelib/progress.h,
- potracelib/trace.c, potracelib/trace.h, src/EPSFile.cpp,
- src/EPSToSVG.cpp, src/EPSToSVG.h, src/PSPattern.cpp, src/PSPattern.h,
- src/SVGOutputBase.h:
- converted DOS line endings
-
-2013-02-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.2
-
- * src/psdefs.cpp, src/psdefs.ps:
- improved processing of PS operator "show"
-
- * tests/MapLineTest.cpp:
- prevent MapLineTest from failing if file UGBK.sfd is not available
-
- * src/Makefile.am, src/PSInterpreter.cpp, src/psdefs.cpp, src/psdefs.ps,
- src/psdefs.psc:
- make psdefs a separate compilation unit
-
- * src/Makefile.am, src/PSInterpreter.cpp, src/PSInterpreter.h,
- src/PSPattern.cpp, src/PSPattern.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc,
- tests/PSInterpreterTest.cpp:
- PS handler: added support of tiling patterns
-
-2013-02-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/XMLNode.cpp, src/XMLNode.h:
- added methods to lookup attribute values and selected descendant XML
- nodes
-
-2013-02-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FilePath.cpp:
- adapt path separators on Windows systems to get the correct output path
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h:
- added PSInterpreter::limit() to limit the number of bytes to be
- processed
-
-2013-02-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp,
- src/CommandLine.h:
- applied a few refactorings to the command-line parser
-
-2013-02-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h,
- src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, src/options.xml:
- added optional parameter to option --help to specify output format
-
-2013-02-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp,
- src/CommandLine.h, src/EmSpecialHandler.cpp, src/GraphicPath.h,
- src/Matrix.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/options.xml:
- added option --precision to set the number of decimal places applied to
- attribute values
-
-2013-01-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CommandLine.cpp:
- fixed alignment of --help text
-
-2013-01-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, README:
- updated NEWS and README
-
- * configure.ac, src/Doxyfile:
- set version to 1.1
-
- * src/CommandLine.cpp, src/Font.cpp, src/Font.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h,
- src/MapLine.cpp, src/MapLine.h, tests/MapLineTest.cpp:
- implemented evaluation of font style options given in a mapline
-
- * src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/MapLine.h:
- replaced FontMap entries by pointers; initialize entries with MapLine
- objects
-
- * src/DVIReader.cpp, src/DVIToSVG.cpp, src/FileFinder.cpp, src/Font.cpp,
- src/Font.h, src/FontEncoding.cpp, src/FontEngine.cpp, src/FontEngine.h,
- src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/Makefile.am,
- src/MapLine.cpp, src/MapLine.h, src/Subfont.cpp, src/Subfont.h,
- tests/FontMapTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp,
- tests/SubfontTest.cpp, tests/create-makefile, tests/sample.sfd:
- added support for subfont definitions and multi-font (.ttc) files
-
-2013-01-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontEngine.cpp, src/FontEngine.h:
- removed unneeded code related to font sizes from class FontEngine
-
-2013-01-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/FontMap.cpp, src/FontMap.h,
- src/Makefile.am, src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h:
- added PdfSpecialHandler to evaluate pdf:mapline and pdf:mapfile specials
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/FontMap.cpp, src/FontMap.h, src/dvisvgm.cpp, src/options.xml:
- renamed option --map-file to --fontmap; allow multiple mapfiles and
- modes
-
-2013-01-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/FontEncoding.cpp:
- fixed a string exception that occurred when an encoding file or an entry
- in the encoding table is unavailable
-
-2013-01-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/FileFinder.h, src/FontEncoding.cpp,
- src/FontEncoding.h:
- removed font encoding methods from FileFinder
-
-2013-01-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, src/Calculator.h,
- src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp,
- src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp,
- src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp,
- src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h,
- src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h,
- src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp,
- src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PageRanges.cpp, src/PageRanges.h,
- src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/Process.cpp,
- src/Process.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/SVGTree.cpp, src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h,
- src/SignalHandler.cpp, src/SignalHandler.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp,
- src/StreamWriter.h, src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h,
- src/Terminal.cpp, src/Terminal.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h,
- src/options.dtd, src/options.xml, src/psdefs.ps, src/psdefs.psc,
- src/types.h, tests/BoundingBoxTest.cpp, tests/CRC32Test.cpp,
- tests/CalculatorTest.cpp, tests/ColorSpecialTest.cpp,
- tests/CommandLineTest.cpp, tests/DirectoryTest.cpp,
- tests/FileFinderTest.cpp, tests/FilePathTest.cpp,
- tests/FileSystemTest.cpp, tests/FontManagerTest.cpp,
- tests/FontMapTest.cpp, tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp,
- tests/LengthTest.cpp, tests/Makefile.am, tests/MatrixTest.cpp,
- tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp,
- tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp,
- tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp,
- tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp,
- tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/create-makefile:
- updated year in copyright statements to 2013
-
-2012-12-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp:
- reduced scope of some variables
-
- * src/CmdLineParserBase.h, src/Directory.cpp, src/GFReader.cpp,
- src/PsSpecialHandler.cpp:
- initialize uninitialized member variables
-
- * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/Process.cpp:
- avoid creating copies of exception objects
-
- * src/FontCache.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp:
- check emptiness of containers with empty() instead of size()
-
-2012-12-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/SpecialManager.cpp:
- clear all corresponding containers when calling
- SpecialHandler::unregisterHandlers()
-
- * src/FontCache.cpp:
- replaced 'char' with 'glyph' in font cache listing
-
-2012-12-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Ghostscript.cpp:
- added explicit cast to avoid signed/unsigned comparison warning
-
-2012-12-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/Ghostscript.cpp:
- use gsdll64.dll for 64-bit builds; added info about gsdll64.dll to
- manpage
-
- * src/FileFinder.cpp, src/FontEngine.cpp, src/Makefile.am,
- src/MiKTeXCom.cpp, src/MiKTeXCom.h:
- moved MiKTeX COM code to separate class
-
- * src/MiKTeX209-session_i.c:
- add additiona files required to build dvisvgm with MinGW
-
- * src/macros.h:
- removed SHOW() from macros.h
-
- * tests/FileSystemTest.cpp, tests/GFReaderTest.cpp:
- ensure that tests work properly on Windows
-
- * src/FilePath.cpp, tests/FilePathTest.cpp:
- strip drive letter if it's not set (Windows only)
-
-2012-11-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PSInterpreter.cpp, src/psdefs.ps, src/psdefs.psc:
- print operand stack in case of a PS error
-
- * src/Ghostscript.cpp, src/Ghostscript.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/dvisvgm.cpp:
- print an error message if the execution of PS code fails
-
-2012-11-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Message.cpp:
- handle wrapping of messages containing newlines correctly
-
-2012-11-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DLLoader.cpp, src/DLLoader.h, src/Ghostscript.cpp:
- renamed DLLoader::loadFunction() to DLLoader::loadSymbol()
-
-2012-11-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h, src/FontManager.cpp:
- print warning if font checksums don't match
-
- * src/FontEngine.cpp, src/FontEngine.h:
- renamed FontEngine::fname to FontEngine::_fontname
-
-2012-11-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Directory.h:
- undefine macro max() to avoid compilation problems on Windows
-
-2012-11-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h,
- tests/FontMapTest.cpp:
- adapted code to use new MapLine class; introduced support of map line
- modes
-
- * src/Makefile.am, src/MapLine.cpp, src/MapLine.h, tests/Makefile.am,
- tests/MapLineTest.cpp:
- added new class MapLine to parse and evaluate a single line of a map
- file
-
- * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp:
- moved initialization of FontMap from FileFinder to dvisvgm.cpp
-
- * src/FileFinder.cpp, src/FileFinder.h, src/FontMap.cpp, src/FontMap.h,
- tests/FontMapTest.cpp:
- made class FontMap a singleton
-
-2012-11-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- prevent compilation error when using a C++11 compiler (patch by Peter
- Breitenlohner)
-
- * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp,
- tests/FileFinderTest.cpp, tests/FontManagerTest.cpp:
- initialize second parameter of kpse_set_program_name() correctly
-
- * src/FileFinder.cpp:
- initialize Ghostscript when compiled for TeX Live Win32 (patch by Peter
- Breitenlohner)
-
-2012-11-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp,
- src/InputReader.h, src/PsSpecialHandler.cpp,
- tests/StreamInputBufferTest.cpp:
- some refactorings of class InputReader; added InputReader::find()
-
-2012-10-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp:
- don't show warning about disabled PS support in list of special handlers
-
-2012-09-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am:
- remove manpage when calling 'make distclean'
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.0.12
-
-2012-09-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
- removed Ghostscript info from ps entry in list of special handlers
-
- * src/DVIToSVG.cpp:
- show warning if processing of PS specials is disabled
-
-2012-06-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/gfprint.mak:
- fixed bugs in gfprint, and added gfprint.mak for easier builds
-
-2012-04-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am:
- keep manpage when calling 'make clean' or 'make distclean'
-
-2012-04-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/SVGTree.cpp, src/SVGTree.h,
- tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg,
- tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg:
- scale point units in the SVG files to big points (bp)
-
-2012-04-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Matrix.cpp, src/Matrix.h, tests/MatrixTest.cpp:
- added Matrix::invert() and det()
-
-2012-03-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Matrix.cpp, src/Matrix.h, tests/MatrixTest.cpp:
- added start index parameter to Matrix::set(vector<>)
-
-2012-03-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.ps, src/psdefs.psc:
- evaluate PS operators rectclip, rectfill, and rectstroke
-
-2012-03-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * src/dvisvgm.cpp:
- added Ghostscript to library list printed by --version=yes
-
- * src/Ghostscript.cpp, src/Ghostscript.h:
- added optional parameter to Ghostscript::revision() to retrieve the
- revision number only
-
-2012-03-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- set version to 1.0.11
-
-2012-03-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp:
- correct location of a rule's bounding box (lp bug #948713)
-
-2012-02-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- fixed a couple of mistakes and formatting flaws in the manpage
-
-2012-02-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * README:
- updated information about bug reporting
-
-2012-01-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.h, src/DVIActions.h, src/DVIReader.h,
- src/DVIToSVGActions.h, src/FontEngine.h, src/FontManager.h,
- src/MetafontWrapper.h, src/SVGTree.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.h, src/TFM.h, src/VFReader.h:
- adapt forward declarations of classes and structs to their corresponding
- definition (SF bug #3480013)
-
-2012-01-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TpicSpecialHandler.cpp:
- added some more comments to methods of class TpicSpecialHandler
-
- * src/InputReader.cpp, tests/StreamInputBufferTest.cpp:
- fixed parsing of negative floating point numbers starting with '-0.' (SF
- bug #3471097)
-
-2012-01-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, src/Calculator.h,
- src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp,
- src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp,
- src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp,
- src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h,
- src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h,
- src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp,
- src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageRanges.cpp,
- src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h,
- src/Process.cpp, src/Process.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/SVGTree.cpp, src/SVGTree.h,
- src/SWFWriter.cpp, src/SWFWriter.h, src/SignalHandler.cpp,
- src/SignalHandler.h, src/SpecialActions.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp,
- src/StreamReader.h, src/StreamWriter.cpp, src/StreamWriter.h,
- src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h, src/Terminal.cpp,
- src/Terminal.h, src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h,
- src/VFActions.h, src/VFReader.cpp, src/VFReader.h, src/VectorStream.h,
- src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h,
- src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h,
- src/dvisvgm.cpp, src/macros.h, src/options.dtd, src/options.xml,
- src/psdefs.ps, src/psdefs.psc, src/types.h, tests/BoundingBoxTest.cpp,
- tests/CRC32Test.cpp, tests/CalculatorTest.cpp,
- tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp,
- tests/DirectoryTest.cpp, tests/FileFinderTest.cpp,
- tests/FilePathTest.cpp, tests/FileSystemTest.cpp,
- tests/FontManagerTest.cpp, tests/FontMapTest.cpp, tests/GFReaderTest.cpp,
- tests/GraphicPathTest.cpp, tests/LengthTest.cpp, tests/Makefile.am,
- tests/MatrixTest.cpp, tests/MessageExceptionTest.cpp,
- tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp,
- tests/PageSizeTest.cpp, tests/PairTest.cpp,
- tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp,
- tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp,
- tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/check-conv,
- tests/create-makefile:
- updated year in copyright statements
-
-2011-12-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * configure.ac, src/Doxyfile:
- set version to 1.0.10
-
- * tests/Makefile.am, tests/create-makefile:
- link tests with -lpthread (required by gtest on Ubuntu)
-
-2011-12-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- added documentation on environment variable DVISVGM_COLORS to manpage
-
- * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/GlyphTracerMessages.h,
- src/Message.cpp, src/Message.h, src/MetafontWrapper.cpp,
- src/Terminal.cpp, src/Terminal.h, src/dvisvgm.cpp:
- allow users to customize the message colors
-
-2011-11-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/GraphicPath.h:
- added some more comments to the methods of GraphicPath
-
-2011-11-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac:
- move linker flag -lfreetype from LDFLAGS to LIBS to avoid linking
- problems
-
-2011-10-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/SVGTree.cpp:
- avoid possible collisions of glyph IDs
-
- * src/FontMap.cpp:
- removed unused variable eval_prefix in helper function read_entry()
-
-2011-10-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
-2011-10-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontManager.h:
- extended class FontManager to handle external fonts
-
- * src/ExternalFont.cpp, src/ExternalFont.h, src/Makefile.am:
- added class ExternalFont
-
-2011-10-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/FontDB.cpp, src/FontDB.h, src/Makefile.am:
- added class FontDB
-
- * src/DirectoryTree.cpp, src/DirectoryTree.h, src/Makefile.am,
- tests/DirectoryTreeTest.cpp, tests/Makefile.am:
- added class DirectoryTree
-
- * src/Directory.h:
- dropped method Directory::getEntry()
-
- * src/FilePath.cpp:
- added some missing comments to methods of class FilePath
-
-2011-10-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Process.cpp:
- exclude definition of split_paramstr() from Windows builds as it's not
- used there
-
- * src/Process.cpp:
- added missing include <signal.h> to Process.cpp
-
-2011-10-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am:
- add metadata/pdfmarks to pdf version of manpage
-
-2011-09-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/InputReader.cpp, src/InputReader.h, tests/StreamInputBufferTest.cpp:
- added InputReader::getUntil() to simplify parsing of an input stream
-
- * src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp,
- src/options.xml:
- added command-line option --query
-
-2011-09-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h:
- updated bundled potrace library to version 1.10
-
-2011-06-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/MetafontWrapper.cpp:
- fixed segfault occured in TeX Live Win32 caused by mf.exe being
- unavailable (SF bug #3308473)
-
- * configure.ac, src/Doxyfile:
- set version to 1.0.9dev
-
-2011-05-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp:
- explicitly cast double to int in call of ClippingStack::dup()/pop()
-
- * NEWS, configure.ac, src/Doxyfile:
- set version to 1.0.8; updated NEWS
-
-2011-05-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/check-conv, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg:
- updated conversion tests
-
-2011-05-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Makefile.am, src/MetafontWrapper.cpp,
- src/MetafontWrapper.h, src/Process.cpp, src/Process.h,
- src/SignalHandler.cpp:
- replaced call of system() with Process::run() and kill child process if
- necessary
-
-2011-05-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/MetafontWrapper.cpp:
- dropped '--halt-on-error' in Metafont call to process buggy mf files
- completely
-
- * src/FileFinder.cpp:
- MiKTeX: maketfm and makemf have been renamed to miktex-maketfm and
- miktex-makemf
-
-2011-05-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DLLoader.h:
- added #undef NOMINMAX before (re)defining it
-
-2011-05-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc,
- tests/PSInterpreterTest.cpp:
- PS handler: implemented evaluation of save, restore, and grestoreall
-
-2011-05-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp:
- fixed potential segfault caused by invisible zero-length paths
-
- * src/PsSpecialHandler.cpp:
- add definitions in literal PS headers to dictionary TeXDict
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialActions.h:
- fixed interaction between PS and DVI drawing position
-
- * configure.ac, src/Doxyfile:
- set version to 1.0.8dev
-
-2011-05-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * fedora/dvisvgm-gs.patch, fedora/dvisvgm-potrace.patch,
- fedora/dvisvgm.spec:
- removed directories 'fedora' and 'homepage'
-
- * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.7; updated NEWS and README
-
-2011-05-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- added info about dvips rounding issues to manpage
-
- * src/DVIToSVGActions.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/psdefs.ps, src/psdefs.psc:
- PS handler: added missing unit conversions (pt vs. bp)
-
- * src/PsSpecialHandler.h:
- corrected scaling formula applied to PS line properties
-
- * src/PSInterpreter.cpp, src/PsSpecialHandler.cpp:
- separate PS snippets by newline characters to leave preceding comments
-
-2011-05-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Length.h:
- undefine macro IN
-
- * src/Ghostscript.cpp, src/Ghostscript.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h:
- avoid 'this' pointer in initialazation list of
- PSInterpreter::PSInterpreter()
-
- * src/PsSpecialHandler.cpp:
- don't call Ghostscript::revision() in initialization of static variable
-
-2011-05-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h:
- tpic special 'ip' must not draw the outline of the polygon but only fill
- its interior
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/macros.h, src/psdefs.ps, src/psdefs.psc,
- tests/PSInterpreterTest.cpp:
- improved handling of pure PostScript specials
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/EmSpecialHandler.cpp, src/EmSpecialHandler.h,
- src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp,
- src/SpecialManager.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h:
- replaced methods for DVI position alterations with translation semantics
-
-2011-05-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.ps, src/psdefs.psc:
- PS handler: recognize save/restore operators
-
-2011-04-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.ps, src/psdefs.psc:
- catch PS error /nocurrentpoint in operator 'setpos' properly
-
- * src/SpecialManager.cpp:
- register special prefix ps:: properly
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.7dev
-
-2011-04-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.6; updated NEWS and README
-
-2011-04-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/Font.cpp, src/GFReader.cpp, src/Makefile.am,
- src/MetafontWrapper.cpp, src/PSInterpreter.cpp, src/SignalHandler.cpp,
- src/SignalHandler.h, src/TFM.cpp, src/dvisvgm.cpp:
- added class SignalHandler for CTRL-C signals
-
- * src/DVIToSVGActions.cpp, src/MessageException.h, src/dvisvgm.cpp,
- tests/Makefile.am, tests/MessageExceptionTest.cpp:
- derived MessageException from std::exception and replaced getMessage()
- with what()
-
-2011-04-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/XMLNode.cpp, src/XMLNode.h:
- prepended member variables of the XMLNode classes with underscore
-
-2011-04-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp,
- tests/FileFinderTest.cpp:
- dropped class FileFinder::Impl and simplified FileFinder interface
-
-2011-03-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp:
- throw DVI exception if set_char/put_char is executed without preceding
- font selection
-
-2011-03-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * pull-wiki:
- updated rsync parameters in 'pull-wiki'
-
-2011-03-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CRC32.cpp, src/StreamWriter.cpp:
- added missing 'const' to type casts (Peter Breitenlohner)
-
- * potracelib/potracelib.c, potracelib/potracelib.h:
- changed return type of potrace_version() to 'const char *' in order to
- avoid compiler warning
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.6dev
-
-2011-02-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.5, updated NEWS
-
- * src/Ghostscript.cpp:
- fixed formatting of GS version number
-
- * doc/dvisvgm.txt.in, src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp:
- added code to remove outdated and corrupted cache files
-
-2011-02-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg,
- tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg:
- updated conversion test files
-
- * src/SVGTree.cpp:
- added missing unit in height/width attribute of svg root element
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/GraphicPath.h, src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp,
- src/options.xml, tests/CommandLineTest.cpp:
- added option to replace use elements with paths
-
-2011-02-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/InputBuffer.h:
- reference to scanned string in StringInputBuffer is constant now
-
-2011-02-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp, src/FontCache.h:
- added CRC32 checks to cache files
-
- * src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp,
- src/StreamWriter.h, tests/Makefile.am, tests/StreamReaderTest.cpp,
- tests/StreamWriterTest.cpp:
- added CRC32 computation methods to StreamReader and StreamWriter
-
- * src/CRC32.cpp, src/CRC32.h, src/Makefile.am, tests/CRC32Test.cpp,
- tests/Makefile.am:
- added class CRC32 and corresponding tests
-
- * src/FileSystem.cpp, src/FileSystem.h, src/dvisvgm.cpp,
- tests/FileSystemTest.cpp:
- merged FileSystem::move() into FileSystem::copy()
-
-2011-01-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.cpp:
- print character instead of ascii value in message of command-line parser
-
-2011-01-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/FileFinder.cpp, src/FileFinder.h, src/FontEngine.cpp,
- src/FontEngine.h, src/dvisvgm.cpp, src/options.xml:
- added optional argument to --version
-
-2011-01-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h:
- updated bundled potrace library to version 1.9
-
-2011-01-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/dvisvgm.cpp:
- moved cache files to subfolder ($HOME/.dvisvgm/cache)
-
-2011-01-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/Makefile.am, tests/PSInterpreterTest.cpp:
- added basic tests for class PSInterpreter
-
- * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/Calculator.cpp, src/Calculator.h, src/CmdLineParserBase.cpp,
- src/CmdLineParserBase.h, src/Color.cpp, src/Color.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp,
- src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp,
- src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h,
- src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h,
- src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp,
- src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageRanges.cpp,
- src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp,
- src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp,
- src/StreamWriter.h, src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h,
- src/Terminal.cpp, src/Terminal.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h,
- src/options.dtd, src/options.xml, src/psdefs.ps, src/psdefs.psc,
- src/types.h, tests/BoundingBoxTest.cpp, tests/CalculatorTest.cpp,
- tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp,
- tests/DirectoryTest.cpp, tests/FileFinderTest.cpp,
- tests/FilePathTest.cpp, tests/FontManagerTest.cpp, tests/FontMapTest.cpp,
- tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp, tests/LengthTest.cpp,
- tests/Makefile.am, tests/MatrixTest.cpp, tests/PageRagesTest.cpp,
- tests/PageSizeTest.cpp, tests/PairTest.cpp,
- tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp,
- tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/check-conv,
- tests/create-makefile:
- updated year in copyright info
-
-2010-12-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- minor update to the manpage
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.4; updated NEWS
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc:
- PS handler: added missing scaling of linewidths and dash distances
-
- * src/PsSpecialHandler.cpp:
- fixed scaling issue in PS positioning
-
-2010-12-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp:
- updated to MiKTeX 2.8 SDK
-
-2010-08-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.4dev
-
- * src/FontEngine.cpp:
- fixed FreeType version check (patch by Paul Vojta)
-
-2010-08-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/Makefile.am, tests/PairTest.cpp:
- added PairTest
-
-2010-08-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, doc/dvisvgm.txt.in:
- updated manpage and NEWS
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.3
-
-2010-08-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/Matrix.cpp, src/Matrix.h,
- src/PsSpecialHandler.cpp:
- revamped PsSpecialHandler::psfile() to fix a transformation issue (SF
- bug #3037372)
-
-2010-07-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp:
- added check of DVI format version
-
-2010-07-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
- restore transformation matrix after execution of psfile
-
-2010-07-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Directory.cpp, src/Directory.h, src/GFReader.cpp, src/GFReader.h:
- added leading underscore to variables of GFReader
-
- * src/GraphicPath.h, src/PsSpecialHandler.h:
- fixed missing initialization of GraphicPath iterator
-
- * src/Terminal.cpp:
- replaced \e with \x1B
-
- * src/InputBuffer.h:
- added missing namespace prefix
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.3dev
-
-2010-06-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.2
-
- * src/gzstream.cpp, src/gzstream.h:
- fixed class variable issue introduced by previous AIX patch
-
-2010-06-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Bitmap.cpp, tests/DirectoryTest.cpp, tests/GFReaderTest.cpp,
- tests/Makefile.am, tests/cmr10.600gf, tests/create-makefile:
- added GFReaderTest; updated DirectoryTest
-
-2010-06-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/types.h, tests/Makefile.am, tests/TypesTest.cpp:
- added TypesTest
-
- * src/Message.cpp, src/Message.h:
- renamed MessageStream::putchar() to MessageStream::putChar() to avoid
- name clashes
-
- * src/Bitmap.cpp, src/Calculator.cpp, src/CmdLineParserBase.cpp,
- src/Color.cpp, src/ColorSpecialHandler.cpp, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp,
- src/EmSpecialHandler.cpp, src/FontCache.cpp, src/FontEncoding.cpp,
- src/GFGlyphTracer.cpp, src/Pair.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/TFM.cpp, src/TFM.h:
- fixed some type conversion warnings
-
-2010-06-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * potracelib/curve.c, potracelib/curve.h, potracelib/decompose.c:
- renamed internal potrace functions path_new() and path_free() to prevent
- linker conflicts on OS X
-
- * configure.ac, src/CmdLineParserBase.h, src/FileFinder.h,
- src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp,
- src/FontEngine.cpp, src/GFGlyphTracer.h, src/MetafontWrapper.cpp,
- src/gzstream.cpp:
- applied latest TL patches from Peter Breitenlohner and Karl Berry
-
-2010-06-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.2dev
-
-2010-06-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.1
-
- * src/Message.cpp:
- suppress ANSI color code by default
-
-2010-06-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.ps, src/psdefs.psc:
- fixed recursion issue in PS operator charpath
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0.1dev
-
-2010-06-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h:
- fixed PS destructor issue (SF bug #3013392)
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- documented option --help and --version in manpage
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/DVIActions.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/Makefile.am, src/Message.cpp, src/Message.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/SpecialActions.h, src/System.cpp, src/System.h, src/dvisvgm.cpp,
- src/options.xml:
- added percentage-based progress indicator
-
- * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h:
- added method to compute length of DVI command
-
- * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc:
- evaluate Ghostscript operator .setopacityalpha
-
- * src/Font.cpp:
- print error message if Metafont failed
-
- * configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, src/CommandLine.cpp,
- src/CommandLine.h, src/DVIActions.h, src/DVIToSVG.cpp, src/GFTracer.cpp,
- src/GlyphTracerMessages.h, src/Makefile.am, src/Message.cpp,
- src/Message.h, src/MetafontWrapper.cpp, src/Terminal.cpp, src/Terminal.h,
- src/dvisvgm.cpp, src/options.xml:
- improved output of messages including optional colorization
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am,
- src/PageRanges.cpp, src/PageRanges.h, src/StreamCounter.h,
- src/dvisvgm.cpp, src/options.xml, tests/BoundingBoxTest.cpp,
- tests/CommandLineTest.cpp, tests/Makefile.am, tests/PageRagesTest.cpp,
- tests/StreamCounterTest.cpp:
- added conversion of multiple pages
-
- * src/InputBuffer.h, tests/ColorSpecialTest.cpp,
- tests/StreamInputBufferTest.cpp:
- added InputBuffer::invalidate()
-
- * src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h,
- src/Makefile.am, tests/FilePathTest.cpp, tests/Makefile.am:
- added class FilePath
-
- * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.cpp,
- src/EmSpecialHandler.cpp, src/PsSpecialHandler.cpp, src/SpecialActions.h,
- src/SpecialManager.cpp, src/TpicSpecialHandler.cpp:
- added special for creating local bounding boxes
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 1.0dev
-
- * configure.ac, doc/Makefile.am, src/Makefile.am:
- cleaned up configuration scripts
-
-2010-05-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac:
- fixed whitespace issue in CPPFLAGS and LDFLAGS
-
-2010-05-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, tests/check-conv:
- fixed segfaults in tests
-
- * configure.ac:
- fixed kpathsea check; use pkg-config to check freetype availability
-
-2010-04-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.9.1
-
- * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg:
- adapted conversion tests to new output format
-
- * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h:
- print page count and page number of DVI page being processed
-
- * src/SVGTree.cpp:
- fixed broken validity when using SVG fonts
-
- * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/SVGTree.cpp, src/SVGTree.h, src/XMLNode.cpp, src/XMLNode.h:
- ignore unused fonts in CSS styles list
-
- * src/CommandLine.cpp, src/options.xml:
- output of option --help: replaced '(default: FOO)' by '[FOO]'
-
-2010-04-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontEncoding.cpp:
- fixed memory bug in FontEncoding::encoding()
-
-2010-04-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp:
- replaced wrong font pointer that could lead to segfaults
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.9.1dev
-
-2010-03-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * fedora/dvisvgm.spec:
- updated spec file
-
-2010-03-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * transfer-cs:
- added extension .patch to exported changesets
-
- * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg,
- tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg:
- updated conversion tests
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.9
-
- * src/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp:
- variable _fontname is now correctly set in class FontCache
-
- * src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp,
- src/FontEngine.cpp, src/GlyphTracerMessages.h, src/Message.cpp,
- src/Message.h, src/MetafontWrapper.cpp, src/dvisvgm.cpp:
- added class MessageStream, updated message output
-
- * src/FontCache.cpp, src/Makefile.am, src/StreamWriter.cpp,
- src/StreamWriter.h, src/TFM.cpp:
- replaced local stream IO functions by StreamReader/StreamWriter methods
-
- * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h,
- src/GlyphTracerMessages.h, src/Makefile.am, src/dvisvgm.cpp,
- src/options.xml:
- added command-line option --exact
-
- * src/Font.cpp, src/Font.h, src/dvisvgm.cpp:
- moved some methods from PhysicalFontImpl to PysicalFont
-
-2010-03-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/Font.cpp, src/Font.h, src/dvisvgm.cpp, src/options.xml:
- added command-line option --keep
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/Font.cpp, src/Font.h,
- src/dvisvgm.cpp, src/options.xml, tests/CommandLineTest.cpp:
- reactivated option --trace-all, and added optional argument 'retrace' to
- it
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h:
- added evaluation of boolean and char arguments to the command-line
- parser
-
- * src/DVIToSVG.cpp, src/Font.cpp, src/Font.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/SVGTree.cpp, src/SVGTree.h:
- added class GFGlyphTracer::Callback providing an interface used to print
- status information about the tracer
-
- * src/DVIToSVG.cpp, src/SVGTree.cpp:
- moved creation of SVG 'use' elements from class DVIToSVG to class
- SVGTree
-
-2010-03-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.cpp, src/Calculator.cpp, src/Matrix.cpp,
- src/PSInterpreter.cpp, src/PSInterpreter.h:
- fixed a couple of comments
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/Font.cpp,
- src/Font.h, src/FontEmitter.h, src/GFGlyphTracer.h, src/Makefile.am,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp,
- src/SVGTree.h, src/dvisvgm.cpp, tests/Makefile.am, tests/check-conv,
- tests/create-makefile:
- removed emitter classes; incorporated their functionality into SVGTree
- and PhysicalFontImpl
-
- * src/FontCache.cpp, src/FontCache.h:
- added method FontCache::write(const char *dir) that updates the cache
- file of the current font
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/FontManager.cpp, src/FontManager.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp,
- src/SVGTree.h, src/VFReader.h, tests/FontManagerTest.cpp:
- made FontManager a singleton
-
- * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h,
- src/Makefile.am, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp,
- src/SVGTree.h:
- removed class CharmapTranslator
-
- * src/GFReader.cpp, src/GFReader.h:
- replaced GFReader messages by exceptions
-
-2010-02-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/FontCache.cpp, src/FontCache.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h:
- refactorings of GF tracer class; removed transferGlyph()
-
-2010-02-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/Font.cpp,
- src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEngine.cpp,
- src/FontEngine.h, src/Glyph.cpp, src/Glyph.h, src/Makefile.am,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h:
- removed class Glyph and incorporated its functionality into Font class
-
-2010-02-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- added evaluation of literal PS headers to PSHeaderActions
-
-2010-02-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.ps, src/psdefs.psc:
- removed PS error handler nocurrentpoint
-
-2010-02-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * fedora/dvisvgm.spec:
- updated homepage and spec file
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- version updated to 0.8.8
-
-2010-02-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/check-conv:
- skip conversion checks by default
-
-2010-01-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/normalize.xsl:
- some improvements to normalize.xsl
-
- * tests/Makefile.am, tests/check-conv, tests/create-makefile,
- tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, tests/frktest.dvi,
- tests/normalize.xsl, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg,
- tests/sample.dvi:
- added tests to check conversion results
-
-2010-01-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/GraphicPath.h:
- fixed scaling bug in computation of glyph paths when using -n
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp,
- src/CommandLine.h:
- removed CmdLineParserBase::numOptions()
-
-2010-01-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/FontCache.h, src/dvisvgm.cpp, src/options.dtd, src/options.xml:
- added command-line option --libgs
-
-2010-01-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CommandLine.cpp, src/options.dtd, src/options.xml:
- added DTD for options.xml
-
-2010-01-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Ghostscript.cpp:
- fixed typo in variable name
-
- * NEWS:
- updated NEWS
-
- * doc/dvisvgm.txt.in, src/FileFinder.cpp, src/Ghostscript.cpp,
- src/Ghostscript.h, src/dvisvgm.cpp:
- environment variable LIBGS can now be used to set the name of the GS
- shared library
-
- * Makefile.am, README, configure.ac, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp,
- src/CharmapTranslator.h, src/CmdLineParserBase.cpp,
- src/CmdLineParserBase.h, src/Color.cpp, src/Color.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp,
- src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h,
- src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontManager.cpp, src/FontManager.h,
- src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.cpp,
- src/Glyph.h, src/GraphicPath.h, src/HtmlSpecialHandler.h,
- src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp,
- src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageSize.cpp,
- src/PageSize.h, src/Pair.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp,
- src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h,
- src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h,
- src/options.xml, src/psdefs.ps, src/psdefs.psc, src/types.h,
- tests/BoundingBoxTest.cpp, tests/CalculatorTest.cpp,
- tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp,
- tests/DirectoryTest.cpp, tests/FileFinderTest.cpp,
- tests/FontManagerTest.cpp, tests/FontMapTest.cpp,
- tests/GraphicPathTest.cpp, tests/LengthTest.cpp, tests/Makefile.am,
- tests/MatrixTest.cpp, tests/PageSizeTest.cpp,
- tests/SplittedCharInputBufferTest.cpp, tests/StreamCounterTest.cpp,
- tests/StreamInputBufferTest.cpp, tests/VectorStreamTest.cpp,
- tests/create-makefile:
- updated boilerplates
-
- * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h,
- src/DVIToSVG.cpp, tests/BoundingBoxTest.cpp, tests/Makefile.am:
- added support for enlarging the minimal bbox by a given amount.
-
- * configure.ac:
- updated type of kpathsea_version_string (patch by lomov_vl)
-
-2009-12-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/InputReader.cpp:
- fixed bug in InputReader::parseUInt()
-
-2009-12-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/dvisvgm.cpp:
- appied get_time patch sent by Peter Breitenlohner
-
-2009-12-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.h, src/Calculator.h, src/CharmapTranslator.h,
- src/DVIReader.h, src/DVIToSVG.h, src/DVIToSVGActions.h, src/Font.h,
- src/FontEngine.h, src/FontManager.h, src/FontMap.h, src/GFGlyphTracer.h,
- src/GFReader.h, src/MessageException.h, src/MetafontWrapper.h,
- src/PageSize.h, src/SVGTree.cpp, src/SVGTree.h, src/StreamReader.h,
- src/VFActions.h, src/VFReader.h, src/XMLDocTypeNode.h, src/XMLDocument.h,
- src/XMLNode.h, src/XMLString.h:
- removed using statements from header files
-
-2009-11-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp, src/FontCache.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h,
- src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFTracer.cpp,
- src/Glyph.cpp, src/Glyph.h, src/GraphicPath.h, src/Makefile.am,
- src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp,
- tests/GraphicPathTest.cpp:
- removed FEGlyphCommands and replaced separate glyph class implementation
- by class GraphicPath
-
-2009-11-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp:
- avoid scaling by 1 in use elements
-
-2009-11-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DLLoader.cpp, src/DLLoader.h:
- fixed line endings
-
- * src/Ghostscript.cpp, src/Ghostscript.h:
- replaced #if HAVE_LIBGS by #if defined(HAVE_LIBGS)
-
- * src/DVIToSVG.cpp, src/Ghostscript.cpp, src/Ghostscript.h:
- replaced #if !DISABLE_GS by #if !defined(DISABLE_GS) (Peter
- Breitenlohner)
-
-2009-11-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- updated NEWS
-
- * src/dvisvgm.cpp:
- don't use email adress PACKAGE_BUGREPORT for copyright notice
-
- * src/CmdLineParserBase.h, src/GraphicPath.h, src/InputReader.h,
- src/Makefile.am, src/PSInterpreter.h, src/SpecialManager.h:
- added missing virtual destructors to avoid warnings
-
- * src/InputReader.cpp:
- added missing initialization value (Peter Breitenlohner)
-
- * src/Color.cpp, src/ColorSpecialHandler.cpp, src/FontManager.cpp,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/TpicSpecialHandler.cpp:
- added explicit casts to avoid compiler warnings (Peter Breitenlohner)
-
- * potracelib/potracelib.c, potracelib/potracelib.h:
- replaced outdated string constant type char* by const char* in
- potrace_version()
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.8.8dev
-
-2009-11-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * fedora/dvisvgm.spec:
- updated spec file
-
-2009-11-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.8.7
-
- * NEWS, src/Color.cpp, src/Color.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/SVGTree.cpp:
- PS handler: colors set by color specials are now considered properly
-
- * src/DVIToSVG.cpp, src/dvisvgm.cpp:
- added total number of pages to message text
-
-2009-11-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/PsSpecialHandler.cpp:
- fixed path scaling issue in PS handler
-
- * NEWS, doc/dvisvgm.txt.in:
- updated NEWS and manpage
-
- * src/GraphicPath.h, src/PsSpecialHandler.cpp:
- PS handler: replace zero-length paths by dots
-
-2009-10-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/Font.cpp, src/Font.h:
- fixed positioning of italic characters
-
-2009-10-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/TFM.cpp, src/TFM.h:
- added italic correction values to character widths
-
-2009-10-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, src/Doxyfile:
- increased version to 0.8.7dev
-
- * tests/Makefile.am, tests/create-makefile:
- added script to create tests/Makefile.am
-
-2009-10-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * README, tests/CalculatorTest.cpp, tests/CalculatorTest.h,
- tests/ColorSpecialTest.cpp, tests/ColorSpecialTest.h,
- tests/CommandLineTest.cpp, tests/CommandLineTest.h,
- tests/DirectoryTest.cpp, tests/DirectoryTest.h, tests/FileFinderTest.cpp,
- tests/FileFinderTest.h, tests/FontManagerTest.cpp,
- tests/FontManagerTest.h, tests/FontMapTest.cpp, tests/FontMapTest.h,
- tests/GraphicPathTest.cpp, tests/GraphicPathTest.h, tests/LengthTest.cpp,
- tests/LengthTest.h, tests/Makefile.am, tests/MatrixTest.cpp,
- tests/MatrixTest.h, tests/PageSizeTest.cpp, tests/PageSizeTest.h,
- tests/SplittedCharInputBufferTest.cpp,
- tests/SplittedCharInputBufferTest.h, tests/StreamCounterTest.cpp,
- tests/StreamCounterTest.h, tests/StreamInputBufferTest.cpp,
- tests/StreamInputBufferTest.h, tests/VectorStreamTest.cpp,
- tests/VectorStreamTest.h:
- replaced cxxtest by googletest
-
- * doc/Makefile.am:
- added missing dvi suffix in Makefile target dvi-pdf
-
- * fedora/dvisvgm.spec:
- updated spec file
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- removed outdated post-processing of manpage
-
-2009-10-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontInfo.cpp, src/FontInfo.h, src/FontTracer.h, src/PSObject.cpp,
- src/PSObject.h, src/PSState.cpp, src/PSState.h, src/global.cpp,
- src/global.h:
- removed unused source files
-
- * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp,
- src/CharmapTranslator.h, src/CmdLineParserBase.cpp,
- src/CmdLineParserBase.h, src/Color.cpp, src/Color.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DLLoader.cpp,
- src/DLLoader.h, src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h,
- src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp,
- src/EmSpecialHandler.h, src/FileFinder.cpp, src/FileFinder.h,
- src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h,
- src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h,
- src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h,
- src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h,
- src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFReader.cpp,
- src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/Ghostscript.cpp,
- src/Ghostscript.h, src/GraphicPath.h, src/InputBuffer.cpp,
- src/InputBuffer.h, src/InputReader.cpp, src/InputReader.h,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageSize.cpp,
- src/PageSize.h, src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h,
- src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp,
- src/SpecialManager.h, src/StreamCounter.h, src/StreamReader.cpp,
- src/StreamReader.h, src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/macros.h, src/types.h:
- code cleanup
-
-2009-10-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS:
- NEWS updated
-
- * src/DVIToSVG.cpp, src/DvisvgmSpecialHandler.cpp,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp,
- src/SVGTree.h:
- suppress empty style and transformation elements
-
- * transfer-cs:
- improved transfer-cs
-
-2009-10-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp:
- scale clipping paths by 72.27/72
-
-2009-10-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Makefile.am:
- fixed Makefile
-
- * src/Length.cpp, src/Length.h, tests/LengthTest.h:
- fixed unit conversion bug
-
- * doc/dvisvgm.txt.in:
- fixed formatting of manual page
-
- * transfer-cs:
- added script to transfer changesets to dvisvgm-pub
-
- * autogen.sh, prepare:
- prepare script replaced by autogen.sh
-
- * src/Bitmap.h:
- fixed bit shift overflow in Bitmap class occured on 64-bit systems
-
-2009-10-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/dvisvgm.cpp:
- fixed uncaught PageSizeException
-
- * src/MetafontWrapper.cpp:
- fixed file permissions
-
- * NEWS, src/GraphicPath.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h:
- PS clipping path sequences and intersections are now handled correctly
-
- * NEWS, doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp,
- src/CommandLine.h, src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp,
- src/options.xml, tests/CommandLineTest.h, tests/Makefile.am:
- cmdline parameter --bbox can now be used to set the absolute bounding
- box
-
-2009-10-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/Length.cpp, src/Length.h,
- src/Makefile.am, tests/LengthTest.h:
- class Length provides length unit calculations
-
- * NEWS, doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h,
- src/DvisvgmSpecialHandler.cpp:
- added the special variant 'dvisvgm:bbox abs' and 'dvisvgm:bbox fix'
-
-2009-10-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- set version to 0.8.6
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/GraphicPath.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc:
- fixed some PS bounding box and positioning issues introduced by previous
- changesets
-
-2009-10-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/PsSpecialHandler.cpp:
- fixed another positioning bug reported by John Bowman
-
- * src/PsSpecialHandler.cpp:
- convert PS path coordinated to TeX point units
-
-2009-10-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/GraphicPath.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
- corrected positioning bug introduced with previous PS positioning fix
-
-2009-10-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- generate pdf manpage directly with groff; adapted manpage source to work
- with latest asciidoc
-
-2009-10-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- replaced backticks in manpage by apostrophes; updated date on homepage
-
-2009-09-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile.am, configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- increased version number to 0.8.5
-
- * LGPL-2.1.txt, NEWS, README:
- updated README and NEWS, and added file with LGPL license text
-
- * doc/dvisvgm.txt.in:
- added dvisvgm:raw example to man page
-
-2009-09-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in:
- minor changes of the documentation
-
- * fedora/dvisvgm.spec:
- updated spec file and fixed typo on website
-
- * src/PsSpecialHandler.h:
- increased the default linewidth to 0.5
-
- * NEWS:
- added cretdit to John Bowman for sending a patch for the already fixed
- clipping bug
-
-2009-09-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileSystem.cpp, src/MetafontWrapper.cpp:
- Windows: Metafont is now called via CreateProcess()
-
- * NEWS, doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SpecialManager.cpp,
- src/SpecialManager.h, src/dvisvgm.cpp, src/options.xml:
- added option --progress for enabling a progress indicator (feature #22)
-
- * NEWS, src/CmdLineParserBase.cpp, src/FontCache.cpp,
- src/SVGFontTraceEmitter.cpp:
- fixed memory bug in tracer module (issue #21)
-
-2009-09-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileSystem.cpp, src/FontCache.cpp:
- fixed Windows-related bug in FileSystem::collect
-
- * NEWS, doc/dvisvgm.txt.in, src/FileSystem.cpp, src/FileSystem.h,
- src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp:
- option --cache prints additional information about the cached fonts
- (feature #7)
-
- * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h:
- refactored prefixes methods of the SpecialHandlers (ticket #20)
-
-2009-09-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, README:
- updated NEWS and README
-
-2009-09-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp,
- src/InputBuffer.h, src/InputReader.h, src/psdefs.psc,
- tests/CommandLineTest.h:
- improved the command line parser to make it more POSIX-compliant
- (feature #17)
-
- * src/dvisvgm.cpp:
- fixed evaluation of option --help
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/PsSpecialHandler.cpp:
- linewidths are now considered properly in computation of bounding box
- (issue #13)
-
- * configure.ac, fedora/dvisvgm.spec, src/Doxyfile:
- increased version number to 0.8.4
-
-2009-09-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp, src/psdefs.ps, src/psdefs.psc:
- fixed flattened clipping path bug (issue #11)
-
-2009-08-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Makefile.am:
- added error checks; disallow numeric optional arguments w/o default
- value
-
-2009-08-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/PSInterpreter.cpp, src/PsSpecialHandler.cpp, src/dvisvgm.cpp,
- src/psdefs.ps, src/psdefs.psc:
- added evaluation of PS 'show' operator in order to evaluate PSTricks
- Type 3 fonts properly
-
-2009-08-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp,
- src/CommandLine.cpp, src/Doxyfile, src/dvisvgm.cpp, src/getopt.c,
- src/getopt.h, src/getopt1.c, src/options.xml:
- replaced option --cache=? by --cache; increased version number to 0.8.3
-
-2009-08-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/PsSpecialHandler.cpp,
- src/SpecialManager.cpp, src/SpecialManager.h:
- PS prologue files referenced in first page are now always loaded
-
- * configure.ac, fedora/dvisvgm.spec, src/Ghostscript.cpp,
- src/Ghostscript.h, src/Makefile.am:
- improved Ghostscript and potrace linking checks to simplify usage of
- external devel files
-
- * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch,
- fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec:
- updated Fedora files
-
-2009-08-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CommandLine.cpp, src/CommandLine.h:
- speed up printing help by using puts() instead of C++ streams
-
-2009-08-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h,
- src/Doxyfile:
- increased version number to 0.8.2
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Makefile.am,
- src/dvisvgm.cpp, src/options.xml, tests/CommandLineTest.h,
- tests/Makefile.am:
- improved CmdLineParserBase and replaced gengetopt-based parser
-
- * src/FontMap.cpp:
- fixed memory bug in FontMap
-
-2009-08-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * COPYING:
- added copy of file COPYING
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h:
- finished cmdline parser
-
- * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/options.xml:
- added files for replacement of gengetopt (not active yet)
-
- * src/InputReader.cpp, src/InputReader.h:
- added method parseUInt()
-
-2009-08-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * COPYING, LICENSE, Makefile.am, README, doc/dvisvgm.txt.in,
- src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp,
- src/CharmapTranslator.h, src/Color.cpp, src/Color.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DLLoader.cpp,
- src/DLLoader.h, src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Directory.cpp,
- src/Directory.h, src/DvisvgmSpecialHandler.cpp,
- src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp,
- src/EmSpecialHandler.h, src/FileFinder.cpp, src/FileFinder.h,
- src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h,
- src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h,
- src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp,
- src/FontInfo.h, src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp,
- src/FontMap.h, src/FontTracer.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h,
- src/GraphicPath.h, src/HtmlSpecialHandler.h, src/InputBuffer.cpp,
- src/InputBuffer.h, src/InputReader.cpp, src/InputReader.h,
- src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSInterpreter.cpp, src/PSInterpreter.h, src/PSObject.cpp,
- src/PSObject.h, src/PSState.cpp, src/PSState.h, src/PageSize.cpp,
- src/PageSize.h, src/Pair.h, src/PsSpecialHandler.cpp,
- src/PsSpecialHandler.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp,
- src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h,
- src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/global.cpp,
- src/global.h, src/inttypes.h, src/macros.h, src/psdefs.ps,
- src/psdefs.psc, src/types.h, tests/CalculatorTest.h,
- tests/ColorSpecialTest.h, tests/DirectoryTest.h, tests/FileFinderTest.h,
- tests/FontManagerTest.h, tests/FontMapTest.h, tests/GraphicPathTest.h,
- tests/MatrixTest.h, tests/PageSizeTest.h,
- tests/SplittedCharInputBufferTest.h, tests/StreamCounterTest.h,
- tests/StreamInputBufferTest.h, tests/VectorStreamTest.h:
- changed license to GPL version 3 or later
-
- * tests/Makefile.am:
- added include path to fix broken distcheck
-
-2009-08-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * tests/Makefile.am:
- added generated file test-all.cpp to CLEANFILES
-
- * Makefile.am, configure.ac, src/Makefile.am, src/tests/CalculatorTest.h,
- src/tests/ColorSpecialTest.h, src/tests/DirectoryTest.h,
- src/tests/FileFinderTest.h, src/tests/FontManagerTest.h,
- src/tests/FontMapTest.h, src/tests/GraphicPathTest.h,
- src/tests/MatrixTest.h, src/tests/PageSizeTest.h,
- src/tests/SplittedCharInputBufferTest.h, src/tests/StreamCounterTest.h,
- src/tests/StreamInputBufferTest.h, src/tests/VectorStreamTest.h,
- src/tests/dvipdfm_test.map, src/tests/dvips_test.map,
- tests/CalculatorTest.h, tests/ColorSpecialTest.h, tests/DirectoryTest.h,
- tests/FileFinderTest.h, tests/FontManagerTest.h, tests/FontMapTest.h,
- tests/GraphicPathTest.h, tests/Makefile.am, tests/MatrixTest.h,
- tests/PageSizeTest.h, tests/SplittedCharInputBufferTest.h,
- tests/StreamCounterTest.h, tests/StreamInputBufferTest.h,
- tests/VectorStreamTest.h, tests/dvipdfm_test.map, tests/dvips_test.map:
- moved tests from src/tests to ./tests
-
- * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm.spec,
- rpm/dvisvgm.spec:
- added spec file and patch for Fedora builds
-
-2009-08-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * LICENSE, Makefile.am, rpm/dvisvgm.spec, rpm/dvisvgm.spec.in,
- src/Ghostscript.cpp:
- modified package to be compatible with prerequisites of Fedora
-
-2009-07-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/Ghostscript.cpp, src/Ghostscript.h,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h:
- added Ghostscript revision info to output of dvisvgm -l
-
- * configure.ac, src/DVIToSVG.cpp:
- added target triplet to version string in SVG output
-
-2009-07-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/psdefs.psc:
- added vim tag to psdefs.psc
-
-2009-07-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/gencmdline.bat, src/psdefs.psc:
- cleaned up VC++ build files; added batch file to generate cmdline.c;
- added generated file psdefs.psc for convenience
-
- * NEWS, src/FileSystem.cpp, src/FontEngine.cpp, src/FontManager.cpp,
- src/Ghostscript.cpp, src/PageSize.cpp, src/dvisvgm.cpp:
- fixed bug related to unsigned/size_t mismatch on x64 systems
-
- * NEWS, configure.ac, src/Doxyfile:
- updated version number to 0.8.1
-
- * src/PsSpecialHandler.cpp:
- added evaluation of more psfile parameters; fixed psfile bounding box
- bug
-
-2009-07-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.h, src/InputBuffer.cpp, src/InputBuffer.h,
- src/InputReader.cpp, src/InputReader.h, src/Matrix.cpp, src/Matrix.h,
- src/PSInterpreter.h:
- replaced size_t parameters by unsigned
-
- * NEWS, README:
- fixed typos; updated homepage/manpage
-
- * src/DLLoader.cpp, src/InputReader.cpp, src/PSInterpreter.cpp:
- changes to make VC happy; fixed potential memory bug
-
-2009-07-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PSInterpreter.cpp:
- some clean-ups
-
-2009-07-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TpicSpecialHandler.cpp:
- fixed reintroduced bug in TPIC handler
-
- * NEWS, README, doc/dvisvgm.txt.in, src/BoundingBox.cpp,
- src/BoundingBox.h, src/GraphicPath.h, src/PSInterpreter.cpp,
- src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/psdefs.ps:
- fixed clipping bug; updated homepage, README, NEWS
-
-2009-07-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/PsSpecialHandler.cpp, src/SVGTree.cpp:
- fixed bbox bug; added missing file
-
- * src/DvisvgmSpecialHandler.cpp, src/InputBuffer.cpp, src/InputReader.cpp,
- src/InputReader.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h,
- src/psdefs.ps, src/tests/StreamInputBufferTest.h:
- implemented psfile special; fixed some bugs
-
-2009-06-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h,
- src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h:
- transplanted changes to SpecialHandlers from branch 'pages'
-
- * src/GFTracer.cpp:
- transplanted changes to GFTracer from branch 'pages'
-
- * src/VFReader.cpp:
- transplanted changes to VFReader from branch 'pages'
-
- * src/FileSystem.cpp, src/FileSystem.h:
- transplanted changes to FileSystem from branch 'pages'
-
- * src/DVIReader.cpp, src/DVIReader.h:
- transplanted changes to DVIReader from branch 'pages'
-
- * src/Bitmap.cpp, src/Bitmap.h:
- transplanted changes to Bitmap from branch 'pages'
-
- * src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am:
- transplanted changes to InputBuffer from branch 'pages'
-
-2009-04-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.h:
- increased version of font cache files to ensure their recreation due to
- the previously fixed shorthand path command bug
-
- * NEWS, configure.ac, src/Doxyfile:
- increased version number to 0.7.3
-
- * src/TpicSpecialHandler.cpp:
- fixed TPIC handler bug that could caused unwanted color fills of
- ellipses due to a missing call of reset()
-
-2009-04-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac, doc/dvisvgm.txt.in, src/MetafontWrapper.cpp,
- src/dvisvgm.cpp:
- prepared release 0.7.2 (removed inclusions of debug.h, adapted homepage
- and manpage)
-
-2009-03-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Doxyfile:
- added doxygen files
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/FontGlyph.cpp,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp:
- replaced Metafont magnification variable and its setters by a public
- class variable
-
-2009-03-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontGlyph.cpp:
- fixed memory bug in Glyph::optimizeCommands()
-
- * src/FontGlyph.cpp:
- fixed potential bug in Glyph::optimizeCommands()
-
- * NEWS, src/FontCache.cpp, src/FontGlyph.cpp, src/FontGlyph.h,
- src/GFGlyphTracer.cpp, src/Pair.h, src/SVGFontEmitter.cpp:
- use of shorthand path commands has been implemented
-
-2009-03-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp:
- cache files are being compressed now to reduce the file size
-
-2009-03-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp, src/SVGFontTraceEmitter.cpp:
- don't read existing cache file if --trace-all is given (trace complete
- font and then write cache file instead)
-
- * NEWS, doc/dvisvgm.txt.in, src/FontEmitter.h, src/GFGlyphTracer.cpp,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp,
- src/options.ggo:
- added option --trace-all that forces tracing of all glyphs of all
- currently used bitmap fonts
-
-2009-03-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVG.cpp, src/TFM.cpp, src/TFM.h:
- added firstChar()/lastChar() to TFM class, removed unnecessary mag
- member variable and its setter
-
- * src/FontCache.cpp:
- fixed bug in read/write functions of FontCache
-
-2009-03-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontCache.cpp:
- reduced size of cache file format by using variable integer sizes
-
- * doc/dvisvgm.txt.in, src/dvisvgm.cpp:
- added option variant --cache=? to display the default cache directory
-
- * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/FileSystem.cpp,
- src/FileSystem.h, src/FontCache.cpp, src/FontCache.h, src/FontGlyph.h,
- src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/Makefile.am,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp:
- completed font caching support
-
-2009-03-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, doc/dvisvgm.txt.in, src/DVIToSVG.cpp,
- src/FileSystem.cpp, src/FileSystem.h, src/FontCache.cpp, src/FontCache.h,
- src/FontGlyph.cpp, src/FontGlyph.h, src/GFGlyphTracer.cpp,
- src/GFGlyphTracer.h, src/GFTracer.cpp, src/options.ggo:
- first additions to support font caching; not working yet
-
-2009-03-11 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/FontEmitter.h, src/SVGFontEmitter.cpp,
- src/SVGFontEmitter.h, src/SVGFontTraceEmitter.cpp,
- src/SVGFontTraceEmitter.h:
- improved font embedding algorithm in case of --no-fonts (identical
- glyphs in different sizes are now referenced rather than duplicated)
-
-2009-03-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/Font.h,
- src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp:
- all glyph sizes are now computed correctly in conjuction with option
- --no-fonts
-
-2009-03-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp:
- fixed transformation bug (transformations are now applied properly to
- the page)
-
- * src/types.h:
- minor changes to homepage and .hgignore
-
- * src/BgColorSpecialHandler.cpp, src/SpecialManager.cpp,
- src/TpicSpecialHandler.cpp:
- adapted Code to make VC happy
-
-2009-03-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h:
- added missing background color handler
-
- * NEWS, README, src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, src/Makefile.am,
- src/TpicSpecialHandler.cpp:
- added bgcolor support, updated homepage, fixed color handler bug
-
-2009-03-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h:
- implemented splines of tpic specials
-
- * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h:
- implemented arc drawing of tpic special set
-
-2009-03-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp,
- src/DvisvgmSpecialHandler.h:
- minor code improvements; comments added
-
- * doc/Makefile.am, doc/dvisvgm.txt.in, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.cpp,
- src/DvisvgmSpecialHandler.h, src/InputBuffer.cpp, src/InputBuffer.h,
- src/SpecialActions.h:
- implemented the dvisvgm specials raw, image, and bbox
-
- * src/BoundingBox.cpp, src/BoundingBox.h, src/Color.cpp,
- src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIActions.h,
- src/DVIBBoxActions.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EmSpecialHandler.cpp,
- src/Makefile.am, src/SpecialActions.h, src/SpecialHandler.h,
- src/TpicSpecialHandler.cpp:
- improved computation of the bounding box (works with specials now);
- added dummy function for background color assignments
-
-2009-02-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am, doc/dvisvgm.txt.in:
- improved manpage
-
- * doc/Makefile.am, doc/dvisvgm.txt, doc/dvisvgm.txt.in:
- removed generated file, added dvisvgm.txt.in
-
-2009-02-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp,
- src/SpecialActions.h, src/TpicSpecialHandler.cpp:
- renamed appendInPage() to appendToPage
-
-2009-02-24 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, doc/dvisvgm.1.in, src/TpicSpecialHandler.cpp:
- few additions to tpic handler
-
- * NEWS, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp,
- src/Makefile.am, src/Pair.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp,
- src/TpicSpecialHandler.h:
- first tpic implementations; not complete yet
-
- * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp,
- src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp,
- src/EmSpecialHandler.h, src/HtmlSpecialHandler.h, src/Makefile.am,
- src/SpecialColorHandler.cpp, src/SpecialColorHandler.h,
- src/SpecialDvisvgmHandler.cpp, src/SpecialDvisvgmHandler.h,
- src/SpecialEmHandler.cpp, src/SpecialEmHandler.h, src/SpecialHandler.h,
- src/SpecialHtmlHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/tests/ColorSpecialTest.h:
- improved SpecialHandler is now able to handle unprefixed specials
-
-2009-02-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, doc/dvisvgm.1.in, src/DVIBBoxActions.h,
- src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/FontEmitter.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/XMLNode.cpp,
- src/XMLNode.h, src/dvisvgm.cpp, src/options.ggo,
- src/tests/ColorSpecialTest.h:
- added option --no-fonts wich uses path elements instead of fonts
-
-2009-02-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, doc/dvisvgm.1.in, src/Color.cpp, src/Color.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am,
- src/SpecialActions.h, src/SpecialColorHandler.cpp,
- src/SpecialDvisvgmHandler.cpp, src/SpecialDvisvgmHandler.h,
- src/SpecialEmHandler.cpp, src/SpecialEmHandler.h,
- src/SpecialHtmlHandler.h, src/VerbSpecialHandler.cpp,
- src/VerbSpecialHandler.h:
- fixed bug in color handler, added skeletons of dvisvgm/hyperref special
- handlers
-
-2009-02-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/SpecialActions.h, src/tests/ColorSpecialTest.h:
- adapted color test to new interface, added emtex info
-
- * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/Makefile.am, src/SpecialActions.h, src/SpecialColorHandler.cpp,
- src/SpecialEmHandler.cpp:
- added color support to emTeX specials, removed Color class
-
-2009-02-17 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp:
- made DVICommand local to executeCommand, removed unnecessary if
- statement
-
-2009-02-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am,
- src/SpecialActions.h, src/SpecialManager.cpp, src/VerbSpecialHandler.cpp,
- src/VerbSpecialHandler.h, src/XMLString.cpp, src/XMLString.h:
- added special handler for verbatim output
-
-2009-02-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac:
- prepared release of version 0.7
-
- * doc/dvisvgm.1.in, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/dvisvgm.cpp, src/options.ggo:
- added option --no-style
-
- * NEWS, configure.ac:
- increased version number to 0.6.2, updated NEWS
-
- * src/dvisvgm.cpp:
- fixed incorrect behavior of option -V/--version
-
- * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h:
- finished color support
-
-2009-02-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/ColorSpecialHandler.cpp, src/Makefile.am,
- src/tests/ColorSpecialTest.h:
- added tests for ColorSpecialHandler
-
- * prepare:
- updated administrative files
-
- * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am,
- src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp,
- src/SpecialManager.h:
- color specials are now processed by DVIToSVGActions, but don't create
- any results yet
-
- * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h:
- reverted to previous version, removed dependency on Color class
-
- * hgauthors, prepare:
- added administrative files
-
- * Makefile.am, configure.ac, src/tests/DirectoryTest.h:
- removed rpm support
-
- * src/types.h:
- replaced static definition of sized integers by template program
-
-2009-02-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/Makefile.am:
- replaced RGB arrays by Color class
-
-2009-02-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TransformationMatrix.cpp:
- made y-coordinate of cmdline-option -t optional
-
-2009-02-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp:
- changed lookup order of font maps
-
- * doc/dvisvgm.1.in, src/ColorSpecialHandler.h, src/DVIToSVG.cpp,
- src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h,
- src/dvisvgm.cpp, src/options.ggo:
- added option --list-specials that lists all registered special handlers
-
-2009-02-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIToSVGActions.cpp:
- replaced special ignore list evaluation algorithm
-
- * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/dvisvgm.cpp, src/options.ggo:
- added optional prefix list to commandline option --no-specials
-
- * src/extract-colors.php:
- added php-script that extracts color definitions from color.pro
-
-2009-02-04 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontMap.cpp:
- added output of font encoding in write method
-
- * src/FileFinder.cpp:
- added option for additional loading of user maps
-
-2009-02-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * map/cork-lm.map:
- removed deprecated map subdirectory
-
- * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp:
- option -m/--map-file is now evaluated properly
-
- * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SpecialHandler.h,
- src/SpecialManager.cpp, src/SpecialManager.h, src/options.ggo:
- more color special implementation (color constants), still not ready
-
-2009-02-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h:
- some refactorings in color handler
-
- * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/Makefile.am,
- src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h:
- added special support skeletons; not working yet
-
- * NEWS, src/FileFinder.cpp:
- fixed buggy call of maketfm/makemf in Windows version
-
-2009-01-30 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, src/DVIReader.cpp, src/DVIReader.h:
- fixed magnification bug
-
- * src/dvisvgm.cpp:
- prevented writing zero-length svg files; simplified main code by using
- auto pointers
-
-2009-01-29 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FileFinder.cpp:
- adapted Windows version to new release
-
-2009-01-28 Martin Gieseking <martin.gieseking@uos.de>
-
- * NEWS, configure.ac, doc/dvisvgm.1.in:
- adapted configuration and documentation to new dvips map file support
-
- * src/FileFinder.cpp, src/FontMap.cpp, src/FontMap.h,
- src/tests/FontMapTest.h, src/tests/dvips_test.map:
- FontMap now supports dvips and dvipdfm maps
-
- * src/Calculator.cpp, src/DVIToSVG.cpp, src/FontEncoding.cpp,
- src/FontMap.cpp, src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp:
- replaced comparisions with "" with calls of empty()
-
- * src/FontMap.cpp, src/Makefile.am, src/tests/FontMapTest.h,
- src/tests/dvipdfm_test.map, src/tests/dvips_test.map:
- extensions to FontMap almost complete but not finished yet
-
- * src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h:
- improved GFTracer to support unscaled results
-
- * src/dvisvgm.cpp:
- use new initialisation of FileFinder
-
- * src/FileFinder.cpp, src/FileFinder.h, src/Makefile.am,
- src/tests/DirectoryTest.h, src/tests/FileFinderTest.h,
- src/tests/FontManagerTest.h, src/tests/KPSFileFinderTest.h:
- refactored FileFinder (implementation as singleton)
-
-2009-01-27 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFTracer.cpp,
- src/GFTracer.h, src/Makefile.am, src/SVGFontTraceEmitter.cpp,
- src/SVGFontTraceEmitter.h:
- made GFTracer a generic class with template methods
-
-2009-01-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/InputBuffer.h:
- fixed incompatible types bug
-
- * src/Bitmap.cpp, src/Bitmap.h, src/GFReader.cpp, src/GFReader.h,
- src/GFTracer.cpp, src/Makefile.am:
- improvements to GF handling, first skeletton of gf->metapost (gfprint)
-
-2009-01-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/FontMap.cpp:
- basic dvips font map support, not complete yet
-
- * src/CharmapTranslator.cpp, src/DVIToSVG.cpp, src/FileFinder.cpp,
- src/FileFinder.h, src/Font.cpp, src/FontEncoding.cpp,
- src/FontManager.cpp, src/KPSFileFinder.cpp, src/KPSFileFinder.h,
- src/Makefile.am, src/MetafontWrapper.cpp, src/TFM.cpp, src/dvisvgm.cpp:
- renamed KPSFileFinder to FileFinder
-
- * src/FontMap.cpp, src/FontMap.h:
- started redesign of FontMap, not complete yet
-
- * src/InputBuffer.cpp, src/InputBuffer.h:
- added missing include
-
-2009-01-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * doc/Makefile.am, doc/dvisvgm.1.in:
- manpage updates
-
-2009-01-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac:
- added test whether dvipdfm.map is available
-
- * doc/dvisvgm.1.in, rpm/dvisvgm.spec.in, src/Bitmap.cpp, src/Bitmap.h,
- src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp,
- src/Calculator.h, src/CharmapTranslator.cpp, src/CharmapTranslator.h,
- src/DVIActions.cpp, src/DVIActions.h, src/DVIBBoxActions.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Directory.cpp,
- src/Directory.h, src/FileFinder.cpp, src/FileFinder.h,
- src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h,
- src/FontEmitter.h, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h,
- src/FontInfo.cpp, src/FontInfo.h, src/FontManager.cpp, src/FontManager.h,
- src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp,
- src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/InputBuffer.cpp,
- src/InputBuffer.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h,
- src/Makefile.am, src/Makefile.orig, src/Matrix.cpp, src/Matrix.h,
- src/Message.cpp, src/Message.h, src/MessageException.h,
- src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp,
- src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h,
- src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h,
- src/TFM.cpp, src/TFM.h, src/TransformationMatrix.cpp,
- src/TransformationMatrix.h, src/VFActions.h, src/VFReader.cpp,
- src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h,
- src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h,
- src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/global.cpp,
- src/global.h, src/macros.h, src/options.ggo, src/types.h:
- updated file header comments
-
- * src/tests/CalculatorTest.h, src/tests/DirectoryTest.h,
- src/tests/FontManagerTest.h, src/tests/FontMapTest.h,
- src/tests/KPSFileFinderTest.h, src/tests/PageSizeTest.h,
- src/tests/StreamCounterTest.h, src/tests/VectorStreamTest.h:
- updated tests
-
- * Makefile.am, NEWS, README, configure.ac, potracelib/Makefile.am:
- updated version info to 0.6
-
- * src/KPSFileFinder.cpp:
- fixed throwing of COM exception
-
- * src/DVIReader.cpp, src/FontManager.cpp, src/KPSFileFinder.cpp:
- memory leak fixed
-
- * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp:
- added support for MiKTeX' new COM interface
-
- * src/FontMap.cpp:
- forgot to remove address operator
-
-2009-01-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Calculator.cpp, src/DVIReader.cpp, src/DVIToSVGActions.cpp,
- src/Directory.cpp, src/FontEncoding.cpp, src/FontEngine.cpp,
- src/FontManager.cpp, src/FontMap.cpp, src/KPSFileFinder.cpp,
- src/MetafontWrapper.cpp, src/PageSize.cpp, src/StreamReader.cpp,
- src/TFM.cpp, src/TransformationMatrix.cpp, src/VFReader.cpp,
- src/XMLDocument.cpp, src/XMLNode.cpp:
- added in/out attributes to parameter documentation
-
- * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/FontEncoding.cpp, src/FontGlyph.cpp:
- fixed bugs in handling of font encodings and virtual fonts
-
-2009-01-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/SVGFontEmitter.cpp:
- fixed memory bug
-
- * src/FontEngine.cpp, src/FontEngine.h, src/SVGFontEmitter.cpp:
- fixed glyph positioning bug occured in conjunction with font encoding
-
- * src/DVIReader.cpp, src/DVIToSVG.cpp, src/Font.h, src/FontEncoding.cpp,
- src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontGlyph.cpp, src/FontGlyph.h, src/FontManager.cpp,
- src/FontManager.h, src/InputBuffer.cpp, src/InputBuffer.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h:
- first working version with font encoding support
-
-2009-01-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/FontEncoding.cpp, src/FontEncoding.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp,
- src/FontManager.h, src/FontMap.cpp:
- partly working mapping support, but yet too slow
-
- * src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp,
- src/FontEngine.h, src/FontManager.cpp, src/FontManager.h,
- src/FontMap.cpp, src/FontMap.h, src/KPSFileFinder.cpp,
- src/KPSFileFinder.h:
- more encoding implementations, not complete yet
-
-2009-01-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TransformationMatrix.cpp:
- fixed bug in argument assignment of transformation command M
-
-2009-01-15 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/TransformationMatrix.cpp:
- removed a dangerous loop remained from previous code
-
-2009-01-14 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/KPSFileFinder.cpp:
- added enc-file support
-
- * src/dvisvgm.cpp:
- updated copyright string
-
- * src/FileSystem.cpp, src/FileSystem.h:
- const string parameters
-
- * src/FontEncoding.cpp, src/FontEncoding.h, src/InputBuffer.cpp,
- src/InputBuffer.h, src/Makefile.am:
- added basic skeleton for handling of font encodings
-
- * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h:
- updated libpotrace to version 1.8
-
-2009-01-13 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CharmapTranslator.cpp:
- fixed crash on loading corrupt pfb-files
-
-2008-06-18 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Makefile.am:
- adapted to latest gengetopt version
-
-2008-04-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp:
- minor change
-
-2007-03-26 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIActions.cpp, src/DVIReader.cpp, src/DVIReader.h,
- src/FontManager.cpp, src/tests/FontManagerTest.h:
- few minor changes
-
- * NEWS, src/CharmapTranslator.cpp, src/CharmapTranslator.h,
- src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.h,
- src/FontManager.cpp, src/Makefile.am, src/SVGFontTraceEmitter.cpp,
- src/SVGFontTraceEmitter.h:
- redesigned DVIActions and CharmapTranslator
-
-2007-03-25 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/DVIReader.h, src/VFActions.h:
- minor fixes
-
- * src/DVIActions.cpp, src/DVIActions.h, src/DVIBBoxActions.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h,
- src/FontManager.cpp, src/FontManager.h, src/StreamReader.cpp,
- src/StreamReader.h, src/VFActions.h, src/VFReader.cpp, src/VFReader.h,
- src/VectorStream.h:
- first working version 0.5, release candidate 1
-
-2007-03-23 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/FontManager.cpp, src/FontManager.h,
- src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/VFReader.cpp:
- more vf implementations, not complete yet
-
-2007-03-22 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp,
- src/VFActions.h, src/VFReader.cpp, src/VFReader.h:
- more vf implementations
-
- * NEWS, doc/Makefile.in, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/FileSystem.cpp, src/FileSystem.h,
- src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile.am,
- src/dvisvgm.cpp, src/tests/DirectoryTest.h, src/tests/FontManagerTest.h:
- reintegrated font map initialization into KPSFileFinderm adapted some
- tests
-
-2007-03-21 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp:
- implemented options -n and -m
-
- * src/Directory.cpp, src/Directory.h, src/KPSFileFinder.cpp,
- src/KPSFileFinder.h, src/dvisvgm.cpp:
- completed MiKTeX font map file look-up, fixed bug in Directory class
-
- * src/Calculator.cpp, src/DVIReader.cpp, src/Directory.cpp, src/Font.h,
- src/FontManager.cpp, src/Makefile, src/Makefile.am, src/Makefile.in,
- src/MetafontWrapper.cpp, src/VFReader.cpp, src/VectorStream.h,
- src/test-all.cpp, src/tests/VectorStreamTest.h:
- removed redundant code and commented code fragments, added
- VectorInputStream class
-
- * AUTHORS, Makefile.am, README, potracelib/Makefile.am,
- rpm/dvisvgm.spec.in, src/Directory.cpp, src/Directory.h,
- src/KPSFileFinder.cpp, src/Makefile, src/Makefile.am, src/Makefile.in,
- src/SVGFontTraceEmitter.cpp, src/test-all.cpp, src/tests/DirectoryTest.h:
- implemented Directory class for Linux, added DirectoryTest
-
-2007-03-20 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Directory.cpp, src/Directory.h, src/FileSystem.cpp, src/FontMap.cpp,
- src/FontMap.h, src/KPSFileFinder.cpp:
- more changes for MiKTeX support
-
- * NEWS, doc/Makefile, doc/Makefile.in, doc/dvisvgm.1.in,
- src/DVIReader.cpp, src/DVIToSVG.cpp, src/Font.cpp, src/Font.h,
- src/FontManager.cpp, src/KPSFileFinder.cpp, src/Makefile,
- src/Makefile.am, src/Makefile.in, src/VFReader.cpp, src/dvisvgm.cpp,
- src/test-all.cpp, src/tests/KPSFileFinderTest.h:
- added KPSFileFinderTest, added EmptyFont, fixed compilation error
-
-2007-03-19 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp,
- src/FontMap.h, src/KPSFileFinder.cpp:
- made sources comaptible with MikTeX
-
- * src/KPSFileFinder.cpp:
- bug fixed, font maps work now
-
- * src/CharmapTranslator.cpp, src/DVIToSVG.cpp, src/FontManager.cpp,
- src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile,
- src/Makefile.am, src/Makefile.in, src/MetafontWrapper.cpp, src/TFM.cpp:
- added mktexFOO support and font map lookups to KPSFileFinder
-
-2007-03-16 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp,
- src/FontMap.h, src/KPSFileFinder.cpp, src/Makefile, src/Makefile.am,
- src/Makefile.in, src/StreamReader.cpp, src/TFM.cpp, src/options.ggo,
- src/tests/FontMapTest.h:
- more coding in the font department, not finished yet
-
-2007-03-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/Font.cpp,
- src/FontInfo.cpp, src/FontManager.cpp, src/GFTracer.cpp,
- src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile,
- src/Makefile.am, src/Makefile.in, src/MetafontWrapper.cpp,
- src/MetafontWrapper.h, src/SVGFontTraceEmitter.cpp,
- src/SVGFontTraceEmitter.h, src/StreamReader.cpp, src/StreamReader.h,
- src/TFM.cpp, src/TFM.h, src/VFReader.cpp, src/VFReader.h,
- src/dvisvgm.cpp, src/options.ggo, src/test-all.cpp:
- refactorings: extracted StreamReader class, replaced generic FileFinder
- support by KPSFileFinder calls
-
-2007-03-08 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Font.h, src/Makefile,
- src/Makefile.am, src/Makefile.in, src/Makefile.orig, src/VFActions.h,
- src/VFReader.cpp, src/VFReader.h, src/dvisvgm.cpp:
- plugged VFReader and its actions into the code (not usable yet)
-
- * src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/Font.cpp, src/Font.h,
- src/Makefile.orig, src/StreamCounter.h, src/dvisvgm.cpp:
- fixed memory bug
-
- * doc/dvisvgm.1, src/FontEngine.h, src/Makefile.orig, src/dvisvgm.cpp,
- src/tests/FontManagerTest.h:
- minor changes
-
- * COPYING, Makefile, Makefile.am, Makefile.in, Martins_svg_neu.svg, NEWS,
- aclocal.m4, cmdline.c, config.guess, config.h, config.h.in,
- config.status, config.sub, configure.ac, depcomp, doc/Makefile,
- doc/dvisvgm.1, doc/dvisvgm.1.in, gpl.txt, install-sh, missing,
- src/FontManager.cpp, src/FontManager.h, src/Makefile.am,
- src/VFReader.cpp, src/tests/FontManagerTest.h, stamp-h1, table.txt:
- removed some garbage from the repository, added initial FontManagerTest
-
- * src/DVIActions.h, src/DVIBBoxActions.h, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, src/FontManager.cpp,
- src/FontManager.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h,
- src/Makefile, src/Makefile.am, src/Makefile.in, src/Message.cpp,
- src/dvisvgm.cpp, src/macros.h, src/test-all.cpp:
- first unstable version with redesigned font handling
-
-2007-03-07 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/Font.cpp, src/Font.h:
- added Font classes (not yet error-free)
-
-2007-03-06 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.h, src/DVIToSVG.cpp, src/FontManager.cpp,
- src/FontManager.h:
- added FontManager skeleton, fixed bug in makehead
-
-2007-03-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/FontManager.cpp, src/VFReader.cpp:
- added some more skeleton code
-
-2007-03-02 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/DVIReader.cpp, src/Makefile, src/Makefile.in, src/VFReader.cpp,
- src/VFReader.h, src/options.ggo:
- added skeleton of VFReader
-
-2007-01-10 Martin Gieseking <martin.gieseking@uos.de>
-
- * INSTALL, Makefile.am, NEWS, README, configure.ac, doc/Makefile,
- doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in,
- gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README,
- gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html,
- gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C,
- gzstream/version, map/cork-lm.map, mkwindist.pl, potracelib/Makefile.am,
- potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h,
- rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, rpm/dvisvgm.spec,
- rpm/dvisvgm.spec.in:
- moved sources
-
-2007-01-09 Martin Gieseking <martin.gieseking@uos.de>
-
- * map/cork-lm.map, rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in,
- rpm/dvisvgm.spec, rpm/dvisvgm.spec.in:
- moved files to trunk
-
- * INSTALL, Makefile.am, NEWS, README, configure.ac, doc/Makefile,
- doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in,
- gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README,
- gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html,
- gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C,
- gzstream/version, mkwindist.pl, potracelib/Makefile.am,
- potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c,
- potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h,
- potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h,
- potracelib/progress.h, potracelib/trace.c, potracelib/trace.h,
- rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, rpm/dvisvgm.spec,
- rpm/dvisvgm.spec.in, src/A, src/Bitmap.cpp, src/Bitmap.h,
- src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp,
- src/Calculator.h, src/CharmapTranslator.cpp, src/CharmapTranslator.h,
- src/DVIActions.h, src/DVIBBoxActions.h, src/DVIBBoxReader.cpp,
- src/DVIBBoxReader.h, src/DVIReader.cpp, src/DVIReader.h,
- src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp,
- src/DVIToSVGActions.h, src/FileFinder.cpp, src/FileFinder.h,
- src/FileSystem.cpp, src/FileSystem.h, src/FontEmitter.h,
- src/FontEngine.cpp, src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h,
- src/FontInfo.cpp, src/FontInfo.h, src/FontMap.cpp, src/FontMap.h,
- src/FontTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp,
- src/GFTracer.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile,
- src/Makefile.am, src/Makefile.in, src/Makefile.orig, src/Matrix.cpp,
- src/Matrix.h, src/Message.cpp, src/Message.h, src/MessageException.h,
- src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp,
- src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h,
- src/StreamCounter.h, src/TFM.cpp, src/TFM.h,
- src/TransformationMatrix.cpp, src/TransformationMatrix.h,
- src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h,
- src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h,
- src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp, src/getopt.c,
- src/getopt.h, src/getopt1.c, src/global.cpp, src/global.h,
- src/gzstream.cpp, src/gzstream.h, src/macros.h, src/miktex-core.def,
- src/miktex-kps.def, src/miktex-kps.h, src/options.ggo, src/test-all.cpp,
- src/tests/CalculatorTest.h, src/tests/PageSizeTest.h,
- src/tests/StreamCounterTest.h, src/types.h:
- moved files to trunk subfolder
-
-2007-01-05 Martin Gieseking <martin.gieseking@uos.de>
-
- * Makefile, Makefile.am, Makefile.in, README, config.status, configure.ac,
- potracelib/Makefile.am, potracelib/bitops.h, potracelib/flate.c,
- potracelib/flate.h, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp,
- src/BoundingBox.h, src/Calculator.cpp, src/Calculator.h,
- src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIActions.h,
- src/DVIBBoxActions.h, src/DVIBBoxReader.cpp, src/DVIBBoxReader.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h,
- src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h,
- src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp,
- src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp,
- src/KPSFileFinder.h, src/Makefile.am, src/Matrix.cpp, src/Matrix.h,
- src/Message.cpp, src/Message.h, src/MessageException.h,
- src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp,
- src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp,
- src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h,
- src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h,
- src/StreamCounter.h, src/TFM.cpp, src/TFM.h,
- src/TransformationMatrix.cpp, src/TransformationMatrix.h,
- src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h,
- src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h,
- src/dvisvgm.cpp, src/global.cpp, src/global.h, src/macros.h,
- src/test-all.cpp, src/types.h:
- minor modifications
-
-2007-01-03 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure:
- removed configure from repository
-
- * Makefile, Makefile.am, Makefile.in, config.h, config.h.in,
- config.status, configure, configure.ac, doc/Makefile,
- potracelib/Makefile.am, potracelib/auxiliary.h, potracelib/bitmap.h,
- potracelib/bitops.h, potracelib/curve.c, potracelib/curve.h,
- potracelib/decompose.c, potracelib/decompose.h, potracelib/flate.c,
- potracelib/flate.h, potracelib/lists.h, potracelib/potracelib.c,
- potracelib/potracelib.h, potracelib/progress.h, potracelib/trace.c,
- potracelib/trace.h, src/Makefile, src/Makefile.am, src/Makefile.in:
- added potracelib to distribution
-
- * NEWS, mkwindist.pl, src/KPSFileFinder.cpp:
- updated homepage
-
-2006-12-31 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/KPSFileFinder.cpp:
- fixed namepsace bug
-
- * Makefile, config.status, configure, configure.ac, doc/Makefile,
- doc/dvisvgm.1, src/FileSystem.cpp, src/FontEngine.cpp,
- src/KPSFileFinder.cpp, src/Makefile, src/dvisvgm.cpp, src/test-all.cpp:
- some minor fixes
-
- * NEWS, configure.ac, src/DVIToSVG.cpp, src/FileSystem.cpp,
- src/FontEngine.cpp, src/GFTracer.cpp, src/KPSFileFinder.cpp,
- src/Makefile.orig, src/Matrix.h, src/Message.cpp, src/PageSize.cpp,
- src/TransformationMatrix.cpp, src/dvisvgm.cpp:
- updated to MikTeX 2.5 support
-
-2006-08-01 Martin Gieseking <martin.gieseking@uos.de>
-
- * configure.ac:
- enabled svn keyword expansion
-
- * Makefile, Makefile.in, NEWS, aclocal.m4, autom4te.cache/output.0,
- autom4te.cache/requests, autom4te.cache/traces.0, config.h, config.log,
- config.status, configure, configure.ac, doc/Makefile, doc/Makefile.in,
- doc/dvisvgm.1, src/FontEngine.cpp, src/Makefile, src/Makefile.in,
- src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp:
- added support for freetype version >= 2.1.1
-
-2006-04-12 Martin Gieseking <martin.gieseking@uos.de>
-
- * src/lshort-cm.dvi, src/lshort-cm.svg, src/lshort-cm.svgz,
- src/lshort.dvi, src/lshort.svg, src/lshort.svgz:
- removed files that need not be version controlled
-
- * src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h,
- src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp,
- src/CharmapTranslator.h, src/DVIActions.h, src/DVIBBoxActions.h,
- src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/DVIReader.cpp,
- src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h,
- src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h,
- src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp,
- src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp,
- src/KPSFileFinder.h, src/Message.cpp, src/Message.h,
- src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h,
- src/PSObject.cpp, src/PSObject.h, src/PageSize.cpp, src/PageSize.h,
- src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h,
- src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h,
- src/StreamCounter.h, src/TFM.cpp, src/TFM.h,
- src/TransformationMatrix.cpp, src/TransformationMatrix.h,
- src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h,
- src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h,
- src/dvisvgm.cpp, src/global.cpp, src/global.h, src/macros.h,
- src/test-all.cpp, src/tests/CalculatorTest.h, src/tests/PageSizeTest.h,
- src/tests/StreamCounterTest.h, src/types.h:
- changed keyword tags
-
- * COPYING, INSTALL, Makefile, Makefile.am, Makefile.in,
- Martins_svg_neu.svg, NEWS, README, aclocal.m4, autom4te.cache/output.0,
- autom4te.cache/requests, autom4te.cache/traces.0, cmdline.c,
- config.guess, config.h, config.h.in, config.log, config.status,
- config.sub, configure, configure.ac, depcomp, doc/Makefile,
- doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in,
- gpl.txt, gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README,
- gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html,
- gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C,
- gzstream/version, install-sh, map/cork-lm.map, missing, mkwindist.pl,
- src/A, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp,
- src/BoundingBox.h, src/Calculator.cpp, src/Calculator.h,
- src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIActions.h,
- src/DVIBBoxActions.h, src/DVIBBoxReader.cpp, src/DVIBBoxReader.h,
- src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h,
- src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp,
- src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h,
- src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h,
- src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h,
- src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp,
- src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp,
- src/KPSFileFinder.h, src/Makefile, src/Makefile.am, src/Makefile.in,
- src/Makefile.orig, src/Matrix.cpp, src/Matrix.h, src/Message.cpp,
- src/Message.h, src/MessageException.h, src/MetafontWrapper.cpp,
- src/MetafontWrapper.h, src/PSInterpreter.cpp, src/PSInterpreter.h,
- src/PSObject.cpp, src/PSObject.h, src/PSState.cpp, src/PSState.h,
- src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/SVGFontEmitter.cpp,
- src/SVGFontEmitter.h, src/SVGFontTraceEmitter.cpp,
- src/SVGFontTraceEmitter.h, src/StreamCounter.h, src/TFM.cpp, src/TFM.h,
- src/TransformationMatrix.cpp, src/TransformationMatrix.h,
- src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h,
- src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h,
- src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp, src/getopt.c,
- src/getopt.h, src/getopt1.c, src/global.cpp, src/global.h,
- src/gzstream.cpp, src/gzstream.h, src/lshort-cm.dvi, src/lshort-cm.svg,
- src/lshort-cm.svgz, src/lshort.dvi, src/lshort.svg, src/lshort.svgz,
- src/macros.h, src/miktex-core.def, src/miktex-kps.def, src/miktex-kps.h,
- src/options.ggo, src/test-all.cpp, src/tests/CalculatorTest.h,
- src/tests/PageSizeTest.h, src/tests/StreamCounterTest.h, src/types.h,
- stamp-h1, table.txt:
- initial import
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/INSTALL b/Build/source/texk/dvisvgm/dvisvgm-1.6/INSTALL
deleted file mode 100644
index a4b34144dcf..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/INSTALL
+++ /dev/null
@@ -1,229 +0,0 @@
-Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/LGPL-2.1.txt b/Build/source/texk/dvisvgm/dvisvgm-1.6/LGPL-2.1.txt
deleted file mode 100644
index 602bfc94635..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/LGPL-2.1.txt
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-1.6/Makefile.am
deleted file mode 100644
index b73dbf588f8..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-## This file is part of dvisvgm
-## Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de>
-##
-## Process this file with automake.
-
-AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = COPYING LGPL-2.1.txt
-SUBDIRS = src tests doc
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/NEWS b/Build/source/texk/dvisvgm/dvisvgm-1.6/NEWS
deleted file mode 100644
index 45104994435..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/NEWS
+++ /dev/null
@@ -1,349 +0,0 @@
-dvisvgm-1.6 (2014-04-22)
-- added option --zoom to "visually" scale the generated SVG graphics while
- preserving the original size and position values of the graphic objects
-- extended argument syntax of option --linkmark to allow to select the
- box/line color
-- changed default link marker from 'line' to 'box'
-- changed link markers to be only split on line breaks while extended in all
- other cases
-- if libgs is not directly linked to the binary, dvisvgm now looks for
- libgs.so.X instead of libgs.so (supported GS ABIs: X = 7, 8, 9)
-- removed time stamp and machine triplet from generated SVG files
-- some code improvements and refactorings
-
-dvisvgm-1.5.3 (2014-04-11)
-- improved positioning of PostScript graphics
-- fixed positioning of DVI rules/rectangles
-- switched internal computations from TeX points (pt) to PostScript points (bp)
-
-dvisvgm-1.5.2 (2014-01-10)
-- fixed handling of global font colors and color specials
-- several code improvements
-
-dvisvgm-1.5.1 (2013-10-29)
-- fixed processing of bounding box data created by the preview package
-- fixed processing of font definitions across DVI pages
-- fixed compilation issues occurred if processing of PS specials is disabled
-- don't print the logical page number if it's equal to the physical one
-- some minor code improvements
-
-dvisvgm-1.5 (2013-09-02)
-- added support for DVI format 3 as created by pTeX in vertical/tate mode
-- added support for DVI format 5 (XDV) as created by XeTeX
-- replaced numeric entity references by corresponding UTF-8 characters in
- generated SVG files
-- added px unit to font-size attributes as used in the stylesheet section
- to ensure correct computation of font sizes (LP bug #1215857)
-- various code refactorings
-
-dvisvgm-1.4 (2013-08-02)
-- added basic support for CMap files and CID-based fonts
-- added character mapping from CIDs to char codes based on the encoding tables of a non-CID font
-- added support for OTF fonts
-- added evaluation of bounding box data generated by the preview package
-- extended option --linkmark to mark hyperlinked areas with an arbitrary background color
-- PS handler: improved evaluation of PS header specials
-- PS handler: improved evaluation of operator 'show'
-- removed DOCTYPE declaration from generated SVG files
-- removed encoding attribute from xml declaration (replaces ISO-8859-1 with UTF-8)
-- various code improvements and refactorings
-
-dvisvgm-1.3 (2013-05-13)
-- added support for hyperref specials
-- added command-line option --linkmarker to select the way how to mark hyperlinked areas
-- dvisvgm builds for MiKTeX now try to access the Ghostscript DLL provided by MiKTeX so that
- it's no longer necessary to install Ghostscript separately
-- improved the handling of TFM files to avoid failures in case of malformed files
-- added evaluation of Japanese Font Metric (JFM) files
-- the bundled potrace library has been removed from the source tarball as it's easy to build
- the latest releases from the original sources available at http://potrace.sourceforge.net
-- several code refactorings
-
-dvisvgm-1.2.2 (2013-04-26)
-- fixed a bug that prevented the lookup of fontmap files
-- avoid throwing an exception but print a warning message if MiKTeX is not available
-- print a warning message if PostScript specials are found but ignored
-- added information about "dvisvgm -E" to the --help text and to the manpage
-- various code refactorings and cleanups
-
-dvisvgm-1.2.1 (2013-04-09)
-- updated bundled potrace library to version 1.11
-- avoid building bundled potracelib if system library is present (patch by Alexis Ballier)
-- allow background color specials to create white background rectangles
-- code refactorings and cleanup
-
-dvisvgm-1.2 (2013-03-01)
-- PostScript handler: added support of tiling patterns
-- PostScript handler: added support for EPS files with binary headers/footers
-- added option --eps to directly convert EPS files to SVG
-- added option --precision to select the number of decimal places used in the generated SVG files
-- added an optional argument to --help to choose a display variant
-- fixed the text alignment of the --help output
-- improved handling of PostScript operator "show"
-- choose the correct output location if the input file argument contains path specifiers (Windows only)
-
-dvisvgm-1.1 (2013-01-22)
-- added evaluation of pdf:mapline and pdf:mapfile specials
-- added evaluation of subfont file definitions (.sfd files)
-- added support for TTC (TrueType collection) fonts
-- added evaluation of font style parameters given in a font map definition
-- renamed option --map-file to --fontmap
-- the new option --fontmap allows multiple mapfile arguments and optional mode specifiers
-- if a PostScript error occurs, dvisvgm prints an error message together with the
- PS operand stack, as generated by Ghostscript
-- if font checksums don't match, dvisvgm prints a warning now
-- avoid throwing exceptions if referenced encoding files are not available
-- added support for 64bit Windows builds
-- removed compilation error when using a C++11 compiler (patch by Peter Breitenlohner)
-- some code refactorings and improvements
-
-dvisvgm-1.0.12 (2012-09-27)
-- print a message if the processing of PostScript specials is disabled
-- the resulting SVG is now scaled to bp ("big point" units) properly
-- added the evaluation of PS operators rectclip, rectfill, and rectstroke
-- ignore dvips operator bop if present in a PS special
-- fixed processing of special strings that contain newline characters
-
-dvisvgm-1.0.11 (2012-03-09)
-- added Ghostscript to library list printed by --version=yes
-- fixed a bug in the number parser that could lead to displaced objects (SF bug #3471097)
-- corrected the computation of bounding boxes of DVI rules (lp bug #948713)
-- improved code compatibility to make dvisvgm compile with clang++ (patch by Vladimir Lomov)
-- fixed formatting issues in the manual page
-- updated information about bug reporting (tracker moved to Launchpad)
-
-dvisvgm-1.0.10 (2011-12-18)
-- introduced environment variable DVISVGM_COLORS to allow user-defined message colors
-- fixed linking issue concerning libfreetype
-- fixed potential clashes of character IDs
-
-dvisvgm-1.0.9 (2011-10-13)
-- fixed segfault occurred in TeX Live Win32 caused by mf.exe being unavailable
- (thanks to Akira Kakuto for tracking down the issue)
-- updated bundled potrace library to version 1.10
-- some minor code improvements
-
-dvisvgm-1.0.8 (2011-05-31)
-- PS handler: added evaluation of PS operators save, restore, and grestoreall
-- PS handler: fixed potential segfault caused by invisible zero-length paths
-- fixed computation of current drawing position influenced by PS and DVI actions
-- don't stop Metafont conversions on errors any longer in order to convert
- buggy MF fonts properly
-
-dvisvgm-1.0.7 (2011-05-06)
-- improved overall handling of PS specials
-- fixed broken PS special subset 'ps::'
-- fixed scaling of PS line properties (width, dash distance, etc.)
-- fixed semantics of TPIC special 'ip' (doesn't draw polygon outlines any longer)
-
-dvisvgm-1.0.6 (2011-04-21)
-- fixed segfault occurred if a (malformed) DVI file calls set_char/put_char
- without preceding font definition
-- added CTRL-C handler
-- MiKTeX support updated to version 2.9
-- some code refactorings
-
-dvisvgm-1.0.5 (2011-03-01)
-- added optional integer argument to option -n to disable generation of <use> elements
-- added missing unit to width/height attributes of svg root element (SF bug #3185773)
-- added integrity check to font cache files
-- updated bundled potrace library to version 1.9
-- fixed a couple of minor issues
-
-dvisvgm-1.0.4 (2010-12-18)
-- added missing line width/dash pattern scaling to PS handler
-- fixed scaling issue in PS positioning
-- fixed compilation issue related to FreeType 2.4.0
-
-dvisvgm-1.0.3 (2010-08-06)
-- applied some more portability patches for TeX Live
-- fixed a potential memory issue
-- fixed a transformation issue regarding special 'psfile' (SF bug #3037372)
-
-dvisvgm-1.0.2 (2010-06-22)
-- applied latest TeX Live portability patches sent by Peter Breitenlohner and Karl Berry
-- fixed a potrace name clash occurred on Mac OS X Tiger
-- fixed putchar() name clash occurred on Solaris
-- fixed a couple of conversion warnings
-- updated the test suite
-
-dvisvgm-1.0.1 (2010-06-11)
-- fixed a memory issue in the PS handler that could lead to a segfault (SF bug #3013392)
-- fixed a recursion issue in the PS handler
-- suppress ANSI color code when terminating
-
-dvisvgm-1.0 (2010-06-08)
-- conversion of multiple pages (must be enabled explicitly, see option --pages)
-- added transparency support to the PS handler
-- improved conversion results of the PS handler
-- added support for computation of local bounding boxes
-- optional colorization of dvisvgm messages (option --color)
-- improved progress indicator (option --progress)
-- a couple of improvements of the build system
-
-dvisvgm-0.9.1 (2010-04-23)
-- CSS style definitions omit unnecessary fonts now
-- SVG validity was broken when using font elements
-- fixed two memory issues that could lead to segfaults
-
-dvisvgm-0.9 (2010-03-25)
-- added option --exact and corresponding algorithms to compute the exact
- bounding boxes of characters
-- added option --keep that prevents deleting temporary font files
-- extended option --trace-all by an optional boolean argument controlling
- the re-tracing of glyphs
-- fixed bug in evaluation of embedded PS headers
-- several code refactorings
-
-dvisvgm-0.8.8 (2010-02-02)
-- added option --libgs and evaluation of environment variable LIBGS
- to overwrite the expected file name of the GS shared library
- (only available if dvisvgm isn't linked against libgs and GS support
- isn't completely disabled)
-- option --bbox can now be used to enlarge the minimal bounding box by
- a given amount
-- fixed bug in evaluation of option --page
-- applied patches sent by Peter Breitenlohner to prepare the integration of
- dvisvgm into TeX Live
-- some code refactorings
-
-dvisvgm-0.8.7 (2009-11-09)
-- fixed a bounding box issue concerning italic corrections
-- PS handler: zero-length paths are now drawn as dots
-- PS handler: fixed a path positioning issue
-- PS handler: colors set by color specials are now considered properly
-- added macro {?nl} to be used with special dvisvgm:raw
-
-dvisvgm-0.8.6 (2009-10-13)
-- renamed command-line option --bbox-format to --bbox
-- option --bbox can now be used to set an arbitrary bounding box
-- added the two special variants "dvisvgm:bbox abs" and "dvisvgm:bbox fix"
-- PS clipping path sequences and intersections are now handled correctly
-- fixed a PS bounding box bug
-- fixed a couple of PS positioning issues reported by John Bowman
-- fixed a bit shift overflow in the font tracer occurred on 64-bit systems
-
-dvisvgm-0.8.5 (2009-10-01)
-- added an optional depth parameter to special dvisvgm:raw
-- updated the man page
-- added LGPL license text needed for the gzstream wrapper classes
-
-dvisvgm-0.8.4 (2009-09-17)
-- improved the command-line parser to be more POSIX-compliant
-- added a simple progress indicator for time-consuming special operations
-- option --cache prints more information about the cached fonts
-- fixed a clipping bug in the PostScript handler
- (thanks to John Bowman for also providing a patch for this issue)
-- fixed a bug in computation of the PS bounding box
-- fixed a memory bug in the GF tracer module
-
-dvisvgm-0.8.3 (2009-08-28)
-- added basic evaluation of the PostScript "show" operator
- (handles PSTricks Type 3 fonts properly now)
-- improved checks for Ghostscript and potrace library in configure script
-- external Ghostscript and potrace development files are used if available
-- PostScript header/prologue files are now loaded regardless of converted page
-- replaced command-line option variant --cache=? by --cache
-
-dvisvgm-0.8.2 (2009-08-24)
-- changed license of dvisvgm to GPL version 3 or later
-- replaced getopt-based command-line parser by own implementation
- in order to simplify future internationalizations
-- fixed memory bug in fontmap reader
-
-dvisvgm-0.8.1 (2009-08-02)
-- added evaluation of more psfile parameters
-- fixed computation of bounding box in psfile special
-- fixed compilation errors and a conversion bug occurred on x64 systems
-
-dvisvgm-0.8 (2009-07-27)
-- experimental evaluation of PostScript specials has been added (requires
- a recent version of the Ghostscript shared library libgs.so or gsdll32.dll)
-- several code improvements and refactorings
-- fixed compilation bug occurred when using GCC 4.4.x
-
-dvisvgm-0.7.3 (2009-04-24)
-- fixed bug in font map reader that could cause a segmentation fault
-- fixed bug in creation of shorthand path drawing commands
-- fixed bug in TPIC special handler
-
-dvisvgm-0.7.2 (2009-04-02)
-- font caching has been added (speeds up embedding of bitmap fonts)
-- added option --trace-all that enables tracing of all glyphs of all
- bitmap fonts used in the current DVI file. Even glyphs that are currently
- not needed are considered. This avoids multiple calls of Metafont for the
- same fonts. In combination with the new caching functionality this can
- drastically increase the speed of successive dvisvgm calls.
-- if option --no-fonts is used, all glyph sizes are now computed correctly
-- use shorthand path commands in SVG fonts if possible
-
-dvisvgm-0.7.1 (2009-03-09)
-- evaluation of a subset of emTeX specials has been added
-- specials for embedding of raw SVG snippets have been added
-- evaluation of TPIC specials has been added
-- added background color support
-- added option -n, --no-fonts that replaces fonts by paths
- (enables applications w/o SVG font support to render dvisvgm's output properly)
-- moved defs to top of SVG file to make Firefox's SVG renderer happy
-- fixed bug in color handler
-
-dvisvgm-0.7 (2009-02-16)
-- basic support for evaluation of specials has been added
-- evaluation of color specials has been added
-- renamed command-line option -S to --no-specials and inverted previous behavior
-- selected special sets can be disabled by optional arguments to --no-specials
- (currently only color specials)
-- added option --no-style (see manpage for further details)
-- added optional '+' flag to option --map-file (see manpage for further details)
-- fixed \magnificaton bug (dvi magnification factor is now applied properly)
-- fixed buggy call of maketfm/makemf in Windows/MiKTeX version
-- fixed buggy evaluation of command-line argument -m/--map-file
-- several internal code improvements
-
-dvisvgm-0.6.1 (2009-01-29)
-- added support for dvips map files
-- removed dependency on dvipdfm's map file (now ps2pk.map, psfonts.map or dvipdfm.map is used by default)
-- fixed compilation bug #2535497
-- some internal refactorings
-
-dvisvgm-0.6 (2009-01-23)
-- added support for varying font encodings
-- updated MiKTeX support using its COM interface
-- fixed incomplete handling of nested virtual fonts
-- fixed a font handling bug that could cause segmentation faults
-- fixed bug in matrix transformation code
-- updated bundled potrace library to version 1.8
-
-dvisvgm-0.5 (2007-03-26)
-- redesigned and improved font handling
-- added support for virtual fonts
-- evaluation of dvipdfm's map file to find font files with differing
- names (e.g. cork-lmr10 => lmr10)
-- automatic invocation of mktexmf etc. in case of missing font files (tfm, mf)
-- command-line option -m has been renamed to -M
-- added command-line options -m/--map-file and -n/--no-mktexmf
-- memory bug in StreamCounter class has been fixed
-- added sources of Peter Selinger's potrace library (part of potrace, http://potrace.sourceforge.net)
- to simplify the build process
-
-dvisvgm-0.4.3 (2007-01-03)
-- problem with changed freetype API (freetype version >= 2.2.1) has been fixed
-- updated MiKTeX support to version 2.5
-- minor code improvements
-- some unit tests based on CxxTest (http://cxxtest.sourceforge.net) have been added
-
-dvisvgm-0.4.2 (2005-09-22)
-- added SVG transformation options
-- some bugfixes in command line frontend and TFM handling
-- code refactorings to improve modularity and extensibility
-
-dvisvgm-0.4.1 (2005-09-02)
-- added option -b to specify the bounding box
-- added a manual page
-
-dvisvgm-0.4 (2005-08-24)
-- Added a glyph tracing module that vectorizes Metafont's bitmap output
- if no corresponding Type 1 font file is available.
-
-dvisvgm-0.3 (2005-08-10)
-- Initial public release with basic conversion functionality.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/README b/Build/source/texk/dvisvgm/dvisvgm-1.6/README
deleted file mode 100644
index 2454a2a23f4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/README
+++ /dev/null
@@ -1,110 +0,0 @@
-dvisvgm -- A DVI to SVG converter
-
-DESCRIPTION
-
- dvisvgm is a utility for TeX/LaTeX users. It converts
- DVI files to the XML-based scalable vector graphics format SVG.
-
-
-DEPENDENCIES
-
- dvisvgm relies on the following free libraries:
- * FreeType 2 (http://www.freetype.org)
- This library is used to extract glyph outlines
- from PFB files.
-
- * Ghostscript (http://pages.cs.wisc.edu/~ghost)
- The PostScript special handler requires the Ghostscript
- library libgs.so (Linux) or gsdll32.dll/gsdll64.dll (Windows)
- to be installed. If the configure script finds the corresponding
- Ghostscript development files on the system, it directly
- links against libgs.so. Otherwise, the library is looked up
- at runtime and PostScript support is enabled only if libgs.so
- could be found.
- Due to incompatible changes of the Ghostscript API, dvisvgm
- requires Ghostscript 8.31 or later.
-
- * kpathsea
- This library is part of the Web2C package and is
- usually installed in conjunction with a TeX distribution.
- kpathsea provides functions for searching files in the
- large texmf tree.
-
- * potracelib (http://potrace.sourceforge.net)
- Peter Selinger's bitmap tracing library is utilized to
- vectorize Metafont's bitmap output.
-
- * zlib (http://www.zlib.org)
- Compressed SVG files are produced by using functions
- of this library and the Gzstream wrapper classes
- (http://www.cs.unc.edu/Research/compgeom/gzstream)
- which are licensed under LGPL version 2.1 (or optionally any
- later version) and should be included with this package.
-
- If you want to build and run the testsuite located in the tests
- subdirectory, you also need the googletest libraries
- (http://code.google.com/p/googletest).
-
-
-COMPILATION
-
- Quick installation info:
- * type "./configure"
- * type "make"
- * type "make install" as root (or "sudo make install")
-
- For generic configuration instructions see the file INSTALL.
-
- The configure script should recognize all necessary parameters.
- If a library is installed but not detected, specify its location
- as commandline parameter of configure, e.g.
- ./configure --with-freetype=/usr/local/freetype
- (all available options can be displayed with ./configure --help)
-
- The tracer module calls Metafont in case of lacking TFM or PFB files
- via a system call. Please ensure that Metafont is installed and
- reachable through the search path.
-
- If you don't like compiling the sources yourself, you can
- download pre-compiled executables for Windows and MiKTeX
- from sourceforge.net instead (see below).
-
-
-USAGE
- Information about the command-line interface and the available options
- can be found in the manual page.
-
-
-ADDITIONAL INFORMATION
- This package is available from CTAN (dviware/dvisvgm) and can
- be downloaded from the project website at sourceforge.net as well:
-
- http://dvisvgm.sourceforge.net
-
- Here you can find the sources, pre-compiled binaries and further additional
- information about the converter and related topics.
-
- If you've found a bug, please let me know. You can either send me an
- email or preferably use the bug tracker at Launchpad
- (see https://launchpad.net/dvisvgm).
-
-
-COPYRIGHT
-
- Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de>
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 3 of the License, or (at your
- option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
- Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, see <http://www.gnu.org/licenses/>.
-
- See the file COPYING for details.
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/config.h.in b/Build/source/texk/dvisvgm/dvisvgm-1.6/config.h.in
deleted file mode 100644
index fcd8cf41872..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/config.h.in
+++ /dev/null
@@ -1,169 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to 1 if the `closedir' function returns void instead of `int'. */
-#undef CLOSEDIR_VOID
-
-/* Set to 1 if PostScript support should be disabled */
-#undef DISABLE_GS
-
-/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
-#undef GWINSZ_IN_SYS_IOCTL
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-#undef HAVE_DIRENT_H
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the `ftime' function. */
-#undef HAVE_FTIME
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `dl' library (-ldl). */
-#undef HAVE_LIBDL
-
-/* Define to 1 if you have the `gs' library (-lgs). */
-#undef HAVE_LIBGS
-
-/* Define to 1 if you have the <libintl.h> header file. */
-#undef HAVE_LIBINTL_H
-
-/* Define to 1 if you have the `kpathsea' library (-lkpathsea). */
-#undef HAVE_LIBKPATHSEA
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the `potrace' library (-lpotrace). */
-#undef HAVE_LIBPOTRACE
-
-/* Define to 1 if you have the `z' library (-lz). */
-#undef HAVE_LIBZ
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-#undef HAVE_NDIR_H
-
-/* Define to 1 if `stat' has the bug that it succeeds when given the
- zero-length file name argument. */
-#undef HAVE_STAT_EMPTY_STRING_BUG
-
-/* Define to 1 if stdbool.h conforms to C99. */
-#undef HAVE_STDBOOL_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strtol' function. */
-#undef HAVE_STRTOL
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
-#undef HAVE_SYS_DIR_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
-#undef HAVE_SYS_NDIR_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/timeb.h> header file. */
-#undef HAVE_SYS_TIMEB_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if the system has the type `_Bool'. */
-#undef HAVE__BOOL
-
-/* Define to 1 if the kpathsea headers are not C++ safe. */
-#undef KPSE_CXX_UNSAFE
-
-/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
- slash. */
-#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* The machine triplet of the target system */
-#undef TARGET_SYSTEM
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-1.6/configure.ac
deleted file mode 100644
index 934dffccbb0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/configure.ac
+++ /dev/null
@@ -1,166 +0,0 @@
-# This file is part of dvisvgm
-# Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de>
-#
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[1.6],[martin.gieseking@uos.de])
-DATE="April 2014"
-AC_CONFIG_SRCDIR(src)
-AC_CONFIG_HEADER(config.h)
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
-AM_INIT_AUTOMAKE
-
-AH_TEMPLATE([TARGET_SYSTEM], [The machine triplet of the target system])
-AC_DEFINE_UNQUOTED([TARGET_SYSTEM], ["$target"])
-
-# Checks for programs.
-AC_PROG_CXX
-AC_PROG_CC
-
-AC_PROG_RANLIB
-AC_LANG(C)
-
-AC_CHECK_FUNCS([ftime gettimeofday])
-AC_CHECK_HEADERS([sys/time.h sys/timeb.h])
-AC_HEADER_TIOCGWINSZ
-
-AC_CHECK_HEADER([kpathsea/kpathsea.h], ,
- [AC_MSG_ERROR([please install the kpathsea development package])])
-AC_CHECK_LIB(kpathsea, kpse_find_file, ,
- [AC_MSG_ERROR([libkpathsea not found, please install the corresponding package first])])
-
-AC_MSG_CHECKING([kpathsea version])
-AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdio.h>
- #include <kpathsea/kpathsea.h>
- int main() {
- FILE *f;
- f = fopen("kpseversion", "w");
- if(!f) exit(1);
- fprintf(f, "%s\n", KPSEVERSION);
- fclose(f);
- exit(0);
- }])],
- [kpseversion=`cat kpseversion|sed 's/kpathsea version //'`], [kpseversion=], [kpseversion=unknown])
-AC_MSG_RESULT("$kpseversion")
-rm -f kpseversion
-if test -z "$kpseversion"; then
- AC_MSG_ERROR([Could not compile a simple kpathsea program -- check your installation])
-fi
-
-
-# Check how to link potracelib
-HAVE_LIBPOTRACE=1
-AC_CHECK_HEADER([potracelib.h],
- [AC_CHECK_LIB(m, sqrt) # required to pass potrace check
- AC_CHECK_LIB(potrace, potrace_trace, , HAVE_LIBPOTRACE=0)], HAVE_LIBPOTRACE=0)
-
-if test "$HAVE_LIBPOTRACE" -eq 0; then
- AC_MSG_ERROR([potrace library not found])
-fi
-
-
-# Check how to link Ghostscript
-HAVE_LIBGS=1
-AC_CHECK_HEADER([ghostscript/iapi.h],
- AC_CHECK_LIB(gs, gsapi_new_instance, , HAVE_LIBGS=0), HAVE_LIBGS=0)
-
-if test "$HAVE_LIBGS" -eq 0; then
- AC_CHECK_LIB(dl, dlopen, ,
- [AC_DEFINE(DISABLE_GS, 1, [Set to 1 if PostScript support is to be disabled])
- AC_MSG_WARN(PostScript support disabled)])
-else
- # query Ghostscript version
- AC_MSG_CHECKING([Ghostscript version])
- AC_RUN_IFELSE([AC_LANG_SOURCE([#include <stdio.h>
- #include <ghostscript/iapi.h>
- int main () {
- gsapi_revision_t r;
- if (gsapi_revision(&r, sizeof(gsapi_revision_t)) == 0) {
- FILE *f;
- f = fopen("gsversion", "w");
- if (!f) exit(1);
- fprintf(f, "%ld\n", r.revision);
- fclose(f);
- exit(0);
- }
- }])],
- [gsversion=`cat gsversion`], [gsversion=], [gsversion=unknown])
- AC_MSG_RESULT("$gsversion")
- rm -f gsversion
- if test "$gsversion" -lt 831; then
- # current Ghostscript API was introduced in version 8.31
- # older versions are not supported
- LIBS=`echo $LIBS | sed "s/-lgs //" $LIBS`
- AC_DEFINE(DISABLE_GS, 1, [Set to 1 if PostScript support should be disabled])
- AC_MSG_WARN([Ghostscript version < 8.31 found; PostScript support disabled])
- fi
-fi
-
-# Check for pkg-config
-PKG_PROG_PKG_CONFIG
-
-# Check for libraries.
-PKG_CHECK_MODULES([FREETYPE], [freetype2])
-CXXFLAGS="$CXXFLAGS ${FREETYPE_CFLAGS}"
-LIBS="$LIBS ${FREETYPE_LIBS}"
-
-AC_CHECK_LIB(z, gzopen)
-
-# Check for header files.
-AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_CHECK_HEADERS([libintl.h stdlib.h string.h strings.h unistd.h])
-
-# Check for typedefs, structures, and compiler characteristics.
-AC_HEADER_STDBOOL
-AC_C_CONST
-AC_C_INLINE
-AC_TYPE_SIZE_T
-AC_STRUCT_TM
-
-# Check for library functions.
-AC_FUNC_CLOSEDIR_VOID
-AC_FUNC_ERROR_AT_LINE
-AC_FUNC_MALLOC
-AC_FUNC_STAT
-AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([memset strcasecmp strtol])
-
-# add options for selection of "optional" library locations
-# currently these libraries are mandatory; the --with-foo options
-# are used to specify the locations explicitely
-
-AC_ARG_WITH(zlib,[ --with-zlib=DIR location of the zlib library],
- [if test "$withval" != no; then
- if test "$withval" != yes; then
- ZLIB_DIR=$withval
- fi
- fi])
-
-if test "$withval" != no; then
- if test -n "$ZLIB_DIR"; then
- CPPFLAGS="$CPPFLAGS -I$ZLIB_DIR -I$ZLIB_DIR/include"
- LDFLAGS="$LDFLAGS -L$ZLIB_DIR/lib"
- fi
-fi
-
-# Check if the kpathsea headers are C++ safe
-AC_MSG_CHECKING([if the kpathsea headers are C++ safe])
-AC_LANG_PUSH([C++])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <kpathsea/kpathsea.h>]],
- [[printf("%s\n", concat("one", "two"))]])],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])
- AC_DEFINE([KPSE_CXX_UNSAFE], 1,
- [Define to 1 if the kpathsea headers are not C++ safe.])])
-AC_LANG_POP([C++])
-
-AC_SUBST(DATE)
-AC_SUBST(EXTRA_LIBS)
-AC_SUBST(AM_CPPFLAGS)
-AC_SUBST(AM_LDFLAGS)
-AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile doc/dvisvgm.txt doc/Makefile])
-AC_OUTPUT
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/Makefile.am
deleted file mode 100644
index 13254cb773a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-## This file is part of dvisvgm
-## Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de>
-##
-## Process this file with automake.
-
-man_MANS = dvisvgm.1
-EXTRA_DIST = $(man_MANS)
-
-dvisvgm.1: dvisvgm.txt
- if [ `type -p a2x` ]; then \
- a2x -dmanpage -fmanpage -L -a icons -a 'iconsdir=.' $<; \
- rm -f dvisvgm.xml; \
- fi
-
-dvisvgm.pdf: dvisvgm.1
- echo '[ /Author (Martin Gieseking) /Title (dvisvgm manual page) /Subject (manual page of dvisvgm @VERSION@) /DOCINFO pdfmark' >tmp.ps
- man -t ./$< >>tmp.ps
- ps2pdf tmp.ps $@
- rm -f tmp.ps
-
-dvi-pdf: dvisvgm.dvi
- dvipdfm $<
- rm -f $<
-
-dvisvgm.dvi: dvisvgm.1
- groff -Tdvi -mandoc ./$< >$@
-
-dvisvgm.html: dvisvgm.txt
- asciidoc -a icons -a 'iconsdir=.' -a badges -a 'revnumber=@VERSION@' --unsafe -dmanpage $<
-
-html: dvisvgm.html
-man: dvisvgm.1
-pdf: dvisvgm.pdf
-
-clean:
- rm -f dvisvgm.pdf dvisvgm.html dvisvgm.xml dvisvgm.txt
-
-distclean-local:
- rm -f dvisvgm.pdf dvisvgm.html dvisvgm.xml dvisvgm.txt dvisvgm.1
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.1
deleted file mode 100644
index 0c65adf919a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.1
+++ /dev/null
@@ -1,1103 +0,0 @@
-'\" t
-.\" Title: dvisvgm
-.\" Author: Martin Gieseking <martin.gieseking@uos.de>
-.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 04/23/2014
-.\" Manual: dvisvgm Manual
-.\" Source: dvisvgm 1.6
-.\" Language: English
-.\"
-.TH "DVISVGM" "1" "04/23/2014" "dvisvgm 1\&.6" "dvisvgm Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-dvisvgm \- converts DVI files to the XML\-based SVG format
-.SH "SYNOPSIS"
-.sp
-\fBdvisvgm\fR [ \fIoptions\fR ] \fIfile\fR [\&.dvi]
-.sp
-\fBdvisvgm\fR \-E [ \fIoptions\fR ] \fIfile\fR [\&.eps]
-.SH "DESCRIPTION"
-.sp
-The command\-line utility \fBdvisvgm\fR converts DVI files, as generated by TeX/LaTeX, to the XML\-based scalable vector graphics format SVG\&. It supports the classic DVI format 2 as well as format 3 (created by pTeX in vertical mode), and format 5 which is also known as XDV (created by XeTeX)\&. Besides the basic DVI commands, dvisvgm also evaluates many so\-called \fIspecials\fR which heavily extend the capabilities of the DVI format\&. For a more detailed overview, see section \fBsupport of specials\fR below\&.
-.sp
-Since the current SVG standard 1\&.1 doesn\(cqt specify multi\-page graphics, dvisvgm creates separate SVG files for each DVI page\&. Because of compatibility reasons, only the first page is converted by default\&. In order to select a different page or arbitrary page sequences, use option \fB\-p\fR which is described below\&.
-.sp
-SVG is a vector\-based graphics format and therefore dvisvgm tries to convert the glyph outlines of all used fonts to scalable path descriptions\&. The fastest way to do that is to extract the path information from font files in PFB, TTF, or OTF format\&. If dvisvgm is able to find such a file, it extracts all necessary outline information about the glyphs from it\&.
-.sp
-However, TeX\(cqs main source for font descriptions is Metafont, which produces bitmap output (GF files)\&. That\(cqs why not all obtainable TeX fonts are available in a scalable format\&. In these cases, dvisvgm tries to vectorize Metafont\(cqs output by tracing the glyph bitmaps\&. The results are not as perfect as most (manually optimized) PFB or OTF counterparts, but are nonetheless really nice in most cases\&.
-.sp
-When running dvisvgm without option \fB\-\-no\-fonts\fR, \fIfont\fR elements (<font>\&...</font>) are used to embed the font data into the SVG files\&. Unfortunately, only few SVG renderes support these elements yet\&. Most web browsers and vector graphics applications don\(cqt evaluate them properly so that the text components of the resulting graphics might look strange\&. In order to create more compatible SVG files, command\-line option \fB\-\-no\-fonts\fR can be given to replace the font elements by plain graphics paths\&.
-.SH "OPTIONS"
-.PP
-\fB\-a, \-\-trace\-all\fR=[\fIretrace\fR]
-.RS 4
-This option forces dvisvgm to trace not only the actually needed glyphs but all glyphs of all bitmap fonts used in the DVI file\&. Since the tracing results are stored in the font cache, all following DVI conversions (without option
-\fB\-\-trace\-all\fR) where these fonts are involved, will be much faster\&. By default, dvisvgm traces only the actually needed glyphs, and adds them to the cache\&. The boolean option
-\fIretrace\fR
-determines how to handle glyphs already stored in the cache\&. By default, these glyphs are skipped\&. Setting argument
-\fIretrace\fR
-to
-\fIyes\fR
-or
-\fItrue\fR
-forces dvisvgm to trace the corresponding bitmaps again\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-This option only takes affect if font caching is active\&. Thus,
-\fB\-\-trace\-all\fR
-cannot be combined with option
-\fB\-\-cache=none\fR\&.
-.sp .5v
-.RE
-.RE
-.PP
-\fB\-b, \-\-bbox\fR=\fIfmt\fR
-.RS 4
-Sets the bounding box of the generated graphic to the specified format\&. The parameter
-\fIfmt\fR
-takes either one of the format specifiers listed below, or a sequence of four comma\- or whitespace\-separated length values
-\fIx1\fR,
-\fIy1\fR,
-\fIx2\fR
-and
-\fIy2\fR\&. The latter define two diagonal corners of the bounding box\&. Each length value consists of a floating point number and an optional length unit (pt, bp, cm, mm, in, or pc)\&. If the unit is omitted, TeX points (pt) are assumed\&.
-.sp
-It\(cqs also possible to give only one length value
-\fIl\fR\&. In this case, the minimal bounding box is computed and enlarged by adding (\-\fIl\fR,\-\fIl\fR) to the upper left and (\fIl\fR,\fIl\fR) to the lower right corner\&.
-.sp
-Alternatively, the following format specifiers are supported:
-.PP
-\fBInternational DIN/ISO paper sizes\fR
-.RS 4
-A\fIn\fR, B\fIn\fR, C\fIn\fR, D\fIn\fR, where
-\fIn\fR
-is a non\-negative integer, e\&.g\&. A4 or a4 for DIN/ISO A4 format (210mm \(mu 297mm)\&.
-.RE
-.PP
-\fBNorth American paper sizes\fR
-.RS 4
-invoice, executive, legal, letter, ledger
-.RE
-.PP
-\fBSpecial bounding box sizes\fR
-.RS 4
-.TS
-tab(:);
-lt lt
-lt lt
-lt lt.
-T{
-\fBdvi\fR
-T}:T{
-page size stored in the DVI file
-T}
-T{
-\fBmin\fR
-T}:T{
-computes the minimal/tightest bounding box
-T}
-T{
-\fBnone\fR
-T}:T{
-no bounding box is assigned
-T}
-.TE
-.sp 1
-.RE
-.PP
-\fBPage orientation\fR
-.RS 4
-The default page orientation for DIN/ISO and American paper sizes is
-\fIportrait\fR, i\&.e\&.
-\fIwidth\fR
-<
-\fIheight\fR\&. Appending
-\fB\-landscape\fR
-or simply
-\fB\-l\fR
-to the format string switches to
-\fIlandscape\fR
-mode (\fIwidth\fR
->
-\fIheight\fR)\&. For symmetry reasons you can also explicitly add
-\fB\-portrait\fR
-or
-\fB\-p\fR
-to indicate the default portrait format\&. Note that these suffixes are part of the size string and not separate options\&. Thus, they must directly follow the size specifier without additional blanks\&. Furthermore, the orientation suffixes can\(cqt be used with
-\fBdvi\fR,
-\fBmin\fR, and
-\fBnone\fR\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-Option
-\fB\-b, \-\-bbox\fR
-only affects the bounding box and does not transform the page content\&. Hence, if you choose a landscape format, the page won\(cqt be rotated\&.
-.sp .5v
-.RE
-.RE
-.RE
-.PP
-\fB\-C, \-\-cache\fR[=\fIdir\fR]
-.RS 4
-To speed up the conversion process of bitmap fonts, dvisvgm saves intermediate conversion information in cache files\&. By default, these files are stored in $HOME/\&.dvisvgm/cache\&. If you prefer a different location, use option
-\fB\-\-cache\fR
-to overwrite the default\&. Furthermore, it is also possible to disable the font caching mechanism completely with option
-\fB\-\-cache=none\fR\&. If argument
-\fIdir\fR
-is omitted, dvisvgm prints the path of the default cache directory together with further information about the stored fonts\&. Additionally, outdated and corrupted cache files are removed\&.
-.RE
-.PP
-\fB\-\-color\fR
-.RS 4
-Enables colorization of messages printed during the conversion process\&. The colors can be customized via the environment variable
-DVISVGM_COLORS\&. See the ENVIRONMENT section below for further information\&.
-.RE
-.PP
-\fB\-E, \-\-eps\fR
-.RS 4
-If this option is given, dvisvgm does not expect a DVI but an EPS input file, and tries to convert it to SVG\&. In order to do so, a single
-\fIpsfile\fR
-special command is created and forwarded to the PostScript special handler\&. This option is only available if dvisvgm was built with PostScript support enabled, and requires Ghostscript to be available\&. See option
-\fB\-\-libgs\fR
-for further information\&.
-.RE
-.PP
-\fB\-e, \-\-exact\fR
-.RS 4
-If this option is given, dvisvgm computes the precise bounding box of each character\&. By default, the values stored in a font\(cqs TFM file are used to determine a glyph\(cqs extent\&. As these values are intended to implement optimal character placements and are not designed to represent the exact dimensions, they don\(cqt necessarily correspond with the bounds of the visual glyphs\&. Thus, width and/or height of some glyphs may be larger (or smaller) than the respective TFM values\&. As a result, this can lead to clipped characters at the bounds of the SVG graphics\&. With option
-\fB\-\-exact\fR
-given, dvisvgm analyzes the actual shape of each character and derives a usually tight bounding box\&.
-.RE
-.PP
-\fB\-m, \-\-fontmap\fR=\fIfilenames\fR
-.RS 4
-Loads and evaluates a single or multiple font map files\&. These files are required to resolve font file names and encodings\&. dvisvgm does not provide its own map files but tries to read available ones coming with dvips or dvipdfm\&. If option
-\fB\-\-fontmap\fR
-is omitted, dvisvgm looks for the default map files
-ps2pk\&.map,
-dvipdfm\&.map, and
-psfonts\&.map
-(in this order)\&. Otherwise, the listed files are used\&. Multiple filenames must be separated by commas without leading and/or trailing whitespace\&. The map files are evaluated in the given order\&. By default, redefined mappings do not replace previous ones\&. However, each filename can be preceded by an optional mode specifier (\fB+\fR,
-\fB\-\fR, or
-\fB=\fR) to change this behavior:
-.PP
-+mapfile
-.RS 4
-Only those entries in the given map file that don\(cqt redefine a font mapping are applied\&. That\(cqs also the default mode if no mode specifier is given\&.
-.RE
-.PP
-\-mapfile
-.RS 4
-Ensures that none of the font mappings defined in the given map file are used, i\&.e\&. previously defined mappings for the specified fonts are removed\&.
-.RE
-.PP
-=mapfile
-.RS 4
-All mappings defined in the map file are applied\&. Previously defined settings for the same font are replaced\&.
-.sp
-If the first filename in the filename sequence is preceded by a mode specifier, dvisvgm loads the default font map (see above) and applies the other map files afterwards\&. Otherwise, none of default map files will be loaded automatically\&.
-.sp
-Examples:
-\fB\-\-fontmap=myfile1\&.map,+myfile2\&.map\fR
-loads
-myfile1\&.map
-followed by
-myfile2\&.map
-where all redefinitions of
-myfile2\&.map
-are ignored\&.
-\fB\-\-fontmap==myfile1\&.map,\-myfile2\&.map\fR
-loads the default map file followed by
-myfile1\&.map
-and
-myfile2\&.map
-where all redefinitions of
-myfile1\&.map
-replace previous entries\&. Afterwards, all definitions for the fonts given in
-myfile2\&.map
-are removed from the font map tree\&.
-.sp
-For further information about the map file formats and the mode specifiers, see the manuals of dvips and dvipdfm\&.
-.RE
-.RE
-.PP
-\fB\-h, \-\-help\fR[=\fImode\fR]
-.RS 4
-Prints a short summary of all available command\-line options\&. The optional
-\fImode\fR
-parameter is an integer value between 0 and 2\&. It selects the display variant of the help text\&. Mode 0 lists all options divided into categories with section headers\&. This is also the default if dvisvgm is called without parameters\&. Mode 1 lists all options ordered by the short option names, while mode 2 sorts the lines by the long option names\&.
-.RE
-.PP
-\fB\-\-keep\fR
-.RS 4
-Disables the removal of temporary files as created by Metafont (usually \&.gf, \&.tfm, and \&.log files)\&.
-.RE
-.PP
-\fB\-\-libgs\fR=\fIfilename\fR
-.RS 4
-This option is only available if the Ghostscript library is not directly linked to dvisvgm and if PostScript support was not completely disabled during compilation\&. In this case, dvisvgm tries to load the shared GS library dynamically during runtime\&. By default, it expects the library\(cqs name to be libgs\&.so\&.X (on Unix\-like systems, where X is the ABI version of the library) or gsdll32\&.dll/gsdll64\&.dll (Windows)\&. Option
-\fB\-\-libgs\fR
-can be used to give a different name\&. Alternatively, it\(cqs also possible to set the GS library name by the environment variable
-LIBGS\&. The latter has less precedence than the command\-line option\&.
-.RE
-.PP
-\fB\-L, \-\-linkmark\fR=\fItype\fR
-.RS 4
-Selects the method how to mark hyperlinked areas\&. The
-\fItype\fR
-argument can take one of the values
-\fInone\fR,
-\fIbox\fR, and
-\fIline\fR, where
-\fIbox\fR
-is the default, i\&.e\&. a rectangle is drawn around the linked region if option
-\fB\-\-linkmark\fR
-is omitted\&. Type
-\fIline\fR
-just draws the lower edge of the bounding rectangle, and
-\fInone\fR
-tells dvisvgm not to add any visible objects to hyperlinks\&. The lines and boxes get the current text color selected\&. In order to apply a different, constant color, a colon followed by a color specifier can be appended to the type string\&. A
-\fIcolor specifier\fR
-is either a hexadecimal RGB value of the form
-\fI#RRGGBB\fR, or a dvips color name as listed here:
-http://en\&.wikibooks\&.org/wiki/LaTeX/Colors#The_68_standard_colors_known_to_dvips
-.sp
-Moreover, argument
-\fItype\fR
-can take a single color specifier to highlight the linked region by a frameless box filled with that color\&. An optional second color specifier separated by colon selects the frame color\&.
-.sp
-Examples:
-\fBbox:red\fR
-or
-\fBbox:#ff0000\fR
-draws red boxes around the linked areas\&.
-\fByellow:blue\fR
-creates yellow filled rectangles with blue frames\&.
-.RE
-.PP
-\fB\-l, \-\-list\-specials\fR
-.RS 4
-Prints a list of registered special handlers and exits\&. Each handler processes a set of special statements belonging to the same category\&. In most cases, the categories are identified by the prefix of the special statements\&. It\(cqs usually a leading word separated from the rest of the statement by a colon or a blank, e\&.g\&.
-\fIcolor\fR
-or
-\fIps\fR\&.
-.RE
-.PP
-\fB\-M, \-\-mag\fR=\fIfactor\fR
-.RS 4
-Sets the magnification factor applied in conjunction with Metafont calls prior tracing the glyphs\&. The larger this value, the better the tracing results\&. Nevertheless, large magnification values can cause Metafont arithmetic errors due to number overflows\&. So, use this option with care\&. The default setting usually produces nice results\&.
-.RE
-.PP
-\fB\-\-no\-mktexmf\fR
-.RS 4
-Suppresses the generation of missing font files\&. If dvisvgm can\(cqt find a font file through the kpathsea lookup mechanism, it calls the external tools mktextfm or mktexmf by\&. This option disables these calls\&.
-.RE
-.PP
-\fB\-n, \-\-no\-fonts\fR[=\fIvariant\fR]
-.RS 4
-If this option is given, dvisvgm doesn\(cqt create SVG
-\fIfont\fR
-elements but uses
-\fIpaths\fR
-instead\&. The resulting SVG files tend to be larger but they are concurrently more compatible with most applications that don\(cqt support SVG fonts yet\&. The optional argument
-\fIvariant\fR
-selects the method how to substitute fonts by paths\&. Variant 0 creates
-\fIpath\fR
-and
-\fIuse\fR
-elements\&. Variant 1 creates
-\fIpath\fR
-elements only\&. Option
-\fB\-\-no\-fonts\fR
-implies
-\fB\-\-no\-styles\fR\&.
-.RE
-.PP
-\fB\-c, \-\-scale\fR=\fIsx\fR[,\fIsy\fR]
-.RS 4
-Scales the page content horizontally by
-\fIsx\fR
-and vertically by
-\fIsy\fR\&. This option is equivalent to
-\fB\-TS\fR\fIsx\fR,\fIsy\fR\&.
-.RE
-.PP
-\fB\-S, \-\-no\-specials\fR[=\fInames\fR]
-.RS 4
-Disable processing of special commands embedded in the DVI file\&. If no further parameter is given, all specials are ignored\&. To selectively disable sets of specials, an optional comma\-separated list of names can be appended to this option\&. A
-\fIname\fR
-is the unique identifier referencing the intended special handler\&. Option
-\fB\-\-list\-specials\fR
-lists all currently available handlers and their names\&. All unsupported special statements are silently ignored\&.
-.RE
-.PP
-\fB\-\-no\-styles\fR
-.RS 4
-By default, dvisvgm creates CSS styles and class attributes to reference fonts because it\(cqs more compact than repeatedly set the complete font information in each text element\&. However, if you prefer direct font references, the default behavior can be disabled with option
-\fB\-\-no\-styles\fR\&.
-.RE
-.PP
-\fB\-o, \-\-output\fR=\fIpattern\fR
-.RS 4
-Sets the name pattern of the output file\&. Parameter
-\fIpattern\fR
-is a string that may contain the variables
-\fB%f\fR
-and
-\fB%p\fR\&.
-\fB%f\fR
-stands for the base name of the DVI file, i\&.e\&. the DVI filename without suffix, and
-\fB%p\fR
-is the current page number\&. The default pattern is
-\fB%f\-%p\&.svg\fR
-if the DVI file consists of more than one page, and
-\fB%f\&.svg\fR
-otherwise\&. That means, a DVI file
-\fIfoo\&.dvi\fR
-is converted to
-\fIfoo\&.svg\fR
-if
-\fIfoo\&.dvi\fR
-is a single\-page document\&. Otherwise, multiple SVG files
-\fIfoo\-01\&.svg\fR,
-\fIfoo\-02\&.svg\fR, etc\&. are produced\&. In Windows environments, the percent sign indicates dereferenced environment variables, and must therefore be protected by a second percent sign, e\&.g\&.
-\fB\-\-output=%%f\-%%p\fR\&.
-.RE
-.PP
-\fB\-p, \-\-page\fR=\fIranges\fR
-.RS 4
-This option sets the pages to be processed\&. Parameter
-\fIranges\fR
-consists of a comma\-separated list of single page numbers and/or page ranges\&. A page range is a pair of numbers separated by a hyphen, e\&.g\&. 5\-12\&. Thus, a page sequence might look like this: 2\-4,6,9\-12,15\&. It doesn\(cqt matter if a page is given more than once or if page ranges overlap\&. dvisvgm always extracts the page numbers in ascending order and converts them only once\&. In order to stay compatible with previous versions, the default page sequence is 1\&. dvisvgm therefore converts only the first page and not the whole document in case option
-\fB\-\-page\fR
-is omitted\&. Usually, page ranges consist of two numbers denoting the first and last page to be converted\&. If the conversion is to be started at page 1, or if it should continue up to the last DVI page, the first or second range number can be omitted, respectively\&. Example:
-\fB\-\-page=\-10\fR
-converts all pages up to page 10,
-\fB\-\-page=10\-\fR
-converts all pages starting with page 10\&. Please consider that the page values don\(cqt refer to the page numbers printed on the page\&. Instead, the physical page count is expected, where the first page always gets number 1\&.
-.RE
-.PP
-\fB\-d, \-\-precision\fR=\fIdigits\fR
-.RS 4
-Specifies the maximal number of decimal places applied to floating\-point attribute values\&. All attribute values written to the generated SVG file(s) are rounded accordingly\&. The parameter
-\fIdigits\fR
-allows integer values from 0 to 6, where 0 enables the automatic selection of significant decimal places\&. This is also the default value if dvisvgm is called without option
-\fB\-\-precision\fR\&.
-.RE
-.PP
-\fB\-P, \-\-progress\fR[=\fIdelay\fR]
-.RS 4
-Enables a simple progress indicator shown when time\-consuming operations like PostScript specials are processed\&. The indicator doesn\(cqt appear before the given delay (in seconds) has elapsed\&. The default delay value is 0\&.5 seconds\&.
-.RE
-.PP
-\fB\-r, \-\-rotate\fR=\fIangle\fR
-.RS 4
-Rotates the page content clockwise by
-\fIangle\fR
-degrees around the page center\&. This option is equivalent to
-\fB\-TR\fR\fIangle\fR\&.
-.RE
-.PP
-\fB\-s, \-\-stdout\fR
-.RS 4
-Don\(cqt write the SVG output to a file but redirect it to
-\fBstdout\fR\&.
-.RE
-.PP
-\fB\-T, \-\-transform\fR=\fIcommands\fR
-.RS 4
-Applies a sequence of transformations to the SVG content\&. Each transformation is described by a
-\fIcommand\fR
-beginning with a capital letter followed by a list of comma\-separated parameters\&. Following transformation commands are supported:
-.PP
-\fBT\fR \fItx\fR[,\fIty\fR]
-.RS 4
-Translates (moves) the page in direction of vector (\fItx\fR,\fIty\fR)\&. If
-\fIty\fR
-is omitted,
-\fIty\fR=0 is assumed\&. The expected unit length of
-\fItx\fR
-and
-\fIty\fR
-are TeX points (1pt = 1/72\&.27in)\&. However, there are several constants defined to simplify the unit conversion (see below)\&.
-.RE
-.PP
-\fBS\fR \fIsx\fR[,\fIsy\fR]
-.RS 4
-Scales the page horizontally by
-\fIsx\fR
-and vertically by
-\fIsy\fR\&. If
-\fIsy\fR
-is omitted,
-\fIsy\fR=\fIsx\fR
-is assumed\&.
-.RE
-.PP
-\fBR\fR \fIangle\fR[,\fIx\fR,\fIy\fR]
-.RS 4
-Rotates the page clockwise by
-\fIangle\fR
-degrees around point (\fIx\fR,\fIy\fR)\&. If the optional arguments
-\fIx\fR
-and
-\fIy\fR
-are omitted, the page will be rotated around its center depending on the chosen page format\&. When option
-\fB\-bnone\fR
-is given, the rotation center is origin (0,0)\&.
-.RE
-.PP
-\fBKX\fR \fIangle\fR
-.RS 4
-Skews the page along the
-\fIx\fR\-axis by
-\fIangle\fR
-degrees\&. Argument
-\fIangle\fR
-can take any value except 90+180\fIk\fR, where
-\fIk\fR
-is an integer\&.
-.RE
-.PP
-\fBKY\fR \fIangle\fR
-.RS 4
-Skews the page along the
-\fIy\fR\-axis by
-\fIangle\fR
-degrees\&. Argument
-\fIangle\fR
-can take any value except 90+180\fIk\fR, where
-\fIk\fR
-is an integer\&.
-.RE
-.PP
-\fBFH\fR [\fIy\fR]
-.RS 4
-Mirrors (flips) the page at the horizontal line through point (0,\fIy\fR)\&. Omitting the optional argument leads to
-\fIy\fR=\fIh\fR/2, where
-\fIh\fR
-denotes the page height (see
-\fIpre\-defined constants\fR
-below)\&.
-.RE
-.PP
-\fBFV\fR [\fIx\fR]
-.RS 4
-Mirrors (flips) the page at the vertical line through point (\fIx\fR,0)\&. Omitting the optional argument leads to
-\fIx\fR=\fIw\fR/2, where
-\fIw\fR
-denotes the page width (see
-\fIpre\-defined constants\fR
-below)\&.
-.RE
-.PP
-\fBM\fR \fIm1\fR,\&...,\fIm6\fR
-.RS 4
-Applies a transformation described by the 3\(mu3 matrix ((\fIm1\fR,\fIm2\fR,\fIm3\fR),(\fIm4\fR,\fIm5\fR,\fIm6\fR),(0,0,1)), where the inner triples denote the rows\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-All transformation commands of option
-\fB\-T, \-\-transform\fR
-are applied in the order of their appearance\&. Multiple commands can optionally be separated by spaces\&. In this case the whole transformation string has to be enclosed in double quotes\&. All parameters are expressions of floating point type\&. You can either give plain numbers or arithmetic terms combined by the operators
-\fB+\fR
-(addition),
-\fB\-\fR
-(subtraction),
-\fB*\fR
-(multiplication),
-\fB/\fR
-(division) or
-\fB%\fR
-(modulo) with common associativity and precedence rules\&. Parentheses may be used as well\&.
-.sp
-Additionally, some pre\-defined constants are provided:
-.TS
-tab(:);
-lt lt
-lt lt
-lt lt
-lt lt.
-T{
-\fBux\fR
-T}:T{
-horizontal position of upper left page corner in TeX point units
-T}
-T{
-\fBuy\fR
-T}:T{
-vertical position of upper left page corner in TeX point units
-T}
-T{
-\fBh\fR
-T}:T{
-page height in TeX point units (0 in case of
-\fB\-bnone\fR)
-T}
-T{
-\fBw\fR
-T}:T{
-page width in TeX point units (0 in case of
-\fB\-bnone\fR)
-T}
-.TE
-.sp 1
-Furthermore, you can use the length constants
-\fBpt\fR,
-\fBmm\fR,
-\fBcm\fR
-and
-\fBin\fR, e\&.g\&.
-2cm
-or
-1\&.6in\&. Thus, option
-\-TT1in,0R45
-moves the page content 1 inch to the right and rotates it by 45 degrees around the page center afterwards\&.
-.sp
-For single transformations you can also use options
-\fB\-c\fR,
-\fB\-t\fR
-and
-\fB\-r\fR\&. Note that the order in which these options are given is not significant, i\&.e\&. you can\(cqt use them to describe transformation sequences\&. They are simply independent shorthand options for common transformations\&.
-.sp .5v
-.RE
-.RE
-.RE
-.PP
-\fB\-t, \-\-translate\fR=\fItx\fR[,\fIty\fR]
-.RS 4
-Translates (moves) the page content in direction of vector (\fItx\fR,\fIty\fR)\&. This option is equivalent to
-\fB\-TT\fR\fItx\fR,\fIty\fR\&.
-.RE
-.PP
-\fB\-v, \-\-verbosity\fR=\fIlevel\fR
-.RS 4
-Controls the type of messages printed during a dvisvgm run:
-.TS
-tab(:);
-lt lt
-lt lt
-lt lt
-lt lt.
-T{
-\fB0\fR
-T}:T{
-no message output
-T}
-T{
-\fB1\fR
-T}:T{
-error messages only
-T}
-T{
-\fB2\fR
-T}:T{
-warning messages only
-T}
-T{
-\fB4\fR
-T}:T{
-informational messages only
-T}
-.TE
-.sp 1
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-By adding these values you can combine the categories\&. The default level is 7, i\&.e\&. all messages are printed\&.
-.sp .5v
-.RE
-.RE
-.PP
-\fB\-V, \-\-version\fR[=\fIextended\fR]
-.RS 4
-Prints the version of dvisvgm and exits\&. If the optional argument is set to
-\fIyes\fR, the version numbers of the linked libraries are printed as well\&.
-.RE
-.PP
-\fB\-z, \-\-zip\fR[=\fIlevel\fR]
-.RS 4
-Creates a compressed SVG file with suffix \&.svgz\&. The optional argument specifies the compression level\&. Valid values are in the range of 1 to 9 (default value is 9)\&. Larger values cause better compression results but take more computation time\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBCaution\fR
-.ps -1
-.br
-This option cannot be combined with
-\fB\-s, \-\-stdout\fR\&.
-.sp .5v
-.RE
-.RE
-.PP
-\fB\-Z, \-\-zoom\fR[=\fIfactor\fR]
-.RS 4
-Multiplies the
-\fIwidth\fR
-and
-\fIheight\fR
-attributes of the SVG root element by argument
-\fIfactor\fR
-while the coordinate system of the graphic is retained\&. As a result, most SVG viewers zoom the graphics accordingly\&. If a negative zoom factor is given, the
-\fIwidth\fR
-and
-\fIheight\fR
-attributes are omitted\&.
-.RE
-.SH "SUPPORT OF SPECIALS"
-.sp
-dvisvgm supports several sets of \fIspecial commands\fR that can be used to enrich DVI files with additional features, like color, graphics, and hyperlinks\&. The evaluation of special commands is delegated to various handlers\&. Each handler is responsible for all special statements of the same command set, i\&.e\&. commands beginning with the same prefix\&. To get a list of actually provided special handlers, use option \fB\-\-list\-specials\fR (see above)\&. This section gives an overview of the special commands currently supported\&.
-.PP
-\fBbgcolor\fR
-.RS 4
-Special statement for changing the background/page color\&. Since SVG 1\&.1 doesn\(cqt support background colors, dvisvgm inserts a rectangle of the chosen color into the generated SVG document\&. This rectangle always gets the same size as the selected or computed bounding box\&. This background color command is part of the color special set but is handled separately in order to let the user turn it off\&. For an overview of the command syntax, see the documentation of dvips, for instance\&.
-.RE
-.PP
-\fBcolor\fR
-.RS 4
-Statements of this command set provide instructions to change the text/paint color\&. For an overview of the exact syntax, see the documentation of dvips, for instance\&.
-.RE
-.PP
-\fBdvisvgm\fR
-.RS 4
-dvisvgm offers its own small set of specials\&. The following list gives a brief overview\&.
-.PP
-\fBdvisvgm:raw\fR \fItext\fR
-.RS 4
-Adds an arbitrary sequence of characters to the SVG output\&. dvisvgm does not perform any validation here, thus the user has to ensure that the resulting SVG is still valid\&. Parameter
-\fItext\fR
-may contain the macros
-\fB{?x}\fR,
-\fB{?y}\fR, and
-\fB{?color}\fR
-that are expanded to the current
-\fIx\fR
-or
-\fIy\fR
-coordinate and the current color, respectively\&. Also, macro
-\fB{?nl}\fR
-expands to a newline character\&.
-.RE
-.PP
-\fBdvisvgm:img\fR \fIwidth\fR \fIheight\fR \fIfile\fR
-.RS 4
-Creates an image element at the current graphic position referencing the given file\&. JPEG, PNG, and SVG images can be used here\&. However, dvisvgm does not check the file format or the file name suffix\&. The lengths
-\fIwidth\fR
-and
-\fIheight\fR
-must be given as plain floating point numbers in TeX point units (1in = 72\&.27pt)\&.
-.RE
-.PP
-\fBdvisvgm:bbox\fR n[ew] \fIname\fR
-.RS 4
-Defines or resets a local bounding box called
-\fIname\fR\&. The name may consist of letters and digits\&. While processing a DVI page, dvisvgm continuously updates the (global) bounding box of the current page in order to determine the minimal rectangle containing all visible page components (characters, images, drawing elements etc\&.) Additionally to the global bounding box, the user can request an arbitrary number of named local bounding boxes\&. Once defined, these boxes are updated together with the global bounding box starting with the first character that follows the definition\&. Thus, the local boxes can be used to compute the extent of parts of the page\&. This is useful for scenarios where the generated SVG file is post\-processed\&. In conjunction with special dvisvgm:raw, the macro
-\fB{?bbox \fR\fB\fIname\fR\fR\fB}\fR
-expands to the four values
-\fIx\fR,
-\fIy\fR,
-\fIw\fR, and
-\fIh\fR
-(separated by spaces) specifying the coordinates of the upper left corner, width, and height of the local box
-\fIname\fR\&. If box
-\fIname\fR
-wasn\(cqt previously defined, all four values equal zero\&.
-.RE
-.PP
-\fBdvisvgm:bbox\fR \fIwidth\fR \fIheight\fR [\fIdepth\fR]
-.RS 4
-Updates the bounding box of the current page by embedding a virtual rectangle (\fIx\fR,
-\fIy\fR,
-\fIwidth\fR,
-\fIheight\fR) where the lower left corner is located at the current DVI drawing position (\fIx\fR,\fIy\fR)\&. If the optional parameter
-\fIdepth\fR
-is specified, dvisvgm embeds a second rectangle (\fIx\fR,
-\fIy\fR,
-\fIwidth\fR, \-\fIdepth\fR)\&. The lengths
-\fIwidth\fR,
-\fIheight\fR
-and
-\fIdepth\fR
-must be given as plain floating point numbers in TeX point units (1in = 72\&.27pt)\&. Depending on size and position of the virtual rectangle, this command either enlarges the overall bounding box or leaves it as is\&. It\(cqs not possible to reduce its extent\&. This special should be used in conjunction with
-\fBdvisvgm:raw\fR
-in order to update the viewport of the page properly\&.
-.RE
-.PP
-\fBdvisvgm:bbox\fR a[bs] \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR
-.RS 4
-This variant of the bbox special updates the bounding box by embedding a virtual rectangle (\fIx1\fR,\fIy1\fR,\fIx2\fR,\fIy2\fR)\&. The points (\fIx1\fR,\fIy1\fR) and (\fIx2\fR,\fIy2\fR) denote two diagonal corners of the rectangle given in TeX point units\&.
-.RE
-.PP
-\fBdvisvgm:bbox\fR f[ix] \fIx1\fR \fIy1\fR \fIx2\fR \fIy2\fR
-.RS 4
-This variant of the bbox special assigns an absolute (final) bounding box to the resulting SVG\&. After executing this command, dvisvgm doesn\(cqt further alter the bounding box coordinates, except this special is called again later\&. The points (\fIx1\fR,\fIy1\fR) and (\fIx2\fR,\fIy2\fR) denote two diagonal corners of the rectangle given in TeX point units\&.
-.sp
-The following TeX snippet adds two raw SVG elements to the output and updates the bounding box accordingly:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-\especial{dvisvgm:raw <circle cx=\*(Aq{?x}\*(Aq cy=\*(Aq{?y}\*(Aq r=\*(Aq10\*(Aq stroke=\*(Aqblack\*(Aq fill=\*(Aqred\*(Aq/>}
-\especial{dvisvgm:bbox 20 10 10}
-
-\especial{dvisvgm:raw <path d=\*(AqM50 200 L10 250 H100 Z\*(Aq stroke=\*(Aqblack\*(Aq fill=\*(Aqblue\*(Aq/>}
-\especial{dvisvgm:bbox abs 10 200 100 250}
-.fi
-.if n \{\
-.RE
-.\}
-.RE
-.RE
-.PP
-\fBem\fR
-.RS 4
-These specials were introduced with the emTeX distribution by Eberhard Mattes\&. They provide line drawing statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands\&. dvisvgm supports only the line drawing statements and ignores all other em specials silently\&. A description of the command syntax can be found in the DVI driver documentation coming with emTeX (see CTAN)\&.
-.RE
-.PP
-\fBhtml\fR
-.RS 4
-The hyperref specials allow the definition of hyperlinks inside DVI files in various flavors\&. dvisvgm supports the plain HyperTeX special constructs as created with hyperref package option
-\fIhypertex\fR\&. Internal links, i\&.e\&. references to other parts of the same document, are only converted if the link and the corresponding link target are located on the same page\&. Links between different pages are not supported yet\&. By default, all linked areas of the document are marked by a rectangle\&. Option
-\fB\-\-linkmark\fR
-allows to change this behavior\&. See above for further details\&. Information on syntax and semantics of the HyperTeX specials can be found in the hyperref manual\&.
-.RE
-.PP
-\fBpdf\fR
-.RS 4
-pdfTeX and dvipdfmx introduced several special commands related to the generation of PDF files\&. Currently, only two of them,
-\fIpdf:mapfile\fR
-and
-\fIpdf:mapline\fR
-are supported by dvisvgm\&. These specials allow modifying the font map tree during the processing of DVI files\&. They are used by CTeX, for example\&. dvisvgm supports both, the dvips and dvipdfm font map format\&. For further information on the command syntax and semantics, see the documentation of \epdfmapfile in the pdfTeX user manual\&.
-.RE
-.PP
-\fBps\fR
-.RS 4
-The famous DVI driver dvips introduced its own set of specials in order to embed PostScript code into DVI files, which greatly improves the capabilities of DVI documents\&. One aim of dvisvgm is to completely evaluate all PostScript snippets and to convert a large amount of it to SVG\&. However, in contrast to dvips, dvisvgm uses floating point arithmetics to compute the precise position of each graphic element, i\&.e\&. it doesn\(cqt round the coordinates\&. Therefore, the relative locations of the graphic elements may slightly differ from those computed by dvips\&.
-.sp
-Since PostScript is a rather complex language, dvisvgm does not try to implement its own PostScript interpreter but relies on Ghostscript instead\&. If the Ghostscript library was not linked to the dvisvgm binary, it is looked up and loaded dynamically during runtime\&. In this case, dvisvgm looks for
-\fIlibgs\&.so\&.X\fR
-on Unix\-like systems (supported ABI versions: 7,8,9), and for
-\fIgsdll32\&.dll\fR
-or
-\fIgsdll64\&.dll\fR
-on Windows\&. You can override the default file names with environment variable
-LIBGS
-or the command\-line option
-\fB\-\-libgs\fR\&. The library must be reachable through the ld search path (*nix) or the PATH environment variable (Windows)\&. Alternatively, the absolute file path can be specified\&. If the library cannot be found, dvisvgm disables the processing of PostScript specials\&. Use option
-\fB\-\-list\-specials\fR
-to check whether PS support is available, i\&.e\&. entry
-\fIps\fR
-is present\&.
-.sp
-The PostScript handler also recognizes and evaluates bounding box data generated by the
-\fIpreview\fR
-package with option
-\fItightpage\fR\&. If the data is present in a DVI file, dvisvgm adapts the bounding box of the generated SVG file accordingly, and prints a message showing the width, height, and depth of the box in TeX point units\&. Especially, the depth value can be used to vertically align the SVG graphics with the baseline of surrounding text in HTML or XSL\-FO documents, for example\&.
-.RE
-.PP
-\fBtpic\fR
-.RS 4
-The TPIC special set defines instructions for drawing simple geometric objects\&. Some LaTeX packages, like eepic and tplot, use these specials to describe graphics\&.
-.RE
-.SH "EXAMPLES"
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-dvisvgm file
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-Converts the first page of \fIfile\&.dvi\fR to \fIfile\&.svg\fR\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-dvisvgm \-z file
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-Converts the first page of \fIfile\&.dvi\fR to \fIfile\&.svgz\fR with default compression level 9\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-dvisvgm \-p5 \-z3 \-ba4\-l \-onewfile file
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-Converts the fifth page of \fIfile\&.dvi\fR to \fInewfile\&.svgz\fR with compression level 3\&. The bounding box is set to DIN/ISO A4 in landscape format\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-dvisvgm \-\-transform="R20,w/3,2h/5 T1cm,1cm S2,3" file
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-Converts the first page of \fIfile\&.dvi\fR to \fIfile\&.svg\fR where three transformations are applied\&.
-.SH "ENVIRONMENT"
-.sp
-dvisvgm uses the \fBkpathsea\fR library for locating the files that it opens\&. Hence, the environment variables described in the library\(cqs documentation influence the converter\&.
-.sp
-If dvisvgm was linked without the Ghostscript library, and if PostScript support has not been disabled, the shared Ghostscript library is looked up during runtime via dlopen()\&. The environment variable LIBGS can be used to specify path and file name of the library\&.
-.sp
-The pre\-compiled Windows versions of dvisvgm require a working installation of MiKTeX 2\&.9 or above\&. dvisvgm does not work together with the portable edition of MiKTeX because it relies on MiKTeX\(cqs COM interface only accessible in a local installation\&. To enable the evaluation of PostScript specials, the original Ghostscript DLL \fIgsdll32\&.dll\fR must be present and reachable through the search path\&. 64\-bit Windows builds require the 64\-bit Ghostscript DLL \fIgsdll64\&.dll\fR\&. Both DLLs come with the corresponding Ghostscript installers available from www\&.ghostscript\&.com\&.
-.sp
-The environment variable DVISVGM_COLORS specifies the colors used to highlight various parts of dvisvgm\(cqs message output\&. It is only evaluated if option \fB\-\-color\fR is given\&. The value of DVISVGM_COLORS is a list of colon\-separated entries of the form \fIgg\fR=\fIBF\fR, where \fIgg\fR denotes one of the color group indicators listed below, and \fIBF\fR are two hexadecimal digits specifying the background (first digit) and foreground/text color (second digit)\&. The color values are defined as follows: 0=black, 1=red, 2=green, 3=yellow, 4=blue, 5=magenta, 6=cyan, 7=gray, 8=bright red, 9=bright green, A=bright yellow, B=bright blue, C=bright magenta, D=bright cyan, E=bright gray, F=white\&. Depending on the terminal, the colors may differ\&. Rather than changing both the text and background color, it\(cqs also possible to change only one of them: An asterisk (*) in place of a hexadecimal digit indicates the default text or background color of the terminal\&.
-.sp
-All malformed entries in the list are silently ignored\&.
-.TS
-tab(:);
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt.
-T{
-.sp
-\fBer\fR
-T}:T{
-.sp
-error messages
-T}
-T{
-.sp
-\fBwn\fR
-T}:T{
-.sp
-warning messages
-T}
-T{
-.sp
-\fBpn\fR
-T}:T{
-.sp
-messages about page numbers
-T}
-T{
-.sp
-\fBps\fR
-T}:T{
-.sp
-page size messages
-T}
-T{
-.sp
-\fBfw\fR
-T}:T{
-.sp
-information about the files written
-T}
-T{
-.sp
-\fBsm\fR
-T}:T{
-.sp
-state messages
-T}
-T{
-.sp
-\fBtr\fR
-T}:T{
-.sp
-messages of the glyph tracer
-T}
-T{
-.sp
-\fBpi\fR
-T}:T{
-.sp
-progress indicator
-T}
-.TE
-.sp 1
-.sp
-\fBExample:\fR er=01:pi=*5 sets the colors of error messages (er) to red (1) on black (0), and those of progress indicators (pi) to cyan (5) on default background (*)\&.
-.SH "FILES"
-.sp
-The location of the following files is determined by the kpathsea library\&. To check the actual kpathsea configuration you can use the \fBkpsewhich\fR utility\&.
-.TS
-tab(:);
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt
-lt lt.
-T{
-.sp
-\fB*\&.enc\fR
-T}:T{
-.sp
-Font encoding files
-T}
-T{
-.sp
-\fB*\&.fgd\fR
-T}:T{
-.sp
-Font glyph data files (cache files created by dvisvgm)
-T}
-T{
-.sp
-\fB*\&.map\fR
-T}:T{
-.sp
-Font map files
-T}
-T{
-.sp
-\fB*\&.mf\fR
-T}:T{
-.sp
-Metafont input files
-T}
-T{
-.sp
-\fB*\&.pfb\fR
-T}:T{
-.sp
-PostScript Type 1 font files
-T}
-T{
-.sp
-\fB*\&.pro\fR
-T}:T{
-.sp
-PostScript header/prologue files
-T}
-T{
-.sp
-\fB*\&.tfm\fR
-T}:T{
-.sp
-TeX font metric files
-T}
-T{
-.sp
-\fB*\&.ttf\fR
-T}:T{
-.sp
-TrueType font files
-T}
-T{
-.sp
-\fB*\&.vf\fR
-T}:T{
-.sp
-Virtual font files
-T}
-.TE
-.sp 1
-.SH "SEE ALSO"
-.sp
-\fBtex(1), mf(1), mktexmf(1), grodvi(1), potrace(1)\fR, and the \fBkpathsea library\fR info documentation\&.
-.SH "RESOURCES"
-.PP
-Project home page
-.RS 4
-http://dvisvgm\&.sourceforge\&.net
-.RE
-.PP
-SourceForge project site
-.RS 4
-http://sourceforge\&.net/projects/dvisvgm
-.RE
-.SH "BUGS"
-.sp
-Please report bugs using the bug tracker at Launchpad (see https://launchpad\&.net/dvisvgm)\&.
-.SH "AUTHOR"
-.sp
-Written by Martin Gieseking <martin\&.gieseking@uos\&.de>
-.SH "COPYING"
-.sp
-Copyright \(co 2005\-2014 Martin Gieseking\&. Free use of this software is granted under the terms of the GNU General Public License (GPL) version 3 or, (at your option) any later version\&.
-.SH "AUTHOR"
-.PP
-\fBMartin Gieseking\fR <\&martin\&.gieseking@uos\&.de\&>
-.RS 4
-Author.
-.RE
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.txt.in b/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.txt.in
deleted file mode 100644
index 7d942066d3b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/doc/dvisvgm.txt.in
+++ /dev/null
@@ -1,676 +0,0 @@
-//////////////////////////////////////////////////////////////////////////
-// This file is part of dvisvgm -- the DVI to SVG converter //
-// Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> //
-// //
-// This program is free software; you can redistribute it and/or //
-// modify it under the terms of the GNU General Public License as //
-// published by the Free Software Foundation; either version 3 of //
-// the License, or (at your option) any later version. //
-// //
-// This program is distributed in the hope that it will be useful, but //
-// WITHOUT ANY WARRANTY; without even the implied warranty of //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
-// GNU General Public License for more details. //
-// //
-// You should have received a copy of the GNU General Public License //
-// along with this program; if not, see <http://www.gnu.org/licenses/>. //
-//////////////////////////////////////////////////////////////////////////
-
-dvisvgm(1)
-==========
-Martin Gieseking <@PACKAGE_BUGREPORT@>
-:man source: dvisvgm
-:man version: @VERSION@
-:man manual: dvisvgm Manual
-
-NAME
-----
-dvisvgm - converts DVI files to the XML-based SVG format
-
-
-SYNOPSIS
---------
-*dvisvgm* [ 'options' ] 'file' [.dvi]
-
-*dvisvgm* -E [ 'options' ] 'file' [.eps]
-
-
-DESCRIPTION
------------
-The command-line utility *dvisvgm* converts DVI files, as generated by TeX/LaTeX, to the
-XML-based scalable vector graphics format SVG. It supports the classic DVI format 2 as
-well as format 3 (created by pTeX in vertical mode), and format 5 which is also known as
-XDV (created by XeTeX). Besides the basic DVI commands, dvisvgm also evaluates many so-called
-'specials' which heavily extend the capabilities of the DVI format. For a more detailed
-overview, see section *support of specials* below.
-
-Since the current SVG standard 1.1 doesn't specify multi-page graphics, dvisvgm creates
-separate SVG files for each DVI page. Because of compatibility reasons, only the first page
-is converted by default. In order to select a different page or arbitrary page sequences,
-use option *-p* which is described below.
-
-SVG is a vector-based graphics format and therefore dvisvgm tries to convert the glyph outlines
-of all used fonts to scalable path descriptions. The fastest way to do that is to extract the
-path information from font files in PFB, TTF, or OTF format. If dvisvgm is able to find such
-a file, it extracts all necessary outline information about the glyphs from it.
-
-However, TeX's main source for font descriptions is Metafont, which produces bitmap output
-(GF files). That's why not all obtainable TeX fonts are available in a scalable format.
-In these cases, dvisvgm tries to vectorize Metafont's output by tracing the glyph bitmaps.
-The results are not as perfect as most (manually optimized) PFB or OTF counterparts, but are
-nonetheless really nice in most cases.
-
-When running dvisvgm without option *--no-fonts*, 'font' elements (<font>...</font>) are used to
-embed the font data into the SVG files. Unfortunately, only few SVG renderes support these
-elements yet. Most web browsers and vector graphics applications don't evaluate them properly
-so that the text components of the resulting graphics might look strange. In order to create
-more compatible SVG files, command-line option *--no-fonts* can be given to replace the font
-elements by plain graphics paths.
-
-
-OPTIONS
--------
-*-a, --trace-all*=['retrace']::
-This option forces dvisvgm to trace not only the actually needed glyphs but all
-glyphs of all bitmap fonts used in the DVI file. Since the tracing results are stored in
-the font cache, all following DVI conversions (without option *--trace-all*) where these
-fonts are involved, will be much faster. By default, dvisvgm traces only the actually
-needed glyphs, and adds them to the cache.
-The boolean option 'retrace' determines how to handle glyphs already stored in the cache.
-By default, these glyphs are skipped. Setting argument 'retrace' to 'yes' or
-'true' forces dvisvgm to trace the corresponding bitmaps again.
-+
-[NOTE]
-This option only takes affect if font caching is active. Thus, *--trace-all* cannot be
-combined with option *--cache=none*.
-+
-
-
-*-b, --bbox*='fmt'::
-Sets the bounding box of the generated graphic to the specified format. The parameter 'fmt'
-takes either one of the format specifiers listed below, or a sequence of four comma- or
-whitespace-separated length values 'x1', 'y1', 'x2' and 'y2'. The latter define two diagonal
-corners of the bounding box. Each length value consists of a floating point number and an optional
-length unit (pt, bp, cm, mm, in, or pc). If the unit is omitted, TeX points (pt) are assumed.
-+
-It's also possible to give only one length value 'l'. In this case, the minimal bounding box
-is computed and enlarged by adding (-'l',-'l') to the upper left and ('l','l') to the lower
-right corner.
-+
-Alternatively, the following format specifiers are supported:
-
- *International DIN/ISO paper sizes*;;
- A__n__, B__n__, C__n__, D__n__, where 'n' is a non-negative integer, e.g. A4 or a4 for DIN/ISO A4
- format (210mm &#215; 297mm).
-
- *North American paper sizes*;;
- invoice, executive, legal, letter, ledger
-
- *Special bounding box sizes*;;
-[horizontal]
- *dvi*::: page size stored in the DVI file
- *min*::: computes the minimal/tightest bounding box
- *none*::: no bounding box is assigned
-//
- *Page orientation*;;
- The default page orientation for DIN/ISO and American paper sizes is 'portrait',
- i.e. 'width' < 'height'. Appending *-landscape* or simply *-l* to the format
- string switches to 'landscape' mode ('width' > 'height'). For symmetry reasons you can
- also explicitly add *-portrait* or *-p* to indicate the default portrait format.
- Note that these suffixes are part of the size string and not separate options. Thus,
- they must directly follow the size specifier without additional blanks.
- Furthermore, the orientation suffixes can't be used with *dvi*, *min*, and *none*.
-+
-[NOTE]
-Option *-b, --bbox* only affects the bounding box and does not transform the page content.
-Hence, if you choose a landscape format, the page won't be rotated.
-+
-//
-
-//
-*-C, --cache*[='dir']::
-To speed up the conversion process of bitmap fonts, dvisvgm saves intermediate conversion
-information in cache files. By default, these files are stored in $HOME/.dvisvgm/cache. If you prefer
-a different location, use option *--cache* to overwrite the default. Furthermore, it is also possible
-to disable the font caching mechanism completely with option *--cache=none*. If argument 'dir' is omitted,
-dvisvgm prints the path of the default cache directory together with further information about the stored fonts.
-Additionally, outdated and corrupted cache files are removed.
-
-
-*--color*::
-Enables colorization of messages printed during the conversion process. The colors can be customized
-via the environment variable +DVISVGM_COLORS+. See the ENVIRONMENT section below for further information.
-
-
-*-E, --eps*::
-If this option is given, dvisvgm does not expect a DVI but an EPS input file, and tries to convert
-it to SVG. In order to do so, a single 'psfile' special command is created and forwarded to the
-PostScript special handler.
-This option is only available if dvisvgm was built with PostScript support enabled, and requires
-Ghostscript to be available. See option *--libgs* for further information.
-
-
-*-e, --exact*::
-If this option is given, dvisvgm computes the precise bounding box of each character. By default,
-the values stored in a font's TFM file are used to determine a glyph's extent. As these values are
-intended to implement optimal character placements and are not designed to represent the exact
-dimensions, they don't necessarily correspond with the bounds of the visual glyphs. Thus, width
-and/or height of some glyphs may be larger (or smaller) than the respective TFM values. As a result,
-this can lead to clipped characters at the bounds of the SVG graphics. With option *--exact* given,
-dvisvgm analyzes the actual shape of each character and derives a usually tight bounding box.
-
-
-*-m, --fontmap*='filenames'::
-Loads and evaluates a single or multiple font map files. These files are required to resolve
-font file names and encodings. dvisvgm does not provide its own map files but tries to read
-available ones coming with dvips or dvipdfm. If option *--fontmap* is omitted, dvisvgm looks for the
-default map files +ps2pk.map+, +dvipdfm.map+, and +psfonts.map+ (in this order). Otherwise, the
-listed files are used. Multiple filenames must be separated by commas without leading and/or trailing
-whitespace.
-The map files are evaluated in the given order. By default, redefined mappings do not replace previous ones.
-However, each filename can be preceded by an optional mode specifier (*+*, *-*, or *=*) to change this behavior:
-
- +mapfile;;
- Only those entries in the given map file that don't redefine a font mapping are applied.
- That's also the default mode if no mode specifier is given.
-
- -mapfile;;
- Ensures that none of the font mappings defined in the given map file are used, i.e. previously
- defined mappings for the specified fonts are removed.
-
- =mapfile;;
- All mappings defined in the map file are applied. Previously defined settings for the same font
- are replaced.
-+
-If the first filename in the filename sequence is preceded by a mode specifier, dvisvgm loads the
-default font map (see above) and applies the other map files afterwards. Otherwise, none of default
-map files will be loaded automatically.
-+
-Examples: *--fontmap=myfile1.map,+myfile2.map* loads `myfile1.map` followed by `myfile2.map` where all
-redefinitions of `myfile2.map` are ignored.
-*--fontmap==myfile1.map,-myfile2.map* loads the default map file followed by `myfile1.map` and `myfile2.map`
-where all redefinitions of `myfile1.map` replace previous entries. Afterwards, all definitions for the fonts
-given in `myfile2.map` are removed from the font map tree.
-+
-For further information about the map file formats and the mode specifiers, see the manuals of dvips and dvipdfm.
-
-
-*-h, --help*[='mode']::
-Prints a short summary of all available command-line options. The optional 'mode' parameter is
-an integer value between 0 and 2. It selects the display variant of the help text. Mode 0
-lists all options divided into categories with section headers. This is also the default if
-dvisvgm is called without parameters. Mode 1 lists all options ordered by the short option names,
-while mode 2 sorts the lines by the long option names.
-
-
-*--keep*::
-Disables the removal of temporary files as created by Metafont (usually .gf, .tfm, and .log files).
-
-
-*--libgs*='filename'::
-This option is only available if the Ghostscript library is not directly linked to dvisvgm and if
-PostScript support was not completely disabled during compilation. In this case, dvisvgm tries
-to load the shared GS library dynamically during runtime. By default, it expects the library's name
-to be libgs.so.X (on Unix-like systems, where X is the ABI version of the library) or
-gsdll32.dll/gsdll64.dll (Windows). Option *--libgs* can be used to give a different name.
-Alternatively, it's also possible to set the GS library name by the environment variable +LIBGS+.
-The latter has less precedence than the command-line option.
-
-
-*-L, --linkmark*='type'::
-Selects the method how to mark hyperlinked areas. The 'type' argument can take one of the values
-'none', 'box', and 'line', where 'box' is the default, i.e. a rectangle is drawn around
-the linked region if option *--linkmark* is omitted. Type 'line' just draws the lower edge of
-the bounding rectangle, and 'none' tells dvisvgm not to add any visible objects to hyperlinks.
-The lines and boxes get the current text color selected. In order to apply a different, constant color,
-a colon followed by a color specifier can be appended to the type string. A 'color specifier' is either
-a hexadecimal RGB value of the form '#RRGGBB', or a dvips color name as listed here:
-http://en.wikibooks.org/wiki/LaTeX/Colors#The_68_standard_colors_known_to_dvips
-+
-Moreover, argument 'type' can take a single color specifier to highlight the linked region by
-a frameless box filled with that color. An optional second color specifier separated by colon
-selects the frame color.
-+
-Examples: *box:red* or *box:#ff0000* draws red boxes around the linked areas. *yellow:blue* creates
-yellow filled rectangles with blue frames.
-
-
-*-l, --list-specials*::
-Prints a list of registered special handlers and exits. Each handler processes a set of special
-statements belonging to the same category. In most cases, the categories are identified by the
-prefix of the special statements. It's usually a leading word separated from the rest of the
-statement by a colon or a blank, e.g. 'color' or 'ps'.
-
-
-*-M, --mag*='factor'::
-Sets the magnification factor applied in conjunction with Metafont calls prior tracing the glyphs.
-The larger this value, the better the tracing results. Nevertheless, large magnification values
-can cause Metafont arithmetic errors due to number overflows. So, use this option with care.
-The default setting usually produces nice results.
-
-
-*--no-mktexmf*::
-Suppresses the generation of missing font files. If dvisvgm can't find a font file
-through the kpathsea lookup mechanism, it calls the external tools mktextfm or mktexmf by.
-This option disables these calls.
-
-
-*-n, --no-fonts*[='variant']::
-If this option is given, dvisvgm doesn't create SVG 'font' elements but uses 'paths' instead. The
-resulting SVG files tend to be larger but they are concurrently more compatible with most applications that
-don't support SVG fonts yet. The optional argument 'variant' selects the method how to substitute fonts
-by paths. Variant 0 creates 'path' and 'use' elements. Variant 1 creates 'path' elements only.
-Option *--no-fonts* implies *--no-styles*.
-
-
-*-c, --scale*='sx'[,'sy']::
-Scales the page content horizontally by 'sx' and vertically by 'sy'. This option is equivalent
-to *-TS*'sx','sy'.
-
-
-*-S, --no-specials*[='names']::
-Disable processing of special commands embedded in the DVI file. If no further
-parameter is given, all specials are ignored. To selectively disable sets of specials,
-an optional comma-separated list of names can be appended to this option. A 'name' is the unique
-identifier referencing the intended special handler. Option *--list-specials* lists all currently
-available handlers and their names.
-All unsupported special statements are silently ignored.
-
-
-*--no-styles*::
-By default, dvisvgm creates CSS styles and class attributes to reference fonts because it's more
-compact than repeatedly set the complete font information in each text element. However, if you
-prefer direct font references, the default behavior can be disabled with option *--no-styles*.
-
-
-*-o, --output*='pattern'::
-Sets the name pattern of the output file. Parameter 'pattern' is a string that may
-contain the variables *%f* and *%p*. *%f* stands for the base name of the DVI file, i.e.
-the DVI filename without suffix, and *%p* is the current page number.
-The default pattern is *%f-%p.svg* if the DVI file consists of more than one page, and
-*%f.svg* otherwise. That means, a DVI file 'foo.dvi' is converted to 'foo.svg' if 'foo.dvi'
-is a single-page document. Otherwise, multiple SVG files 'foo-01.svg', 'foo-02.svg', etc. are
-produced. In Windows environments, the percent sign indicates dereferenced environment
-variables, and must therefore be protected by a second percent sign, e.g. *--output=%%f-%%p*.
-
-
-*-p, --page*='ranges'::
-This option sets the pages to be processed. Parameter 'ranges' consists of a comma-separated list
-of single page numbers and/or page ranges. A page range is a pair of numbers separated by a hyphen,
-e.g. 5-12. Thus, a page sequence might look like this: 2-4,6,9-12,15. It doesn't matter if a page
-is given more than once or if page ranges overlap. dvisvgm always extracts the page numbers in
-ascending order and converts them only once.
-In order to stay compatible with previous versions, the default page sequence is 1. dvisvgm
-therefore converts only the first page and not the whole document in case option *--page* is omitted.
-Usually, page ranges consist of two numbers denoting the first and last page to be converted.
-If the conversion is to be started at page 1, or if it should continue up to the last DVI page, the
-first or second range number can be omitted, respectively. Example: *--page=-10* converts all
-pages up to page 10, *--page=10-* converts all pages starting with page 10.
-Please consider that the page values don't refer to the page numbers printed on the page.
-Instead, the physical page count is expected, where the first page always gets number 1.
-
-
-*-d, --precision*='digits'::
-Specifies the maximal number of decimal places applied to floating-point attribute values.
-All attribute values written to the generated SVG file(s) are rounded accordingly. The
-parameter 'digits' allows integer values from 0 to 6, where 0 enables the automatic selection
-of significant decimal places. This is also the default value if dvisvgm is called without
-option *--precision*.
-
-
-*-P, --progress*[='delay']::
-Enables a simple progress indicator shown when time-consuming operations like
-PostScript specials are processed. The indicator doesn't appear before the given
-delay (in seconds) has elapsed. The default delay value is 0.5 seconds.
-
-
-*-r, --rotate*='angle'::
-Rotates the page content clockwise by 'angle' degrees around the page center.
-This option is equivalent to *-TR*'angle'.
-
-
-*-s, --stdout*::
-Don't write the SVG output to a file but redirect it to *stdout*.
-
-
-*-T, --transform*='commands'::
-Applies a sequence of transformations to the SVG content. Each transformation is described
-by a 'command' beginning with a capital letter followed by a list of comma-separated
-parameters. Following transformation commands are supported:
-
- *T* 'tx'[,'ty'];;
- Translates (moves) the page in direction of vector ('tx','ty'). If 'ty' is omitted,
- 'ty'=0 is assumed.
- The expected unit length of 'tx' and 'ty' are TeX points (1pt = 1/72.27in). However, there
- are several constants defined to simplify the unit conversion (see below).
-
- *S* 'sx'[,'sy'];;
- Scales the page horizontally by 'sx' and vertically by 'sy'. If 'sy' is omitted,
- 'sy'='sx' is assumed.
-
- *R* 'angle'[,'x','y'];;
- Rotates the page clockwise by 'angle' degrees around point ('x','y'). If the optional
- arguments 'x' and 'y' are omitted, the page will be rotated around its center depending on
- the chosen page format. When option *-bnone* is given, the rotation center is origin (0,0).
-
- *KX* 'angle';;
- Skews the page along the 'x'-axis by 'angle' degrees. Argument 'angle' can take any value
- except 90+180__k__, where 'k' is an integer.
-
- *KY* 'angle';;
- Skews the page along the 'y'-axis by 'angle' degrees. Argument 'angle' can take any value
- except 90+180__k__, where 'k' is an integer.
-
- *FH* ['y'];;
- Mirrors (flips) the page at the horizontal line through point (0,'y'). Omitting the optional argument
- leads to 'y'='h'/2, where 'h' denotes the page height (see 'pre-defined constants' below).
-
- *FV* ['x'];;
- Mirrors (flips) the page at the vertical line through point ('x',0). Omitting the optional argument
- leads to 'x'='w'/2, where 'w' denotes the page width (see 'pre-defined constants' below).
-
- *M* 'm1',...,'m6';;
- Applies a transformation described by the 3&#215;3 matrix
- \(('m1','m2','m3'),('m4','m5','m6'),(0,0,1)), where the inner triples denote
- the rows.
-+
-[NOTE]
-=================================================================================================
-All transformation commands of option *-T, --transform* are applied in the order of their appearance.
-Multiple commands can optionally be separated by spaces. In this case the whole transformation string
-has to be enclosed in double quotes. All parameters are expressions of floating point type. You can either
-give plain numbers or arithmetic terms combined by the operators *+* (addition), *-* (subtraction),
-*** (multiplication), */* (division) or *%* (modulo) with common associativity and
-precedence rules. Parentheses may be used as well.
-
-Additionally, some pre-defined constants are provided:
-
-[horizontal]
-*ux*:: horizontal position of upper left page corner in TeX point units
-*uy*:: vertical position of upper left page corner in TeX point units
-*h*:: page height in TeX point units (0 in case of *-bnone*)
-*w*:: page width in TeX point units (0 in case of *-bnone*)
-
-Furthermore, you can use the length constants *pt*, *mm*, *cm* and *in*, e.g.
-+2cm+ or +1.6in+. Thus, option +-TT1in,0R45+ moves the page content 1 inch to the right and rotates it
-by 45 degrees around the page center afterwards.
-
-For single transformations you can also use options *-c*, *-t* and *-r*. Note that
-the order in which these options are given is not significant, i.e. you can't use them to describe
-transformation sequences. They are simply independent shorthand options for common transformations.
-
-=================================================================================================
-+
-//
-
-//
-*-t, --translate*='tx'[,'ty']::
-Translates (moves) the page content in direction of vector ('tx','ty'). This option is
-equivalent to *-TT*'tx','ty'.
-
-
-*-v, --verbosity*='level'::
-Controls the type of messages printed during a dvisvgm run:
-[horizontal]
- *0*;; no message output
- *1*;; error messages only
- *2*;; warning messages only
- *4*;; informational messages only
-
-+
-[NOTE]
-By adding these values you can combine the categories. The default level is 7, i.e. all
-messages are printed.
-+
-
-
-*-V, --version*[='extended']::
-Prints the version of dvisvgm and exits. If the optional argument is set to 'yes', the
-version numbers of the linked libraries are printed as well.
-
-
-*-z, --zip*[='level']::
-Creates a compressed SVG file with suffix .svgz. The optional argument specifies the compression
-level. Valid values are in the range of 1 to 9 (default value is 9). Larger values cause better
-compression results but take more computation time.
-+
-CAUTION: This option cannot be combined with *-s, --stdout*.
-
-
-*-Z, --zoom*[='factor']::
-Multiplies the 'width' and 'height' attributes of the SVG root element by argument 'factor' while
-the coordinate system of the graphic is retained. As a result, most SVG viewers zoom the graphics
-accordingly. If a negative zoom factor is given, the 'width' and 'height' attributes are omitted.
-
-
-SUPPORT OF SPECIALS
--------------------
-dvisvgm supports several sets of 'special commands' that can be used to enrich DVI files with additional
-features, like color, graphics, and hyperlinks. The evaluation of special commands is delegated to various
-handlers. Each handler is responsible for all special statements of the same command set, i.e. commands
-beginning with the same prefix. To get a list of actually provided special handlers, use option
-*--list-specials* (see above). This section gives an overview of the special commands currently supported.
-
-*bgcolor*::
-Special statement for changing the background/page color. Since SVG 1.1 doesn't support background colors,
-dvisvgm inserts a rectangle of the chosen color into the generated SVG document. This rectangle always gets
-the same size as the selected or computed bounding box. This background color command is part of the color
-special set but is handled separately in order to let the user turn it off. For an overview of the command
-syntax, see the documentation of dvips, for instance.
-
-*color*::
-Statements of this command set provide instructions to change the text/paint color. For an overview of the
-exact syntax, see the documentation of dvips, for instance.
-
-*dvisvgm*::
-dvisvgm offers its own small set of specials. The following list gives a brief overview.
- *dvisvgm:raw* 'text';;
- Adds an arbitrary sequence of characters to the SVG output. dvisvgm does not perform any validation here,
- thus the user has to ensure that the resulting SVG is still valid. Parameter 'text' may
- contain the macros *{?x}*, *{?y}*, and *{?color}* that are expanded to the current 'x' or 'y' coordinate
- and the current color, respectively. Also, macro *{?nl}* expands to a newline character.
-
- *dvisvgm:img* 'width' 'height' 'file';;
- Creates an image element at the current graphic position referencing the given file. JPEG, PNG, and SVG images
- can be used here. However, dvisvgm does not check the file format or the file name suffix. The lengths 'width'
- and 'height' must be given as plain floating point numbers in TeX point units (1in = 72.27pt).
-
- *dvisvgm:bbox* n[ew] 'name';;
- Defines or resets a local bounding box called 'name'. The name may consist of letters and digits.
- While processing a DVI page, dvisvgm continuously updates the (global) bounding box of the current page in order to
- determine the minimal rectangle containing all visible page components (characters, images, drawing elements etc.)
- Additionally to the global bounding box, the user can request an arbitrary number of named local bounding boxes.
- Once defined, these boxes are updated together with the global bounding box starting with the first character that
- follows the definition. Thus, the local boxes can be used to compute the extent of parts of the page. This is useful
- for scenarios where the generated SVG file is post-processed.
- In conjunction with special dvisvgm:raw, the macro *{?bbox 'name'}* expands to the four values 'x', 'y', 'w', and 'h'
- (separated by spaces) specifying the coordinates of the upper left corner, width, and height of the local box 'name'.
- If box 'name' wasn't previously defined, all four values equal zero.
-
- *dvisvgm:bbox* 'width' 'height' ['depth'];;
- Updates the bounding box of the current page by embedding a virtual rectangle ('x', 'y', 'width', 'height')
- where the lower left corner is located at the current DVI drawing position ('x','y'). If the optional parameter 'depth'
- is specified, dvisvgm embeds a second rectangle ('x', 'y', 'width', -__depth__). The lengths 'width', 'height' and
- 'depth' must be given as plain floating point numbers in TeX point units (1in = 72.27pt). Depending on size and position
- of the virtual rectangle, this command either enlarges the overall bounding box or leaves it as is. It's not possible
- to reduce its extent. This special should be used in conjunction with *dvisvgm:raw* in order to update the viewport
- of the page properly.
-
- *dvisvgm:bbox* a[bs] 'x1' 'y1' 'x2' 'y2';;
- This variant of the bbox special updates the bounding box by embedding a virtual rectangle ('x1','y1','x2','y2').
- The points ('x1','y1') and ('x2','y2') denote two diagonal corners of the rectangle given in TeX point units.
-
- *dvisvgm:bbox* f[ix] 'x1' 'y1' 'x2' 'y2';;
- This variant of the bbox special assigns an absolute (final) bounding box to the resulting SVG. After executing
- this command, dvisvgm doesn't further alter the bounding box coordinates, except this special is called again later.
- The points ('x1','y1') and ('x2','y2') denote two diagonal corners of the rectangle given in TeX point units.
-+
-The following TeX snippet adds two raw SVG elements to the output and updates the bounding box accordingly:
-+
-------------------------------------------------------------------------------------
-\special{dvisvgm:raw <circle cx='{?x}' cy='{?y}' r='10' stroke='black' fill='red'/>}
-\special{dvisvgm:bbox 20 10 10}
-
-\special{dvisvgm:raw <path d='M50 200 L10 250 H100 Z' stroke='black' fill='blue'/>}
-\special{dvisvgm:bbox abs 10 200 100 250}
-------------------------------------------------------------------------------------
-+
-
-*em*::
-These specials were introduced with the emTeX distribution by Eberhard Mattes. They provide line drawing
-statements, instructions for embedding MSP, PCX, and BMP image files, as well as two PCL commands.
-dvisvgm supports only the line drawing statements and ignores all other em specials silently.
-A description of the command syntax can be found in the DVI driver documentation coming with emTeX (see CTAN).
-
-*html*::
-The hyperref specials allow the definition of hyperlinks inside DVI files in various flavors. dvisvgm supports
-the plain HyperTeX special constructs as created with hyperref package option 'hypertex'. Internal links, i.e.
-references to other parts of the same document, are only converted if the link and the corresponding link target
-are located on the same page. Links between different pages are not supported yet.
-By default, all linked areas of the document are marked by a rectangle. Option *--linkmark* allows to change
-this behavior. See above for further details. Information on syntax and semantics of the HyperTeX specials can be
-found in the hyperref manual.
-
-*pdf*::
-pdfTeX and dvipdfmx introduced several special commands related to the generation of PDF files. Currently, only
-two of them, 'pdf:mapfile' and 'pdf:mapline' are supported by dvisvgm. These specials allow modifying the font map
-tree during the processing of DVI files. They are used by CTeX, for example. dvisvgm supports both, the dvips and
-dvipdfm font map format. For further information on the command syntax and semantics, see the documentation of
-\pdfmapfile in the pdfTeX user manual.
-
-*ps*::
-The famous DVI driver dvips introduced its own set of specials in order to embed PostScript code into DVI files,
-which greatly improves the capabilities of DVI documents. One aim of dvisvgm is to completely evaluate all
-PostScript snippets and to convert a large amount of it to SVG. However, in contrast to dvips, dvisvgm uses floating point
-arithmetics to compute the precise position of each graphic element, i.e. it doesn't round the coordinates. Therefore,
-the relative locations of the graphic elements may slightly differ from those computed by dvips.
-+
-Since PostScript is a rather complex language, dvisvgm does not try to implement its own PostScript interpreter but relies on
-Ghostscript instead. If the Ghostscript library was not linked to the dvisvgm binary, it is looked up and loaded dynamically
-during runtime. In this case, dvisvgm looks for 'libgs.so.X' on Unix-like systems (supported ABI versions: 7,8,9),
-and for 'gsdll32.dll' or 'gsdll64.dll' on Windows.
-You can override the default file names with environment variable +LIBGS+ or the command-line option *--libgs*.
-The library must be reachable through the ld search path (\*nix) or the PATH environment variable (Windows). Alternatively,
-the absolute file path can be specified. If the library cannot be found, dvisvgm disables the processing of PostScript specials.
-Use option *--list-specials* to check whether PS support is available, i.e. entry 'ps' is present.
-+
-The PostScript handler also recognizes and evaluates bounding box data generated by the 'preview' package with
-option 'tightpage'. If the data is present in a DVI file, dvisvgm adapts the bounding box of the generated SVG file
-accordingly, and prints a message showing the width, height, and depth of the box in TeX point units. Especially,
-the depth value can be used to vertically align the SVG graphics with the baseline of surrounding text in HTML or XSL-FO
-documents, for example.
-
-*tpic*::
-The TPIC special set defines instructions for drawing simple geometric objects. Some LaTeX packages, like
-eepic and tplot, use these specials to describe graphics.
-
-
-EXAMPLES
---------
---------------
-dvisvgm file
---------------
-Converts the first page of 'file.dvi' to 'file.svg'.
-
----------------
-dvisvgm -z file
----------------
-Converts the first page of 'file.dvi' to 'file.svgz' with default compression level 9.
-
--------------------------------------
-dvisvgm -p5 -z3 -ba4-l -onewfile file
--------------------------------------
-Converts the fifth page of 'file.dvi' to 'newfile.svgz' with compression level 3.
-The bounding box is set to DIN/ISO A4 in landscape format.
-
------------------------------------------------------
-dvisvgm --transform="R20,w/3,2h/5 T1cm,1cm S2,3" file
------------------------------------------------------
-Converts the first page of 'file.dvi' to 'file.svg' where three transformations are applied.
-
-
-ENVIRONMENT
------------
-dvisvgm uses the *kpathsea* library for locating the files that it opens.
-Hence, the environment variables described in the library's documentation influence the converter.
-
-If dvisvgm was linked without the Ghostscript library, and if PostScript support has not been disabled,
-the shared Ghostscript library is looked up during runtime via dlopen(). The environment variable +LIBGS+
-can be used to specify path and file name of the library.
-
-The pre-compiled Windows versions of dvisvgm require a working installation of MiKTeX 2.9 or above.
-dvisvgm does not work together with the portable edition of MiKTeX because it relies on MiKTeX's COM
-interface only accessible in a local installation.
-To enable the evaluation of PostScript specials, the original Ghostscript DLL 'gsdll32.dll' must be present
-and reachable through the search path. 64-bit Windows builds require the 64-bit Ghostscript DLL 'gsdll64.dll'.
-Both DLLs come with the corresponding Ghostscript installers available from www.ghostscript.com.
-
-The environment variable +DVISVGM_COLORS+ specifies the colors used to highlight various parts of dvisvgm's
-message output. It is only evaluated if option *--color* is given. The value of +DVISVGM_COLORS+ is a list of
-colon-separated entries of the form 'gg'='BF', where 'gg' denotes one of the color group indicators listed
-below, and 'BF' are two hexadecimal digits specifying the background (first digit) and foreground/text color
-(second digit). The color values are defined as follows: 0=black, 1=red, 2=green, 3=yellow, 4=blue,
-5=magenta, 6=cyan, 7=gray, 8=bright red, 9=bright green, A=bright yellow, B=bright blue, C=bright magenta,
-D=bright cyan, E=bright gray, F=white. Depending on the terminal, the colors may differ. Rather than changing
-both the text and background color, it's also possible to change only one of them: An asterisk (*) in
-place of a hexadecimal digit indicates the default text or background color of the terminal.
-
-All malformed entries in the list are silently ignored.
-
-[horizontal]
-*er*:: error messages
-*wn*:: warning messages
-*pn*:: messages about page numbers
-*ps*:: page size messages
-*fw*:: information about the files written
-*sm*:: state messages
-*tr*:: messages of the glyph tracer
-*pi*:: progress indicator
-
-*Example:* +er=01:pi=\*5+ sets the colors of error messages (+er+) to red (+1+) on black (+0+), and those
-of progress indicators (+pi+) to cyan (+5+) on default background (+*+).
-
-FILES
------
-The location of the following files is determined by the kpathsea library.
-To check the actual kpathsea configuration you can use the *kpsewhich* utility.
-
-[horizontal]
-**.enc*:: Font encoding files
-**.fgd*:: Font glyph data files (cache files created by dvisvgm)
-**.map*:: Font map files
-**.mf*:: Metafont input files
-**.pfb*:: PostScript Type 1 font files
-**.pro*:: PostScript header/prologue files
-**.tfm*:: TeX font metric files
-**.ttf*:: TrueType font files
-**.vf*:: Virtual font files
-
-SEE ALSO
---------
-*tex(1), mf(1), mktexmf(1), grodvi(1), potrace(1)*, and the *kpathsea library* info documentation.
-
-
-RESOURCES
----------
-Project home page::: http://dvisvgm.sourceforge.net
-SourceForge project site::: http://sourceforge.net/projects/dvisvgm
-
-
-BUGS
-----
-Please report bugs using the bug tracker at Launchpad (see https://launchpad.net/dvisvgm).
-
-
-AUTHOR
-------
-Written by {author} <{email}>
-
-
-COPYING
--------
-Copyright (C) 2005-2014 Martin Gieseking. Free use of this software is
-granted under the terms of the GNU General Public License (GPL) version 3
-or, (at your option) any later version.
-
-// vim: set syntax=asciidoc:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.cpp
deleted file mode 100644
index dd19e4b5f53..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
-** BgColorSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "BgColorSpecialHandler.h"
-#include "ColorSpecialHandler.h"
-#include "SpecialActions.h"
-
-using namespace std;
-
-
-bool BgColorSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- ColorSpecialHandler csh;
- return csh.process(prefix, is, actions);
-}
-
-
-const char** BgColorSpecialHandler::prefixes () const {
- static const char *pfx[] = {"background", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.h
deleted file mode 100644
index edd764e86b2..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BgColorSpecialHandler.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*************************************************************************
-** BgColorSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_BGCOLORSPECIALHANDLER_H
-#define DVISVGM_BGCOLORSPECIALHANDLER_H
-
-#include "SpecialHandler.h"
-
-struct BgColorSpecialHandler : SpecialHandler
-{
- const char* info () const {return "background color special";}
- const char* name () const {return "bgcolor";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.cpp
deleted file mode 100644
index 265533b1ef5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*************************************************************************
-** Bitmap.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cstdlib>
-#include <iostream>
-#include "Bitmap.h"
-#include "macros.h"
-
-using namespace std;
-
-Bitmap::Bitmap () : _rows(0), _cols(0), _xshift(0), _yshift(0), _bpr(0), _bytes(0)
-{
-}
-
-
-/** Constructs a Bitmap */
-Bitmap::Bitmap (int minx, int maxx, int miny , int maxy) {
- resize(minx, maxx, miny, maxy);
-}
-
-
-/** Resizes the bitmap and clears all pixels.
- * @param[in] minx index of leftmost pixel column
- * @param[in] maxx index of rightmost pixel column
- * @param[in] miny index of bottom row
- * @param[in] maxy index of top row */
-void Bitmap::resize (int minx, int maxx, int miny , int maxy) {
- _rows = abs(maxy-miny)+1;
- _cols = abs(maxx-minx)+1;
- _xshift = minx;
- _yshift = miny;
- _bpr = _cols/8 + (_cols % 8 ? 1 : 0); // bytes per row
- _bytes.resize(_rows*_bpr);
- FORALL(_bytes, vector<UInt8>::iterator, it)
- *it = 0;
-}
-
-
-/** Sets n pixels of row r to 1 starting at pixel c.
- * @param[in] r number of row
- * @param[in] c number of column (pixel)
- * @param[in] n number of bits to be set */
-void Bitmap::setBits (int r, int c, int n) {
- r -= _yshift;
- c -= _xshift;
- UInt8 *byte = &_bytes[r*_bpr + c/8];// + (c%8 ? 1 : 0);
- while (n > 0) {
- int b = 7 - c%8; // number of leftmost bit in current byte to be set
- int m = min(n, b+1); // number of bits to be set in current byte
- int bitseq = (1 << m)-1; // sequence of n set bits (bits 0..n-1 are set)
- bitseq <<= b-m+1; // move bit sequence so that bit b is the leftmost set bit
- *byte |= UInt8(bitseq); // apply bit sequence to current byte
- byte++;
- n -= m;
- c += m;
- }
-}
-
-
-void Bitmap::forAllPixels (ForAllData &data) const {
- for (int y=_rows-1; y >= 0 ; y--) {
- for (int c=0; c < _bpr; c++) {
- UInt8 byte = _bytes[y*_bpr+c];
- int x;
- for (int b=7; (b >= 0) && ((x = 8*c+(7-b)) < _cols); b--) {
- data.pixel(x, y, byte & (1 << b), *this);
- }
- }
- }
-}
-
-
-struct BBoxData : public Bitmap::ForAllData
-{
- BBoxData () : maxx(0), maxy(0) {}
- void pixel (int x, int y, bool set, const Bitmap &bm) {
- if (set) {
- maxx = max(maxx, x);
- maxy = max(maxy, y);
- }
- }
- int maxx, maxy;
-};
-
-
-void Bitmap::bbox (int &w, int &h) const {
- BBoxData data;
- forAllPixels(data);
- w = data.maxx+1;
- h = data.maxy+1;
-}
-
-
-ostream& Bitmap::write (ostream &os) const {
-#if 0
- for (int r=_rows-1; r >= 0 ; r--) {
- for (int c=0; c < _bpr; c++) {
- UInt8 byte = _bytes[r*_bpr+c];
- for (int b=128; b; b>>=1)
- os << (byte & b ? '*' : '-');
- os << ' ';
- }
- os << endl;
- }
-#endif
- return os;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.h
deleted file mode 100644
index af03597be33..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Bitmap.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*************************************************************************
-** Bitmap.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_BITMAP_H
-#define DVISVGM_BITMAP_H
-
-#include <ostream>
-#include <vector>
-#include "types.h"
-
-
-class Bitmap
-{
- public:
- struct ForAllData {
- virtual ~ForAllData() {}
- virtual void pixel (int x, int y, bool set, Bitmap &bm) {}
- virtual void pixel (int x, int y, bool set, const Bitmap &bm) {}
- };
-
- public:
- Bitmap ();
- Bitmap (int minx, int maxx, int miny , int maxy);
- void resize (int minx, int maxx, int miny , int maxy);
- void setBits(int r, int c, int n);
- const UInt8* operator[] (int r) const {return &_bytes[r*_bpr];}
- int height () const {return _rows;}
- int width () const {return _cols;}
- int xshift () const {return _xshift;}
- int yshift () const {return _yshift;}
- int bytesPerRow () const {return _bpr;}
- bool empty () const {return (!_rows && !_cols) || _bytes.empty();}
- void bbox (int &w, int &h) const;
- void forAllPixels (ForAllData &data) const;
-
- template <typename T>
- int copy (std::vector<T> &target, bool vflip=false) const;
-
-// template <typename T>
-// void write (std::ostream &os, const std::vector<T> &v) const;
-
- std::ostream& write (std::ostream &os) const;
-
- private:
- int _rows, _cols; ///< number of rows, columns
- int _xshift, _yshift; ///< horizontal/vertical shift
- int _bpr; ///< number of bytes per row
- std::vector<UInt8> _bytes;
-};
-
-
-/** Copies the bitmap to a new target area and reorganize the bits.
- * @param[out] target points to first T of new bitmap (must be deleted after usage)
- * @param[in] vflip true if the new bitmap should be flipped vertically
- * @return number of Ts per row */
-template <typename T>
-int Bitmap::copy (std::vector<T> &target, bool vflip) const {
- const int s = sizeof(T);
- const int tpr = _bpr/s + (_bpr%s ? 1 : 0); // number of Ts per row
- target.resize(_rows*tpr);
- for (int r=0; r < _rows; r++) {
- int targetrow = vflip ? _rows-r-1 : r;
- for (int b=0; b < _bpr; b++) {
- T &t = target[targetrow*tpr + b/s];
- T chunk = (T)_bytes[r*_bpr+b] << (8*(s-1-b%s));
- if (b % s == 0)
- t = chunk;
- else
- t |= chunk;
- }
- }
- return tpr;
-}
-
-
-/*
-template <typename T>
-void Bitmap::write (std::ostream &os, const std::vector<T> &v) const {
- const int s = sizeof(T);
- const int tpr = _bpr/s + (_bpr%s ? 1 : 0); // number of Ts per row
- for (int r=_rows-1; r >= 0; r--) {
- for (int t=0; t < tpr; t++) {
- for (T b=(T)1<<(8*s-1); b; b>>=1)
- os << ((v[r*tpr+t] & b) ? '*' : '-');
- os << ' ';
- }
- os << std::endl;
- }
-}*/
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.cpp
deleted file mode 100644
index f6c5d0b3b9b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/*************************************************************************
-** BoundingBox.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <sstream>
-#include <string>
-#include "BoundingBox.h"
-#include "Matrix.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-
-BoundingBox::BoundingBox ()
- : _ulx(0), _uly(0), _lrx(0), _lry(0), _valid(false), _locked(false)
-{
-}
-
-
-BoundingBox::BoundingBox (double ulxx, double ulyy, double lrxx, double lryy)
- : _ulx(min(ulxx,lrxx)), _uly(min(ulyy,lryy)),
- _lrx(max(ulxx,lrxx)), _lry(max(ulyy,lryy)),
- _valid(true), _locked(false)
-{
-}
-
-
-BoundingBox::BoundingBox (const DPair &p1, const DPair &p2)
- : _ulx(min(p1.x(), p2.x())), _uly(min(p1.y(), p2.y())),
- _lrx(max(p1.x(), p2.x())), _lry(max(p1.y(), p2.y())),
- _valid(true), _locked(false)
-{
-}
-
-
-BoundingBox::BoundingBox (const Length &ulxx, const Length &ulyy, const Length &lrxx, const Length &lryy)
- : _ulx(min(ulxx.pt(),lrxx.pt())), _uly(min(ulyy.pt(),lryy.pt())),
- _lrx(max(ulxx.pt(),lrxx.pt())), _lry(max(ulyy.pt(),lryy.pt())),
- _valid(true), _locked(false)
-{
-}
-
-
-BoundingBox::BoundingBox (const string &boxstr)
- : _ulx(0), _uly(0), _lrx(0), _lry(0), _valid(false), _locked(false)
-{
- set(boxstr);
-}
-
-
-/** Removes leading and trailing whitespace from the given string. */
-static string& strip (string &str) {
- size_t n=0;
- while (n < str.length() && isspace(str[n]))
- ++n;
- str.erase(0, n);
- n=str.length()-1;
- while (n > 0 && isspace(str[n]))
- --n;
- str.erase(n+1);
- return str;
-}
-
-
-/** Sets or modifies the bounding box. If 'boxstr' consists of 4 length values,
- * they denote the absolute position of two diagonal corners of the box. In case
- * of a single length value l the current box is enlarged by adding (-l,-l) the upper
- * left and (l,l) to the lower right corner.
- * @param[in] boxstr whitespace and/or comma separated string of lengths. */
-void BoundingBox::set (string boxstr) {
- vector<Length> coord;
- const size_t len = boxstr.length();
- size_t l=0;
- strip(boxstr);
- string lenstr;
- do {
- while (l < len && isspace(boxstr[l]))
- l++;
- size_t r=l;
- while (r < len && !isspace(boxstr[r]) && boxstr[r] != ',')
- r++;
- lenstr = boxstr.substr(l, r-l);
- if (!lenstr.empty()) {
- coord.push_back(Length(lenstr));
- if (boxstr[r] == ',')
- r++;
- l = r;
- }
- } while (!lenstr.empty() && coord.size() < 4);
-
- switch (coord.size()) {
- case 1:
- _ulx -= coord[0].pt();
- _uly -= coord[0].pt();
- _lrx += coord[0].pt();
- _lry += coord[0].pt();
- break;
- case 2:
- _ulx -= coord[0].pt();
- _uly -= coord[1].pt();
- _lrx += coord[0].pt();
- _lry += coord[1].pt();
- break;
- case 4:
- _ulx = min(coord[0].pt(), coord[2].pt());
- _uly = min(coord[1].pt(), coord[3].pt());
- _lrx = max(coord[0].pt(), coord[2].pt());
- _lry = max(coord[1].pt(), coord[3].pt());
- break;
- default:
- throw BoundingBoxException("1, 2 or 4 length parameters expected");
- }
- _valid = true;
-}
-
-
-/** Enlarges the box so that point (x,y) is enclosed. */
-void BoundingBox::embed (double x, double y) {
- if (!_locked) {
- if (_valid) {
- if (x < _ulx)
- _ulx = x;
- else if (x > _lrx)
- _lrx = x;
- if (y < _uly)
- _uly = y;
- else if (y > _lry)
- _lry = y;
- }
- else {
- _ulx = _lrx = x;
- _uly = _lry = y;
- _valid = true;
- }
- }
-}
-
-
-/** Enlarges the box so that box bb is enclosed. */
-void BoundingBox::embed (const BoundingBox &bb) {
- if (!_locked && bb._valid) {
- if (_valid) {
- embed(bb._ulx, bb._uly);
- embed(bb._lrx, bb._lry);
- }
- else {
- _ulx = bb._ulx;
- _uly = bb._uly;
- _lrx = bb._lrx;
- _lry = bb._lry;
- _valid = true;
- }
- }
-}
-
-
-void BoundingBox::embed (const DPair &c, double r) {
- embed(BoundingBox(c.x()-r, c.y()-r, c.x()+r, c.y()+r));
-}
-
-
-void BoundingBox::expand (double m) {
- if (!_locked) {
- _ulx -= m;
- _uly -= m;
- _lrx += m;
- _lry += m;
- }
-}
-
-
-/** Intersects the current box with bbox and applies the result to *this.
- * If both boxes are disjoint, *this is not altered.
- * @param[in] bbox box to intersect with
- * @return false if *this is locked or both boxes are disjoint */
-bool BoundingBox::intersect (const BoundingBox &bbox) {
- if (_locked || _lrx < bbox._ulx || _lry < bbox._uly || _ulx > bbox._lrx || _uly > bbox._lry)
- return false;
- _ulx = max(_ulx, bbox._ulx);
- _uly = max(_uly, bbox._uly);
- _lrx = min(_lrx, bbox._lrx);
- _lry = min(_lry, bbox._lry);
- return true;
-}
-
-
-void BoundingBox::operator += (const BoundingBox &bb) {
- if (!_locked) {
- _ulx += bb._ulx;
- _uly += bb._uly;
- _lrx += bb._lrx;
- _lry += bb._lry;
- }
-}
-
-
-void BoundingBox::scale (double sx, double sy) {
- if (!_locked) {
- _ulx *= sx;
- _lrx *= sx;
- if (sx < 0) swap(_ulx, _lrx);
- _uly *= sy;
- _lry *= sy;
- if (sy < 0) swap(_uly, _lry);
- }
-}
-
-
-void BoundingBox::transform (const Matrix &tm) {
- if (!_locked) {
- DPair ul = tm * DPair(_lrx, _lry);
- DPair lr = tm * DPair(_ulx, _uly);
- DPair ll = tm * DPair(_ulx, _lry);
- DPair ur = tm * DPair(_lrx, _uly);
- _ulx = min(min(ul.x(), lr.x()), min(ur.x(), ll.x()));
- _uly = min(min(ul.y(), lr.y()), min(ur.y(), ll.y()));
- _lrx = max(max(ul.x(), lr.x()), max(ur.x(), ll.x()));
- _lry = max(max(ul.y(), lr.y()), max(ur.y(), ll.y()));
- }
-}
-
-
-string BoundingBox::toSVGViewBox () const {
- ostringstream oss;
- oss << XMLString(_ulx) << ' ' << XMLString(_uly) << ' ' << XMLString(width()) << ' ' << XMLString(height());
- return oss.str();
-}
-
-
-ostream& BoundingBox::write (ostream &os) const {
- return os << '(' << _ulx << ", " << _uly
- << ", " << _lrx << ", " << _lry << ')';
-}
-
-
-XMLElementNode* BoundingBox::toSVGRect () const {
- XMLElementNode *rect = new XMLElementNode("rect");
- rect->addAttribute("x", minX());
- rect->addAttribute("y", minY());
- rect->addAttribute("width", width());
- rect->addAttribute("height", height());
- rect->addAttribute("fill", "none");
- return rect;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.h
deleted file mode 100644
index 1996973d42d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/BoundingBox.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*************************************************************************
-** BoundingBox.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_BOUNDINGBOX_H
-#define DVISVGM_BOUNDINGBOX_H
-
-#include <ostream>
-#include <string>
-#include "Length.h"
-#include "MessageException.h"
-#include "Pair.h"
-#include "macros.h"
-#include "types.h"
-
-
-class Matrix;
-class XMLElementNode;
-
-
-struct BoundingBoxException : MessageException
-{
- BoundingBoxException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-class BoundingBox
-{
- public:
- BoundingBox ();
- BoundingBox (double ulxx, double ulyy, double lrxx, double lryy);
- BoundingBox (const DPair &p1, const DPair &p2);
- BoundingBox (const Length &ulxx, const Length &ulyy, const Length &lrxx, const Length &lryy);
- BoundingBox (const std::string &boxstr);
- void set (std::string boxstr);
- void embed (double x, double y);
- void embed (const BoundingBox &bb);
- void embed (const DPair &p) {embed(p.x(), p.y());}
- void embed (const DPair &c, double r);
-
- template <typename T>
- void embed (const Pair<T> &p) {embed(p.x(), p.y());}
-
- void expand (double m);
- bool intersect (const BoundingBox &bbox);
- double minX () const {return _ulx;}
- double minY () const {return _uly;}
- double maxX () const {return _lrx;}
- double maxY () const {return _lry;}
- double width () const {return _lrx-_ulx;}
- double height () const {return _lry-_uly;}
- void lock () {_locked = true;}
- void unlock () {_locked = false;}
- void operator += (const BoundingBox &bb);
- void scale (double sx, double sy);
- void transform (const Matrix &tm);
- std::string toSVGViewBox () const;
- std::ostream& write (std::ostream &os) const;
- XMLElementNode* toSVGRect () const;
-
- private:
- double _ulx, _uly; ///< coordinates of upper left vertex (in PS point units)
- double _lrx, _lry; ///< coordinates of lower right vertex (in PS point units)
- bool _valid : 1; ///< true if the box coordinates are properly set
- bool _locked : 1; ///< if true, the box data is read-only
-};
-
-IMPLEMENT_OUTPUT_OPERATOR(BoundingBox)
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.cpp
deleted file mode 100644
index f6a46a31a86..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-/*************************************************************************
-** CMap.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <sstream>
-#include <set>
-#include <vector>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "FileFinder.h"
-#include "InputReader.h"
-
-using namespace std;
-
-
-const char* CMap::path () const {
- return FileFinder::lookup(name(), "cmap", false);
-}
-
-
-const FontEncoding* CMap::findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const {
- return CMapManager::instance().findCompatibleBaseFontMap(font, this, charmapID);
-}
-
-//////////////////////////////////////////////////////////////////////
-
-/** Returns the RO (Registry-Ordering) string of the CMap. */
-string SegmentedCMap::getROString() const {
- if (_registry.empty() || _ordering.empty())
- return "";
- return _registry + "-" + _ordering;
-}
-
-
-/** Tries to merge range r into this one. This is only possible if the ranges
- * touch or overlap and if the assigned CIDs match at the junction points.
- * @param[in] r range to join
- * @return true if join was successful */
-bool SegmentedCMap::Range::join (const Range &r) {
- // check most common cases first
- if (_max+1 < r._min || _min-1 > r._max) // disjoint ranges?
- return false;
- if (r._min-1 == _max) { // does r touch *this on the right?
- if (decode(r._min) == r._cid) {
- _max = r._max;
- return true;
- }
- return false;
- }
- if (r._max+1 == _min) { // does r touch *this on the left
- if (r.decode(_min) == _cid) {
- setMinAndAdaptCID(r._min);
- return true;
- }
- return false;
- }
- // the following cases should be pretty rare
- if (r._min <= _min && r._max >= _max) { // does r overlap *this on both sides?
- *this = r;
- return true;
- }
- if (r._min < _min) { // left overlap only?
- if (r.decode(_min) == _cid) {
- _min = r._min;
- _cid = r._cid;
- return true;
- }
- return false;
- }
- if (r._max > _max) { // right overlap only?
- if (decode(r._min) == r._cid) {
- _max = r._max;
- return true;
- }
- return false;
- }
- // r completely inside *this
- return decode(r._min) == r._cid;
-}
-
-
-/** Adapts the left and right neighbor elements of a newly inserted range.
- * The new range could overlap ranges in the neighborhood so that those must be
- * adapted or removed. All ranges in the range vector are ordered ascendingly, i.e.
- * [min_1, max_1],...,[min_n, max_n] where min_i < min_j for all i < j.
- * @param[in,out] ranges range collection to be adapted
- * @param[in] it pointer to the newly inserted range */
-void SegmentedCMap::adaptNeighbors (Ranges &ranges, Ranges::iterator it) {
- if (it != ranges.end()) {
- // adapt left neighbor
- SegmentedCMap::Ranges::iterator lit = it-1; // points to left neighbor
- if (it != ranges.begin() && it->min() <= lit->max()) {
- bool left_neighbor_valid = (it->min() > 0 && it->min()-1 >= lit->min());
- if (left_neighbor_valid) // is adapted left neighbor valid?
- lit->_max = it->min()-1; // => assign new max value
- if (!left_neighbor_valid || it->join(*lit))
- it = ranges.erase(lit);
- }
- // remove right neighbors completely overlapped by *it
- SegmentedCMap::Ranges::iterator rit = it+1; // points to right neighbor
- while (rit != ranges.end() && it->max() >= rit->max()) { // complete overlap?
- ranges.erase(rit);
- rit = it+1;
- }
- // adapt rightmost range partially overlapped by *it
- if (rit != ranges.end()) {
- if (it->max() >= rit->min())
- rit->setMinAndAdaptCID(it->max()+1);
- // try to merge right neighbor into *this
- if (it->join(*rit))
- ranges.erase(rit); // remove merged neighbor
- }
- }
-}
-
-
-/** Adds a new code range. The range describes a mapping from character codes c to CIDs, where
- * \f$c \in [cmin,cmax]\f$ and \f$CID(c):=cid+c-cmin\f$.
- * @param[in,out] ranges collection the new range is added to
- * @param[in] cmin smallest character code in the range
- * @param[in] cmax largest character code in the range
- * @param[in] cid CID of the smallest character code (cmin) */
-void SegmentedCMap::addRange (Ranges &ranges, UInt32 cmin, UInt32 cmax, UInt32 cid) {
- if (cmin > cmax)
- swap(cmin, cmax);
-
- Range range(cmin, cmax, cid);
- if (ranges.empty())
- ranges.push_back(range);
- else {
- // check for simple cases that can be handled pretty fast
- Range &lrange = *ranges.begin();
- Range &rrange = *ranges.rbegin();
- if (cmin > rrange.max()) { // non-overlapping range at end of vector?
- if (!rrange.join(range))
- ranges.push_back(range);
- }
- else if (cmax < lrange.min()) { // non-overlapping range at begin of vector?
- if (!lrange.join(range))
- ranges.insert(ranges.begin(), range);
- }
- else {
- // ranges overlap and/or must be inserted somewhere inside the vector
- Ranges::iterator it = lower_bound(ranges.begin(), ranges.end(), range);
- const bool at_end = (it == ranges.end());
- if (at_end)
- --it;
- if (!it->join(range)) {
- if (it->min() < cmin && it->max() > cmax) { // new range completely inside an existing range?
- //split existing range
- UInt32 itmax = it->max();
- it->_max = cmin-1;
- it = ranges.insert(it+1, Range(cmax+1, itmax, it->decode(cmax+1)));
- }
- else if (at_end) // does new range overlap right side of last range in vector?
- it = ranges.end(); // => append new range at end of vector
- it = ranges.insert(it, range);
- }
- adaptNeighbors(ranges, it); // resolve overlaps
- }
- }
-}
-
-
-/** Returns the CID for a given character code. */
-UInt32 SegmentedCMap::cid (UInt32 c) const {
- int pos = lookup(_cidranges, c);
- if (pos >= 0)
- return _cidranges[pos].decode(c);
- if (_basemap)
- return _basemap->cid(c);
- return 0;
-}
-
-
-/** Returns the character code of a base font for a given CID. */
-UInt32 SegmentedCMap::bfcode (UInt32 cid) const {
- int pos = lookup(_bfranges, cid);
- if (pos >= 0)
- return _bfranges[pos].decode(cid);
- if (_basemap)
- return _basemap->bfcode(cid);
- return 0;
-}
-
-
-/** Finds the index of the range that contains a given value c.
- * @param[in] ranges lookup value in these set of ranges
- * @param[in] c find range that contains this value
- * @return index of the range found, or -1 if range was not found */
-int SegmentedCMap::lookup (const Ranges &ranges, UInt32 c) const {
- // simple binary search
- int left=0, right=ranges.size()-1;
- while (left <= right) {
- int mid = (left+right)/2;
- if (c < ranges[mid].min())
- right = mid-1;
- else if (c > ranges[mid].max())
- left = mid+1;
- else
- return mid;
- }
- return -1;
-}
-
-
-void SegmentedCMap::write (ostream &os) const {
- for (size_t i=0; i < _cidranges.size(); i++) {
- const Range &r = _cidranges[i];
- os << '[' << r.min() << ',' << r.max() << "] => " << r.cid() << '\n';
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.h
deleted file mode 100644
index 2a3e9c7dbbb..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMap.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*************************************************************************
-** CMap.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CMAP_H
-#define DVISVGM_CMAP_H
-
-#include <algorithm>
-#include <ostream>
-#include <vector>
-#include "FontEncoding.h"
-#include "types.h"
-
-
-struct CMap : public NamedFontEncoding
-{
- virtual ~CMap () {}
- virtual bool vertical () const =0;
- virtual bool mapsToCID () const =0;
- virtual const char* path () const;
- virtual UInt32 cid (UInt32 c) const =0;
- virtual UInt32 bfcode (UInt32 cid) const =0;
- virtual std::string getROString () const =0;
- virtual const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const;
- virtual bool mapsToCharIndex () const {return mapsToCID();}
-
- Character decode (UInt32 c) const {
- if (mapsToCID())
- return Character(Character::INDEX, cid(c));
- return Character(Character::CHRCODE, bfcode(c));
- }
-};
-
-
-struct IdentityCMap : public CMap
-{
- UInt32 cid (UInt32 c) const {return c;}
- UInt32 bfcode (UInt32 cid) const {return 0;}
- std::string getROString () const {return "Adobe-Identity";}
- bool mapsToCID() const {return true;}
-};
-
-
-struct IdentityHCMap : public IdentityCMap
-{
- bool vertical () const {return false;}
- const char* name () const {return "Identity-H";}
-};
-
-
-struct IdentityVCMap : public IdentityCMap
-{
- bool vertical () const {return true;}
- const char* name () const {return "Identity-V";}
-};
-
-
-struct UnicodeCMap : public CMap
-{
- bool vertical () const {return false;}
- const char* name () const {return "unicode";}
- bool mapsToCID () const {return false;}
- const char* path () const {return 0;}
- UInt32 cid (UInt32 c) const {return c;}
- UInt32 bfcode (UInt32 cid) const {return cid;}
- std::string getROString () const {return "";}
-};
-
-
-class SegmentedCMap : public CMap
-{
- friend class CMapReader;
-
- class Range {
- friend class SegmentedCMap;
-
- public:
- Range () : _min(0), _max(0), _cid(0) {}
-
- Range (UInt32 min, UInt32 max, UInt32 cid) : _min(min), _max(max), _cid(cid) {
- if (_min > _max)
- std::swap(_min, _max);
- }
-
- UInt32 min () const {return _min;}
- UInt32 max () const {return _max;}
- UInt32 cid () const {return _cid;}
- UInt32 decode (UInt32 c) const {return c-_min+_cid;}
- bool operator < (const Range &r) const {return _min < r._min;}
-
- protected:
- bool join (const Range &r);
- void setMinAndAdaptCID (UInt32 c) {_cid = decode(c); _min = c;}
-
- private:
- UInt32 _min, _max;
- UInt32 _cid;
- };
-
- typedef std::vector<Range> Ranges;
-
- public:
- SegmentedCMap (const std::string &name) : _name(name), _basemap(0), _vertical(false), _mapsToCID(true) {}
- const char* name () const {return _name.c_str();}
- UInt32 cid (UInt32 c) const;
- UInt32 bfcode (UInt32 cid) const;
- void addCIDRange (UInt32 first, UInt32 last, UInt32 cid) {addRange(_cidranges, first, last, cid);}
- void addBFRange (UInt32 first, UInt32 last, UInt32 chrcode) {addRange(_bfranges, first, last, chrcode);}
- void write (std::ostream &os) const;
- bool vertical () const {return _vertical;}
- bool mapsToCID () const {return _mapsToCID;}
- size_t numCIDRanges () const {return _cidranges.size();}
- size_t numBFRanges () const {return _bfranges.size();}
- std::string getROString () const;
-
- protected:
- void addRange (Ranges &ranges, UInt32 first, UInt32 last, UInt32 cid);
- void adaptNeighbors (Ranges &ranges, Ranges::iterator it);
- int lookup (const Ranges &ranges, UInt32 c) const;
-
- private:
- std::string _name;
- std::string _registry;
- std::string _ordering;
- CMap *_basemap;
- bool _vertical;
- bool _mapsToCID; // true: chrcode->CID, false: CID->charcode
- Ranges _cidranges;
- Ranges _bfranges;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.cpp
deleted file mode 100644
index cbad12746c9..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************************************
-** CMapManager.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "CMapReader.h"
-#include "Font.h"
-#include "FileFinder.h"
-#include "Message.h"
-
-using namespace std;
-
-
-CMapManager::~CMapManager () {
- for (CMaps::iterator it=_cmaps.begin(); it != _cmaps.end(); ++it)
- delete it->second;
-}
-
-
-CMapManager& CMapManager::instance () {
- static CMapManager cmm;
- return cmm;
-}
-
-
-/** Loads a cmap and returns the corresponding object. */
-CMap* CMapManager::lookup (const string &name) {
- CMaps::iterator it = _cmaps.find(name);
- if (it != _cmaps.end())
- return it->second;
-
- if (_includedCMaps.find(name) != _includedCMaps.end()) {
- _level = 0;
- ostringstream oss;
- oss << "circular reference of CMap " << name;
- throw CMapReaderException(oss.str());
- }
-
- CMap *cmap=0;
- if (name == "Identity-H")
- cmap = new IdentityHCMap;
- else if (name == "Identity-V")
- cmap = new IdentityVCMap;
- else if (name == "unicode")
- cmap = new UnicodeCMap;
- if (cmap) {
- _cmaps[name] = cmap;
- return cmap;
- }
- // Load cmap data of file <name> and also process all cmaps referenced by operator "usecmap".
- // This can lead to a sequence of further calls of lookup(). In order to prevent infinite loops
- // due to (disallowed) circular cmap inclusions, we keep track of all cmaps processed during
- // a sequence of inclusions.
- _includedCMaps.insert(name); // save name of current cmap being processed
- _level++; // increase nesting level
- try {
- CMapReader reader;
- if (!(cmap = reader.read(name))) {
- _level = 1;
- Message::wstream(true) << "CMap file '" << name << "' not found\n";
- }
- _cmaps[name] = cmap;
- }
- catch (const CMapReaderException &e) {
- Message::estream(true) << "CMap file " << name << ": " << e.what() << "\n";
- }
- if (--_level == 0) // back again at initial nesting level?
- _includedCMaps.clear(); // => names of included cmaps are no longer needed
- return cmap;
-}
-
-
-/** Looks for a base font CMap and a compatible encoding table in a given font. The CMap describe
- * the mapping from CIDs to character codes where the latter are relative to the encoding table
- * identified by charmapID.
- * cmap:X->CID, bfmap:CID->Y, enctable:Y->CharCode
- * @param[in] font look for available encoding tables in this font
- * @param[in] cmap take the source registry-ordering pair from this CMap
- * @param[out] charmapID ID of the compatible character map found in the given font
- * @return base font CMap that maps from CIDs to character codes */
-const CMap* CMapManager::findCompatibleBaseFontMap (const PhysicalFont *font, const CMap *cmap, CharMapID &charmapID) {
- if (!font || !cmap)
- return 0;
-
- static const struct CharMapIDToEncName {
- CharMapID id;
- const char *encname;
- } encodings[] = {
- {CharMapID::WIN_UCS4, "UCS4"},
- {CharMapID::WIN_UCS2, "UCS2"},
- {CharMapID::WIN_SHIFTJIS, "90ms-RKSJ"},
- {CharMapID::WIN_PRC, "GBK-EUC"},
- {CharMapID::WIN_BIG5, "ETen-B5"},
- {CharMapID::WIN_WANSUNG, "KSCms-UHC"},
- {CharMapID::MAC_JAPANESE, "90pv-RKSJ"},
- {CharMapID::MAC_TRADCHINESE, "B5pc"},
- {CharMapID::MAC_SIMPLCHINESE, "GBpc-EUC"},
- {CharMapID::MAC_KOREAN, "KSCpc-EUC"}
- };
-
- // get IDs of all available charmaps in font
- vector<CharMapID> charmapIDs;
- font->collectCharMapIDs(charmapIDs);
-
- const bool is_unicode_map = dynamic_cast<const UnicodeCMap*>(cmap);
- const size_t num_encodings = is_unicode_map ? 2 : sizeof(encodings)/sizeof(CharMapIDToEncName);
-
- // try to find a compatible encoding CMap
- const string ro = cmap->getROString();
- for (const CharMapIDToEncName *enc=encodings; enc < enc+num_encodings; enc++) {
- for (size_t i=0; i < charmapIDs.size(); i++) {
- if (enc->id == charmapIDs[i]) {
- string cmapname = ro+"-"+enc->encname;
- if (is_unicode_map || FileFinder::lookup(cmapname, "cmap", false)) {
- charmapID = enc->id;
- return is_unicode_map ? cmap : lookup(cmapname);
- }
- }
- }
- }
- return 0;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.h
deleted file mode 100644
index fb71886753c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapManager.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*************************************************************************
-** CMapManager.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CMAPMANAGER_H
-#define DVISVGM_CMAPMANAGER_H
-
-#include <map>
-#include <set>
-#include <string>
-#include "CharMapID.h"
-#include "Font.h"
-
-struct CMap;
-struct FontEncoding;
-class FontEncodingPair;
-
-class CMapManager
-{
- typedef std::map<std::string, CMap*> CMaps;
- public:
- ~CMapManager ();
- CMap* lookup (const std::string &name);
- const CMap* findCompatibleBaseFontMap (const PhysicalFont *font, const CMap *cmap, CharMapID &charmapID);
- static CMapManager& instance ();
-
- protected:
- CMapManager () : _level(0) {}
-
- private:
- CMaps _cmaps; ///< loaded cmaps
- int _level; ///< current inclusion depth; >0 if a cmap loaded by "usecmap" is being processed
- std::set<std::string> _includedCMaps; ///< names of cmaps loaded by "usecmap"
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.cpp
deleted file mode 100644
index 502e42ef2e0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/*************************************************************************
-** CMapReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <fstream>
-#include <sstream>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "CMapReader.h"
-#include "FileFinder.h"
-#include "InputReader.h"
-
-using namespace std;
-
-
-CMapReader::CMapReader () : _cmap(0), _inCMap(false)
-{
-}
-
-
-/** Reads a cmap file and returns the corresponding CMap object.
- * @param fname[in] name/path of cmap file
- * @return CMap object representing the read data, or 0 if file could not be read */
-CMap* CMapReader::read (const string &fname) {
- if (const char *path = FileFinder::lookup(fname.c_str(), "cmap", false)) {
- ifstream ifs(path);
- if (ifs)
- return read(ifs, fname);
- }
- _tokens.clear();
- return 0;
-}
-
-
-/** Reads cmap data from a given stream and returns the corresponding CMap object.
- * @param is[in] cmap data input stream
- * @param is[in] name name of CMap to be read
- * @return CMap object representing the read data, or 0 if file could not be read */
-CMap* CMapReader::read (std::istream& is, const string &name) {
- _tokens.clear();
- _cmap = new SegmentedCMap(name);
- StreamInputReader ir(is);
- try {
- while (ir) {
- Token token(ir);
- if (token.type() == Token::TT_EOF)
- break;
- if (_inCMap) {
- if (token.type() == Token::TT_OPERATOR)
- executeOperator(token.strvalue(), ir);
- else
- _tokens.push_back(token);
- }
- else if (token.type() == Token::TT_OPERATOR && token.strvalue() == "begincmap")
- _inCMap = true;
- }
- }
- catch (CMapReaderException &e) {
- delete _cmap;
- _cmap = 0;
- throw;
- }
- return _cmap;
-}
-
-
-void CMapReader::executeOperator (const string &op, InputReader &ir) {
- const struct Operator {
- const char *name;
- void (CMapReader::*handler)(InputReader&);
- } operators[] = {
- {"beginbfchar", &CMapReader::op_beginbfchar},
- {"beginbfrange", &CMapReader::op_beginbfrange},
- {"begincidrange", &CMapReader::op_begincidrange},
- {"def", &CMapReader::op_def},
- {"endcmap", &CMapReader::op_endcmap},
- {"usecmap", &CMapReader::op_usecmap},
- };
-
- for (size_t i=0; i < sizeof(operators)/sizeof(Operator); i++) {
- if (operators[i].name == op) {
- (this->*operators[i].handler)(ir);
- break;
- }
- }
- _tokens.clear();
-}
-
-
-void CMapReader::op_def (InputReader&) {
- size_t size = _tokens.size();
- if (size >= 2) {
- const string val = popToken().strvalue();
- const string name = popToken().strvalue();
- if (name == "CMapName") {
- if (val != _cmap->_name)
- throw CMapReaderException("CMapName doesn't match filename");
- }
- else if (name == "WMode") {
- if (val == "0" || val == "1")
- _cmap->_vertical = (val == "1");
- else
- throw CMapReaderException("invalid WMode (0 or 1 expected)");
- }
- else if (name == "Registry")
- _cmap->_registry = val;
- else if (name == "Ordering")
- _cmap->_ordering = val;
- }
-}
-
-
-void CMapReader::op_endcmap (InputReader &) {
- _inCMap = false;
-}
-
-
-void CMapReader::op_usecmap (InputReader &) {
- if (_tokens.empty())
- throw CMapReaderException("stack underflow while processing usecmap");
- else {
- const string name = popToken().strvalue();
- if ((_cmap->_basemap = CMapManager::instance().lookup(name)) == 0)
- throw CMapReaderException("CMap file '"+name+"' not found");
- }
-}
-
-
-static UInt32 parse_hexentry (InputReader &ir) {
- ir.skipSpace();
- if (ir.get() != '<')
- throw CMapReaderException("invalid range entry ('<' expected)");
- int val;
- if (!ir.parseInt(16, val))
- throw CMapReaderException("invalid range entry (hexadecimal value expected)");
- if (ir.get() != '>')
- throw CMapReaderException("invalid range entry ('>' expected)");
- return UInt32(val);
-}
-
-
-void CMapReader::op_begincidrange (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
- ir.skipSpace();
- int num_entries = static_cast<int>(popToken().numvalue());
- while (num_entries > 0 && ir.peek() == '<') {
- UInt32 first = parse_hexentry(ir);
- UInt32 last = parse_hexentry(ir);
- UInt32 cid;
- ir.skipSpace();
- if (!ir.parseUInt(cid))
- throw CMapReaderException("invalid range entry (decimal value expected)");
- _cmap->addCIDRange(first, last, cid);
- ir.skipSpace();
- }
- }
-}
-
-
-void CMapReader::op_beginbfrange (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
- ir.skipSpace();
- int num_entries = static_cast<int>(popToken().numvalue());
- while (num_entries > 0 && ir.peek() == '<') {
- UInt32 first = parse_hexentry(ir);
- UInt32 last = parse_hexentry(ir);
- UInt32 chrcode = parse_hexentry(ir);
- _cmap->addBFRange(first, last, chrcode);
- ir.skipSpace();
- }
- _cmap->_mapsToCID = false;
- }
-}
-
-
-void CMapReader::op_beginbfchar (InputReader &ir) {
- if (!_tokens.empty() && _tokens.back().type() == Token::TT_NUMBER) {
- ir.skipSpace();
- int num_entries = static_cast<int>(popToken().numvalue());
- while (num_entries > 0 && ir.peek() == '<') {
- UInt32 cid = parse_hexentry(ir);
- ir.skipSpace();
- if (ir.peek() == '/')
- throw CMapReaderException("mapping of named characters is not supported");
- UInt32 chrcode = parse_hexentry(ir);
- _cmap->addBFRange(cid, cid, chrcode);
- ir.skipSpace();
- }
- _cmap->_mapsToCID = false;
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////////
-
-CMapReader::Token::Token (InputReader &ir) {
- scan(ir);
-}
-
-
-/** Reads the next characters from the input stream to create a token. */
-void CMapReader::Token::scan (InputReader &ir) {
- ir.skipSpace();
- while (ir.peek() == '%') { // comment?
- while (ir.peek() != '\n') // => skip until end of line
- ir.get();
- ir.skipSpace();
- }
- ir.skipSpace();
- if (ir.eof())
- _type = TT_EOF;
- else if (ir.peek() == '/') { // PS name?
- ir.get();
- while (!strchr("[]{}<>", ir.peek()) && !isspace(ir.peek()))
- _value += ir.get();
- _type = TT_NAME;
- }
- else if (ir.peek() == '(') { // string?
- ir.get();
- int level=0;
- while (ir.peek() != ')' || level > 0) {
- if (ir.peek() == '(')
- level++;
- else if (ir.peek() == ')' && level > 0)
- level--;
- _value += ir.get();
- }
- ir.get(); // skip ')'
- _type = TT_STRING;
- }
- else if (strchr("[]{}<>", ir.peek())) { // PS delimiter
- _value = ir.get();
- _type = TT_DELIM;
- }
- else if (isdigit(ir.peek())) { // number?
- double val;
- if (ir.parseDouble(val)) {
- ostringstream oss;
- oss << val;
- _value = oss.str();
- _type = TT_NUMBER;
- }
- }
- else {
- while (!strchr("[]{}<>", ir.peek()) && !isspace(ir.peek()))
- _value += ir.get();
- _type = TT_OPERATOR;
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.h
deleted file mode 100644
index 5986e92b13d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CMapReader.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*************************************************************************
-** CMapReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CMAPREADER_H
-#define DVISVGM_CMAPREADER_H
-
-#include <cstdlib>
-#include <istream>
-#include <string>
-#include <vector>
-#include "MessageException.h"
-
-
-struct CMap;
-class InputReader;
-
-class CMapReader
-{
- class Token
- {
- public:
- enum Type {TT_UNKNOWN, TT_EOF, TT_DELIM, TT_NUMBER, TT_STRING, TT_NAME, TT_OPERATOR};
-
- public:
- Token (InputReader &ir);
- void scan (InputReader &ir);
- Type type () const {return _type;}
- const std::string& strvalue () const {return _value;}
- double numvalue () const {return std::atof(_value.c_str());}
-
- private:
- Type _type;
- std::string _value;
- };
-
- public:
- CMapReader ();
- CMap* read (const std::string &fname);
- CMap* read (std::istream &is, const std::string &name);
-
- protected:
- Token popToken () {Token t=_tokens.back(); _tokens.pop_back(); return t;}
- void executeOperator (const std::string &op, InputReader &ir);
- void op_beginbfchar (InputReader &ir);
- void op_beginbfrange (InputReader &ir);
- void op_begincidrange (InputReader &ir);
- void op_def (InputReader &ir);
- void op_endcmap (InputReader &ir);
- void op_usecmap (InputReader &ir);
-
- private:
- SegmentedCMap *_cmap; ///< CMap being read
- std::vector<Token> _tokens; ///< stack of tokens to be processed
- bool _inCMap; ///< operator begincmap has been executed
-};
-
-
-
-struct CMapReaderException : public MessageException
-{
- CMapReaderException (const std::string &msg) : MessageException(msg) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.cpp
deleted file mode 100644
index 3f85710c6b7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*************************************************************************
-** CRC32.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include "CRC32.h"
-
-using namespace std;
-
-
-CRC32::CRC32 () : _crc32(0xFFFFFFFF)
-{
- const UInt32 poly = 0xEDB88320;
- for (int i = 0; i < 256; i++) {
- UInt32 crc=i;
- for (int j=8; j > 0; j--) {
- if (crc & 1)
- crc = (crc >> 1) ^ poly;
- else
- crc >>= 1;
- }
- _tab[i] = crc;
- }
-}
-
-
-/** Resets CRC32 sum to 0. */
-void CRC32::reset () {
- _crc32 = 0xFFFFFFFF;
-}
-
-
-/** Appends string bytes to the previous data and computes the resulting checksum.
- * @param[in] data string to update the checksum with */
-void CRC32::update (const char *data) {
- update((const UInt8*)data, strlen(data));
-}
-
-
-/** Appends a single value to the previous data and computes the resulting checksum.
- * @param[in] n value to update the checksum with
- * @param[in] bytes number of bytes to consider (0-4) */
-void CRC32::update (UInt32 n, int bytes) {
- for (int i=bytes-1; i >= 0; --i) {
- UInt8 byte = UInt8((n >> (8*i)) & 0xff);
- update(&byte, 1);
- }
-}
-
-
-/** Appends a sequence of bytes to the previous data and computes the resulting checksum.
- * @param[in] bytes pointer to array of bytes
- * @param[in] len number of bytes in array */
-void CRC32::update (const UInt8 *bytes, size_t len) {
- for (size_t i=0; i < len; ++i)
- _crc32 = ((_crc32 >> 8) & 0x00FFFFFF) ^ _tab[(_crc32 ^ *bytes++) & 0xFF];
-}
-
-
-void CRC32::update (istream &is) {
- char buf [4096];
- while (is) {
- is.read(buf, 4096);
- update((UInt8*)buf, is.gcount());
- }
-}
-
-
-/** Returns the checksum computed from values added with the update functions. */
-UInt32 CRC32::get () const {
- return _crc32 ^ 0xFFFFFFFF;
-}
-
-
-/** Computes the CRC32 checksum of a sequence of bytes.
- * @param[in] bytes pointer to array of bytes
- * @param[in] len number of bytes in array
- * @return CRC32 checksum */
-UInt32 CRC32::compute (const UInt8 *bytes, size_t len) {
- CRC32 crc32;
- crc32.update(bytes, len);
- return crc32.get();
-}
-
-
-/** Computes the CRC32 checksum of a string. */
-UInt32 CRC32::compute (const char *str) {
- return compute((const UInt8*)str, strlen(str));
-}
-
-
-UInt32 CRC32::compute (istream &is) {
- CRC32 crc32;
- crc32.update(is);
- return crc32.get();
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.h
deleted file mode 100644
index 4376b192077..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CRC32.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*************************************************************************
-** CRC32.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef CRC32_H
-#define CRC32_H
-
-#include <cstdlib>
-#include <istream>
-#include "types.h"
-
-class CRC32
-{
- public:
- CRC32 ();
- void update (const UInt8 *bytes, size_t len);
- void update (UInt32 n, int bytes=4);
- void update (const char *str);
- void update (std::istream &is);
- UInt32 get () const;
- void reset ();
- static UInt32 compute (const UInt8 *bytes, size_t len);
- static UInt32 compute (const char *str);
- static UInt32 compute (std::istream &is);
-
- protected:
- CRC32 (const CRC32 &crc32) {}
-
- private:
- UInt32 _crc32;
- UInt32 _tab[256];
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.cpp
deleted file mode 100644
index 2e0bb06a361..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*************************************************************************
-** Calculator.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <sstream>
-#include "Calculator.h"
-
-using namespace std;
-
-// token types
-const char END = 0;
-const char NUMBER = 1;
-const char NAME = 2;
-
-
-#include <iostream>
-
-
-/** Evaluates a given arithmetic expression and returns its value.
- * The evaluator is implemented as a recursive descendent parser.
- * @param[in] is reads expression from this stream
- * @return expression value */
-double Calculator::eval (istream &is) {
- double ret = expr(is, false);
- if (lookAhead(is) > 0)
- throw CalculatorException("expression syntax error");
- return ret;
-}
-
-
-/** Evaluates a given arithmetic expression and returns its value.
- * @param[in] expr expression to evaluate
- * @return expression value */
-double Calculator::eval (const string &expr) {
- istringstream iss;
- iss.str(expr);
- return eval(iss);
-}
-
-
-/** Evaluates the root rule of the expression grammar. */
-double Calculator::expr (istream &is, bool skip) { // expr:
- double left = term(is, skip);
- while (1)
- switch (lookAhead(is)) {
- case '+': left += term(is, true); break; // term '+' term => $1 + $3
- case '-': left -= term(is, true); break; // term '-' term => $1 - $3
- default : return left; // term => $1
- }
-}
-
-
-double Calculator::term (istream &is, bool skip) { // term:
- double left = prim(is, skip);
- while (1)
- switch (lookAhead(is)) {
- case '*': left *= prim(is, true); break; // prim '*' prim => $1 * $3
- case '/': { // prim '/' prim => $1 / $3
- double denom = prim(is, true);
- if (denom == 0)
- throw CalculatorException("division by zero");
- left /= denom;
- break;
- }
- case '%': { // prim '%' prim => $1 mod $3
- double denom = prim(is, true);
- if (denom == 0)
- throw CalculatorException("division by zero");
- left -= denom*floor(left/denom);
- break;
- }
- default: // prim => $1
- return left;
- }
-}
-
-
-double Calculator::prim (istream &is, bool skip) { // prim:
- if (skip)
- lex(is);
- switch (lookAhead(is)) {
- case NUMBER: { // NUMBER => $1
- lex(is);
- double ret = _numValue;
- if (lookAhead(is) == NAME) { // NUMBER NAME => $1 * $2
- lex(is);
- ret *= getVariable(_strValue);
- }
- return ret;
- }
- case NAME: { // NAME => getVariable($1)
- lex(is);
- return getVariable(_strValue);
- }
- case '-': // '-' prim => -$2
- return -prim(is, true);
- case '(': { // '(' expr ')' => $2
- double e = expr(is, true);
- if (lookAhead(is) != ')')
- throw CalculatorException("')' expected");
- lex(is);
- return e;
- }
- default:
- throw CalculatorException("primary expression expected");
- }
-}
-
-
-/** Determines type of next token without swallowing it. That means
- * the same token will be read again next time. */
-char Calculator::lookAhead (istream &is) {
- while (isspace(is.peek())) // skip whitespace
- is.get();
- if (is.eof())
- return END;
- int c = is.peek();
- if (isdigit(c) || c == '.')
- return NUMBER;
- if (isalpha(c))
- return NAME;
- return char(c);
-}
-
-
-/** Reads next token and returns its type. The token value is either assigned
- * to the object members numValue or strValue depending on the type. The token
- * type is represented by a unique integer. In contrast to method 'lookAhead'
- * lex consumes the read token.
- * @param[in] is next token is read from this stream
- * @return token type */
-char Calculator::lex (istream &is) {
- int tokenType = lookAhead(is);
- switch (tokenType) {
- case NUMBER:
- is >> _numValue;
- break;
- case NAME: {
- _strValue.clear();
- while (isalpha(is.peek()))
- _strValue += char(is.get());
- break;
- }
- default:
- tokenType = is.get();
- }
- return char(tokenType);
-}
-
-
-/** Returns the value of a previously defined variable. If there
- * is no variable of the given name, a CalculatorException is thrown.
- * @param[in] name name of variable
- * @return assigned value */
-double Calculator::getVariable (const string &name) const {
- map<string,double>::const_iterator it = _variables.find(name);
- if (it == _variables.end())
- throw CalculatorException("undefined variable '" + name + "'");
- return it->second;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.h
deleted file mode 100644
index 89d2c08560d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Calculator.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************
-** Calculator.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CALCULATOR_H
-#define DVISVGM_CALCULATOR_H
-
-#include <istream>
-#include <map>
-#include <string>
-#include "MessageException.h"
-
-
-struct CalculatorException : public MessageException
-{
- CalculatorException (const std::string &msg) : MessageException(msg) {}
-};
-
-class Calculator
-{
- public:
- Calculator () : _numValue(0) {}
- double eval (std::istream &is);
- double eval (const std::string &expr);
- void setVariable (const std::string &name, double value) {_variables[name] = value;}
- double getVariable (const std::string &name) const;
-
- protected:
- double expr (std::istream &is, bool skip);
- double term (std::istream &is, bool skip);
- double prim (std::istream &is, bool skip);
- char lex (std::istream &is);
- char lookAhead (std::istream &is);
-
- private:
- std::map<std::string,double> _variables;
- double _numValue;
- std::string _strValue;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.cpp
deleted file mode 100644
index 3e749add96b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************
-** CharMap.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include "CharMap.h"
-
-using namespace std;
-
-static bool is_less (const pair<UInt32,UInt32> &p1, const pair<UInt32,UInt32> &p2) {
- return p1.first < p2.first;
-}
-
-
-UInt32 CharMap::operator [] (UInt32 c) const {
- vector<UInt32Pair>::const_iterator it = lower_bound(_pairs.begin(), _pairs.end(), UInt32Pair(c, 0), &is_less);
- return (it != _pairs.end() && it->first == c) ? it->second : 0;
-}
-
-
-/** Returns true if the charmap contains an entry that maps to the given charcode */
-bool CharMap::valueExists (UInt32 c) const {
- for (std::vector<UInt32Pair>::const_iterator it=_pairs.begin(); it != _pairs.end(); ++it)
- if (it->second == c)
- return true;
- return false;
-}
-
-
-/** Swaps key and value of all entries. */
-void CharMap::invert () {
- for (std::vector<UInt32Pair>::iterator it=_pairs.begin(); it != _pairs.end(); ++it)
- swap(it->first, it->second);
- sort();
-}
-
-
-void CharMap::sort () {
- std::sort(_pairs.begin(), _pairs.end(), &is_less);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.h
deleted file mode 100644
index 8faeffa21c1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMap.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*************************************************************************
-** CharMap.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CHARMAP_H
-#define DVISVGM_CHARMAP_H
-
-#include <utility>
-#include <vector>
-#include "types.h"
-
-class FontEngine;
-
-class CharMap
-{
- friend class FontEngine;
- typedef std::pair<UInt32, UInt32> UInt32Pair;
- public:
- CharMap () {}
- bool valueExists (UInt32 c) const;
- UInt32 operator [] (UInt32 c) const;
- UInt32 size () const {return _pairs.size();}
- bool empty () const {return _pairs.empty();}
- void clear () {return _pairs.clear();}
- void invert ();
-
- protected:
- void append (UInt32 from, UInt32 to) {_pairs.push_back(UInt32Pair(from, to));}
- void sort ();
-
- private:
- std::vector<UInt32Pair> _pairs;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.cpp
deleted file mode 100644
index 2c6e1cd8a59..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*************************************************************************
-** CharMapID.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include "CharMapID.h"
-
-const CharMapID CharMapID::WIN_SYMBOL(3, 0);
-const CharMapID CharMapID::WIN_UCS2(3, 1);
-const CharMapID CharMapID::WIN_SHIFTJIS(3, 2);
-const CharMapID CharMapID::WIN_PRC(3, 3);
-const CharMapID CharMapID::WIN_BIG5(3, 4);
-const CharMapID CharMapID::WIN_WANSUNG(3, 5);
-const CharMapID CharMapID::WIN_JOHAB(3, 6);
-const CharMapID CharMapID::WIN_UCS4(3, 10);
-
-const CharMapID CharMapID::MAC_JAPANESE(1, 1);
-const CharMapID CharMapID::MAC_TRADCHINESE(1, 2);
-const CharMapID CharMapID::MAC_KOREAN(1, 3);
-const CharMapID CharMapID::MAC_SIMPLCHINESE(1, 25);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.h
deleted file mode 100644
index ea30d50d266..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CharMapID.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*************************************************************************
-** CharMapID.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CHARMAPID_H
-#define DVISVGM_CHARMAPID_H
-
-#include "types.h"
-
-/** Represents a character map of a font. */
-struct CharMapID {
- CharMapID () : platform_id(0), encoding_id(0) {}
- CharMapID (UInt8 plf_id, UInt8 enc_id) : platform_id(plf_id), encoding_id(enc_id) {}
-
- bool operator == (const CharMapID &ids) const {
- return platform_id == ids.platform_id && encoding_id == ids.encoding_id;
- }
-
- bool operator != (const CharMapID &ids) const {
- return platform_id != ids.platform_id || encoding_id != ids.encoding_id;
- }
-
- bool valid () const {return platform_id != 0 && encoding_id != 0;}
-
- static const CharMapID WIN_SYMBOL;
- static const CharMapID WIN_UCS2;
- static const CharMapID WIN_SHIFTJIS;
- static const CharMapID WIN_PRC;
- static const CharMapID WIN_BIG5;
- static const CharMapID WIN_WANSUNG;
- static const CharMapID WIN_JOHAB;
- static const CharMapID WIN_UCS4;
- static const CharMapID MAC_JAPANESE;
- static const CharMapID MAC_TRADCHINESE;
- static const CharMapID MAC_SIMPLCHINESE;
- static const CharMapID MAC_KOREAN;
-
- UInt8 platform_id;
- UInt8 encoding_id;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Character.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Character.h
deleted file mode 100644
index a9d0f6a2d6d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Character.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
-** Character.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CHARACTER_H
-#define DVISVGM_CHARACTER_H
-
-#include "types.h"
-
-class Character
-{
- public:
- enum Type {CHRCODE, INDEX, NAME};
- Character (const char *name) : _type(NAME), _name(name) {}
- Character (Type type, UInt32 val) : _type(type), _number(val) {}
- Character (Type type, const Character &c) : _type(type), _number(c.type() != NAME ? c._number : 0) {}
- Type type () const {return _type;}
- const char* name () const {return _name;}
- UInt32 number () const {return _number;}
-
- private:
- Type _type;
- union {
- UInt32 _number;
- const char *_name;
- };
-};
-
-#endif
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.cpp
deleted file mode 100644
index 2c8d133cc97..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-/*************************************************************************
-** CmdLineParserBase.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cstdio>
-#include <cstring>
-#include "CmdLineParserBase.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "Message.h"
-
-using namespace std;
-
-void CmdLineParserBase::init () {
- _error = false;
- _files.clear();
-}
-
-
-/** Parses all options given on the command line.
- * @param[in] argc number of command-line arguments
- * @param[in] argv array providing the command-line arguments
- * @param[in] printErrors enable/disable printing of error messages */
-void CmdLineParserBase::parse (int argc, char **argv, bool printErrors) {
- init();
- _printErrors = printErrors;
- bool filesOnly = false; //
- for (int i=1; i < argc; i++) {
- CharInputBuffer ib(argv[i], strlen(argv[i]));
- BufferInputReader ir(ib);
- if (filesOnly || ir.peek() != '-')
- _files.push_back(argv[i]);
- else {
- ir.get();
- if (ir.peek() == '-') {
- // scan long option
- ir.get();
- if (ir.eof()) // "--" only
- filesOnly = true; // treat all following options as filenames
- else {
- string longname;
- while (isalnum(ir.peek()) || ir.peek() == '-')
- longname += char(ir.get());
- if (const Option *opt = option(longname))
- (*opt->handler)(this, ir, *opt, true);
- else if (!_error) {
- if (printErrors)
- Message::estream(false) << "unknown option --" << longname << '\n';
- _error = true;
- }
- }
- }
- else {
- // scan short option(s)
- bool combined = false; // multiple short options combined, e.g -abc
- do {
- int shortname = ir.get();
- if (const Option *opt = option(shortname)) {
- if (!combined || opt->argmode == ARG_NONE) {
- if (opt->argmode == ARG_REQUIRED && strlen(argv[i]) == 2) { // required argument separated by whitespace?
- if (i+1 < argc && argv[i+1][0] != '-')
- ib.assign(argv[++i]);
- }
- (*opt->handler)(this, ir, *opt, false);
- if (opt->argmode == ARG_NONE)
- combined = true;
- }
- else {
- if (printErrors)
- Message::estream(false) << "option -" << char(shortname) << " must be given separately\n";
- _error = true;
- }
- }
- else if (shortname > 0) {
- if (printErrors)
- Message::estream(false) << "unknown option -" << char(shortname) << '\n';
- _error = true;
- }
- }
- while (!_error && combined && !ir.eof());
- }
- }
- }
-}
-
-
-/** Prints an error message to stdout.
- * @param[in] opt error occurred in this option
- * @param[in] longopt the long option name was scanned
- * @param[in] msg message to be printed */
-void CmdLineParserBase::error (const Option &opt, bool longopt, const char *msg) const {
- if (_printErrors) {
- Message::estream(false) << "option ";
- if (longopt)
- Message::estream(false) << "--" << opt.longname;
- else
- Message::estream(false) << '-' << opt.shortname;
- Message::estream(false) << ": " << msg << '\n';
- }
- _error = true;
-}
-
-
-#if 0
-#include <iostream>
-
-/** Lists the scanned filenames. Just for debugging purposes. */
-void CmdLineParserBase::status () const {
- cout << "file names:\n";
- for (size_t i=0; i < _files.size(); i++)
- cout << " " << _files[i] << endl;
- cout << endl;
-}
-#endif
-
-
-/** Returns the option information of a given short option name.
- * If the option name can't be found 0 is returned.
- * @param[in] shortname short version of the option without leading hyphen (e.g. p, not -p) */
-const CmdLineParserBase::Option* CmdLineParserBase::option (char shortname) const {
- size_t numopts; // number of available options
- for (const Option *opts = options(&numopts); numopts > 0; ++opts) {
- if (opts->shortname == shortname)
- return opts;
- numopts--;
- }
- return 0;
-}
-
-
-/** Returns the option information of a given long option name.
- * Parameter 'longname' hasn't to be the complete long option name. The function looks up
- * all options that start with 'longname'. If a unique or an exact match was found, it's returned.
- * Otherwise, the return value is 0.
- * @param[in] longname long version of the option without leading hyphens (e.g. param, not --param) */
-const CmdLineParserBase::Option* CmdLineParserBase::option (const string &longname) const {
- vector<const Option*> matches; // all matching options
- size_t len = longname.length();
- size_t numopts; // number of available options
- for (const Option *opts = options(&numopts); numopts > 0; ++opts) {
- if (string(opts->longname, len) == longname) {
- if (len == strlen(opts->longname)) // exact match?
- return opts;
- matches.push_back(opts);
- }
- numopts--;
- }
- switch (matches.size()) {
- default:
- if (_printErrors) {
- Message::estream(false) << "option --" << longname << " is ambiguous (";
- for (size_t i=0; i < matches.size(); i++) {
- if (i > 0)
- Message::estream(false) << ", ";
- Message::estream(false) << matches[i]->longname;
- }
- Message::estream(false) << ")\n";
- }
- _error = true;
-
- case 0 : return 0;
- case 1 : return matches[0];
- }
-}
-
-
-/** Returns true if a valid separator between option and argument was found.
- * Arguments of long options are preceded by a '='. The argument of a short option
- * directly follows the option without a separation character.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given */
-bool CmdLineParserBase::checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const {
- if (longopt) {
- if (ir.peek() == '=')
- ir.get();
- else {
- error(opt, longopt, "'=' expected");
- return false;
- }
- }
- return true;
-}
-
-
-/** Returns true if a given option has no argument, .e.g. -p or --param.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given */
-bool CmdLineParserBase::checkNoArg (InputReader &ir, const Option &opt, bool longopt) const {
- if (ir.eof())
- return true;
- error(opt, longopt, "no argument expected");
- return false;
-}
-
-
-/** Gets an integer argument of a given option, e.g. -p5 or --param=5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getIntArg (InputReader &ir, const Option &opt, bool longopt, int &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseInt(arg) && ir.eof())
- return true;
- error(opt, longopt, "integer value expected");
- }
- return false;
-}
-
-
-/** Gets an unsigned integer argument of a given option, e.g. -p5 or --param=5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getUIntArg (InputReader &ir, const Option &opt, bool longopt, unsigned &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseUInt(arg) && ir.eof())
- return true;
- error(opt, longopt, "unsigned integer value expected");
- }
- return false;
-}
-
-
-/** Gets a double (floating point) argument of a given option, e.g. -p2.5 or --param=2.5.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getDoubleArg (InputReader &ir, const Option &opt, bool longopt, double &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- if (ir.parseDouble(arg) != 0 && ir.eof())
- return true;
- error(opt, longopt, "floating point value expected");
- }
- return false;
-}
-
-
-/** Gets a string argument of a given option, e.g. -pstr or --param=str.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getStringArg (InputReader &ir, const Option &opt, bool longopt, string &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- arg.clear();
- while (!ir.eof())
- arg += char(ir.get());
- if (!arg.empty())
- return true;
- error(opt, longopt, "string argument expected");
- }
- return false;
-}
-
-
-/** Gets a boolean argument of a given option, e.g. -pyes or --param=yes.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getBoolArg (InputReader &ir, const Option &opt, bool longopt, bool &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- string str;
- while (!ir.eof())
- str += char(ir.get());
- if (str == "yes" || str == "y" || str == "true" || str == "1") {
- arg = true;
- return true;
- }
- else if (str == "no" || str == "n" || str == "false" || str == "0") {
- arg = false;
- return true;
- }
- error(opt, longopt, "boolean argument expected (yes, no, true, false, 0, 1)");
- }
- return false;
-}
-
-
-/** Gets a (single) character argument of a given option, e.g. -pc or --param=c.
- * @param[in] ir argument is read from this InputReader
- * @param[in] opt scans argument of this option
- * @param[in] longopt true if the long option name was given
- * @param[out] arg the scanned option argument
- * @return true if argument could be scanned without errors */
-bool CmdLineParserBase::getCharArg (InputReader &ir, const Option &opt, bool longopt, char &arg) const {
- if (checkArgPrefix(ir, opt, longopt)) {
- arg = char(ir.get());
- if (arg >= 0 && ir.eof())
- return true;
- error(opt, longopt, "character argument expected");
- }
- return false;
-}
-
-
-/** Compares the short option characters of two help lines.
- * @return true if line1 should appear before line2 */
-static bool cmp_short (const char *line1, const char *line2) {
- if (*line1 != 'o' || *line2 != 'o' || (line1[1] == ' ' && line2[1] == ' '))
- return strcmp(line1, line2) < 0;
- char lopt1 = tolower(line1[2]);
- char lopt2 = tolower(line2[2]);
- if (lopt1 == lopt2) // same character but different case?
- return line1[2] > line2[2]; // line with lower-case letter first
- return lopt1 < lopt2;
-}
-
-
-/** Compares the long option names of two help lines.
- * @return true if line1 should appear before line2 */
-static bool cmp_long (const char *line1, const char *line2) {
- if (*line1 != 'o' || *line2 != 'o')
- return strcmp(line1, line2) < 0;
- return strcmp(line1+6, line2+6) < 0;
-}
-
-
-/** Prints the help text to stdout.
- * @param[in] mode format of help text */
-void CmdLineParserBase::help (int mode) const {
- size_t numlines;
- const char **lines = helplines(&numlines);
- if (mode == 0) { // list options with section headers
- for (size_t i=0; i < numlines; i++) {
- switch (*lines[i]) {
- case 's': fputc('\n', stdout); break; // section header
- case 'o': fputs(" ", stdout); break; // option info
- }
- puts(lines[i]+1);
- }
- }
- else {
- vector<const char*> linevec(lines, lines+numlines);
- sort(linevec.begin(), linevec.end(), mode == 1 ? cmp_short : cmp_long);
- for (vector<const char*>::iterator it=linevec.begin(); it != linevec.end(); ++it) {
- if (**it != 's') { // skip section headers
- puts(*it+1);
- if (**it == 'd')
- puts("\nOptions:");
- }
- }
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.h
deleted file mode 100644
index 87e740feaf3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CmdLineParserBase.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************
-** CmdLineParserBase.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_CMDLINEPARSERBASE_H
-#define DVISVGM_CMDLINEPARSERBASE_H
-
-#include <string>
-#include <vector>
-
-class InputReader;
-
-class CmdLineParserBase
-{
- protected:
- struct Option;
-
- struct OptionHandler {
- virtual ~OptionHandler () {}
- virtual void operator () (CmdLineParserBase *obj, InputReader &ir, const Option &opt, bool longopt) const=0;
- };
-
- template <typename T>
- class OptionHandlerImpl : public OptionHandler {
- protected:
- typedef void (T::*LocalHandler)(InputReader &ir, const Option &opt, bool longopt);
-
- public:
- OptionHandlerImpl (LocalHandler handler) : _handler(handler) {}
-
- void operator () (CmdLineParserBase *obj, InputReader &ir, const Option &opt, bool longopt) const {
- if (T *tobj = dynamic_cast<T*>(obj))
- (tobj->*_handler)(ir, opt, longopt);
- }
-
- private:
- LocalHandler _handler;
- };
-
- enum ArgMode {ARG_NONE, ARG_OPTIONAL, ARG_REQUIRED};
-
- struct Option {
- ~Option () {delete handler;}
- char shortname;
- const char *longname;
- ArgMode argmode; // mode of option argument
- const OptionHandler *handler;
- };
-
- public:
- virtual void parse (int argc, char **argv, bool printErrors=true);
- virtual void help (int mode=0) const;
- virtual int numFiles () const {return _files.size();}
- virtual const char* file (size_t n) {return n < _files.size() ? _files[n].c_str() : 0;}
-// virtual void status () const;
- virtual bool error () const {return _error;}
-
- protected:
- CmdLineParserBase () : _printErrors(true), _error(false) {}
- CmdLineParserBase (const CmdLineParserBase &cmd) : _printErrors(true), _error(false) {}
- virtual ~CmdLineParserBase () {}
- virtual void init ();
- virtual void error (const Option &opt, bool longopt, const char *msg) const;
- virtual const Option* options (size_t *numopts) const =0;
- virtual const char** helplines (size_t *numlines) const =0;
- bool checkArgPrefix (InputReader &ir, const Option &opt, bool longopt) const;
- bool checkNoArg (InputReader &ir, const Option &opt, bool longopt) const;
- bool getIntArg (InputReader &ir, const Option &opt, bool longopt, int &arg) const;
- bool getUIntArg (InputReader &ir, const Option &opt, bool longopt, unsigned &arg) const;
- bool getDoubleArg (InputReader &ir, const Option &opt, bool longopt, double &arg) const;
- bool getStringArg (InputReader &ir, const Option &opt, bool longopt, std::string &arg) const;
- bool getBoolArg (InputReader &ir, const Option &opt, bool longopt, bool &arg) const;
- bool getCharArg (InputReader &ir, const Option &opt, bool longopt, char &arg) const;
- const Option* option (char shortname) const;
- const Option* option (const std::string &longname) const;
-
- private:
- bool _printErrors; ///< if true, print error messages
- mutable bool _error; ///< error occured while parsing options
- std::vector<std::string> _files; ///< filename parameters
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.cpp
deleted file mode 100644
index 7e8d9d56069..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*************************************************************************
-** Color.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cctype>
-#include <cmath>
-#include <cstdlib>
-#include <cstring>
-#include <iomanip>
-#include <sstream>
-#include "Color.h"
-
-using namespace std;
-
-
-const Color Color::BLACK(UInt32(0));
-const Color Color::WHITE(UInt8(255), UInt8(255), UInt8(255));
-const Color Color::TRANSPARENT(UInt32(0xff000000));
-
-
-static inline UInt8 float_to_byte (float v) {
- v = max(0.0f, min(1.0f, v));
- return UInt8(floor(255*v+0.5));
-}
-
-
-static void tolower (string &str) {
- for (size_t i=0; i < str.length(); i++)
- str[i] = tolower(str[i]);
-}
-
-
-Color::Color (const char *name) {
- if (!set(name, false))
- setGray(UInt8(0));
-}
-
-
-Color::Color (const string &name) {
- if (!set(name, false))
- setGray(UInt8(0));
-}
-
-
-void Color::set (float r, float g, float b) {
- set(float_to_byte(r), float_to_byte(g), float_to_byte(b));
-}
-
-
-bool Color::set (string name, bool case_sensitive) {
- if (name[0] == '#') {
- char *p=0;
- _rgb = UInt32(strtol(name.c_str()+1, &p, 16));
- while (isspace(*p))
- p++;
- return (*p == 0 && _rgb <= 0xFFFFFF);
- }
- // converted color constants from color.pro
- static const struct ColorConstant {
- const char *name;
- const UInt32 rgb;
- }
- constants[] = {
- {"Apricot", 0xFFAD7A},
- {"Aquamarine", 0x2DFFB2},
- {"Bittersweet", 0xC10200},
- {"Black", 0x000000},
- {"Blue", 0x0000FF},
- {"BlueGreen", 0x26FFAA},
- {"BlueViolet", 0x190CF4},
- {"BrickRed", 0xB70000},
- {"Brown", 0x660000},
- {"BurntOrange", 0xFF7C00},
- {"CadetBlue", 0x606DC4},
- {"CarnationPink", 0xFF5EFF},
- {"Cerulean", 0x0FE2FF},
- {"CornflowerBlue", 0x59DDFF},
- {"Cyan", 0x00FFFF},
- {"Dandelion", 0xFFB528},
- {"DarkOrchid", 0x9932CC},
- {"Emerald", 0x00FF7F},
- {"ForestGreen", 0x00E000},
- {"Fuchsia", 0x7202EA},
- {"Goldenrod", 0xFFE528},
- {"Gray", 0x7F7F7F},
- {"Green", 0x00FF00},
- {"GreenYellow", 0xD8FF4F},
- {"JungleGreen", 0x02FF7A},
- {"Lavender", 0xFF84FF},
- {"LimeGreen", 0x7FFF00},
- {"Magenta", 0xFF00FF},
- {"Mahogany", 0xA50000},
- {"Maroon", 0xAD0000},
- {"Melon", 0xFF897F},
- {"MidnightBlue", 0x007091},
- {"Mulberry", 0xA314F9},
- {"NavyBlue", 0x0F75FF},
- {"OliveGreen", 0x009900},
- {"Orange", 0xFF6321},
- {"OrangeRed", 0xFF007F},
- {"Orchid", 0xAD5BFF},
- {"Peach", 0xFF7F4C},
- {"Periwinkle", 0x6D72FF},
- {"PineGreen", 0x00BF28},
- {"Plum", 0x7F00FF},
- {"ProcessBlue", 0x0AFFFF},
- {"Purple", 0x8C23FF},
- {"RawSienna", 0x8C0000},
- {"Red", 0xFF0000},
- {"RedOrange", 0xFF3A21},
- {"RedViolet", 0x9600A8},
- {"Rhodamine", 0xFF2DFF},
- {"RoyalBlue", 0x007FFF},
- {"RoyalPurple", 0x3F19FF},
- {"RubineRed", 0xFF00DD},
- {"Salmon", 0xFF779E},
- {"SeaGreen", 0x4FFF7F},
- {"Sepia", 0x4C0000},
- {"SkyBlue", 0x60FFE0},
- {"SpringGreen", 0xBCFF3D},
- {"Tan", 0xDB9370},
- {"TealBlue", 0x1EF9A3},
- {"Thistle", 0xE068FF},
- {"Turquoise", 0x26FFCC},
- {"Violet", 0x351EFF},
- {"VioletRed", 0xFF30FF},
- {"White", 0xFFFFFF},
- {"WildStrawberry", 0xFF0A9B},
- {"Yellow", 0xFFFF00},
- {"YellowGreen", 0x8EFF42},
- {"YellowOrange", 0xFF9300},
- };
- if (!case_sensitive) {
- tolower(name);
- for (size_t i=0; i < sizeof(constants)/sizeof(ColorConstant); i++) {
- string cmpname = constants[i].name;
- tolower(cmpname);
- if (name == cmpname) {
- _rgb = constants[i].rgb;
- return true;
- }
- }
- return false;
- }
-
- // binary search
- int first=0, last=sizeof(constants)/sizeof(ColorConstant)-1;
- while (first <= last) {
- int mid = first+(last-first)/2;
- int cmp = strcmp(constants[mid].name, name.c_str());
- if (cmp > 0)
- last = mid-1;
- else if (cmp < 0)
- first = mid+1;
- else {
- _rgb = constants[mid].rgb;
- return true;
- }
- }
- return false;
-}
-
-
-void Color::setHSB (float h, float s, float b) {
- vector<float> hsb(3), rgb(3);
- hsb[0] = h;
- hsb[1] = s;
- hsb[2] = b;
- HSB2RGB(hsb, rgb);
- set(rgb[0], rgb[1], rgb[2]);
-}
-
-
-void Color::setCMYK (float c, float m, float y, float k) {
- vector<float> cmyk(4), rgb(3);
- cmyk[0] = c;
- cmyk[1] = m;
- cmyk[2] = y;
- cmyk[3] = k;
- CMYK2RGB(cmyk, rgb);
- set(rgb[0], rgb[1], rgb[2]);
-}
-
-
-void Color::operator *= (double c) {
- UInt32 rgb=0;
- for (int i=0; i < 3; i++) {
- rgb |= UInt32(floor((_rgb & 0xff)*c+0.5)) << (8*i);
- _rgb >>= 8;
- }
- _rgb = rgb;
-}
-
-
-string Color::rgbString () const {
- ostringstream oss;
- oss << '#';
- for (int i=2; i >= 0; i--) {
- oss << setbase(16) << setfill('0') << setw(2)
- << (((_rgb >> (8*i)) & 0xff));
- }
- return oss.str();
-}
-
-
-/** Approximates a CMYK color by an RGB triple. The component values
- * are expected to be normalized, i.e. 0 <= cmyk[i],rgb[j] <= 1.
- * @param[in] cmyk color in CMYK space
- * @param[out] rgb RGB approximation */
-void Color::CMYK2RGB (const vector<float> &cmyk, vector<float> &rgb) {
- for (int i=0; i < 3; i++)
- rgb[i] = 1.0f-max(0.0f, min(1.0f, cmyk[i]+cmyk[3]));
-}
-
-
-/** Converts a color given in HSB coordinates to RGB.
- * @param[in] hsb color in HSB space
- * @param[out] rgb color in RGB space */
-void Color::HSB2RGB (const vector<float> &hsb, vector<float> &rgb) {
- if (hsb[1] == 0)
- rgb[0] = rgb[1] = rgb[2] = hsb[2];
- else {
- float h = hsb[0]-floor(hsb[0]);
- int i = int(6*h);
- float f = float(6.0*h-i);
- float p = hsb[2]*(1-hsb[1]);
- float q = hsb[2]*(1-hsb[1]*f);
- float t = hsb[2]*(1-hsb[1]*(1-f));
- switch (i) {
- case 0 : rgb[0]=hsb[2]; rgb[1]=t; rgb[2]=p; break;
- case 1 : rgb[0]=q; rgb[1]=hsb[2]; rgb[2]=p; break;
- case 2 : rgb[0]=p; rgb[1]=hsb[2]; rgb[2]=t; break;
- case 3 : rgb[0]=p; rgb[1]=q; rgb[2]=hsb[2]; break;
- case 4 : rgb[0]=t; rgb[1]=p; rgb[2]=hsb[2]; break;
- case 5 : rgb[0]=hsb[2]; rgb[1]=p; rgb[2]=q; break;
- default: ; // prevent compiler warning
- }
- }
-}
-
-
-void Color::getRGB (float &r, float &g, float &b) const {
- r = float(((_rgb >> 16) & 255) / 255.0);
- g = float(((_rgb >> 8) & 255) / 255.0);
- b = float((_rgb & 255) / 255.0);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.h
deleted file mode 100644
index 99d847560e0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Color.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*************************************************************************
-** Color.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_COLOR_H
-#define DVISVGM_COLOR_H
-
-#include <string>
-#include <vector>
-#include "types.h"
-
-#ifdef TRANSPARENT
-#undef TRANSPARENT
-#endif
-
-class Color
-{
- public:
- static const Color BLACK;
- static const Color WHITE;
- static const Color TRANSPARENT;
-
- public:
- Color () : _rgb(0) {}
- Color (UInt32 rgb) : _rgb(rgb) {}
- Color (UInt8 r, UInt8 g, UInt8 b) {set(r,g,b);}
- Color (float r, float g, float b) {set(r,g,b);}
- Color (const std::vector<float> &rgb) {set(rgb[0], rgb[1], rgb[2]);}
- Color (const char *name);
- Color (const std::string &name);
- operator UInt32 () const {return _rgb;}
- bool operator == (const Color &c) const {return _rgb == c._rgb;}
- bool operator != (const Color &c) const {return _rgb != c._rgb;}
- void set (UInt8 r, UInt8 g, UInt8 b) {_rgb = (r << 16) | (g << 8) | b;}
- void set (float r, float g, float b);
- bool set (std::string name, bool case_sensitive=true);
- void setGray (UInt8 g) {set(g,g,g);}
- void setGray (float g) {set(g,g,g);}
- void setHSB (float h, float s, float b);
- void setCMYK (float c, float m, float y, float k);
- void getRGB (float &r, float &g, float &b) const;
- void operator *= (double c);
- std::string rgbString () const;
- static void CMYK2RGB (const std::vector<float> &cmyk, std::vector<float> &rgb);
- static void HSB2RGB (const std::vector<float> &hsb, std::vector<float> &rgb);
-
- private:
- UInt32 _rgb;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.cpp
deleted file mode 100644
index 31b9de68c01..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*************************************************************************
-** ColorSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cmath>
-#include <cstring>
-#include <iomanip>
-#include <sstream>
-#include <vector>
-#include "ColorSpecialHandler.h"
-#include "SpecialActions.h"
-
-using namespace std;
-
-
-static float read_float (istream &is) {
- is.clear();
- float v;
- is >> v;
- if (is.fail())
- throw SpecialException("number expected");
- return v;
-}
-
-
-/** Reads multiple float values from a given stream. The number of
- * values read is determined by the size of the result vector.
- * @param[in] is stream to be read from
- * @param[out] v the resulting floats */
-static void read_floats (istream &is, vector<float> &v) {
- for (size_t i=0; i < v.size(); i++)
- v[i] = read_float(is);
-}
-
-
-/** Reads a color statement from an input stream and converts it to RGB.
- * A color statement has the following syntax:
- * _color model_ _component values_
- * Currently, the following color models are supported: rgb, cmyk, hsb and gray.
- * Examples: rgb 1 0.5 0, gray 0.5
- * @param[in] model if model != "" this value specifies the model, otherwise it's read from the stream
- * @param[in] is stream to be read from
- * @param[out] color italicresulting RGB triple
- * @return true if statement has successfully been read */
-static void read_color (string model, istream &is, Color &color) {
- if (model.empty())
- is >> model;
- if (model == "rgb") {
- vector<float> rgb(3);
- read_floats(is, rgb);
- color.set(rgb[0], rgb[1], rgb[2]);
- }
- else if (model == "cmyk") {
- vector<float> cmyk(4);
- read_floats(is, cmyk);
- color.setCMYK(cmyk[0], cmyk[1], cmyk[2], cmyk[3]);
- }
- else if (model == "hsb") {
- vector<float> hsb(3);
- read_floats(is, hsb);
- color.setHSB(hsb[0], hsb[1], hsb[2]);
- }
- else if (model == "gray")
- color.setGray(read_float(is));
- else if (!color.set(model, true))
- throw SpecialException("unknown color statement");
-}
-
-
-bool ColorSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- Color color;
- if (prefix && strcmp(prefix, "background") == 0) {
- read_color("", is, color);
- actions->setBgColor(color);
- }
- else {
- string cmd;
- is >> cmd;
- if (cmd == "push") { // color push <model> <params>
- read_color("", is, color);
- _colorStack.push(color);
- }
- else if (cmd == "pop") {
- if (!_colorStack.empty()) // color pop
- _colorStack.pop();
- }
- else { // color <model> <params>
- read_color(cmd, is, color);
- while (!_colorStack.empty())
- _colorStack.pop();
- _colorStack.push(color);
- }
- if (actions) {
- if (_colorStack.empty())
- actions->setColor(Color::BLACK);
- else
- actions->setColor(_colorStack.top());
- }
- }
- return true;
-}
-
-
-const char** ColorSpecialHandler::prefixes () const {
- static const char *pfx[] = {"color", 0};
- return pfx;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.h
deleted file mode 100644
index 27dfe984a00..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ColorSpecialHandler.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*************************************************************************
-** ColorSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_COLORSPECIALHANDLER_H
-#define DVISVGM_COLORSPECIALHANDLER_H
-
-#include <stack>
-#include <vector>
-#include "Color.h"
-#include "SpecialHandler.h"
-
-
-class ColorSpecialHandler : public SpecialHandler
-{
- public:
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
- const char* name () const {return "color";}
- const char* info () const {return "complete support of color specials";}
- const char** prefixes () const;
-
- private:
- std::stack<Color> _colorStack;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.cpp
deleted file mode 100644
index 7a50191229f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-// This file was automatically generated by opt2cpp.
-// It is part of the dvisvgm package and published under the terms
-// of the GNU General Public License version 3, or (at your option) any later version.
-// See file COPYING for further details.
-// (C) 2009-2014 Martin Gieseking <martin.gieseking@uos.de>
-
-#include <config.h>
-#include <cstdio>
-#include <iostream>
-#include <iomanip>
-#include "InputReader.h"
-#include "CommandLine.h"
-
-using namespace std;
-
-const CmdLineParserBase::Option CommandLine::_options[] = {
- {'b', "bbox", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_bbox)},
- {'C', "cache", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_cache)},
- {'\0', "color", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_color)},
-#if !defined(DISABLE_GS)
- {'E', "eps", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_eps)},
-#endif
- {'e', "exact", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_exact)},
- {'m', "fontmap", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_fontmap)},
- {'h', "help", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_help)},
- {'\0', "keep", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_keep)},
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- {'\0', "libgs", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_libgs)},
-#endif
- {'L', "linkmark", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_linkmark)},
- {'l', "list-specials", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_list_specials)},
- {'M', "mag", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_mag)},
- {'n', "no-fonts", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_fonts)},
- {'\0', "no-mktexmf", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_mktexmf)},
- {'S', "no-specials", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_specials)},
- {'\0', "no-styles", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_no_styles)},
- {'o', "output", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_output)},
- {'p', "page", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_page)},
- {'d', "precision", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_precision)},
- {'P', "progress", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_progress)},
- {'r', "rotate", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_rotate)},
- {'c', "scale", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_scale)},
- {'s', "stdout", ARG_NONE, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_stdout)},
- {'a', "trace-all", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_trace_all)},
- {'T', "transform", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_transform)},
- {'t', "translate", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_translate)},
- {'v', "verbosity", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_verbosity)},
- {'V', "version", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_version)},
- {'z', "zip", ARG_OPTIONAL, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_zip)},
- {'Z', "zoom", ARG_REQUIRED, new OptionHandlerImpl<CommandLine>(&CommandLine::handle_zoom)},
-};
-
-const CmdLineParserBase::Option* CommandLine::options (size_t *numopts) const {
- *numopts = sizeof(_options)/sizeof(CmdLineParserBase::Option);
- return _options;
-}
-
-void CommandLine::init () {
- CmdLineParserBase::init();
-
- // disable all options by default
- _bbox_given = false;
- _cache_given = false;
- _color_given = false;
-#if !defined(DISABLE_GS)
- _eps_given = false;
-#endif
- _exact_given = false;
- _fontmap_given = false;
- _help_given = false;
- _keep_given = false;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- _libgs_given = false;
-#endif
- _linkmark_given = false;
- _list_specials_given = false;
- _mag_given = false;
- _no_fonts_given = false;
- _no_mktexmf_given = false;
- _no_specials_given = false;
- _no_styles_given = false;
- _output_given = false;
- _page_given = false;
- _precision_given = false;
- _progress_given = false;
- _rotate_given = false;
- _scale_given = false;
- _stdout_given = false;
- _trace_all_given = false;
- _transform_given = false;
- _translate_given = false;
- _verbosity_given = false;
- _version_given = false;
- _zip_given = false;
- _zoom_given = false;
-
- // set default option values
- _bbox_arg = "min";
- _cache_arg.clear();
- _fontmap_arg.clear();
- _help_arg = 0;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- _libgs_arg.clear();
-#endif
- _linkmark_arg = "box";
- _mag_arg = 4;
- _no_fonts_arg = 0;
- _no_specials_arg.clear();
- _output_arg.clear();
- _page_arg = "1";
- _precision_arg = 0;
- _progress_arg = 0.5;
- _rotate_arg = 0;
- _scale_arg.clear();
- _trace_all_arg = false;
- _transform_arg.clear();
- _translate_arg.clear();
- _verbosity_arg = 7;
- _version_arg = false;
- _zip_arg = 9;
- _zoom_arg = 1.0;
-}
-
-const char** CommandLine::helplines (size_t *numlines) const {
- static const char *lines[] = {
- "dThis program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.\n\nUsage: dvisvgm [options] dvifile\n dvisvgm -E [options] epsfile",
- "sInput options:",
- "o-p, --page=ranges choose pages to convert [1]",
- "o-m, --fontmap=filenames evaluate (additional) font map files",
-#if !defined(DISABLE_GS)
- "o-E, --eps convert an EPS file to SVG",
-#endif
- "sSVG output options:",
- "o-b, --bbox=size set size of bounding box [min]",
- "o-L, --linkmark=type select how to mark hyperlinked areas [box]",
- "o-o, --output=pattern set name pattern of output files",
- "o-d, --precision=number set number of decimal points (0-6) [0]",
- "o-s, --stdout write SVG output to stdout",
- "o-n, --no-fonts[=variant] draw glyphs by using path elements [0]",
- "o --no-styles don't use styles to reference fonts",
- "o-z, --zip[=level] create compressed .svgz file [9]",
- "sSVG transformations:",
- "o-r, --rotate=angle rotate page content clockwise",
- "o-c, --scale=sx[,sy] scale page content",
- "o-t, --translate=tx[,ty] shift page content",
- "o-T, --transform=commands transform page content",
- "o-Z, --zoom=factor zoom page content [1.0]",
- "sProcessing options:",
- "o-C, --cache[=dir] set/print path of cache directory",
- "o-e, --exact compute exact glyph boxes",
- "o --keep keep temporary files",
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- "o --libgs=filename set name of Ghostscript shared library",
-#endif
- "o-M, --mag=factor magnification of Metafont output [4]",
- "o --no-mktexmf don't try to create missing fonts",
- "o-S, --no-specials[=prefixes] don't process [selected] specials",
- "o-a, --trace-all[=retrace] trace all glyphs of bitmap fonts [no]",
- "sMessage options:",
- "o --color colorize messages",
- "o-h, --help[=mode] print this summary of options and exit [0]",
- "o-l, --list-specials print supported special sets and exit",
- "o-P, --progress[=delay] enable progess indicator [0.5]",
- "o-v, --verbosity=level set verbosity level (0-7) [7]",
- "o-V, --version[=extended] print version and exit [no]",
- };
- *numlines = sizeof(lines)/sizeof(char*);
- return lines;
-}
-
-void CommandLine::handle_bbox (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _bbox_arg))
- _bbox_given = true;
-}
-
-void CommandLine::handle_cache (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getStringArg(ir, opt, longopt, _cache_arg))
- _cache_given = true;
-}
-
-void CommandLine::handle_color (InputReader &ir, const Option &opt, bool longopt) {
- _color_given = true;
-}
-
-#if !defined(DISABLE_GS)
-void CommandLine::handle_eps (InputReader &ir, const Option &opt, bool longopt) {
- _eps_given = true;
-}
-#endif
-
-void CommandLine::handle_exact (InputReader &ir, const Option &opt, bool longopt) {
- _exact_given = true;
-}
-
-void CommandLine::handle_fontmap (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _fontmap_arg))
- _fontmap_given = true;
-}
-
-void CommandLine::handle_help (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _help_arg))
- _help_given = true;
-}
-
-void CommandLine::handle_keep (InputReader &ir, const Option &opt, bool longopt) {
- _keep_given = true;
-}
-
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
-void CommandLine::handle_libgs (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _libgs_arg))
- _libgs_given = true;
-}
-#endif
-
-void CommandLine::handle_linkmark (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _linkmark_arg))
- _linkmark_given = true;
-}
-
-void CommandLine::handle_list_specials (InputReader &ir, const Option &opt, bool longopt) {
- _list_specials_given = true;
-}
-
-void CommandLine::handle_mag (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _mag_arg))
- _mag_given = true;
-}
-
-void CommandLine::handle_no_fonts (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _no_fonts_arg))
- _no_fonts_given = true;
-}
-
-void CommandLine::handle_no_mktexmf (InputReader &ir, const Option &opt, bool longopt) {
- _no_mktexmf_given = true;
-}
-
-void CommandLine::handle_no_specials (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getStringArg(ir, opt, longopt, _no_specials_arg))
- _no_specials_given = true;
-}
-
-void CommandLine::handle_no_styles (InputReader &ir, const Option &opt, bool longopt) {
- _no_styles_given = true;
-}
-
-void CommandLine::handle_output (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _output_arg))
- _output_given = true;
-}
-
-void CommandLine::handle_page (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _page_arg))
- _page_given = true;
-}
-
-void CommandLine::handle_precision (InputReader &ir, const Option &opt, bool longopt) {
- if (getIntArg(ir, opt, longopt, _precision_arg))
- _precision_given = true;
-}
-
-void CommandLine::handle_progress (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getDoubleArg(ir, opt, longopt, _progress_arg))
- _progress_given = true;
-}
-
-void CommandLine::handle_rotate (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _rotate_arg))
- _rotate_given = true;
-}
-
-void CommandLine::handle_scale (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _scale_arg))
- _scale_given = true;
-}
-
-void CommandLine::handle_stdout (InputReader &ir, const Option &opt, bool longopt) {
- _stdout_given = true;
-}
-
-void CommandLine::handle_trace_all (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getBoolArg(ir, opt, longopt, _trace_all_arg))
- _trace_all_given = true;
-}
-
-void CommandLine::handle_transform (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _transform_arg))
- _transform_given = true;
-}
-
-void CommandLine::handle_translate (InputReader &ir, const Option &opt, bool longopt) {
- if (getStringArg(ir, opt, longopt, _translate_arg))
- _translate_given = true;
-}
-
-void CommandLine::handle_verbosity (InputReader &ir, const Option &opt, bool longopt) {
- if (getUIntArg(ir, opt, longopt, _verbosity_arg))
- _verbosity_given = true;
-}
-
-void CommandLine::handle_version (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getBoolArg(ir, opt, longopt, _version_arg))
- _version_given = true;
-}
-
-void CommandLine::handle_zip (InputReader &ir, const Option &opt, bool longopt) {
- if (ir.eof() || getIntArg(ir, opt, longopt, _zip_arg))
- _zip_given = true;
-}
-
-void CommandLine::handle_zoom (InputReader &ir, const Option &opt, bool longopt) {
- if (getDoubleArg(ir, opt, longopt, _zoom_arg))
- _zoom_given = true;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.h
deleted file mode 100644
index 20a991b0e1e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/CommandLine.h
+++ /dev/null
@@ -1,174 +0,0 @@
-// This file was automatically generated by opt2cpp.
-// It is part of the dvisvgm package and published under the terms
-// of the GNU General Public License version 3, or (at your option) any later version.
-// See file COPYING for further details.
-// (C) 2009-2014 Martin Gieseking <martin.gieseking@uos.de>
-
-#ifndef COMMANDLINE_H
-#define COMMANDLINE_H
-
-#include <config.h>
-#include "CmdLineParserBase.h"
-
-class CommandLine : public CmdLineParserBase
-{
- public:
- CommandLine () {init();}
- CommandLine (int argc, char **argv, bool printErrors) {parse(argc, argv, printErrors);}
- bool bbox_given () const {return _bbox_given;}
- const std::string& bbox_arg () const {return _bbox_arg;}
- bool cache_given () const {return _cache_given;}
- const std::string& cache_arg () const {return _cache_arg;}
- bool color_given () const {return _color_given;}
-#if !defined(DISABLE_GS)
- bool eps_given () const {return _eps_given;}
-#endif
- bool exact_given () const {return _exact_given;}
- bool fontmap_given () const {return _fontmap_given;}
- const std::string& fontmap_arg () const {return _fontmap_arg;}
- bool help_given () const {return _help_given;}
- int help_arg () const {return _help_arg;}
- bool keep_given () const {return _keep_given;}
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- bool libgs_given () const {return _libgs_given;}
- const std::string& libgs_arg () const {return _libgs_arg;}
-#endif
- bool linkmark_given () const {return _linkmark_given;}
- const std::string& linkmark_arg () const {return _linkmark_arg;}
- bool list_specials_given () const {return _list_specials_given;}
- bool mag_given () const {return _mag_given;}
- double mag_arg () const {return _mag_arg;}
- bool no_fonts_given () const {return _no_fonts_given;}
- int no_fonts_arg () const {return _no_fonts_arg;}
- bool no_mktexmf_given () const {return _no_mktexmf_given;}
- bool no_specials_given () const {return _no_specials_given;}
- const std::string& no_specials_arg () const {return _no_specials_arg;}
- bool no_styles_given () const {return _no_styles_given;}
- bool output_given () const {return _output_given;}
- const std::string& output_arg () const {return _output_arg;}
- bool page_given () const {return _page_given;}
- const std::string& page_arg () const {return _page_arg;}
- bool precision_given () const {return _precision_given;}
- int precision_arg () const {return _precision_arg;}
- bool progress_given () const {return _progress_given;}
- double progress_arg () const {return _progress_arg;}
- bool rotate_given () const {return _rotate_given;}
- double rotate_arg () const {return _rotate_arg;}
- bool scale_given () const {return _scale_given;}
- const std::string& scale_arg () const {return _scale_arg;}
- bool stdout_given () const {return _stdout_given;}
- bool trace_all_given () const {return _trace_all_given;}
- bool trace_all_arg () const {return _trace_all_arg;}
- bool transform_given () const {return _transform_given;}
- const std::string& transform_arg () const {return _transform_arg;}
- bool translate_given () const {return _translate_given;}
- const std::string& translate_arg () const {return _translate_arg;}
- bool verbosity_given () const {return _verbosity_given;}
- unsigned verbosity_arg () const {return _verbosity_arg;}
- bool version_given () const {return _version_given;}
- bool version_arg () const {return _version_arg;}
- bool zip_given () const {return _zip_given;}
- int zip_arg () const {return _zip_arg;}
- bool zoom_given () const {return _zoom_given;}
- double zoom_arg () const {return _zoom_arg;}
-
- protected:
- void init ();
- const CmdLineParserBase::Option* options (size_t *numopts) const;
- const char** helplines (size_t *numlines) const;
- void handle_bbox (InputReader &ir, const Option &opt, bool longopt);
- void handle_cache (InputReader &ir, const Option &opt, bool longopt);
- void handle_color (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(DISABLE_GS)
- void handle_eps (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_exact (InputReader &ir, const Option &opt, bool longopt);
- void handle_fontmap (InputReader &ir, const Option &opt, bool longopt);
- void handle_help (InputReader &ir, const Option &opt, bool longopt);
- void handle_keep (InputReader &ir, const Option &opt, bool longopt);
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- void handle_libgs (InputReader &ir, const Option &opt, bool longopt);
-#endif
- void handle_linkmark (InputReader &ir, const Option &opt, bool longopt);
- void handle_list_specials (InputReader &ir, const Option &opt, bool longopt);
- void handle_mag (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_fonts (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_mktexmf (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_specials (InputReader &ir, const Option &opt, bool longopt);
- void handle_no_styles (InputReader &ir, const Option &opt, bool longopt);
- void handle_output (InputReader &ir, const Option &opt, bool longopt);
- void handle_page (InputReader &ir, const Option &opt, bool longopt);
- void handle_precision (InputReader &ir, const Option &opt, bool longopt);
- void handle_progress (InputReader &ir, const Option &opt, bool longopt);
- void handle_rotate (InputReader &ir, const Option &opt, bool longopt);
- void handle_scale (InputReader &ir, const Option &opt, bool longopt);
- void handle_stdout (InputReader &ir, const Option &opt, bool longopt);
- void handle_trace_all (InputReader &ir, const Option &opt, bool longopt);
- void handle_transform (InputReader &ir, const Option &opt, bool longopt);
- void handle_translate (InputReader &ir, const Option &opt, bool longopt);
- void handle_verbosity (InputReader &ir, const Option &opt, bool longopt);
- void handle_version (InputReader &ir, const Option &opt, bool longopt);
- void handle_zip (InputReader &ir, const Option &opt, bool longopt);
- void handle_zoom (InputReader &ir, const Option &opt, bool longopt);
-
- private:
- static const CmdLineParserBase::Option _options[];
- bool _bbox_given;
- std::string _bbox_arg;
- bool _cache_given;
- std::string _cache_arg;
- bool _color_given;
-#if !defined(DISABLE_GS)
- bool _eps_given;
-#endif
- bool _exact_given;
- bool _fontmap_given;
- std::string _fontmap_arg;
- bool _help_given;
- int _help_arg;
- bool _keep_given;
-#if !defined(HAVE_LIBGS) && !defined(DISABLE_GS)
- bool _libgs_given;
- std::string _libgs_arg;
-#endif
- bool _linkmark_given;
- std::string _linkmark_arg;
- bool _list_specials_given;
- bool _mag_given;
- double _mag_arg;
- bool _no_fonts_given;
- int _no_fonts_arg;
- bool _no_mktexmf_given;
- bool _no_specials_given;
- std::string _no_specials_arg;
- bool _no_styles_given;
- bool _output_given;
- std::string _output_arg;
- bool _page_given;
- std::string _page_arg;
- bool _precision_given;
- int _precision_arg;
- bool _progress_given;
- double _progress_arg;
- bool _rotate_given;
- double _rotate_arg;
- bool _scale_given;
- std::string _scale_arg;
- bool _stdout_given;
- bool _trace_all_given;
- bool _trace_all_arg;
- bool _transform_given;
- std::string _transform_arg;
- bool _translate_given;
- std::string _translate_arg;
- bool _verbosity_given;
- unsigned _verbosity_arg;
- bool _version_given;
- bool _version_arg;
- bool _zip_given;
- int _zip_arg;
- bool _zoom_given;
- double _zoom_arg;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.cpp
deleted file mode 100644
index 8f03d1a0b83..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*************************************************************************
-** DLLoader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "DLLoader.h"
-
-
-DLLoader::DLLoader (const char *dlname) : _handle(0)
-{
- if (dlname && *dlname) {
-#ifdef __WIN32__
- _handle = LoadLibrary(dlname);
-#else
- _handle = dlopen(dlname, RTLD_LAZY);
-#endif
- }
-}
-
-
-DLLoader::~DLLoader () {
- if (_handle) {
-#ifdef __WIN32__
- FreeLibrary(_handle);
-#else
- dlclose(_handle);
-#endif
- }
-}
-
-
-/** Loads a function or variable from the dynamic/shared library.
- * @param[in] name name of function/variable to load
- * @return pointer to loaded symbol, or 0 if the symbol could not be loaded */
-void* DLLoader::loadSymbol (const char *name) {
- if (_handle) {
-#ifdef __WIN32__
- return (void*)GetProcAddress(_handle, name);
-#else
- return dlsym(_handle, name);
-#endif
- }
- return 0;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.h
deleted file mode 100644
index e699fa219db..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DLLoader.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*************************************************************************
-** DLLoader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DLLOADER_H
-#define DVISVGM_DLLOADER_H
-
-#ifdef __WIN32__
- #include <windows.h>
-#else
- #include <dlfcn.h>
-#endif
-
-
-class DLLoader
-{
- public:
- DLLoader (const char *dlname);
- virtual ~DLLoader ();
- bool loaded () const {return _handle != 0;}
-
- protected:
- DLLoader () : _handle(0) {}
- void* loadSymbol (const char *name);
-
- private:
-#ifdef __WIN32__
- HINSTANCE _handle;
-#else
- void *_handle;
-#endif
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIActions.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIActions.h
deleted file mode 100644
index 613be5365d6..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIActions.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*************************************************************************
-** DVIActions.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVIACTIONS_H
-#define DVISVGM_DVIACTIONS_H
-
-#include <string>
-#include "Message.h"
-#include "types.h"
-
-class BoundingBox;
-struct Font;
-class SpecialManager;
-
-
-struct DVIActions
-{
- virtual ~DVIActions () {}
- virtual void setChar (double x, double y, unsigned c, bool vertical, const Font *f) {}
- virtual void setRule (double x, double y, double height, double width) {}
- virtual void setTextOrientation (bool vertical) {}
- virtual void moveToX (double x) {}
- virtual void moveToY (double y) {}
- virtual bool fontProcessingEnabled () const {return true;}
- virtual void defineFont (int num, const Font *font) {}
- virtual void setFont (int num, const Font *font) {}
- virtual void special (const std::string &s, double dvi2bp) {}
- virtual void preamble (const std::string &cmt) {}
- virtual void postamble () {}
- virtual void beginPage (unsigned pageno, Int32 *c) {}
- virtual void endPage (unsigned pageno) {}
- virtual BoundingBox& bbox () =0;
- virtual const SpecialManager* setProcessSpecials (const char *ignorelist) {return 0;}
- virtual void progress (size_t current, size_t total, const char *id=0) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.cpp
deleted file mode 100644
index f9edfd0536d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.cpp
+++ /dev/null
@@ -1,840 +0,0 @@
-/*************************************************************************
-** DVIReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdarg>
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include "Color.h"
-#include "DVIActions.h"
-#include "DVIReader.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "Message.h"
-#include "SignalHandler.h"
-#include "VectorStream.h"
-#include "macros.h"
-#include "types.h"
-
-
-using namespace std;
-
-bool DVIReader::COMPUTE_PAGE_LENGTH = false;
-
-
-DVIReader::DVIReader (istream &is, DVIActions *a) : StreamReader(is), _dviFormat(DVI_NONE), _actions(a)
-{
- _inPage = false;
- _pageHeight = _pageWidth = 0;
- _dvi2bp = 0.0;
- _tx = _ty = 0; // no cursor translation
- _prevYPos = numeric_limits<double>::min();
- _inPostamble = false;
- _totalPages = 0; // we don't know the correct value yet
- _currFontNum = 0;
- _currPageNum = 0;
- _pageLength = 0;
- _pagePos = 0;
- _prevBop = 0;
- _mag = 1;
-}
-
-
-DVIActions* DVIReader::replaceActions (DVIActions *a) {
- DVIActions *prev_actions = _actions;
- _actions = a;
- return prev_actions;
-}
-
-
-/** Evaluates the next DVI command, and computes the corresponding handler.
- * @param[in] compute_size if true, the size of variable-length parameters is computed
- * @param[out] handler handler for current DVI command
- * @param[out] length number of parameter bytes
- * @param[out] param the handler must be called with this parameter
- * @return opcode of current DVI command */
-int DVIReader::evalCommand (bool compute_size, CommandHandler &handler, int &length, int &param) {
- struct DVICommand {
- CommandHandler handler;
- int length; // number of parameter bytes
- };
-
- /* Each cmdFOO command reads the necessary number of bytes from the stream, so executeCommand
- doesn't need to know the exact DVI command format. Some cmdFOO methods are used for multiple
- DVI commands because they only differ in length of their parameters. */
- static const DVICommand commands[] = {
- {&DVIReader::cmdSetChar, 1}, {&DVIReader::cmdSetChar, 2}, {&DVIReader::cmdSetChar, 3}, {&DVIReader::cmdSetChar, 4}, // 128-131
- {&DVIReader::cmdSetRule, 8}, // 132
- {&DVIReader::cmdPutChar, 1}, {&DVIReader::cmdPutChar, 2}, {&DVIReader::cmdPutChar, 3}, {&DVIReader::cmdPutChar, 4}, // 133-136
- {&DVIReader::cmdPutRule, 8}, // 137
- {&DVIReader::cmdNop, 0}, // 138
- {&DVIReader::cmdBop, 44}, {&DVIReader::cmdEop, 0}, // 139-140
- {&DVIReader::cmdPush, 0}, {&DVIReader::cmdPop, 0}, // 141-142
- {&DVIReader::cmdRight, 1}, {&DVIReader::cmdRight, 2}, {&DVIReader::cmdRight, 3}, {&DVIReader::cmdRight, 4}, // 143-146
- {&DVIReader::cmdW0, 0}, // 147
- {&DVIReader::cmdW, 1}, {&DVIReader::cmdW, 2}, {&DVIReader::cmdW, 3}, {&DVIReader::cmdW, 4}, // 148-151
- {&DVIReader::cmdX0, 0}, // 152
- {&DVIReader::cmdX, 1}, {&DVIReader::cmdX, 2}, {&DVIReader::cmdX, 3}, {&DVIReader::cmdX, 4}, // 153-156
- {&DVIReader::cmdDown, 1}, {&DVIReader::cmdDown, 2}, {&DVIReader::cmdDown, 3}, {&DVIReader::cmdDown, 4}, // 157-160
- {&DVIReader::cmdY0, 0}, // 161
- {&DVIReader::cmdY, 1}, {&DVIReader::cmdY, 2}, {&DVIReader::cmdY, 3}, {&DVIReader::cmdY, 4}, // 162-165
- {&DVIReader::cmdZ0, 0}, // 166
- {&DVIReader::cmdZ, 1}, {&DVIReader::cmdZ, 2}, {&DVIReader::cmdZ, 3}, {&DVIReader::cmdZ, 4}, // 167-170
- {&DVIReader::cmdFontNum, 1}, {&DVIReader::cmdFontNum, 2}, {&DVIReader::cmdFontNum, 3}, {&DVIReader::cmdFontNum, 4}, // 235-238
- {&DVIReader::cmdXXX, 1}, {&DVIReader::cmdXXX, 2}, {&DVIReader::cmdXXX, 3}, {&DVIReader::cmdXXX, 4}, // 239-242
- {&DVIReader::cmdFontDef, 1}, {&DVIReader::cmdFontDef, 2}, {&DVIReader::cmdFontDef, 3}, {&DVIReader::cmdFontDef, 4}, // 243-246
- {&DVIReader::cmdPre, 0}, {&DVIReader::cmdPost, 0}, {&DVIReader::cmdPostPost, 0}, // 247-249
- {&DVIReader::cmdXPic, 0}, {&DVIReader::cmdXFontDef, 0},{&DVIReader::cmdXGlyphA, 0}, {&DVIReader::cmdXGlyphS, 0} // 251-254
- };
-
- const int opcode = in().get();
- if (!in() || opcode < 0) // at end of file
- throw InvalidDVIFileException("invalid file");
-
- param = -1;
- if (opcode >= 0 && opcode <= 127) {
- handler = &DVIReader::cmdSetChar0;
- length = 0;
- param = opcode;
- }
- else if (opcode >= 171 && opcode <= 234) {
- handler = &DVIReader::cmdFontNum0;
- length = 0;
- param = opcode-171;
- }
- else if (opcode >= 251 && opcode <= 254 && _dviFormat == DVI_XDV) { // XDV command?
- static const CommandHandler handlers[] = {
- &DVIReader::cmdXPic,
- &DVIReader::cmdXFontDef,
- &DVIReader::cmdXGlyphA,
- &DVIReader::cmdXGlyphS
- };
- handler = handlers[opcode-251];
- param = 0;
- }
- else if (opcode == 255 && _dviFormat == DVI_PTEX) { // direction command set by pTeX?
- handler = &DVIReader::cmdDir;
- length = 1;
- }
- else if (opcode >= 250) {
- ostringstream oss;
- oss << "undefined DVI command (opcode " << opcode << ')';
- throw DVIException(oss.str());
- }
- else {
- const int offset = opcode <= 170 ? 128 : 235-(170-128+1);
- handler = commands[opcode-offset].handler;
- if (!compute_size)
- length = commands[opcode-offset].length;
- else {
- if (opcode >= 239 && opcode <= 242) { // specials
- int len = opcode-238;
- UInt32 bytes = readUnsigned(len);
- in().seekg(-len, ios_base::cur);
- length = len+bytes;
- }
- else if (opcode >= 243 && opcode <= 246) { // fontdefs
- int len = opcode-242;
- len += 12;
- in().seekg(len, ios_base::cur); // skip fontnum, checksum, ssize, dsize
- UInt32 bytes = readUnsigned(1); // length of font path
- bytes += readUnsigned(1); // length of font name
- in().seekg(-len-2, ios_base::cur);
- length = len+bytes;
- }
- else
- length = commands[opcode-offset].length;
- }
- }
- if (param < 0)
- param = length;
- return opcode;
-}
-
-
-/** Reads a single DVI command from the current position of the input stream and calls the
- * corresponding cmdFOO method.
- * @return opcode of the executed command */
-int DVIReader::executeCommand () {
- SignalHandler::instance().check();
- CommandHandler handler;
- int len; // number of parameter bytes
- int param; // parameter of handler
- streampos pos = in().tellg();
- int opcode = evalCommand(false, handler, len, param);
- (this->*handler)(param);
- if (_dviState.v+_ty != _prevYPos) {
- _tx = _ty = 0;
- _prevYPos = _dviState.v;
- }
- if (COMPUTE_PAGE_LENGTH && _inPage && _actions) {
- // ensure progress() is called at 0%
- if (opcode == 139) // bop?
- _actions->progress(0, _pageLength);
- // ensure progress() is called at 100%
- if (in().peek() == 140) // eop reached?
- _pagePos = _pageLength;
- else
- _pagePos += in().tellg()-pos;
- _actions->progress(_pagePos, _pageLength);
- }
- return opcode;
-}
-
-
-/** Executes all DVI commands read from the input stream. */
-void DVIReader::executeAll () {
- int opcode = 0;
- while (!in().eof() && opcode >= 0) {
- try {
- opcode = executeCommand();
- }
- catch (const InvalidDVIFileException &e) {
- // end of stream reached
- opcode = -1;
- }
- }
-}
-
-
-/** Reads and executes the commands of a single page.
- * This methods stops reading after the page's eop command has been executed.
- * @param[in] n number of page to be executed
- * @returns true if page was read successfully */
-bool DVIReader::executePage (unsigned n) {
- in().clear(); // reset all status bits
- if (!in())
- throw DVIException("invalid DVI file");
- in().seekg(-1, ios_base::end); // stream pointer to last byte
- while (in().peek() == 223)
- in().seekg(-1, ios_base::cur); // skip fill bytes
- in().seekg(-4, ios_base::cur); // now on first byte of q (pointer to begin of postamble)
- UInt32 q = readUnsigned(4); // pointer to begin of postamble
- in().seekg(q, ios_base::beg); // now on begin of postamble
- if (executeCommand() != 248) // execute postamble command but not the fontdefs
- return false;
- if (n < 1 || n > _totalPages)
- return false;
- in().seekg(_prevBop, ios_base::beg); // now on last bop
- _inPostamble = false; // we jumped out of the postamble
- unsigned pageCount = _totalPages;
- for (; pageCount > n && _prevBop > 0; pageCount--) {
- in().seekg(41, ios_base::cur); // skip bop and 10*4 \count bytes => now on pointer to prev bop
- _prevBop = readSigned(4);
- in().seekg(_prevBop, ios_base::beg);
- }
- _currPageNum = n;
- while (pageCount == n && executeCommand() != 140); // 140 == eop
- return true;
-}
-
-
-bool DVIReader::executePages (unsigned first, unsigned last) {
- in().clear();
- if (!in())
- throw DVIException("invalid DVI file");
- if (first > last)
- swap(first, last);
- in().seekg(-1, ios_base::end); // stream pointer to last byte
- while (in().peek() == 223)
- in().seekg(-1, ios_base::cur); // skip fill bytes
- in().seekg(-4, ios_base::cur); // now on first byte of q (pointer to begin of postamble)
- UInt32 q = readUnsigned(4); // pointer to begin of postamble
- in().seekg(q, ios_base::beg); // now on begin of postamble
- if (executeCommand() != 248) // execute postamble command but not the fontdefs
- return false;
- first = max(1u, min(first, _totalPages));
- last = max(1u, min(last, _totalPages));
- in().seekg(_prevBop, ios_base::beg); // now on last bop
- _inPostamble = false; // we jumped out of the postamble
- unsigned count = _totalPages;
- for (; count > first && _prevBop > 0; count--) {
- in().seekg(41, ios_base::cur); // skip bop and 10*4 \count bytes => now on pointer to prev bop
- _prevBop = readSigned(4);
- in().seekg(_prevBop, ios_base::beg);
- }
- while (first <= last) {
- _currPageNum = first++;
- while (executeCommand () != 140); // 140 == eop
- }
- return true;
-}
-
-
-void DVIReader::executePreamble () {
- in().clear();
- if (!in())
- throw DVIException("invalid DVI file");
- in().seekg(0, ios_base::beg);
- if (in().get() != 247)
- throw DVIException("invalid DVI file");
- cmdPre(0);
-}
-
-
-/** Reads and executes the commands of the postamble. */
-void DVIReader::executePostamble () {
- in().clear(); // reset all status bits
- if (!in())
- throw DVIException("invalid DVI file");
- in().seekg(-1, ios_base::end); // stream pointer to last byte
- while (in().peek() == 223)
- in().seekg(-1, ios_base::cur); // skip fill bytes
-
- in().seekg(-4, ios_base::cur); // now on first byte of q (pointer to begin of postamble)
- UInt32 q = readUnsigned(4); // pointer to begin of postamble
- in().seekg(q, ios_base::beg); // now on begin of postamble
- while (executeCommand() != 249); // read all commands until postpost (= 249) is reached
-}
-
-
-/** Returns the current x coordinate in PS point units.
- * This is the horizontal position where the next output would be placed. */
-double DVIReader::getXPos () const {
- return _dviState.h+_tx;
-}
-
-
-/** Returns the current y coordinate in PS point units.
- * This is the vertical position where the next output would be placed. */
-double DVIReader::getYPos () const {
- return _dviState.v+_ty;
-}
-
-
-double DVIReader::getPageHeight () const {
- return _pageHeight;
-}
-
-
-double DVIReader::getPageWidth () const {
- return _pageWidth;
-}
-
-
-void DVIReader::verifyDVIFormat (int id) const {
- switch (id) {
- case DVI_STANDARD:
- case DVI_PTEX:
- case DVI_XDV:
- break;
- default:
- ostringstream oss;
- oss << "DVI format version " << id << " not supported";
- throw DVIException(oss.str());
- }
-}
-
-/////////////////////////////////////
-
-/** Reads and executes DVI preamble command. */
-void DVIReader::cmdPre (int) {
- _dviFormat = max(_dviFormat, (DVIFormat)readUnsigned(1)); // identification number
- verifyDVIFormat(_dviFormat);
- UInt32 num = readUnsigned(4); // numerator units of measurement
- UInt32 den = readUnsigned(4); // denominator units of measurement
- if (den == 0)
- throw DVIException("denominator of measurement unit is zero");
- _mag = readUnsigned(4); // magnification
- UInt32 k = readUnsigned(1); // length of following comment
- string cmt = readString(k); // comment
- // 1 dviunit * num/den == multiples of 0.0000001m
- // 1 dviunit * _dvibp: length of 1 dviunit in PS points * _mag/1000
- _dvi2bp = num/254000.0*72.0/den*_mag/1000.0;
- if (_actions)
- _actions->preamble(cmt);
-}
-
-
-/** Reads and executes DVI postamble command. */
-void DVIReader::cmdPost (int) {
- _prevBop = readUnsigned(4); // pointer to previous bop
- UInt32 num = readUnsigned(4);
- UInt32 den = readUnsigned(4);
- if (den == 0)
- throw DVIException("denominator of measurement unit is zero");
- _mag = readUnsigned(4);
- _pageHeight = readUnsigned(4); // height of tallest page in dvi units
- _pageWidth = readUnsigned(4); // width of widest page in dvi units
- readUnsigned(2); // max. stack depth
- _totalPages = readUnsigned(2); // total number of pages
- // 1 dviunit * num/den == multiples of 0.0000001m
- // 1 dviunit * _dvi2bp: length of 1 dviunit in PS points * _mag/1000
- _dvi2bp = num/254000.0*72.0/den*_mag/1000.0;
- _pageHeight *= _dvi2bp; // to pt units
- _pageWidth *= _dvi2bp;
- _inPostamble = true;
- if (_actions)
- _actions->postamble();
-}
-
-
-/** Reads and executes DVI postpost command. */
-void DVIReader::cmdPostPost (int) {
- _inPostamble = false;
- readUnsigned(4); // pointer to begin of postamble
- _dviFormat = max(_dviFormat, (DVIFormat)readUnsigned(1)); // identification byte
- verifyDVIFormat(_dviFormat);
- while (readUnsigned(1) == 223); // skip fill bytes (223), eof bit should be set now
-}
-
-
-/** Reads and executes Begin-Of-Page command. */
-void DVIReader::cmdBop (int) {
- Int32 c[10];
- for (int i=0; i < 10; i++)
- c[i] = readSigned(4);
- readSigned(4); // pointer to peceeding bop (-1 in case of first page)
- _dviState.reset(); // set all DVI registers to 0
- while (!_stateStack.empty())
- _stateStack.pop();
- _currFontNum = 0;
- _inPage = true;
- _pageLength = 0;
- _pagePos = 0;
- if (COMPUTE_PAGE_LENGTH) {
- // compute number of bytes in current page
- int length, param;
- CommandHandler handler;
- // read all commands until eop is found
- while (evalCommand(true, handler, length, param) != 140) {
- in().seekg(length, ios_base::cur);
- _pageLength += length+1; // parameter length + opcode length (1 byte)
- }
- ++_pageLength; // add length of eop command (1 byte)
- in().seekg(-int(_pageLength), ios_base::cur); // go back to first command following bop
- _pageLength += 45; // add length of bop command
- }
- beginPage(_currPageNum, c);
- if (_actions)
- _actions->beginPage(_currPageNum, c);
-}
-
-
-/** Reads and executes End-Of-Page command. */
-void DVIReader::cmdEop (int) {
- if (!_stateStack.empty())
- throw DVIException("stack not empty at end of page");
- _inPage = false;
- endPage(_currPageNum);
- if (_actions)
- _actions->endPage(_currPageNum);
-}
-
-
-/** Reads and executes push command. */
-void DVIReader::cmdPush (int) {
- _stateStack.push(_dviState);
-}
-
-
-/** Reads and executes pop command (restores pushed position information). */
-void DVIReader::cmdPop (int) {
- if (_stateStack.empty())
- throw DVIException("stack empty at pop command");
- else {
- DVIState prevState = _dviState;
- _dviState = _stateStack.top();
- _stateStack.pop();
- if (_actions) {
- if (prevState.h != _dviState.h)
- _actions->moveToX(_dviState.h + _tx);
- if (prevState.v != _dviState.v)
- _actions->moveToY(_dviState.v + _ty);
- if (prevState.d != _dviState.d)
- _actions->setTextOrientation(_dviState.d != WMODE_LR);
- }
- }
-}
-
-
-/** Helper function that actually sets/puts a charater. It is called by the
- * cmdSetChar and cmdPutChar methods.
- * @param[in] c character to typeset
- * @param[in] moveCursor if true, register h is increased by the character width
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::putChar (UInt32 c, bool moveCursor) {
- if (!_inPage)
- throw DVIException("set_char or put_char outside of page");
-
- if (_actions && !_actions->fontProcessingEnabled())
- return;
-
- FontManager &fm = FontManager::instance();
- Font *font = fm.getFont(_currFontNum);
- if (!font)
- throw DVIException("no font selected");
-
- if (VirtualFont *vf = dynamic_cast<VirtualFont*>(font)) { // is current font a virtual font?
- vector<UInt8> *dvi = const_cast<vector<UInt8>*>(vf->getDVI(c)); // get DVI snippet that describes character c
- if (dvi) {
- DVIState pos = _dviState; // save current cursor position
- _dviState.x = _dviState.y = _dviState.w = _dviState.z = 0;
- int save_fontnum = _currFontNum; // save current font number
- fm.enterVF(vf); // new font number context
- cmdFontNum0(fm.vfFirstFontNum(vf));
- double save_scale = _dvi2bp;
- // DVI units in virtual fonts are multiples of 1^(-20) times the scaled size of the VF
- _dvi2bp = vf->scaledSize()/(1 << 20);
-
- VectorInputStream<UInt8> vis(*dvi);
- istream &is = replaceStream(vis);
- try {
- executeAll(); // execute DVI fragment
- }
- catch (const DVIException &e) {
- // Message::estream(true) << "invalid dvi in vf: " << e.getMessage() << endl; // @@
- }
- replaceStream(is); // restore previous input stream
- _dvi2bp = save_scale; // restore previous scale factor
- fm.leaveVF(); // restore previous font number context
- cmdFontNum0(save_fontnum); // restore previous font number
- _dviState = pos; // restore previous cursor position
- }
- }
- else if (_actions)
- _actions->setChar(_dviState.h+_tx, _dviState.v+_ty, c, _dviState.d != WMODE_LR, font);
-
- if (moveCursor) {
- double dist = font->charWidth(c) * font->scaleFactor() * _mag/1000.0;
- switch (_dviState.d) {
- case WMODE_LR: _dviState.h += dist; break;
- case WMODE_TB: _dviState.v += dist; break;
- case WMODE_BT: _dviState.v -= dist; break;
- }
- }
-}
-
-
-/** Reads and executes set_char_x command. Puts a character at the current
- * position and advances the cursor.
- * @param[in] c character to set
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::cmdSetChar0 (int c) {
- putChar(c, true);
-}
-
-
-/** Reads and executes setx command. Puts a character at the current
- * position and advances the cursor.
- * @param[in] len number of parameter bytes (possible values: 1-4)
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::cmdSetChar (int len) {
- // According to the dvi specification all character codes are unsigned
- // except len == 4. At the moment all char codes are treated as unsigned...
- UInt32 c = readUnsigned(len); // if len == 4 c may be signed
- putChar(c, true);
-}
-
-
-/** Reads and executes putx command. Puts a character at the current
- * position but doesn't change the cursor position.
- * @param[in] len number of parameter bytes (possible values: 1-4)
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::cmdPutChar (int len) {
- // According to the dvi specification all character codes are unsigned
- // except len == 4. At the moment all char codes are treated as unsigned...
- Int32 c = readUnsigned(len);
- putChar(c, false);
-}
-
-
-/** Reads and executes set_rule command. Puts a solid rectangle at the current
- * position and updates the cursor position.
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::cmdSetRule (int) {
- if (_inPage) {
- double height = _dvi2bp*readSigned(4);
- double width = _dvi2bp*readSigned(4);
- if (_actions && height > 0 && width > 0)
- _actions->setRule(_dviState.h+_tx, _dviState.v+_ty, height, width);
- moveRight(width);
- }
- else
- throw DVIException("set_rule outside of page");
-}
-
-
-/** Reads and executes set_rule command. Puts a solid rectangle at the current
- * position but leaves the cursor position unchanged.
- * @throw DVIException if method is called ouside a bop/eop pair */
-void DVIReader::cmdPutRule (int) {
- if (_inPage) {
- double height = _dvi2bp*readSigned(4);
- double width = _dvi2bp*readSigned(4);
- if (_actions && height > 0 && width > 0)
- _actions->setRule(_dviState.h+_tx, _dviState.v+_ty, height, width);
- }
- else
- throw DVIException("put_rule outside of page");
-}
-
-
-void DVIReader::moveRight (double dx) {
- switch (_dviState.d) {
- case WMODE_LR: _dviState.h += dx; break;
- case WMODE_TB: _dviState.v += dx; break;
- case WMODE_BT: _dviState.v -= dx; break;
- }
- if (_actions) {
- if (_dviState.d == WMODE_LR)
- _actions->moveToX(_dviState.h+_tx);
- else
- _actions->moveToY(_dviState.v+_ty);
- }
-}
-
-
-void DVIReader::moveDown (double dy) {
- switch (_dviState.d) {
- case WMODE_LR: _dviState.v += dy; break;
- case WMODE_TB: _dviState.h -= dy; break;
- case WMODE_BT: _dviState.h += dy; break;
- }
- if (_actions) {
- if (_dviState.d == WMODE_LR)
- _actions->moveToY(_dviState.v+_ty);
- else
- _actions->moveToX(_dviState.h+_tx);
- }
-}
-
-
-void DVIReader::cmdRight (int len) {moveRight(_dvi2bp*readSigned(len));}
-void DVIReader::cmdDown (int len) {moveDown(_dvi2bp*readSigned(len));}
-void DVIReader::cmdX0 (int) {moveRight(_dviState.x);}
-void DVIReader::cmdY0 (int) {moveDown(_dviState.y);}
-void DVIReader::cmdW0 (int) {moveRight(_dviState.w);}
-void DVIReader::cmdZ0 (int) {moveDown(_dviState.z);}
-void DVIReader::cmdX (int len) {_dviState.x = _dvi2bp*readSigned(len); cmdX0(0);}
-void DVIReader::cmdY (int len) {_dviState.y = _dvi2bp*readSigned(len); cmdY0(0);}
-void DVIReader::cmdW (int len) {_dviState.w = _dvi2bp*readSigned(len); cmdW0(0);}
-void DVIReader::cmdZ (int len) {_dviState.z = _dvi2bp*readSigned(len); cmdZ0(0);}
-void DVIReader::cmdNop (int) {}
-
-
-/** Sets the text orientation (horizontal, vertical).
- * This command is only available in DVI files of format 3 (created by pTeX) */
-void DVIReader::cmdDir (int) {
- UInt8 wmode = readUnsigned(1);
- if (wmode == 4) // yoko mode (4) equals default LR mode (0)
- wmode = 0;
- if (wmode == 2 || wmode > 3) {
- ostringstream oss;
- oss << "invalid writing mode value " << wmode << " (0, 1, or 3 expected)";
- throw DVIException(oss.str());
- }
- _dviState.d = (WritingMode)wmode;
- if (_actions)
- _actions->setTextOrientation(_dviState.d != WMODE_LR);
-}
-
-
-void DVIReader::cmdXXX (int len) {
- if (_inPage) {
- UInt32 numBytes = readUnsigned(len);
- string s = readString(numBytes);
- if (_actions)
- _actions->special(s, _dvi2bp);
- }
- else
- throw DVIException("special outside of page");
-}
-
-
-/** Selects a previously defined font by its number.
- * @param[in] num font number
- * @throw DVIException if font number is undefined */
-void DVIReader::cmdFontNum0 (int num) {
- if (_actions && !_actions->fontProcessingEnabled())
- return;
-
- if (Font *font = FontManager::instance().getFont(num)) {
- _currFontNum = num;
- if (_actions && !dynamic_cast<VirtualFont*>(font))
- _actions->setFont(FontManager::instance().fontID(num), font); // all fonts get a recomputed ID
- }
- else {
- ostringstream oss;
- oss << "undefined font number " << num;
- throw DVIException(oss.str());
- }
-}
-
-
-/** Selects a previously defined font.
- * @param[in] len size of font number variable (in bytes)
- * @throw DVIException if font number is undefined */
-void DVIReader::cmdFontNum (int len) {
- UInt32 num = readUnsigned(len);
- cmdFontNum0(num);
-}
-
-
-/** Helper function to handle a font definition.
- * @param[in] fontnum local font number
- * @param[in] name font name
- * @param[in] cs checksum to be compared with TFM checksum
- * @param[in] ds design size in PS point units
- * @param[in] ss scaled size in PS point units */
-void DVIReader::defineFont (UInt32 fontnum, const string &name, UInt32 cs, double ds, double ss) {
- if (_actions && !_actions->fontProcessingEnabled())
- return;
- FontManager &fm = FontManager::instance();
- int id = fm.registerFont(fontnum, name, cs, ds, ss);
- Font *font = fm.getFontById(id);
- if (VirtualFont *vf = dynamic_cast<VirtualFont*>(font)) {
- // read vf file, register its font and character definitions
- fm.enterVF(vf);
- ifstream ifs(vf->path(), ios::binary);
- VFReader vfReader(ifs);
- vfReader.replaceActions(this);
- vfReader.executeAll();
- fm.leaveVF();
- }
- if (_actions)
- _actions->defineFont(id, font);
-}
-
-
-/** Defines a new font.
- * @param[in] len size of font number variable (in bytes) */
-void DVIReader::cmdFontDef (int len) {
- UInt32 fontnum = readUnsigned(len); // font number
- UInt32 checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
- UInt32 ssize = readUnsigned(4); // scaled size of font in DVI units
- UInt32 dsize = readUnsigned(4); // design size of font in DVI units
- UInt32 pathlen = readUnsigned(1); // length of font path
- UInt32 namelen = readUnsigned(1); // length of font name
- string fontpath = readString(pathlen);
- string fontname = readString(namelen);
-
- // @@ TODO: avoid processing the font definitions in the postamble
- defineFont(fontnum, fontname, checksum, dsize*_dvi2bp, ssize*_dvi2bp);
-}
-
-
-/** This template method is called by the VFReader after reading a font definition from a VF file.
- * @param[in] fontnum local font number
- * @param[in] path path to font file
- * @param[in] name font name
- * @param[in] checksum checksum to be compared with TFM checksum
- * @param[in] dsize design size in PS point units
- * @param[in] ssize scaled size in PS point units */
-void DVIReader::defineVFFont (UInt32 fontnum, string path, string name, UInt32 checksum, double dsize, double ssize) {
- if (VirtualFont *vf = FontManager::instance().getVF())
- defineFont(fontnum, name, checksum, dsize, ssize * vf->scaleFactor());
-}
-
-
-/** This template method is called by the VFReader after reading a character definition from a VF file.
- * @param[in] c character number
- * @param[in] dvi DVI fragment describing the character */
-void DVIReader::defineVFChar (UInt32 c, vector<UInt8> *dvi) {
- FontManager::instance().assignVfChar(c, dvi);
-}
-
-
-/** XDV extension: include image or pdf file.
- * parameters: box[1] matrix[4][6] p[2] len[2] path[l] */
-void DVIReader::cmdXPic (int) {
- // just skip the parameters
- readUnsigned(1); // box
- for (int i=0; i < 6; i++) // matrix
- readSigned(4);
- readSigned(2); // page number
- UInt16 len = readUnsigned(2);
- readString(len); // path to image/pdf file
-}
-
-
-void DVIReader::cmdXFontDef (int) {
- Int32 fontnum = readSigned(4);
- double ptsize = _dvi2bp*readUnsigned(4);
- UInt16 flags = readUnsigned(2);
- UInt8 psname_len = readUnsigned(1);
- UInt8 fmname_len = readUnsigned(1);
- UInt8 stname_len = readUnsigned(1);
- string fontname = readString(psname_len);
- readString(fmname_len);
- readString(stname_len);
- FontStyle style;
- Color color;
- if (flags & 0x0100) { // vertical?
- }
- if (flags & 0x0200) { // colored?
- // The font color must not interfere with color specials. If the font color is not black,
- // all color specials should be ignored, i.e. glyphs of a non-black font have a fixed color
- // that can't be changed by colors specials.
- UInt32 rgba = readUnsigned(4);
- color.set(UInt8(rgba >> 24), UInt8((rgba >> 16) & 0xff), UInt8((rgba >> 8) & 0xff));
- }
- if (flags & 0x1000) // extend?
- style.extend = _dvi2bp*readSigned(4);
- if (flags & 0x2000) // slant?
- style.slant = _dvi2bp*readSigned(4);
- if (flags & 0x4000) // embolden?
- style.bold = _dvi2bp*readSigned(4);
- if (flags & 0x0800) { // variations?
- UInt16 num_variations = readSigned(2);
- for (int i=0; i < num_variations; i++)
- readUnsigned(4);
- }
- if (_inPage && _actions && _actions->fontProcessingEnabled())
- FontManager::instance().registerFont(fontnum, fontname, ptsize, style, color);
-}
-
-
-void DVIReader::cmdXGlyphA (int) {
- putGlyphArray(false);
-}
-
-
-void DVIReader::cmdXGlyphS (int) {
- putGlyphArray(true);
-}
-
-
-void DVIReader::putGlyphArray (bool xonly) {
- double strwidth = _dvi2bp*readSigned(4);
- UInt16 num_glyphs = readUnsigned(2);
- vector<Int32> x(num_glyphs);
- vector<Int32> y(num_glyphs);
- for (int i=0; i < num_glyphs; i++) {
- x[i] = readSigned(4);
- y[i] = xonly ? 0 : readSigned(4);
- }
- if (_actions && _actions->fontProcessingEnabled()) {
- if (Font *font = FontManager::instance().getFont(_currFontNum)) {
- for (int i=0; i < num_glyphs; i++) {
- UInt16 glyph_index = readUnsigned(2);
- double xx = _dviState.h + x[i]*_dvi2bp + _tx;
- double yy = _dviState.v + y[i]*_dvi2bp + _ty;
- _actions->setChar(xx, yy, glyph_index, false, font);
- }
- }
- }
- else {
- for (int i=0; i < num_glyphs; i++)
- readUnsigned(2);
- }
- moveRight(strwidth);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.h
deleted file mode 100644
index d57250295b8..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIReader.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*************************************************************************
-** DVIReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVIREADER_H
-#define DVISVGM_DVIREADER_H
-
-#include <limits>
-#include <map>
-#include <stack>
-#include <string>
-#include "MessageException.h"
-#include "StreamReader.h"
-#include "VFActions.h"
-#include "types.h"
-
-
-struct DVIException : public MessageException
-{
- DVIException (const std::string &msg) : MessageException(msg) {}
-};
-
-struct InvalidDVIFileException : public DVIException
-{
- InvalidDVIFileException(const std::string &msg) : DVIException(msg) {}
-};
-
-struct DVIActions;
-struct FileFinder;
-
-class DVIReader : public StreamReader, protected VFActions
-{
- typedef void (DVIReader::*CommandHandler)(int);
- enum DVIFormat {DVI_NONE=0, DVI_STANDARD=2, DVI_PTEX=3, DVI_XDV=5};
- enum WritingMode {WMODE_LR=0, WMODE_TB=1, WMODE_BT=3};
-
- struct DVIState
- {
- double h, v; ///< horizontal and vertical cursor position
- double x, w, y, z; ///< additional registers to store horizontal (x, w) and vertical (y, z) positions
- WritingMode d; ///< direction: 0: horizontal, 1: vertical(top->bottom), 3: vertical (bottom->top)
- DVIState () {reset();}
- void reset () {h = v = x = w = y = z = 0.0; d=WMODE_LR;}
- };
-
- public:
- DVIReader (std::istream &is, DVIActions *a=0);
-
- bool executeDocument ();
- void executeAll ();
- bool executeAllPages ();
- void executePreamble ();
- void executePostamble ();
- bool executePage (unsigned n);
- bool executePages (unsigned first, unsigned last);
- bool inPostamble () const {return _inPostamble;}
- double getXPos () const;
- double getYPos () const;
- void finishLine () {_prevYPos = std::numeric_limits<double>::min();}
- void translateToX (double x) {_tx=x-_dviState.h-_tx;}
- void translateToY (double y) {_ty=y-_dviState.v-_ty;}
- double getPageWidth () const;
- double getPageHeight () const;
- int getStackDepth () const {return _stateStack.size();}
- int getCurrentFontNumber () const {return _currFontNum;}
- unsigned getCurrentPageNumber () const {return _currPageNum;}
- unsigned getTotalPages () const {return _totalPages;}
- DVIActions* getActions () const {return _actions;}
- DVIActions* replaceActions (DVIActions *a);
-
- protected:
- void verifyDVIFormat (int id) const;
- int executeCommand ();
- int evalCommand (bool compute_size, CommandHandler &handler, int &length, int &param);
- void moveRight (double dx);
- void moveDown (double dy);
- void putChar (UInt32 c, bool moveCursor);
- void putGlyphArray (bool xonly);
- void defineFont (UInt32 fontnum, const std::string &name, UInt32 cs, double ds, double ss);
- virtual void beginPage (unsigned pageno, Int32 *c) {}
- virtual void endPage (unsigned pageno) {}
-
- // VFAction methods
- void defineVFFont (UInt32 fontnum, std::string path, std::string name, UInt32 checksum, double dsize, double ssize);
- void defineVFChar (UInt32 c, std::vector<UInt8> *dvi);
-
- // the following methods represent the DVI commands
- // they are called by executeCommand and should not be used directly
- void cmdSetChar0 (int c);
- void cmdSetChar (int len);
- void cmdPutChar (int len);
- void cmdSetRule (int len);
- void cmdPutRule (int len);
- void cmdNop (int len);
- void cmdBop (int len);
- void cmdEop (int len);
- void cmdPush (int len);
- void cmdPop (int len);
- void cmdDir (int len);
- void cmdRight (int len);
- void cmdDown (int len);
- void cmdX0 (int len);
- void cmdY0 (int len);
- void cmdW0 (int len);
- void cmdZ0 (int len);
- void cmdX (int len);
- void cmdY (int len);
- void cmdW (int len);
- void cmdZ (int len);
- void cmdFontDef (int len);
- void cmdFontNum0 (int n);
- void cmdFontNum (int len);
- void cmdXXX (int len);
- void cmdPre (int len);
- void cmdPost (int len);
- void cmdPostPost (int len);
- void cmdXPic (int len);
- void cmdXFontDef (int len);
- void cmdXGlyphA (int len);
- void cmdXGlyphS (int len);
-
- private:
- DVIFormat _dviFormat; ///< format of DVI file currently processed
- DVIActions *_actions; ///< actions to be performed on various DVI events
- bool _inPage; ///< true if between bop and eop
- unsigned _totalPages; ///< total number of pages in dvi file
- unsigned _currPageNum; ///< current page number
- int _currFontNum; ///< current font number
- double _dvi2bp; ///< factor to convert dvi units to PS points
- UInt32 _mag; ///< magnification factor * 1000
- bool _inPostamble; ///< true if stream pointer is inside the postamble
- Int32 _prevBop; ///< pointer to previous bop
- double _pageHeight, _pageWidth; ///< page height and width in PS points
- DVIState _dviState; ///< current cursor position
- std::stack<DVIState> _stateStack;
- double _prevYPos; ///< previous vertical cursor position
- double _tx, _ty; ///< tranlation of cursor position
- size_t _pageLength; ///< number of bytes between current bop end eop
- std::streampos _pagePos; ///< distance of current DVI command from bop (in bytes)
-
- public:
- static bool COMPUTE_PAGE_LENGTH; ///< if true, the bop handler computes the number of bytes of the current page
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.cpp
deleted file mode 100644
index 8f9bb1f63a3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.cpp
+++ /dev/null
@@ -1,370 +0,0 @@
-/*************************************************************************
-** DVIToSVG.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdlib>
-#include <ctime>
-#include <fstream>
-#include <sstream>
-#include "Calculator.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "FileFinder.h"
-#include "GlyphTracerMessages.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "Matrix.h"
-#include "Message.h"
-#include "PageRanges.h"
-#include "PageSize.h"
-#include "SVGOutputBase.h"
-//
-///////////////////////////////////
-// special handlers
-
-#include "BgColorSpecialHandler.h"
-#include "ColorSpecialHandler.h"
-#include "DvisvgmSpecialHandler.h"
-#include "EmSpecialHandler.h"
-#include "PdfSpecialHandler.h"
-#include "HtmlSpecialHandler.h"
-#ifndef HAVE_LIBGS
- #include "NoPsSpecialHandler.h"
-#endif
-#ifndef DISABLE_GS
- #include "PsSpecialHandler.h"
-#endif
-#include "TpicSpecialHandler.h"
-
-///////////////////////////////////
-
-
-using namespace std;
-
-
-class PSHeaderActions : public DVIActions
-{
- public :
- PSHeaderActions (DVIToSVG &dvisvg) : _dvisvg(dvisvg) {}
-
- void special (const std::string &str, double dvi2bp) {
- // execute PS headers only
- if (!str.empty() && (str[0] == '!' || str.substr(0, 7) == "header="))
- _dvisvg.specialManager().process(str, dvi2bp, 0);
- }
-
- bool fontProcessingEnabled () const {
- return false;
- }
-
- void endPage (unsigned) {
- _dvisvg.specialManager().leavePSHeaderSection();
- }
-
- BoundingBox& bbox () {return _bbox;}
-
- private:
- DVIToSVG &_dvisvg;
- BoundingBox _bbox;
-};
-
-
-/** 'a': trace all glyphs even if some of them are already cached
- * 'm': trace missing glyphs, i.e. glyphs not yet cached
- * 0 : only trace actually required glyphs */
-char DVIToSVG::TRACE_MODE = 0;
-
-
-DVIToSVG::DVIToSVG (istream &is, SVGOutputBase &out) : DVIReader(is), _out(out)
-{
- replaceActions(new DVIToSVGActions(*this, _svg));
-}
-
-
-DVIToSVG::~DVIToSVG () {
- delete replaceActions(0);
-}
-
-
-/** Starts the conversion process.
- * @param[in] first number of first page to convert
- * @param[in] last number of last page to convert
- * @param[out] pageinfo (number of converted pages, number of total pages) */
-void DVIToSVG::convert (unsigned first, unsigned last, pair<int,int> *pageinfo) {
- if (getTotalPages() == 0) {
- executePreamble();
- executePostamble(); // collect scaling information
- }
- if (first > last)
- swap(first, last);
- if (first > getTotalPages()) {
- ostringstream oss;
- oss << "file contains only " << getTotalPages() << " page";
- if (getTotalPages() > 1)
- oss << 's';
- throw DVIException(oss.str());
- }
- last = min(last, getTotalPages());
-
-#ifndef DISABLE_GS
- // ensure loading of PostScript prologues given at the beginning of the first page
- // (prologue files are always referenced in first page)
- PSHeaderActions headerActions(*this);
- DVIActions *save = replaceActions(&headerActions);
- try {
- executePage(1);
- replaceActions(save);
- }
- catch (PSException &e) {
- replaceActions(save);
- throw;
- }
-#endif
-
- for (unsigned i=first; i <= last; ++i) {
- executePage(i);
- embedFonts(_svg.rootNode());
- _svg.write(_out.getPageStream(getCurrentPageNumber(), getTotalPages()));
- string fname = _out.filename(i, getTotalPages());
- Message::mstream(false, Message::MC_PAGE_WRITTEN) << "\npage written to " << (fname.empty() ? "<stdout>" : fname) << '\n';
- _svg.reset();
- static_cast<DVIToSVGActions*>(getActions())->reset();
- }
- if (pageinfo) {
- pageinfo->first = last-first+1;
- pageinfo->second = getTotalPages();
- }
-}
-
-
-/** Convert DVI pages specified by a page range string.
- * @param[in] rangestr string describing the pages to convert
- * @param[out] pageinfo (number of converted pages, number of total pages) */
-void DVIToSVG::convert (const string &rangestr, pair<int,int> *pageinfo) {
- if (getTotalPages() == 0) {
- executePreamble();
- executePostamble(); // collect scaling information
- }
- PageRanges ranges;
- if (!ranges.parse(rangestr, getTotalPages()))
- throw MessageException("invalid page range format");
- FORALL(ranges, PageRanges::ConstIterator, it)
- convert(it->first, it->second);
- if (pageinfo) {
- pageinfo->first = ranges.pages();
- pageinfo->second = getTotalPages();
- }
-}
-
-
-/** This template method is called by parent class DVIReader before
- * executing the BOP actions.
- * @param[in] pageno physical page number (1 = first page)
- * @param[in] c contains information about the page (page number etc.) */
-void DVIToSVG::beginPage (unsigned pageno, Int32 *c) {
- if (dynamic_cast<DVIToSVGActions*>(getActions())) {
- Message::mstream().indent(0);
- Message::mstream(false, Message::MC_PAGE_NUMBER) << "processing page " << pageno;
- if (pageno != (unsigned)c[0]) // Does page number shown on page differ from physical page number?
- Message::mstream(false) << " [" << c[0] << ']';
- Message::mstream().indent(1);
- _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " VERSION " "));
- }
-}
-
-
-/** This template method is called by parent class DVIReader before
- * executing the EOP actions. */
-void DVIToSVG::endPage (unsigned pageno) {
- if (!dynamic_cast<DVIToSVGActions*>(getActions()))
- return;
-
- _specialManager.notifyEndPage(pageno);
- // set bounding box and apply page transformations
- BoundingBox &bbox = getActions()->bbox();
- bbox.unlock();
- Matrix matrix;
- getPageTransformation(matrix);
- static_cast<DVIToSVGActions*>(getActions())->setPageMatrix(matrix);
- if (_bboxString == "min")
- bbox.transform(matrix);
- if (string("dvi none min").find(_bboxString) == string::npos) {
- istringstream iss(_bboxString);
- StreamInputReader ir(iss);
- ir.skipSpace();
- if (isalpha(ir.peek())) {
- // set explicitly given page format
- PageSize size(_bboxString);
- if (size.valid()) {
- // convention: DVI position (0,0) equals (1in, 1in) relative
- // to the upper left vertex of the page (see DVI specification)
- const double border = -72;
- bbox = BoundingBox(border, border, size.widthInBP()+border, size.heightInBP()+border);
- }
- }
- else { // set/modify bounding box by explicitly given values
- try {
- bbox.set(_bboxString);
- }
- catch (const MessageException &e) {
- }
- }
- }
- else if (_bboxString == "dvi") {
- // center page content
- double dx = (getPageWidth()-bbox.width())/2;
- double dy = (getPageHeight()-bbox.height())/2;
- bbox += BoundingBox(-dx, -dy, dx, dy);
- }
- if (_bboxString != "none") {
- if (bbox.width() == 0)
- Message::wstream(false) << "\npage is empty\n";
- else {
- _svg.setBBox(bbox);
-
- const double bp2pt = 72.27/72;
- const double bp2mm = 25.4/72;
- Message::mstream(false) << '\n';
- Message::mstream(false, Message::MC_PAGE_SIZE) << "page size: " << XMLString(bbox.width()*bp2pt) << "pt"
- " x " << XMLString(bbox.height()*bp2pt) << "pt"
- " (" << XMLString(bbox.width()*bp2mm) << "mm"
- " x " << XMLString(bbox.height()*bp2mm) << "mm)";
- Message::mstream(false) << '\n';
- }
- }
-}
-
-
-void DVIToSVG::getPageTransformation(Matrix &matrix) const {
- if (_transCmds.empty())
- matrix.set(1); // unity matrix
- else {
- Calculator calc;
- if (getActions()) {
- const double bp2pt = 72.27/72;
- BoundingBox &bbox = getActions()->bbox();
- calc.setVariable("ux", bbox.minX()*bp2pt);
- calc.setVariable("uy", bbox.minY()*bp2pt);
- calc.setVariable("w", bbox.width()*bp2pt);
- calc.setVariable("h", bbox.height()*bp2pt);
- }
- calc.setVariable("pt", 1);
- calc.setVariable("in", 72.27);
- calc.setVariable("cm", 72.27/2.54);
- calc.setVariable("mm", 72.27/25.4);
- matrix.set(_transCmds, calc);
- }
-}
-
-
-static void collect_chars (map<const Font*, set<int> > &fm) {
- typedef const map<const Font*, set<int> > UsedCharsMap;
- FORALL(fm, UsedCharsMap::const_iterator, it) {
- if (it->first->uniqueFont() != it->first) {
- FORALL(it->second, set<int>::const_iterator, cit)
- fm[it->first->uniqueFont()].insert(*cit);
- }
- }
-}
-
-
-/** Adds the font information to the SVG tree.
- * @param[in] svgElement the font nodes are added to this node */
-void DVIToSVG::embedFonts (XMLElementNode *svgElement) {
- if (!svgElement)
- return;
- if (!getActions()) // no dvi actions => no chars written => no fonts to embed
- return;
-
- typedef map<const Font*, set<int> > UsedCharsMap;
- const DVIToSVGActions *svgActions = static_cast<DVIToSVGActions*>(getActions());
- UsedCharsMap &usedChars = svgActions->getUsedChars();
-
- collect_chars(usedChars);
-
- GlyphTracerMessages messages;
- FORALL(usedChars, UsedCharsMap::const_iterator, it) {
- const Font *font = it->first;
- if (const PhysicalFont *ph_font = dynamic_cast<const PhysicalFont*>(font)) {
- if (TRACE_MODE)
- ph_font->traceAllGlyphs(TRACE_MODE == 'a', &messages);
-
- if (font->path()) // does font file exist?
- _svg.append(*ph_font, it->second, &messages);
- else
- Message::wstream(true) << "can't embed font '" << font->name() << "'\n";
- }
- else
- Message::wstream(true) << "can't embed font '" << font->name() << "'\n";
- }
- _svg.appendFontStyles(svgActions->getUsedFonts());
-}
-
-
-/** Enables or disables processing of specials. If ignorelist == 0, all
- * supported special handlers are loaded. To disable selected sets of specials,
- * the corresponding prefixes can be given separated by non alpha-numeric characters,
- * e.g. "color, ps, em" or "color: ps em" etc.
- * A single "*" in the ignore list disables all specials.
- * @param[in] ignorelist list of special prefixes to ignore
- * @param[in] pswarning if true, shows warning about disabled PS support
- * @return the SpecialManager that handles special statements */
-const SpecialManager* DVIToSVG::setProcessSpecials (const char *ignorelist, bool pswarning) {
- if (ignorelist && strcmp(ignorelist, "*") == 0) { // ignore all specials?
- _specialManager.unregisterHandlers();
- }
- else {
- // add special handlers
- SpecialHandler *handlers[] = {
- 0, // placeholder for PsSpecialHandler
- new BgColorSpecialHandler, // handles background color special
- new ColorSpecialHandler, // handles color specials
- new DvisvgmSpecialHandler, // handles raw SVG embeddings
- new EmSpecialHandler, // handles emTeX specials
- new HtmlSpecialHandler, // handles hyperref specials
- new PdfSpecialHandler, // handles pdf specials
- new TpicSpecialHandler, // handles tpic specials
- 0
- };
- SpecialHandler **p = handlers;
-#ifndef DISABLE_GS
- if (Ghostscript().available())
- *p = new PsSpecialHandler;
- else
-#endif
- {
-#ifndef HAVE_LIBGS
- *p = new NoPsSpecialHandler; // dummy PS special handler that only prints warning messages
- if (pswarning) {
-#ifdef DISABLE_GS
- Message::wstream() << "processing of PostScript specials has been disabled permanently\n";
-#else
- Message::wstream() << "processing of PostScript specials is disabled (Ghostscript not found)\n";
-#endif
- }
-#endif
- }
- _specialManager.unregisterHandlers();
- _specialManager.registerHandlers(p, ignorelist);
- }
- return &_specialManager;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.h
deleted file mode 100644
index 626e27c568a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVG.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** DVIToSVG.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVITOSVG_H
-#define DVISVGM_DVITOSVG_H
-
-#include <iostream>
-#include <string>
-#include <utility>
-#include "DVIReader.h"
-#include "SpecialManager.h"
-#include "SVGTree.h"
-
-class Matrix;
-struct SVGOutputBase;
-
-class DVIToSVG : public DVIReader
-{
- public:
- DVIToSVG (std::istream &is, SVGOutputBase &out);
- ~DVIToSVG ();
- void convert (unsigned firstPage, unsigned lastPage, std::pair<int,int> *pageinfo=0);
- void convert (const std::string &range, std::pair<int,int> *pageinfo=0);
- const SpecialManager* setProcessSpecials (const char *ignorelist=0, bool pswarning=false);
- const SpecialManager& specialManager () const {return _specialManager;}
- void setPageSize (const std::string &name) {_bboxString = name;}
- void setPageTransformation (const std::string &cmds) {_transCmds = cmds;}
- void getPageTransformation (Matrix &matrix) const;
-
- public:
- static char TRACE_MODE;
-
- protected:
- DVIToSVG (const DVIToSVG &);
- DVIToSVG operator = (const DVIToSVG &);
- void beginPage (unsigned pageno, Int32 *c);
- void endPage (unsigned pageno);
- void embedFonts (XMLElementNode *svgElement);
-
- private:
- SVGTree _svg;
- SVGOutputBase &_out;
- std::string _bboxString;
- std::string _transCmds;
- SpecialManager _specialManager;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.cpp
deleted file mode 100644
index 7d25678d227..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.cpp
+++ /dev/null
@@ -1,368 +0,0 @@
-/*************************************************************************
-** DVIToSVGActions.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <ctime>
-#include "BoundingBox.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "GlyphTracerMessages.h"
-#include "SpecialManager.h"
-#include "System.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-
-using namespace std;
-
-
-double DVIToSVGActions::PROGRESSBAR_DELAY=1000; // initial delay in seconds (values >= 1000 disable the progressbar)
-
-
-DVIToSVGActions::DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg)
- : _svg(svg), _dvisvg(dvisvg), _pageMatrix(0), _bgcolor(Color::TRANSPARENT), _boxes(0)
-{
- _currentFontNum = -1;
- _pageCount = 0;
-}
-
-
-DVIToSVGActions::~DVIToSVGActions () {
- delete _pageMatrix;
- delete _boxes;
-}
-
-
-void DVIToSVGActions::reset() {
- _usedChars.clear();
- _usedFonts.clear();
- _bbox = BoundingBox();
- _currentFontNum = -1;
- _bgcolor = Color::TRANSPARENT;
-}
-
-
-void DVIToSVGActions::setPageMatrix (const Matrix &matrix) {
- delete _pageMatrix;
- _pageMatrix = new Matrix(matrix);
-}
-
-
-void DVIToSVGActions::moveToX (double x) {
- _dvisvg.specialManager().notifyPositionChange(getX(), getY());
- _svg.setX(x);
-}
-
-
-void DVIToSVGActions::moveToY (double y) {
- _dvisvg.specialManager().notifyPositionChange(getX(), getY());
- _svg.setY(y);
-}
-
-
-/** This method is called when a "set char" command was found in the DVI file.
- * It draws a character of the current font.
- * @param[in] x horizontal position of left bounding box edge
- * @param[in] y vertical position of the character's baseline
- * @param[in] c character code relative to the current font
- * @param[in] vertical true if we're in vertical mode
- * @param[in] font font to be used */
-void DVIToSVGActions::setChar (double x, double y, unsigned c, bool vertical, const Font *font) {
- // If we use SVG fonts there is no need to record all font name/char/size combinations
- // because the SVG font mechanism handles this automatically. It's sufficient to
- // record font names and chars. The various font sizes can be ignored here.
- // For a given font object, Font::uniqueFont() returns the same unique font object for
- // all fonts with the same name.
- _usedChars[SVGTree::USE_FONTS ? font->uniqueFont() : font].insert(c);
-
- // However, we record all required fonts
- _usedFonts.insert(font);
- _svg.appendChar(c, x, y, *font);
-
- static string fontname;
- GlyphTracerMessages callback(fontname != font->name(), false);
- fontname = font->name();
-
- BoundingBox charbox;
- GlyphMetrics metrics;
- font->getGlyphMetrics(c, vertical, metrics);
- const PhysicalFont* pf = dynamic_cast<const PhysicalFont*>(font);
- if (PhysicalFont::EXACT_BBOX && pf) {
- GlyphMetrics exact_metrics;
- pf->getExactGlyphBox(c, exact_metrics, vertical, &callback);
- if (vertical) {
- // move top of bbox to upper margin of glyph (just an approximation yet)
- y += (metrics.d-exact_metrics.h-exact_metrics.d)/2;
- }
- metrics = exact_metrics;
- }
- BoundingBox bbox(x-metrics.wl, y-metrics.h, x+metrics.wr, y+metrics.d);
-
- // update bounding box
- if (!getMatrix().isIdentity())
- bbox.transform(getMatrix());
- embed(bbox);
-#if 0
- XMLElementNode *rect = new XMLElementNode("rect");
- rect->addAttribute("x", x-metrics.wl);
- rect->addAttribute("y", y-metrics.h);
- rect->addAttribute("width", metrics.wl+metrics.wr);
- rect->addAttribute("height", metrics.h+metrics.d);
- rect->addAttribute("fill", "none");
- rect->addAttribute("stroke", "red");
- rect->addAttribute("stroke-width", "0.5");
- _svg.appendToPage(rect);
- if (metrics.d > 0) {
- XMLElementNode *line = new XMLElementNode("line");
- line->addAttribute("x1", x-metrics.wl);
- line->addAttribute("y1", y);
- line->addAttribute("x2", x+metrics.wr);
- line->addAttribute("y2", y);
- line->addAttribute("stroke", "blue");
- line->addAttribute("stroke-width", "0.5");
- _svg.appendToPage(line);
- }
- if (metrics.wl > 0) {
- XMLElementNode *line = new XMLElementNode("line");
- line->addAttribute("x1", x);
- line->addAttribute("y1", y-metrics.h);
- line->addAttribute("x2", x);
- line->addAttribute("y2", y+metrics.d);
- line->addAttribute("stroke", "blue");
- line->addAttribute("stroke-width", "0.5");
- _svg.appendToPage(line);
- }
-#endif
-}
-
-
-/** This method is called when a "set rule" or "put rule" command was found in the
- * DVI file. It draws a solid unrotated rectangle.
- * @param[in] x horizontal position of left edge
- * @param[in] y vertical position of bottom(!) edge
- * @param[in] height length of the vertical edges
- * @param[in] width length of the horizontal edges */
-void DVIToSVGActions::setRule (double x, double y, double height, double width) {
- // (x,y) is the lower left corner of the rectangle
- XMLElementNode *rect = new XMLElementNode("rect");
- rect->addAttribute("x", x);
- rect->addAttribute("y", y-height);
- rect->addAttribute("height", height);
- rect->addAttribute("width", width);
- if (!getMatrix().isIdentity())
- rect->addAttribute("transform", getMatrix().getSVG());
- if (getColor() != Color::BLACK)
- rect->addAttribute("fill", _svg.getColor().rgbString());
- _svg.appendToPage(rect);
-
- // update bounding box
- BoundingBox bb(x, y-height, x+width, y);
- if (!getMatrix().isIdentity())
- bb.transform(getMatrix());
- embed(bb);
-}
-
-
-/** This method is called when a "set font" command was found in the DVI file. The
- * font must be previously defined.
- * @param[in] num unique number of the font in the DVI file (not necessarily equal to the DVI font number)
- * @param[in] font pointer to the font object (always represents a physical font and never a virtual font) */
-void DVIToSVGActions::setFont (int num, const Font *font) {
- _currentFontNum = num;
- _svg.setFont(num, font);
-}
-
-
-/** This method is called when a "special" command was found in the DVI file.
- * @param[in] s the special expression
- * @param[in] dvi2bp factor to scale DVI units to PS points */
-void DVIToSVGActions::special (const string &s, double dvi2bp) {
- try {
- _dvisvg.specialManager().process(s, dvi2bp, this, this);
- // @@ output message in case of unsupported specials?
- }
- catch (const SpecialException &e) {
- Message::estream(true) << "error in special '" << s << "': " << e.what() << '\n';
- }
-}
-
-
-void DVIToSVGActions::beginSpecial (const char *prefix) {
-}
-
-
-void DVIToSVGActions::endSpecial (const char *) {
-}
-
-
-/** This method is called when the DVI preamble was read
- * @param[in] cmt preamble comment text. */
-void DVIToSVGActions::preamble (const string &cmt) {
-}
-
-
-void DVIToSVGActions::postamble () {
-}
-
-
-/** This method is called when a "begin of page (bop)" command was found in the DVI file.
- * @param[in] pageno physical page number
- * @param[in] c array with 10 components representing \\count0 ... \\count9. c[0] contains the
- * current (printed) page number (may differ from page count) */
-void DVIToSVGActions::beginPage (unsigned pageno, Int32 *c) {
- _svg.newPage(++_pageCount);
- _bbox = BoundingBox(); // clear bounding box
- if (_boxes)
- _boxes->clear();
-}
-
-
-/** This method is called when an "end of page (eop)" command was found in the DVI file. */
-void DVIToSVGActions::endPage (unsigned pageno) {
- _svg.transformPage(_pageMatrix);
- if (_bgcolor != Color::TRANSPARENT) {
- // create a rectangle filled with the background color
- XMLElementNode *r = new XMLElementNode("rect");
- r->addAttribute("x", _bbox.minX());
- r->addAttribute("y", _bbox.minY());
- r->addAttribute("width", _bbox.width());
- r->addAttribute("height", _bbox.height());
- r->addAttribute("fill", _bgcolor.rgbString());
- _svg.prependToPage(r);
- }
-}
-
-
-void DVIToSVGActions::setBgColor (const Color &color) {
- _bgcolor = color;
-}
-
-
-void DVIToSVGActions::embed(const BoundingBox& bbox) {
- _bbox.embed(bbox);
- if (_boxes) {
- FORALL(*_boxes, BoxMap::iterator, it)
- it->second.embed(bbox);
- }
-}
-
-
-void DVIToSVGActions::embed(const DPair& p, double r) {
- if (r == 0)
- _bbox.embed(p);
- else
- _bbox.embed(p, r);
- if (_boxes)
- FORALL(*_boxes, BoxMap::iterator, it)
- it->second.embed(p, r);
-}
-
-
-BoundingBox& DVIToSVGActions::bbox(const string& name, bool reset) {
- if (!_boxes)
- _boxes = new BoxMap;
- BoundingBox &box = (*_boxes)[name];
- if (reset)
- box = BoundingBox();
- return box;
-}
-
-
-/** This method is called by subprocesses like the PS handler when
- * a computation step has finished. Since the total number of steps
- * can't be determined in advance, we don't show a percent value but
- * a rotating dash. */
-void DVIToSVGActions::progress (const char *id) {
- if (PROGRESSBAR_DELAY < 1000) {
- static double time=0;
- // slow down updating of the progress indicator to prevent flickering
- if (System::time() - time > 0.1) {
- progress(0, 0, id);
- time = System::time();
- }
- }
-}
-
-
-/** Returns the number of digits of a given integer. */
-static int digits (int n) {
- if (n == 0)
- return 1;
- if (n > 0)
- return int(log10(double(n))+1);
- return int(log10(double(-n))+2);
-}
-
-
-/** Draws a simple progress indicator.
- * @param[in] current current iteration step (of 'total' steps)
- * @param[in] total total number of iteration steps
- * @param[in] id ID of the subprocess providing the information */
-void DVIToSVGActions::progress (size_t current, size_t total, const char *id) {
- static double time=0;
- static bool draw=false; // show progress indicator?
- static const char *prev_id=0;
- if (current == 0 && total > 0) {
- time = System::time();
- draw = false;
- Message::mstream() << '\n';
- }
- // don't show the progress indicator before the given time has elapsed
- if (!draw && System::time()-time > PROGRESSBAR_DELAY) {
- draw = true;
- Terminal::cursor(false);
- }
- if (draw && (System::time() - time > 0.1 || (total > 0 && current == total) || prev_id != id)) {
- static int step = -1; // >=0: rotating dash
- static size_t prev_current=0, prev_total=1;
- const char *tips = "-\\|/";
- if (total == 0) {
- current = prev_current;
- total = prev_total;
- step = (step+1) % 4;
- }
- else {
- prev_current = current;
- prev_total = total;
- step = -1;
- }
- // adapt length of progress indicator to terminal width
- int cols = Terminal::columns();
- int width = (cols == 0 || cols > 60) ? 50 : 49-60+cols;
- double factor = double(current)/double(total);
- int length = int(width*factor);
- Message::mstream(false, Message::MC_PROGRESS)
- << '[' << string(length, '=')
- << (factor < 1.0 ? (step < 0 ? ' ' : tips[step]) : '=')
- << string(width-length, ' ')
- << "] " << string(3-digits(int(100*factor)), ' ') << int(100*factor)
- << "%\r";
- // overprint indicator when finished
- if (factor == 1.0) {
- Message::estream().clearline();
- Terminal::cursor(true);
- }
- time = System::time();
- prev_id = id;
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.h
deleted file mode 100644
index 9b18209904b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DVIToSVGActions.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*************************************************************************
-** DVIToSVGActions.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVITOSVGACTIONS_H
-#define DVISVGM_DVITOSVGACTIONS_H
-
-#include <map>
-#include <set>
-#include "BoundingBox.h"
-#include "DVIActions.h"
-#include "Matrix.h"
-#include "SpecialActions.h"
-#include "SpecialManager.h"
-#include "SVGTree.h"
-#include "DVIReader.h"
-
-
-class DVIToSVG;
-struct FileFinder;
-struct Font;
-struct XMLNode;
-
-class DVIToSVGActions : public DVIActions, public SpecialActions, public SpecialManager::Listener
-{
- typedef std::map<const Font*, std::set<int> > CharMap;
- typedef std::set<const Font*> FontSet;
- typedef std::map<std::string,BoundingBox> BoxMap;
-
- public:
- DVIToSVGActions (DVIToSVG &dvisvg, SVGTree &svg);
- ~DVIToSVGActions ();
- void reset ();
- void setChar (double x, double y, unsigned c, bool vertical, const Font *f);
- void setRule (double x, double y, double height, double width);
- void setBgColor (const Color &color);
- void setColor (const Color &color) {_svg.setColor(color);}
- void setMatrix (const Matrix &m) {_svg.setMatrix(m);}
- const Matrix& getMatrix () const {return _svg.getMatrix();}
- void getPageTransform (Matrix &matrix) const {_dvisvg.getPageTransformation(matrix);}
- Color getColor () const {return _svg.getColor();}
- int getDVIStackDepth() const {return _dvisvg.getStackDepth();}
- void appendToPage (XMLNode *node) {_svg.appendToPage(node);}
- void appendToDefs (XMLNode *node) {_svg.appendToDefs(node);}
- void prependToPage (XMLNode *node) {_svg.prependToPage(node);}
- void pushContextElement (XMLElementNode *node) {_svg.pushContextElement(node);}
- void popContextElement () {_svg.popContextElement();}
- void setTextOrientation(bool vertical) {_svg.setVertical(vertical);}
- void moveToX (double x);
- void moveToY (double y);
- void setFont (int num, const Font *font);
- void special (const std::string &s, double dvi2bp);
- void preamble (const std::string &cmt);
- void postamble ();
- void beginPage (unsigned pageno, Int32 *c);
- void endPage (unsigned pageno);
- void beginSpecial (const char *prefix);
- void endSpecial (const char *prefix);
- void progress (size_t current, size_t total, const char *id=0);
- void progress (const char *id);
- CharMap& getUsedChars () const {return _usedChars;}
- const FontSet& getUsedFonts () const {return _usedFonts;}
- void setPageMatrix (const Matrix &tm);
- double getX() const {return _dvisvg.getXPos();}
- double getY() const {return _dvisvg.getYPos();}
- void setX (double x) {_dvisvg.translateToX(x); _svg.setX(x);}
- void setY (double y) {_dvisvg.translateToY(y); _svg.setY(y);}
- void finishLine () {_dvisvg.finishLine();}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false);
- void embed (const BoundingBox &bbox);
- void embed (const DPair &p, double r=0);
-
- public:
- static double PROGRESSBAR_DELAY; ///< progress bar doesn't appear before this time has elapsed (in sec)
-
- private:
- SVGTree &_svg;
- DVIToSVG &_dvisvg;
- BoundingBox _bbox;
- int _pageCount;
- int _currentFontNum;
- mutable CharMap _usedChars;
- FontSet _usedFonts;
- Matrix *_pageMatrix; // transformation of whole page
- Color _bgcolor;
- BoxMap *_boxes;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.cpp
deleted file mode 100644
index 925b3065c8d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*************************************************************************
-** Directory.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "Directory.h"
-
-using namespace std;
-
-#ifdef __WIN32__
- #include <windows.h>
-#else
- #include <errno.h>
- #include <sys/stat.h>
-#endif
-
-
-Directory::Directory () {
-#if __WIN32__
- handle = INVALID_HANDLE_VALUE;
- firstread = true;
- memset(&fileData, 0, sizeof(WIN32_FIND_DATA));
-#else
- dir = 0;
- dirent = 0;
-#endif
-}
-
-
-Directory::Directory (string dirname) {
-#if __WIN32__
- handle = INVALID_HANDLE_VALUE;
- firstread = true;
- memset(&fileData, 0, sizeof(WIN32_FIND_DATA));
-#else
- dir = 0;
- dirent = 0;
-#endif
- open(dirname);
-}
-
-
-Directory::~Directory () {
- close();
-}
-
-
-bool Directory::open (string dname) {
- _dirname = dname;
-#ifdef __WIN32__
- firstread = true;
- if (dname[dname.length()-1] == '/' || dname[dname.length()-1] == '\\')
- dname = dname.substr(0, dname.length()-1);
- dname += "\\*";
- handle = FindFirstFile(dname.c_str(), &fileData);
- return handle != INVALID_HANDLE_VALUE;
-#else
- dir = opendir(_dirname.c_str());
- return dir;
-#endif
-}
-
-
-void Directory::close () {
-#ifdef __WIN32__
- FindClose(handle);
-#else
- closedir(dir);
-#endif
-}
-
-
-/** Reads first/next directory entry.
- * @param[in] type type of entry to return (a: file or dir, f: file, d: dir)
- * @return name of entry */
-const char* Directory::read (EntryType type) {
-#ifdef __WIN32__
- if (handle == INVALID_HANDLE_VALUE)
- return 0;
- while (firstread || FindNextFile(handle, &fileData)) {
- firstread = false;
- if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
- if (type == ET_FILE_OR_DIR || type == ET_DIR)
- return fileData.cFileName;
- }
- else if (type == ET_FILE_OR_DIR || type == ET_FILE)
- return fileData.cFileName;
- }
- FindClose(handle);
- handle = INVALID_HANDLE_VALUE;
- return 0;
-#else
- if (!dir)
- return 0;
- while ((dirent = readdir(dir))) {
- string path = string(_dirname) + "/" + dirent->d_name;
- struct stat stats;
- if (stat(path.c_str(), &stats) == 0) {
- if (S_ISDIR(stats.st_mode)) {
- if (type == ET_FILE_OR_DIR || type == ET_DIR)
- return dirent->d_name;
- }
- else if (type == ET_FILE_OR_DIR || type == ET_FILE)
- return dirent->d_name;
- }
- }
- closedir(dir);
- dir = 0;
- return 0;
-#endif
-}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.h
deleted file mode 100644
index 0d1e9406b4e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Directory.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*************************************************************************
-** Directory.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DIRECTORY_H
-#define DVISVGM_DIRECTORY_H
-
-#include <string>
-#ifdef __WIN32__
- #include <windows.h>
-#else
- #include <dirent.h>
-#endif
-
-class Directory
-{
- public:
- enum EntryType {ET_FILE, ET_DIR, ET_FILE_OR_DIR};
-
- public:
- Directory ();
- Directory (std::string path);
- ~Directory ();
- bool open (std::string path);
- void close ();
- const char* read (EntryType type=ET_FILE_OR_DIR);
-
- private:
- std::string _dirname;
-#ifdef __WIN32__
- bool firstread;
- HANDLE handle;
- WIN32_FIND_DATA fileData;
-#else
- DIR *dir;
- struct dirent *dirent;
-#endif
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.cpp
deleted file mode 100644
index 58f6a6e7ca1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-/*************************************************************************
-** DvisvgmSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include "DvisvgmSpecialHandler.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "SpecialActions.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-
-/** Replaces constants of the form {?name} by their corresponding value.
- * @param[in,out] str text to expand
- * @param[in] actions interfcae to the world outside the special handler */
-static void expand_constants (string &str, SpecialActions *actions) {
- struct Constant {
- const char *name;
- string val;
- }
- constants[] = {
- {"x", XMLString(actions->getX())},
- {"y", XMLString(actions->getY())},
- {"color", actions->getColor().rgbString()},
- {"nl", "\n"},
- {0, ""}
- };
- bool repl_bbox = true;
- while (repl_bbox) {
- size_t pos = str.find(string("{?bbox "));
- if (pos == string::npos)
- repl_bbox = false;
- else {
- size_t endpos = pos+7;
- while (endpos < str.length() && isalnum(str[endpos]))
- ++endpos;
- if (str[endpos] == '}') {
- BoundingBox &box=actions->bbox(str.substr(pos+7, endpos-pos-7));
- str.replace(pos, endpos-pos+1, box.toSVGViewBox());
- }
- else
- repl_bbox = false;
- }
- }
- for (const Constant *p=constants; p->name; p++) {
- const string pattern = string("{?")+p->name+"}";
- size_t pos = str.find(pattern);
- while (pos != string::npos) {
- str.replace(pos, strlen(p->name)+3, p->val);
- pos = str.find(pattern, pos+p->val.length()); // look for further matches
- }
- }
-}
-
-
-/** Embeds the virtual rectangle (x, y ,w , h) into the current bounding box,
- * where (x,y) is the lower left vertex composed of the current DVI position.
- * @param[in] w width of the rectangle in PS point units
- * @param[in] h height of the rectangle in PS point units
- * @param[in] d depth of the rectangle in PS point units
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-static void update_bbox (double w, double h, double d, SpecialActions *actions) {
- double x = actions->getX();
- double y = actions->getY();
- actions->embed(BoundingBox(x, y, x+w, y-h));
- actions->embed(BoundingBox(x, y, x+w, y+d));
-}
-
-
-/** Inserts raw text into the SVG tree.
- * @param[in,out] in the raw text is read from this input buffer
- * @param[in] actions interfcae to the world outside the special handler
- * @param[in] group true if the text should be wrapped by a group element */
-static void raw (InputReader &in, SpecialActions *actions, bool group=false) {
- string str;
- while (!in.eof()) {
- int c = in.get();
- if (isprint(c))
- str += char(c);
- }
- expand_constants(str, actions);
- if (!str.empty()) {
- XMLNode *node = new XMLTextNode(str);
- if (group) {
- XMLElementNode *g = new XMLElementNode("g");
- g->addAttribute("x", actions->getX());
- g->addAttribute("y", actions->getY());
- if (actions->getColor() != Color::BLACK)
- g->addAttribute("fill", actions->getColor().rgbString());
- g->append(node);
- node = g;
- }
- actions->appendToPage(node);
- }
-}
-
-
-/** Evaluates the special dvisvgm:bbox.
- * variant 1: dvisvgm:bbox [r[el]] <width> <height> [<depth>]
- * variant 2: dvisvgm:bbox a[bs] <x1> <y1> <x2> <y2>
- * variant 3: dvisvgm:bbox f[ix] <x1> <y1> <x2> <y2>
- * variant 4: dvisvgm:bbox n[ew] <name> */
-static void bbox (InputReader &in, SpecialActions *actions) {
- const double pt2bp = 72/72.27;
- in.skipSpace();
- int c = in.peek();
- if (isalpha(c)) {
- while (!isspace(in.peek())) // skip trailing characters
- in.get();
- if (c == 'n') {
- in.skipSpace();
- string name;
- while (isalnum(in.peek()))
- name += char(in.get());
- in.skipSpace();
- if (!name.empty() && in.eof())
- actions->bbox(name, true); // create new user box
- }
- else if (c == 'a' || c == 'f') {
- double p[4];
- for (int i=0; i < 4; i++)
- p[i] = in.getDouble()*pt2bp;
- BoundingBox b(p[0], p[1], p[2], p[3]);
- if (c == 'a')
- actions->embed(b);
- else {
- actions->bbox() = b;
- actions->bbox().lock();
- }
- }
- }
- else
- c = 'r'; // no mode specifier => relative box parameters
-
- if (c == 'r') {
- double w = in.getDouble()*pt2bp;
- double h = in.getDouble()*pt2bp;
- double d = in.getDouble()*pt2bp;
- update_bbox(w, h, d, actions);
- }
-}
-
-
-static void img (InputReader &in, SpecialActions *actions) {
- if (actions) {
- const double pt2bp = 72/72.27;
- double w = in.getDouble()*pt2bp;
- double h = in.getDouble()*pt2bp;
- string f = in.getString();
- update_bbox(w, h, 0, actions);
- XMLElementNode *img = new XMLElementNode("image");
- img->addAttribute("x", actions->getX());
- img->addAttribute("y", actions->getY());
- img->addAttribute("width", w);
- img->addAttribute("height", h);
- img->addAttribute("xlink:href", f);
- if (!actions->getMatrix().isIdentity())
- img->addAttribute("transform", actions->getMatrix().getSVG());
- actions->appendToPage(img);
- }
-}
-
-
-/** Evaluates and executes a dvisvgm special statement.
- * @param[in] prefix special prefix read by the SpecialManager
- * @param[in] is the special statement is read from this stream
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-bool DvisvgmSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- if (actions) {
- StreamInputBuffer ib(is);
- BufferInputReader in(ib);
- string cmd = in.getWord();
- if (cmd == "raw") // raw <text>
- raw(in, actions);
- else if (cmd == "bbox") // bbox [r] <width> <height> <depth> or bbox a <x1> <y1> <x2> <y2>
- bbox(in, actions);
- else if (cmd == "img") { // img <width> <height> <file>
- img(in, actions);
- }
- }
- return true;
-}
-
-
-const char** DvisvgmSpecialHandler::prefixes () const {
- static const char *pfx[] = {"dvisvgm:", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.h
deleted file mode 100644
index 1c6424c6fb8..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/DvisvgmSpecialHandler.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*************************************************************************
-** DvisvgmSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_DVISVGMSPECIALHANDLER_H
-#define DVISVGM_DVISVGMSPECIALHANDLER_H
-
-#include "SpecialHandler.h"
-
-class DvisvgmSpecialHandler : public SpecialHandler
-{
- public:
- const char* name () const {return "dvisvgm";}
- const char* info () const {return "special set for embedding raw SVG snippets";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.cpp
deleted file mode 100644
index d3def37dc68..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*************************************************************************
-** EPSFile.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <istream>
-#include <limits>
-#include "EPSFile.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-
-using namespace std;
-
-
-/** Reads a little-endian 32-bit integer from the given input stream. */
-static UInt32 getUInt32 (istream &is) {
- UInt32 value=0;
- char buf[4];
- is.read(buf, 4);
- for (int i=0; i < 4; i++)
- value |= ((buf[i] & 255) << (8*i));
- return value;
-}
-
-
-static size_t getline (istream &is, char *line, size_t n) {
- char buf[512];
- is.get(buf, min(n, (size_t)512)-1);
- n = is.gcount();
- size_t linelen=0;
- for (size_t i=0; i < n; i++)
- if (isprint(buf[i]))
- line[linelen++] = buf[i];
- line[linelen] = 0;
- if (is.peek() == '\n')
- is.get();
- else
- is.ignore(numeric_limits<size_t>::max(), '\n');
- return linelen;
-}
-
-
-EPSFile::EPSFile (const std::string& fname) : _ifs(fname.c_str(), ios::binary), _headerValid(false), _offset(0), _pslength(0)
-{
- if (_ifs) {
- if (getUInt32(_ifs) != 0xC6D3D0C5) // no binary header present?
- _ifs.seekg(0, ios_base::beg); // go back to the first byte
- else {
- _offset = getUInt32(_ifs); // stream offset where PS part of the file begins
- _pslength = getUInt32(_ifs); // length of PS section in bytes
- _ifs.seekg(_offset, ios_base::beg); // continue reading at the beginning of the PS section
- }
- string str;
- str += _ifs.get();
- str += _ifs.get();
- _headerValid = (str == "%!");
- _ifs.seekg(0, ios_base::beg);
- }
-}
-
-
-/** Returns an input stream for the EPS file. The stream pointer is automatically moved
- * to the beginning of the ASCII (PostScript) part of the file. */
-istream& EPSFile::istream () const {
- _ifs.clear();
- _ifs.seekg(_offset, ios_base::beg);
- return _ifs;
-}
-
-
-/** Extracts the bounding box information from the DSC header/footer (if present)
- * @param[out] box the extracted bounding box
- * @return true if %%BoundingBox data could be read successfully */
-bool EPSFile::bbox (BoundingBox &box) const {
- std::istream &is = EPSFile::istream();
- if (is) {
- char buf[64];
- while (is) {
- size_t linelen = getline(is, buf, 64);
- if (strncmp(buf, "%%BoundingBox:", 14) == 0) {
- CharInputBuffer ib(buf, linelen);
- BufferInputReader ir(ib);
- ir.skip(14);
- ir.skipSpace();
- if (!ir.check("(atend)", true)) {
- int val[4];
- for (int i=0; i < 4; i++) {
- ir.skipSpace();
- ir.parseInt(val[i]);
- }
- box = BoundingBox(val[0], val[1], val[2], val[3]);
- return true;
- }
- }
- }
- }
- return false;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.h
deleted file mode 100644
index 19b60a42797..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSFile.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
-** EPSFile.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_EPSFILE_H
-#define DVISVGM_EPSFILE_H
-
-#include <fstream>
-#include <string>
-#include "BoundingBox.h"
-#include "types.h"
-
-class EPSFile
-{
- public:
- EPSFile (const std::string &fname);
- std::istream& istream () const;
- bool hasValidHeader () const {return _headerValid;}
- bool bbox (BoundingBox &box) const;
- UInt32 pslength () const {return _pslength;}
-
- private:
- mutable std::ifstream _ifs;
- bool _headerValid; ///< true if file has a valid header
- UInt32 _offset; ///< stream offset where ASCII part of the file begins
- UInt32 _pslength; ///< length of PS section (in bytes)
-};
-
-#endif
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.cpp
deleted file mode 100644
index 417dde90f48..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
-** EPSToSVG.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <fstream>
-#include <istream>
-#include <sstream>
-#include "EPSFile.h"
-#include "EPSToSVG.h"
-#include "Message.h"
-#include "MessageException.h"
-#include "PsSpecialHandler.h"
-#include "SVGOutputBase.h"
-
-
-using namespace std;
-
-
-void EPSToSVG::convert () {
-#ifndef HAVE_LIBGS
- if (!Ghostscript().available())
- throw MessageException("Ghostscript is required to process the EPS file");
-#endif
- EPSFile epsfile(_fname);
- if (!epsfile.hasValidHeader())
- throw PSException("invalid EPS file");
-
- BoundingBox bbox;
- epsfile.bbox(bbox);
- if (bbox.width() == 0 || bbox.height() == 0)
- Message::wstream(true) << "bounding box of file " << _fname << " is empty\n";
- Message::mstream(false, Message::MC_PAGE_NUMBER) << "processing file " << _fname << '\n';
- Message::mstream().indent(1);
- _svg.newPage(1);
- // create a psfile special and forward it to the PsSpecialHandler
- stringstream ss;
- ss << "\"" << _fname << "\" "
- "llx=" << bbox.minX() << " "
- "lly=" << bbox.minY() << " "
- "urx=" << bbox.maxX() << " "
- "ury=" << bbox.maxY();
- PsSpecialHandler pshandler;
- pshandler.process("psfile=", ss, this);
- // output SVG file
- _svg.setBBox(_bbox);
- _svg.appendToDoc(new XMLCommentNode(" This file was generated by dvisvgm " VERSION " "));
- _svg.write(_out.getPageStream(1, 1));
- string svgfname = _out.filename(1, 1);
- const double bp2pt = 72.27/72;
- const double bp2mm = 25.4/72;
- Message::mstream(false, Message::MC_PAGE_SIZE) << "graphic size: " << XMLString(bbox.width()*bp2pt) << "pt"
- " x " << XMLString(bbox.height()*bp2pt) << "pt"
- " (" << XMLString(bbox.width()*bp2mm) << "mm"
- " x " << XMLString(bbox.height()*bp2mm) << "mm)\n";
- Message::mstream(false, Message::MC_PAGE_WRITTEN) << "graphic written to " << (svgfname.empty() ? "<stdout>" : svgfname) << '\n';
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.h
deleted file mode 100644
index e3ea67ca87d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EPSToSVG.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*************************************************************************
-** EPSToSVG.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_EPSTOSVG_H
-#define DVISVGM_EPSTOSVG_H
-
-#include <string>
-#include "SpecialActions.h"
-#include "SVGTree.h"
-
-struct SVGOutputBase;
-
-class EPSToSVG : protected SpecialActions
-{
- public:
- EPSToSVG (const std::string &fname, SVGOutputBase &out) : _fname(fname), _out(out), _x(0), _y(0) {}
- void convert ();
- void setTransformation (const Matrix &m);
- void setPageSize (const std::string &name);
-
- protected:
- // implement abstract base class SpecialActions
- double getX () const {return _x;}
- double getY () const {return _y;}
- void setX (double x) {_x = x; _svg.setX(x);}
- void setY (double y) {_y = y; _svg.setY(y);}
- void finishLine () {}
- void setColor (const Color &color) {_svg.setColor(color);}
- Color getColor () const {return _svg.getColor();}
- void setMatrix (const Matrix &m) {_svg.setMatrix(m);}
- const Matrix& getMatrix () const {return _svg.getMatrix();}
- void getPageTransform (Matrix &matrix) const {}
- void setBgColor (const Color &color) {}
- void appendToPage (XMLNode *node) {_svg.appendToPage(node);}
- void appendToDefs (XMLNode *node) {_svg.appendToDefs(node);}
- void prependToPage (XMLNode *node) {_svg.prependToPage(node);}
- void pushContextElement (XMLElementNode *node) {_svg.pushContextElement(node);}
- void popContextElement () {_svg.popContextElement();}
- void embed (const BoundingBox &bbox) {_bbox.embed(bbox);}
- void embed (const DPair &p, double r=0) {if (r==0) _bbox.embed(p); else _bbox.embed(p, r);}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false) {return _bbox;}
-
- private:
- std::string _fname; ///< name of EPS file
- SVGTree _svg;
- SVGOutputBase &_out;
- double _x, _y;
- BoundingBox _bbox;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.cpp
deleted file mode 100644
index cc06289464c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.cpp
+++ /dev/null
@@ -1,233 +0,0 @@
-/*************************************************************************
-** EmSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "EmSpecialHandler.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "SpecialActions.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-
-EmSpecialHandler::EmSpecialHandler () : _linewidth(0.4*72/72.27), _actions(0) {
-}
-
-
-/** Computes the "cut vector" that is used to compute the line shape.
- * Because each line has a width > 0 the actual shape of the line is a tetragon.
- * The 4 vertices can be influenced by the cut parameter c that specifies
- * a horizontal, vertical or orthogonal cut of a line end. Depending on c and the
- * line's slope a cut vector v can be computed that, relatively to endpoint p, denotes
- * the 2 vertices of that line end: v1=p+v and v2=p-v.
- * @param[in] c cut direction ('h', 'v' or 'p')
- * @param[in] v direction vector of line to be drawn
- * @param[in] lw width of line to be drawn
- * @return the "cut vector" */
-static DPair cut_vector (char c, const DPair &v, double lw) {
- if (c == 'p')
- return v.ortho()/v.length() * (lw/2);
- DPair cut;
- if (c == 'v' && v.x() != 0) {
- double slope = v.y()/v.x();
- double h = sqrt(lw*lw*(1+slope*slope));
- cut.y(0.5*h);
- }
- else if (v.y() != 0) { // c == 'h'
- double slope = v.x()/v.y();
- double h = sqrt(lw*lw*(1+slope*slope));
- double sgn = slope < 0 ? 1.0 : -1.0;
- cut.x(0.5*h*sgn);
- }
- return cut;
-}
-
-
-/** Creates the SVG element that will a the line.
- * @param[in] p1 first endpoint in PS point units
- * @param[in] p2 second endpoint in PS point units
- * @param[in] c1 cut method of first endpoint ('h', 'v' or 'p')
- * @param[in] c2 cut method of second endpoint ('h', 'v' or 'p')
- * @param[in] lw line width in PS point units
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-static void create_line (const DPair &p1, const DPair &p2, char c1, char c2, double lw, SpecialActions *actions) {
- XMLElementNode *node=0;
- DPair dir = p2-p1;
- if (dir.x() == 0 || dir.y() == 0 || (c1 == 'p' && c2 == 'p')) {
- // draw regular line
- node = new XMLElementNode("line");
- node->addAttribute("x1", p1.x());
- node->addAttribute("y1", p1.y());
- node->addAttribute("x2", p2.x());
- node->addAttribute("y2", p2.y());
- node->addAttribute("stroke-width", lw);
- node->addAttribute("stroke", actions->getColor().rgbString());
- // update bounding box
- actions->embed(p1);
- actions->embed(p2);
- }
- else {
- // draw polygon
- DPair cv1 = cut_vector(c1, dir, lw);
- DPair cv2 = cut_vector(c2, dir, lw);
- DPair q11 = p1+cv1, q12 = p1-cv1;
- DPair q21 = p2+cv2, q22 = p2-cv2;
- node = new XMLElementNode("polygon");
- ostringstream oss;
- oss << XMLString(q11.x()) << ',' << XMLString(q11.y()) << ' '
- << XMLString(q12.x()) << ',' << XMLString(q12.y()) << ' '
- << XMLString(q22.x()) << ',' << XMLString(q22.y()) << ' '
- << XMLString(q21.x()) << ',' << XMLString(q21.y());
- node->addAttribute("points", oss.str());
- if (actions->getColor() != Color::BLACK)
- node->addAttribute("fill", actions->getColor().rgbString());
- // update bounding box
- actions->embed(q11);
- actions->embed(q12);
- actions->embed(q21);
- actions->embed(q22);
- }
- actions->appendToPage(node);
-}
-
-
-static double read_length (InputReader &in) {
- struct Unit {
- const char *name;
- double factor;
- }
- units[] = {
- {"pt", 1.0},
- {"pc", 12.0},
- {"in", 72.27},
- {"bp", 72.27/72},
- {"cm", 72.27/2.54},
- {"mm", 72.27/25.4},
- {"dd", 1238.0/1157},
- {"cc", 1238.0/1157*12},
- {"sp", 1.0/65536},
- {0, 0}
- };
- double len = in.getDouble();
- in.skipSpace();
- for (Unit *p=units; p->name; p++)
- if (in.check(p->name)) {
- len *= p->factor;
- break;
- }
- return len*72/72.27;
-}
-
-
-bool EmSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- // em:moveto => move graphic cursor to dvi cursor
- // em:lineto => draw line from graphic cursor to dvi cursor, move graphic cursor to dvi cursor
- // em:linewidth <w> => set line width to <w>
- // em:point <n>[,<x>[,<y>]] => defines point <n> as (<x>,<y>); if <x> and/or <y> is missing,
- // the corresponding dvi cursor coordinate is inserted
- // <x> and <y> are lengths
- // em:line <n>[h|v|p], <m>[h|v|p] [,<w>] => draws line of width <w> from point #<n> to point #<m>
- // point number suffixes:
- // h: cut line horizontally
- // v: cut line vertically
- // p: cut line orthogonally to line direction (default)
- // if <w> is omitted, the global line width is used
- //
- // supported length units: pt, pc, in, bp, cm, mm, dd, cc, sp
- // default line width: 0.4pt
-
- if (actions) {
- _actions = actions; // save pointer to SpecialActions for later use in endPage
- StreamInputBuffer ib(is, 128);
- BufferInputReader in(ib);
- string cmd = in.getWord();
- if (cmd == "moveto")
- _pos = DPair(actions->getX(), actions->getY());
- else if (cmd == "lineto") {
- DPair p(actions->getX(), actions->getY());
- create_line(_pos, p, 'p', 'p', _linewidth, actions);
- _pos = p;
- }
- else if (cmd == "linewidth")
- _linewidth = read_length(in);
- else if (cmd == "point") {
- DPair p(actions->getX(), actions->getY());
- int n = in.getInt();
- if (in.getPunct() == ',') {
- p.x(in.getDouble());
- if (in.getPunct() == ',')
- p.y(in.getDouble());
- }
- _points[n] = p;
- }
- else if (cmd == "line") {
- int n1 = in.getInt();
- int c1 = 'p';
- if (isalpha(in.peek()))
- c1 = in.get();
- in.getPunct();
- int n2 = in.getInt();
- int c2 = 'p';
- if (isalpha(in.peek()))
- c2 = in.get();
- double lw = _linewidth;
- if (in.getPunct() == ',')
- lw = read_length(in);
- map<int,DPair>::iterator it1=_points.find(n1);
- map<int,DPair>::iterator it2=_points.find(n2);
- if (it1 != _points.end() && it2 != _points.end())
- create_line(it1->second, it2->second, char(c1), char(c2), lw, actions);
- else {
- // Line endpoints havn't necessarily to be defined before
- // a line definition. If a point wasn't defined yet we push the line
- // in a wait list and process the lines at the end of the page.
- _lines.push_back(Line(n1, n2, char(c1), char(c2), lw));
- }
- }
- }
- return true;
-}
-
-
-/** This method is called at the end of a DVI page. Here we have to draw all pending
- * lines that are still in the line list. All line endpoints must be defined until here. */
-void EmSpecialHandler::dviEndPage (unsigned pageno) {
- if (_actions) {
- FORALL(_lines, list<Line>::iterator, it) {
- map<int,DPair>::iterator pit1=_points.find(it->p1);
- map<int,DPair>::iterator pit2=_points.find(it->p2);
- if (pit1 != _points.end() && pit2 != _points.end())
- create_line(pit1->second, pit2->second, it->c1, it->c2, it->width, _actions);
- // all lines with still undefined points are ignored
- }
- }
- // line and point definitions are local to a page
- _lines.clear();
- _points.clear();
-}
-
-
-const char** EmSpecialHandler::prefixes () const {
- static const char *pfx[] = {"em:", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.h
deleted file mode 100644
index 17e84a3e6e2..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EmSpecialHandler.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************
-** EmSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_EMSPECIALHANDLER_H
-#define DVISVGM_EMSPECIALHANDLER_H
-
-#include <list>
-#include <map>
-#include "Pair.h"
-#include "SpecialHandler.h"
-
-
-class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
- struct Line {
- Line (int pp1, int pp2, char cc1, char cc2, double w) : p1(pp1), p2(pp2), c1(cc1), c2(cc2), width(w) {}
- int p1, p2; ///< point numbers of line ends
- char c1, c2; ///< cut type of line ends (h, v or p)
- double width; ///< line width
- };
-
- public:
- EmSpecialHandler ();
- const char* name () const {return "em";}
- const char* info () const {return "line drawing statements of the emTeX special set";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &in, SpecialActions *actions);
-
- protected:
- void dviEndPage (unsigned pageno);
-
- private:
- std::map<int, DPair> _points; ///< points defined by special em:point
- std::list<Line> _lines; ///< list of lines with undefined end points
- double _linewidth; ///< global line width
- DPair _pos; ///< current position of "graphic cursor"
- SpecialActions *_actions;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.cpp
deleted file mode 100644
index 103090bc3e3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************
-** EncFile.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <fstream>
-#include "Font.h"
-#include "EncFile.h"
-#include "FontMap.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "FileFinder.h"
-#include "Message.h"
-
-using namespace std;
-
-static string read_entry (InputReader &in);
-static bool valid_name_char (int c);
-
-
-EncFile::EncFile (const string &encname) : _encname(encname)
-{
- read();
-}
-
-
-const char* EncFile::path () const {
- return FileFinder::lookup(_encname+".enc", false);
-}
-
-
-/** Search for suitable enc-file and read its encoding information.
- * The file contents must be a valid PostScript vector with 256 entries. */
-void EncFile::read () {
- if (const char *p = path()) {
- ifstream ifs(p);
- read(ifs);
- }
- else
- Message::wstream(true) << "encoding file '" << _encname << ".enc' not found\n";
-}
-
-
-/** Read encoding information from stream. */
-void EncFile::read (istream &is) {
- StreamInputBuffer ib(is, 256);
- BufferInputReader in(ib);
- _table.resize(256);
-
- // find beginning of vector
- while (!in.eof()) {
- in.skipSpace();
- if (in.peek() == '%')
- in.skipUntil("\n");
- else
- if (in.get() == '[')
- break;
- }
-
- // read vector entries
- int n=0;
- while (!in.eof()) {
- in.skipSpace();
- if (in.peek() == '%')
- in.skipUntil("\n");
- else if (in.peek() == ']') {
- in.get();
- break;
- }
- else {
- string entry = read_entry(in);
- if (entry == ".notdef")
- entry.clear();
- if (n < 256)
- _table[n++] = entry;
- }
- }
- // remove trailing .notdef names
- for (n--; n > 0 && _table[n].empty(); n--);
- _table.resize(n+1);
-}
-
-
-static string read_entry (InputReader &in) {
- string entry;
- bool accept_slashes=true;
- while (!in.eof() && ((in.peek() == '/' && accept_slashes) || valid_name_char(in.peek()))) {
- if (in.peek() != '/')
- accept_slashes = false;
- entry += in.get();
- }
- if (entry.length() > 1) {
- // strip leading slashes
- // According to the PostScript specification, a single slash without further
- // following characters is a valid name.
- size_t n=0;
- while (n < entry.length() && entry[n] == '/')
- n++;
- entry = entry.substr(n);
- }
- return entry;
-}
-
-
-static bool valid_name_char (int c) {
- const char *delimiters = "<>(){}[]/~%";
- return isprint(c) && !isspace(c) && !strchr(delimiters, c);
-}
-
-
-/** Returns an entry of the encoding table.
- * @param[in] c character code
- * @return character name assigned to character code c*/
-const char* EncFile::charName (UInt32 c) const {
- if (c < _table.size())
- return !_table[c].empty() ? _table[c].c_str() : 0;
- return 0;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.h
deleted file mode 100644
index 10b21c15547..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/EncFile.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*************************************************************************
-** EncFile.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_ENCFILE_H
-#define DVISVGM_ENCFILE_H
-
-#include <istream>
-#include <map>
-#include <string>
-#include <vector>
-#include "FontEncoding.h"
-#include "types.h"
-
-
-class EncFile : public NamedFontEncoding
-{
- public:
- EncFile (const std::string &name);
- void read ();
- void read (std::istream &is);
- int size () const {return _table.size();}
- const char* name () const {return _encname.c_str();}
- const char* charName (UInt32 c) const;
- Character decode (UInt32 c) const {return Character(charName(c));}
- bool mapsToCharIndex () const {return false;}
- const char* path () const;
-
- private:
- std::string _encname;
- std::vector<std::string> _table;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.cpp
deleted file mode 100644
index e8269991053..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.cpp
+++ /dev/null
@@ -1,278 +0,0 @@
-/*************************************************************************
-** FileFinder.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-
-#ifdef MIKTEX
- #include "MessageException.h"
- #include "MiKTeXCom.h"
- static MiKTeXCom *miktex=0;
-#else
- #ifdef KPSE_CXX_UNSAFE
- extern "C" {
- #endif
- #include <kpathsea/kpathsea.h>
- #ifdef KPSE_CXX_UNSAFE
- }
- #endif
-#endif
-
-#include <cstdlib>
-#include <fstream>
-#include <map>
-#include <string>
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "FontMap.h"
-#include "Message.h"
-#include "Process.h"
-
-// ---------------------------------------------------
-
-static bool _initialized = false;
-static bool _mktex_enabled = false;
-
-// ---------------------------------------------------
-
-static const char* find_file (const std::string &fname, const char *ftype);
-static const char* find_mapped_file (std::string fname);
-static const char* mktex (const std::string &fname);
-
-
-/** Initializes the file finder. This function must be called before any other
- * FileFinder function.
- * @param[in] argv0 argv[0] of main() function
- * @param[in] progname name of application using the FileFinder
- * @param[in] enable_mktexmf if true, tfm and mf file generation is activated */
-void FileFinder::init (const char *argv0, const char *progname, bool enable_mktexmf) {
- if (_initialized)
- return;
-
- _mktex_enabled = enable_mktexmf;
-#ifdef MIKTEX
- miktex = new MiKTeXCom;
-#else
- kpse_set_program_name(argv0, progname);
- // enable tfm and mf generation (actually invoked by calls of kpse_make_tex)
- kpse_set_program_enabled(kpse_tfm_format, 1, kpse_src_env);
- kpse_set_program_enabled(kpse_mf_format, 1, kpse_src_env);
- kpse_make_tex_discard_errors = true; // suppress messages from mktexFOO tools
-#ifdef TEXLIVEWIN32
- texlive_gs_init();
-#endif
-#endif
- _initialized = true;
-}
-
-
-/** Cleans up the FileFinder. This function must be called before leaving the
- * application's main() function. */
-void FileFinder::finish () {
-#ifdef MIKTEX
- if (miktex) {
- delete miktex;
- miktex = 0;
- }
-#endif
- _initialized = false;
-}
-
-
-/** Returns the version string of the underlying file searching library (kpathsea, MiKTeX) */
-std::string FileFinder::version () {
-#ifdef MIKTEX
- bool autoinit=false;
- try {
- if (!_initialized) {
- init("", "", false);
- autoinit = true;
- }
- std::string ret = miktex->getVersion();
- if (autoinit)
- finish();
- return ret;
- }
- catch (MessageException &e) {
- if (autoinit)
- finish();
- }
-#else
- if (const char *v = strrchr(KPSEVERSION, ' '))
- return v+1;
-#endif
- return "unknown";
-}
-
-
-/** Determines filetype by the filename extension and calls kpse_find_file
- * to actually look up the file.
- * @param[in] fname name of file to look up
- * @param[in] ftype expected file format of file fname; if 0, it's derived from the filename suffix
- * @return file path on success, 0 otherwise */
-static const char* find_file (const std::string &fname, const char *ftype) {
- if (!_initialized || fname.empty())
- return 0;
-
- std::string ext;
- if (ftype)
- ext = ftype;
- else {
- size_t pos = fname.rfind('.');
- if (pos == std::string::npos)
- return 0; // no extension and no file type => no search
- ext = fname.substr(pos+1);
- }
-
- static std::string buf;
-#ifdef MIKTEX
- if (ext == "dll" || ext == "exe") {
- // lookup dll and exe files in the MiKTeX bin directory first
- buf = miktex->getBinDir() + "/" + fname;
- if (FileSystem::exists(buf.c_str()))
- return buf.c_str();
- }
- else if (ext == "cmap") {
- // The MiKTeX SDK doesn't support the lookup of files without suffix (yet), thus
- // it's not possible to find cmap files which usually don't have a suffix. In order
- // to work around this, we try to lookup the files by calling kpsewhich.
- Process process("kpsewhich", std::string("-format=cmap ")+fname);
- process.run(&buf);
- return buf.empty() ? 0 : buf.c_str();
- }
- try {
- return miktex->findFile(fname.c_str());
- }
- catch (const MessageException &e) {
- return 0;
- }
-#else
-#ifdef TEXLIVEWIN32
- if (ext == "exe") {
- // lookup exe files in directory where dvisvgm is located
- if (const char *path = kpse_var_value("SELFAUTOLOC")) {
- buf = std::string(path) + "/" + fname;
- return FileSystem::exists(buf.c_str()) ? buf.c_str() : 0;
- }
- return 0;
- }
-#endif
- static std::map<std::string, kpse_file_format_type> types;
- if (types.empty()) {
- types["tfm"] = kpse_tfm_format;
- types["pfb"] = kpse_type1_format;
- types["vf"] = kpse_vf_format;
- types["mf"] = kpse_mf_format;
- types["ttc"] = kpse_truetype_format;
- types["ttf"] = kpse_truetype_format;
- types["otf"] = kpse_opentype_format;
- types["map"] = kpse_fontmap_format;
- types["cmap"] = kpse_cmap_format;
- types["sty"] = kpse_tex_format;
- types["enc"] = kpse_enc_format;
- types["pro"] = kpse_tex_ps_header_format;
- types["sfd"] = kpse_sfd_format;
- }
- std::map<std::string, kpse_file_format_type>::iterator it = types.find(ext.c_str());
- if (it == types.end())
- return 0;
-
- if (char *path = kpse_find_file(fname.c_str(), it->second, 0)) {
- // In the current version of libkpathsea, each call of kpse_find_file produces
- // a memory leak since the path buffer is not freed. I don't think we can do
- // anything against it here...
- buf = path;
- std::free(path);
- return buf.c_str();
- }
- return 0;
-#endif
-}
-
-
-/** Checks whether the given file is mapped to a different name and if the
- * file can be found under this name.
- * @param[in] fname name of file to look up
- * @return file path on success, 0 otherwise */
-static const char* find_mapped_file (std::string fname) {
- size_t pos = fname.rfind('.');
- if (pos == std::string::npos)
- return 0;
- const std::string ext = fname.substr(pos+1); // file extension
- const std::string base = fname.substr(0, pos);
- if (const FontMap::Entry *entry = FontMap::instance().lookup(base)) {
- const char *path=0;
- if (entry->fontname.find('.') != std::string::npos) // does the mapped filename has an extension?
- path = find_file(entry->fontname, 0); // look for that file
- else { // otherwise, use extension of unmapped file
- fname = entry->fontname + "." + ext;
- (path = find_file(fname, 0)) || (path = mktex(fname));
- }
- return path;
- }
- return 0;
-}
-
-
-/** Runs external mktexFOO tool to create missing tfm or mf file.
- * @param[in] fname name of file to build
- * @return file path on success, 0 otherwise */
-static const char* mktex (const std::string &fname) {
- if (!_initialized)
- return 0;
-
- size_t pos = fname.rfind('.');
- if (!_mktex_enabled || pos == std::string::npos)
- return 0;
-
- std::string ext = fname.substr(pos+1); // file extension
- if (ext != "tfm" && ext != "mf")
- return 0;
-
- const char *path = 0;
-#ifdef MIKTEX
- // maketfm and makemf are located in miktex/bin which is in the search PATH
- std::string toolname = (ext == "tfm" ? "miktex-maketfm" : "miktex-makemf");
- system((toolname+".exe "+fname).c_str());
- path = find_file(fname, 0);
-#else
- kpse_file_format_type type = (ext == "tfm" ? kpse_tfm_format : kpse_mf_format);
- path = kpse_make_tex(type, fname.c_str());
-#endif
- return path;
-}
-
-
-/** Searches a file in the TeX directory tree.
- * If the file doesn't exist, maximal two further steps are applied
- * (if "extended" is true):
- * - checks whether the filename is mapped to a different name and returns
- * the path to that name
- * - in case of tfm or mf files: invokes the external mktextfm/mktexmf tool
- * to create the missing file
- * @param[in] fname name of file to look up
- * @param[in] ftype type/format of file to look up
- * @param[in] extended if true, use fontmap lookup and mktexFOO calls
- * @return path to file on success, 0 otherwise */
-const char* FileFinder::lookup (const std::string &fname, const char *ftype, bool extended) {
- const char *path;
- if ((path = find_file(fname, ftype)) || (extended && ((path = find_mapped_file(fname)) || (path = mktex(fname)))))
- return path;
- return 0;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.h
deleted file mode 100644
index 5057e9b2593..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileFinder.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*************************************************************************
-** FileFinder.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_KPSFILEFINDER_H
-#define DVISVGM_KPSFILEFINDER_H
-
-#include <string>
-
-struct FileFinder
-{
- static void init (const char *argv0, const char *progname, bool enable_mktexmf);
- static void finish ();
- static std::string version ();
- static const char* lookup (const std::string &fname, const char *ftype, bool extended=true);
- static const char* lookup (const std::string &fname, bool extended=true) {return lookup(fname, 0, extended);}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.cpp
deleted file mode 100644
index 92922d99354..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-/*************************************************************************
-** FilePath.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cctype>
-#include "FilePath.h"
-#include "FileSystem.h"
-#include "MessageException.h"
-#include "macros.h"
-
-using namespace std;
-
-
-/** Removes redundant slashes from a given path. */
-static string& single_slashes (string &str) {
- size_t pos=0;
- while ((pos = str.find("//", pos)) != string::npos)
- str.replace(pos, 2, "/");
- return str;
-}
-
-
-#ifdef __WIN32__
-static char strip_drive_letter (string &path) {
- char letter = 0;
- if (path.length() >= 2 && path[1] == ':' && isalpha(path[0])) {
- letter = tolower(path[0]);
- path.erase(0, 2);
- }
- return letter;
-}
-
-
-static char adapt_current_path (string &path, char target_drive) {
- if (char current_drive = strip_drive_letter(path)) {
- if (target_drive != current_drive) {
- if (target_drive == 0)
- target_drive = current_drive;
- if (path.empty() || path[0] != '/') {
- if (FileSystem::chdir((string(1, target_drive) + ":").c_str())) {
- path.insert(0, FileSystem::getcwd()+"/");
- strip_drive_letter(path);
- }
- else
- throw MessageException("drive " + string(1, target_drive) + ": not accessible");
- }
- }
- }
- return target_drive;
-}
-
-
-static void tolower (string &str) {
- for (size_t i=0; i < str.length(); ++i)
- str[i] = tolower(str[i]);
-}
-#endif
-
-
-/** Constructs a FilePath object from a given path. Relative paths are
- * relative to the current working directory.
- * @param[in] path absolute or relative path to a file or directory */
-FilePath::FilePath (const string &path) {
- init(path, !FileSystem::isDirectory(path.c_str()), FileSystem::getcwd());
-}
-
-
-/** Constructs a FilePath object.
- * @param[in] path absolute or relative path to a file or directory
- * @param[in] isfile true if 'path' references a file, false if a directory is referenced
- * @param[in] current_dir if 'path' is a relative path expression it will be related to 'current_dir' */
-FilePath::FilePath (const string &path, bool isfile, string current_dir) {
- init(path, isfile, current_dir);
-}
-
-
-/** Initializes a FilePath object. This method should be called by the constructors only.
- * @param[in] path absolute or relative path to a file or directory
- * @param[in] isfile true if 'path' references a file, false if a directory is referenced
- * @param[in] current_dir if 'path' is a relative path expression it will be related to 'current_dir' */
-void FilePath::init (string path, bool isfile, string current_dir) {
- single_slashes(path);
- single_slashes(current_dir);
-#ifdef __WIN32__
- tolower(path);
- path = FileSystem::adaptPathSeperators(path);
- _drive = strip_drive_letter(path);
-#endif
- if (isfile) {
- size_t pos = path.rfind('/');
- _fname = path.substr((pos == string::npos) ? 0 : pos+1);
- if (pos != string::npos)
- path.erase(pos);
- else
- path.clear();
- }
- if (current_dir.empty())
- current_dir = FileSystem::getcwd();
-#ifdef __WIN32__
- tolower(current_dir);
- _drive = adapt_current_path(current_dir, _drive);
-#endif
- if (!path.empty()) {
- if (path[0] == '/')
- current_dir.clear();
- else if (current_dir[0] != '/')
- current_dir = "/";
- else {
- FilePath curr(current_dir, false, "/");
- current_dir = curr.absolute();
-#ifdef __WIN32__
- adapt_current_path(current_dir, _drive);
-#endif
- }
- }
- path.insert(0, current_dir + "/");
- string elem;
- FORALL (path, string::const_iterator, it) {
- if (*it == '/') {
- add(elem);
- elem.clear();
- }
- else
- elem += *it;
- }
- add(elem);
-}
-
-
-/** Adds a location step to the current path. */
-void FilePath::add (const string &dir) {
- if (dir == ".." && !_dirs.empty())
- _dirs.pop_back();
- else if (dir.length() > 0 && dir != ".")
- _dirs.push_back(dir);
-}
-
-
-/** Returns the suffix of the filename. If FilePath represents the
- * location of a directory (and not of a file) an empty string
- * is returned. */
-string FilePath::suffix () const {
- size_t start = 0;
- // ignore leading dots
- while (start < _fname.length() && _fname[start] == '.')
- start++;
- string sub = _fname.substr(start);
- size_t pos = sub.rfind('.');
- if (pos != string::npos && pos < sub.length()-1)
- return sub.substr(pos+1);
- return "";
-}
-
-
-/** Changes the suffix of the filename. If FilePath represents the
- * location of a directory (and not of a file) nothing happens.
- * @param[in] s new suffix */
-void FilePath::suffix (const string &s) {
- if (!_fname.empty()) {
- string current_suffix = suffix();
- if (!current_suffix.empty())
- _fname.erase(_fname.length()-current_suffix.length()-1);
- _fname += "."+s;
- }
-}
-
-
-/** Returns the filename without suffix.
- * Example: FilePath("/a/b/c.def", true) == "c" */
-string FilePath::basename () const {
- if (!_fname.empty()) {
- size_t len = suffix().length();
- if (len > 0)
- len++; // strip dot too
- return _fname.substr(0, _fname.length()-len);
- }
- return "";
-}
-
-
-/** Returns the absolute path string of this FilePath.
- * @param[in] with_filename if false, the filename is omitted
- * @return the absolute path string */
-string FilePath::absolute (bool with_filename) const {
- string path;
- FORALL (_dirs, ConstIterator, it) {
- path += "/" + *it;
- }
- if (path.empty())
- path = "/";
- if (with_filename && !_fname.empty())
- path += "/"+_fname;
-#ifdef __WIN32__
- if (_drive)
- path.insert(0, string(1, _drive) + ":");
-#endif
- return single_slashes(path);
-}
-
-
-/** Returns a path string of this FilePath relative to reldir. If we wanted to
- * navigate from /a/b/c/d to /a/b/e/f using the shell command "cd", we could do that
- * with the relative path argument: "cd ../../e/f". This function returns such a relative
- * path. Example: FilePath("/a/b/e/f").relative("/a/b/c/d") => "../../e/f".
- * @param[in] reldir absolute path to a directory
- * @param[in] with_filename if false, the filename is omitted
- * @return the relative path string */
-string FilePath::relative (string reldir, bool with_filename) const {
- if (reldir.empty())
- reldir = FileSystem::getcwd();
-#ifdef __WIN32__
- adapt_current_path(reldir, _drive);
-#endif
- if (reldir[0] != '/')
- return absolute();
- FilePath rel(reldir, false);
- string path;
-#ifdef __WIN32__
- if (rel._drive && _drive && rel._drive != _drive)
- path += string(1, _drive) + ":";
-#endif
- ConstIterator i = _dirs.begin();
- ConstIterator j = rel._dirs.begin();
- while (i != _dirs.end() && j != rel._dirs.end() && *i == *j)
- ++i, ++j;
- for (; j != rel._dirs.end(); ++j)
- path += "../";
- for (; i != _dirs.end(); ++i)
- path += *i + "/";
- if (!path.empty())
- path.erase(path.length()-1, 1); // remove trailing slash
- if (with_filename && !_fname.empty()) {
- if (!path.empty() && path != "/")
- path += "/";
- path += _fname;
- }
- if (path.empty())
- path = ".";
- return single_slashes(path);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.h
deleted file mode 100644
index c1c1bab7064..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FilePath.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*************************************************************************
-** FilePath.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FILEPATH_H
-#define DVISVGM_FILEPATH_H
-
-#include <string>
-#include <vector>
-
-class FilePath
-{
- typedef std::vector<std::string> Directories;
- typedef Directories::iterator Iterator;
- typedef Directories::const_iterator ConstIterator;
- public:
- FilePath (const std::string &path);
- FilePath (const std::string &path, bool isfile, std::string current_dir="");
- std::string absolute (bool with_filename=true) const;
- std::string relative (std::string reldir="", bool with_filename=true) const;
- std::string basename () const;
- std::string suffix () const;
- void suffix (const std::string &s);
- size_t depth () const {return _dirs.size();}
- bool isFile () const {return !_fname.empty();}
- bool empty () const {return _dirs.empty() && _fname.empty();}
- const std::string& filename () const {return _fname;}
- void filename (const std::string &fname) {_fname = fname;}
-
- protected:
- void init (std::string path, bool isfile, std::string current_dir);
- void add (const std::string &elem);
-
- private:
- Directories _dirs;
- std::string _fname;
-#ifdef __WIN32__
- char _drive;
-#endif
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.cpp
deleted file mode 100644
index e938e65a207..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/*************************************************************************
-** FileSystem.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdlib>
-#include <cstring>
-#include <fstream>
-#include "FileSystem.h"
-#include "macros.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-
-using namespace std;
-
-#ifdef __WIN32__
- #include <direct.h>
- #include <windows.h>
- const char *FileSystem::DEVNULL = "nul";
- const char FileSystem::PATHSEP = '\\';
- #define unlink _unlink
-#else
- #include <dirent.h>
- #include <pwd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- const char *FileSystem::DEVNULL = "/dev/null";
- const char FileSystem::PATHSEP = '/';
-#endif
-
-
-bool FileSystem::remove (const string &fname) {
- return unlink(fname.c_str()) == 0;
-}
-
-
-/** Copies a file.
- * @param[in] src path of file to copy
- * @param[in] dest path of target file
- * @param[in] remove_src remove file 'src' if true
- * @return true on success */
-bool FileSystem::copy (const string &src, const string &dest, bool remove_src) {
- ifstream ifs(src.c_str(), ios::in|ios::binary);
- ofstream ofs(dest.c_str(), ios::out|ios::binary);
- if (ifs && ofs) {
- ofs << ifs.rdbuf();
- if (!ifs.fail() && !ofs.fail() && remove_src) {
- ofs.close();
- ifs.close();
- return remove(src);
- }
- else
- return !remove_src;
- }
- return false;
-}
-
-
-bool FileSystem::rename (const string &oldname, const string &newname) {
- return ::rename(oldname.c_str(), newname.c_str()) == 0;
-}
-
-
-UInt64 FileSystem::filesize (const string &fname) {
-#ifdef __WIN32__
- // unfortunately, stat doesn't work properly under Windows
- // so we have to use this freaky code
- WIN32_FILE_ATTRIBUTE_DATA attr;
- GetFileAttributesExA(fname.c_str(), GetFileExInfoStandard, &attr);
- return (static_cast<UInt64>(attr.nFileSizeHigh) << (8*sizeof(attr.nFileSizeLow))) | attr.nFileSizeLow;
-#else
- struct stat attr;
- return (stat(fname.c_str(), &attr) == 0) ? attr.st_size : 0;
-#endif
-}
-
-
-string FileSystem::adaptPathSeperators (string path) {
- for (size_t i=0; i < path.length(); i++)
- if (path[i] == PATHSEP)
- path[i] = '/';
- return path;
-}
-
-
-string FileSystem::getcwd () {
- char buf[1024];
-#ifdef __WIN32__
- return adaptPathSeperators(_getcwd(buf, 1024));
-#else
- return ::getcwd(buf, 1024);
-#endif
-}
-
-
-/** Changes the work directory.
- * @param[in] dir path to new work directory
- * @return true on success */
-bool FileSystem::chdir (const char *dir) {
- bool success = false;
- if (dir) {
-#ifdef __WIN32__
- success = (_chdir(dir) == 0);
-#else
- success = (chdir(dir) == 0);
-#endif
- }
- return success;
-}
-
-
-/** Returns the user's home directory. */
-const char* FileSystem::userdir () {
-#ifdef __WIN32__
- const char *drive=getenv("HOMEDRIVE");
- const char *path=getenv("HOMEPATH");
- if (drive && path) {
- static string ret = string(drive)+path;
- if (!ret.empty())
- return ret.c_str();
- }
- return 0;
-#else
- const char *dir=getenv("HOME");
- if (!dir) {
- if (const char *user=getenv("USER")) {
- if (struct passwd *pw=getpwnam(user))
- dir = pw->pw_dir;
- }
- }
- return dir;
-#endif
-}
-
-
-/** Private wrapper function for mkdir: creates a single folder.
- * @param[in] dir folder name
- * @return true on success */
-static bool s_mkdir (const char *dir) {
- bool success = true;
- if (!FileSystem::exists(dir)) {
-#ifdef __WIN32__
- success = (_mkdir(dir) == 0);
-#else
- success = (mkdir(dir, 0776) == 0);
-#endif
- }
- return success;
-}
-
-
-static bool inline s_rmdir (const char *dir) {
-#ifdef __WIN32__
- return (_rmdir(dir) == 0);
-#else
- return (rmdir(dir) == 0);
-#endif
-}
-
-
-/** Removes leading and trailing whitespace from a string. */
-static string trim (const string &str) {
- int first=0, last=str.length()-1;
- while (isspace(str[first]))
- first++;
- while (isspace(str[last]))
- last--;
- return str.substr(first, last-first+1);
-}
-
-
-/** Creates a new folder relative to the current work directory. If necessary,
- * the parent folders are also created.
- * @param[in] dir single folder name or path to folder
- * @return true if folder(s) could be created */
-bool FileSystem::mkdir (const char *dir) {
- bool success = false;
- if (dir) {
- success = true;
- const string dirstr = adaptPathSeperators(trim(dir));
- for (size_t pos=1; success && (pos = dirstr.find('/', pos)) != string::npos; pos++)
- success &= s_mkdir(dirstr.substr(0, pos).c_str());
- success &= s_mkdir(dirstr.c_str());
- }
- return success;
-}
-
-
-/** Removes a directory and its contents.
- * @param[in] dirname path to directory
- * @return true on success */
-bool FileSystem::rmdir (const char *dirname) {
- bool ok = false;
- if (dirname && isDirectory(dirname)) {
- ok = true;
-#ifdef __WIN32__
- string pattern = string(dirname) + "/*";
- WIN32_FIND_DATA data;
- HANDLE h = FindFirstFile(pattern.c_str(), &data);
- bool ready = (h == INVALID_HANDLE_VALUE);
- while (!ready && ok) {
- const char *fname = data.cFileName;
- string path = string(dirname) + "/" + fname;
- if (isDirectory(path.c_str())) {
- if (strcmp(fname, ".") != 0 && strcmp(fname, "..") != 0)
- ok = rmdir(path.c_str()) && s_rmdir(path.c_str());
- }
- else if (isFile(path.c_str()))
- ok = remove(path);
- else
- ok = false;
- ready = !FindNextFile(h, &data);
- }
- FindClose(h);
-#else
- if (DIR *dir = opendir(dirname)) {
- struct dirent *ent;
- while ((ent = readdir(dir)) && ok) {
- const char *fname = ent->d_name;
- string path = string(fname) + "/" + fname;
- if (isDirectory(path.c_str())) {
- if (strcmp(fname, ".") != 0 && strcmp(fname, "..") != 0)
- ok = rmdir(path.c_str()) && s_rmdir(path.c_str());
- }
- else if (isFile(path.c_str()))
- ok = remove(path);
- else
- ok = false;
- }
- closedir(dir);
- }
-#endif
- ok = s_rmdir(dirname);
- }
- return ok;
-}
-
-
-/** Checks if a file or directory exits. */
-bool FileSystem::exists (const char *fname) {
- if (!fname)
- return false;
-#ifdef __WIN32__
- return GetFileAttributes(fname) != INVALID_FILE_ATTRIBUTES;
-#else
- struct stat attr;
- return stat(fname, &attr) == 0;
-#endif
-}
-
-
-/** Returns true if 'fname' references a directory. */
-bool FileSystem::isDirectory (const char *fname) {
- if (!fname)
- return false;
-#ifdef __WIN32__
- return GetFileAttributes(fname) & FILE_ATTRIBUTE_DIRECTORY;
-#else
- struct stat attr;
- return stat(fname, &attr) == 0 && S_ISDIR(attr.st_mode);
-#endif
-}
-
-
-/** Returns true if 'fname' references a file. */
-bool FileSystem::isFile (const char *fname) {
- if (!fname)
- return false;
-#ifdef __WIN32__
- ifstream ifs(fname);
- return (bool)ifs;
-#else
- struct stat attr;
- return stat(fname, &attr) == 0 && S_ISREG(attr.st_mode);
-#endif
-}
-
-
-int FileSystem::collect (const char *dirname, vector<string> &entries) {
- entries.clear();
-#ifdef __WIN32__
- string pattern = string(dirname) + "/*";
- WIN32_FIND_DATA data;
- HANDLE h = FindFirstFile(pattern.c_str(), &data);
- bool ready = (h == INVALID_HANDLE_VALUE);
- while (!ready) {
- string fname = data.cFileName;
- string path = string(dirname)+"/"+fname;
- string typechar = isFile(path.c_str()) ? "f" : isDirectory(path.c_str()) ? "d" : "?";
- if (fname != "." && fname != "..")
- entries.push_back(typechar+fname);
- ready = !FindNextFile(h, &data);
- }
- FindClose(h);
-#else
- if (DIR *dir = opendir(dirname)) {
- struct dirent *ent;
- while ((ent = readdir(dir))) {
- string fname = ent->d_name;
- string path = string(dirname)+"/"+fname;
- string typechar = isFile(path.c_str()) ? "f" : isDirectory(path.c_str()) ? "d" : "?";
- if (fname != "." && fname != "..")
- entries.push_back(typechar+fname);
- }
- closedir(dir);
- }
-#endif
- return entries.size();
-}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.h
deleted file mode 100644
index f60fcd0ac86..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FileSystem.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
-** FileSystem.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FILESYSTEM_H
-#define DVISVGM_FILESYSTEM_H
-
-#include <string>
-#include <vector>
-#include "types.h"
-
-struct FileSystem
-{
- static bool remove (const std::string &fname);
- static bool rename (const std::string &oldname, const std::string &newname);
- static bool copy (const std::string &src, const std::string &dest, bool remove_src=false);
- static UInt64 filesize (const std::string &fname);
- static std::string adaptPathSeperators (std::string path);
- static std::string getcwd ();
- static bool chdir (const char *dir);
- static bool exists (const char *file);
- static bool mkdir (const char *dir);
- static bool rmdir (const char *fname);
- static int collect (const char *dirname, std::vector<std::string> &entries);
- static bool isDirectory (const char *fname);
- static bool isFile (const char *fname);
- static const char* userdir ();
- static const char* DEVNULL;
- static const char PATHSEP;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.cpp
deleted file mode 100644
index a7f78e80427..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.cpp
+++ /dev/null
@@ -1,668 +0,0 @@
-/*************************************************************************
-** Font.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdlib>
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include "CMap.h"
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "Font.h"
-#include "FontEncoding.h"
-#include "FontEngine.h"
-#include "GFGlyphTracer.h"
-#include "Glyph.h"
-#include "Message.h"
-#include "MetafontWrapper.h"
-#include "TFM.h"
-#include "VFReader.h"
-#include "SignalHandler.h"
-#include "Subfont.h"
-#include "SVGTree.h"
-#include "macros.h"
-
-
-using namespace std;
-
-
-/** Returns true if 'unicode' is a valid unicode value in XML documents.
- * XML version 1.0 doesn't allow various unicode character references
- * (&#1; for example). */
-static bool valid_unicode (UInt32 unicode) {
- if ((unicode & 0xffff) == 0xfffe || (unicode & 0xffff) == 0xffff)
- return false;
-
- UInt32 ranges[] = {
- 0x0000, 0x0020,
- 0x007f, 0x0084,
- 0x0086, 0x009f,
- 0x202a, 0x202e, // bidi control characters
- 0xd800, 0xdfff,
- 0xfdd0, 0xfdef,
- };
- for (size_t i=0; i < sizeof(ranges)/sizeof(UInt32)/2; i++)
- if (unicode >= ranges[2*i] && unicode <= ranges[2*i+1])
- return false;
- return true;
-}
-
-
-UInt32 Font::unicode (UInt32 c) const {
- // @@ this should be optimized :-)
- return valid_unicode(c) ? c : 0x3400+c;
-}
-
-
-/** Returns the encoding object of this font which is asigned in a map file.
- * If there's no encoding assigned, the function returns 0. */
-const FontEncoding* Font::encoding () const {
- if (const FontMap::Entry *entry = fontMapEntry())
- return FontEncoding::encoding(entry->encname);
- return 0;
-}
-
-
-const FontMap::Entry* Font::fontMapEntry () const {
- string fontname = name();
- size_t pos = fontname.rfind('.');
- if (pos != string::npos)
- fontname = fontname.substr(0, pos); // strip extension
- return FontMap::instance().lookup(fontname);
-}
-
-
-/** Compute the extents of a given glyph.
- * @param[in] c character code of glyph
- * @param[in] vertical true if is glyph is part of vertical aligned text
- * @param[out] metrics the resulting extents */
-void Font::getGlyphMetrics (int c, bool vertical, GlyphMetrics &metrics) const {
- double s = scaleFactor();
- if (vertical) { // get metrics for vertical text flow?
- if (verticalLayout()) { // is the font designed for vertical texts?
- metrics.wl = s*charDepth(c);
- metrics.wr = s*charHeight(c);
- metrics.h = 0;
- metrics.d = s*charWidth(c);
- }
- else { // rotate box by 90 degrees for alphabetic text
- metrics.wl = s*charDepth(c);
- metrics.wr = s*charHeight(c);
- metrics.h = 0;
- metrics.d = s*(charWidth(c)+italicCorr(c));
- }
- }
- else {
- metrics.wl = 0;
- metrics.wr = s*(charWidth(c)+italicCorr(c));
- metrics.h = s*charHeight(c);
- metrics.d = s*charDepth(c);
- }
-}
-
-
-///////////////////////////////////////////////////////////////////////////////////////
-
-TFMFont::TFMFont (string name, UInt32 cs, double ds, double ss)
- : _metrics(0), _fontname(name), _checksum(cs), _dsize(ds), _ssize(ss)
-{
-}
-
-
-TFMFont::~TFMFont () {
- delete _metrics;
-}
-
-
-/** Returns a font metrics object for the current font.
- * @throw FontException if TFM file can't be found */
-const FontMetrics* TFMFont::getMetrics () const {
- if (!_metrics) {
- try {
- _metrics = FontMetrics::read(_fontname.c_str());
- if (!_metrics) {
- _metrics = new NullFontMetric;
- Message::wstream(true) << "can't find "+_fontname+".tfm\n";
- }
- }
- catch (FontMetricException &e) {
- _metrics = new NullFontMetric;
- Message::wstream(true) << e.what() << " in " << _fontname << ".tfm\n";
- }
- }
- return _metrics;
-}
-
-
-double TFMFont::charWidth (int c) const {
- double w = getMetrics() ? getMetrics()->getCharWidth(c) : 0;
- if (style()) {
- w *= style()->extend;
- w += fabs(style()->slant*charHeight(c)); // slant := tan(phi) = dx/height
- }
- return w;
-}
-
-
-double TFMFont::italicCorr (int c) const {
- double w = getMetrics() ? getMetrics()->getItalicCorr(c) : 0;
- if (style())
- w *= style()->extend;
- return w;
-}
-
-
-double TFMFont::charDepth (int c) const {return getMetrics() ? getMetrics()->getCharDepth(c) : 0;}
-double TFMFont::charHeight (int c) const {return getMetrics() ? getMetrics()->getCharHeight(c) : 0;}
-
-
-/** Tests if the checksum of the font matches that of the corresponding TFM file. */
-bool TFMFont::verifyChecksums () const {
- if (_checksum != 0 && getMetrics() && getMetrics()->getChecksum() != 0)
- return _checksum == getMetrics()->getChecksum();
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-// static class variables
-bool PhysicalFont::EXACT_BBOX = false;
-bool PhysicalFont::KEEP_TEMP_FILES = false;
-const char *PhysicalFont::CACHE_PATH = 0;
-double PhysicalFont::METAFONT_MAG = 4;
-FontCache PhysicalFont::_cache;
-
-
-Font* PhysicalFont::create (string name, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type) {
- return new PhysicalFontImpl(name, 0, checksum, dsize, ssize, type);
-}
-
-
-Font* PhysicalFont::create (string name, int fontindex, UInt32 checksum, double dsize, double ssize) {
- return new PhysicalFontImpl(name, fontindex, checksum, dsize, ssize, PhysicalFont::TTC);
-}
-
-
-const char* PhysicalFont::path () const {
- const char *ext=0;
- switch (type()) {
- case OTF: ext = "otf"; break;
- case PFB: ext = "pfb"; break;
- case TTC: ext = "ttc"; break;
- case TTF: ext = "ttf"; break;
- case MF : ext = "mf"; break;
- default : ext = 0;
- }
- if (ext)
- return FileFinder::lookup(name()+"."+ext);
- return FileFinder::lookup(name());
-}
-
-
-/** Returns true if this font is CID-based. */
-bool PhysicalFont::isCIDFont () const {
- if (type() == MF)
- return false;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().isCIDFont();
-}
-
-
-/** Retrieve the IDs of all charachter maps available in the font file.
- * @param[out] charMapIDs IDs of the found character maps
- * @return number of found character maps */
-int PhysicalFont::collectCharMapIDs (std::vector<CharMapID> &charMapIDs) const {
- if (type() == MF)
- return 0;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().getCharMapIDs(charMapIDs);
-}
-
-
-/** Decodes a character code used in the DVI file to the code required to
- * address the correct character in the font.
- * @param[in] c DVI character to decode
- * @return target character code or name */
-Character PhysicalFont::decodeChar (UInt32 c) const {
- if (const FontEncoding *enc = encoding())
- return enc->decode(c);
- return Character(Character::CHRCODE, c);
-}
-
-
-/** Returns the number of units per EM. The EM square is the virtual area a glyph is designed on.
- * All coordinates used to specify portions of the glyph are relative to the origin (0,0) at the
- * lower left corner of this square, while the upper right corner is located at (m,m), where m
- * is an integer value defined with the font, and returned by this function. */
-int PhysicalFont::unitsPerEm() const {
- if (type() == MF)
- return 1000;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().getUnitsPerEM();
-}
-
-
-int PhysicalFont::hAdvance () const {
- if (type() == MF)
- return 0;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().getHAdvance();
-}
-
-
-double PhysicalFont::hAdvance (int c) const {
- if (type() == MF)
- return unitsPerEm()*charWidth(c)/designSize();
- FontEngine::instance().setFont(*this);
- if (const FontMap::Entry *entry = fontMapEntry())
- if (Subfont *sf = entry->subfont)
- c = sf->decode(c);
- return FontEngine::instance().getHAdvance(decodeChar(c));
-}
-
-
-double PhysicalFont::vAdvance (int c) const {
- if (type() == MF)
- return unitsPerEm()*charWidth(c)/designSize();
- FontEngine::instance().setFont(*this);
- if (const FontMap::Entry *entry = fontMapEntry())
- if (Subfont *sf = entry->subfont)
- c = sf->decode(c);
- return FontEngine::instance().getVAdvance(decodeChar(c));
-}
-
-
-string PhysicalFont::glyphName (int c) const {
- if (type() == MF)
- return "";
- FontEngine::instance().setFont(*this);
- if (const FontMap::Entry *entry = fontMapEntry())
- if (Subfont *sf = entry->subfont)
- c = sf->decode(c);
- return FontEngine::instance().getGlyphName(decodeChar(c));
-}
-
-
-double PhysicalFont::scaledAscent() const {
- return ascent()*scaledSize()/unitsPerEm();
-}
-
-
-int PhysicalFont::ascent () const {
- if (type() == MF)
- return 0;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().getAscender();
-}
-
-
-int PhysicalFont::descent () const {
- if (type() == MF)
- return 0;
- FontEngine::instance().setFont(*this);
- return FontEngine::instance().getDescender();
-}
-
-
-/** Extracts the glyph outlines of a given character.
- * @param[in] c character code of requested glyph
- * @param[out] glyph path segments of the glyph outline
- * @param[in] cb optional callback object for tracer class
- * @return true if outline could be computed */
-bool PhysicalFont::getGlyph (int c, GraphicPath<Int32> &glyph, GFGlyphTracer::Callback *cb) const {
- if (type() == MF) {
- const Glyph *cached_glyph=0;
- if (CACHE_PATH) {
- _cache.write(CACHE_PATH);
- _cache.read(name().c_str(), CACHE_PATH);
- cached_glyph = _cache.getGlyph(c);
- }
- if (cached_glyph) {
- glyph = *cached_glyph;
- return true;
- }
- else {
- string gfname;
- if (createGF(gfname)) {
- try {
- double ds = getMetrics() ? getMetrics()->getDesignSize() : 1;
- GFGlyphTracer tracer(gfname, unitsPerEm()/ds, cb);
- tracer.setGlyph(glyph);
- tracer.executeChar(c);
- glyph.closeOpenSubPaths();
- if (CACHE_PATH)
- _cache.setGlyph(c, glyph);
- return true;
- }
- catch (GFException &e) {
- // @@ print error message
- }
- }
- else {
- Message::wstream(true) << "failed creating " << name() << ".gf\n";
- }
- }
- }
- else { // vector fonts (OTF, PFB, TTF, TTC)
- bool ok=true;
- FontEngine::instance().setFont(*this);
- if (const FontMap::Entry *entry = fontMapEntry())
- if (Subfont *sf = entry->subfont)
- c = sf->decode(c);
- ok = FontEngine::instance().traceOutline(decodeChar(c), glyph, false);
- glyph.closeOpenSubPaths();
- return ok;
- }
- return false;
-}
-
-
-/** Creates a GF file for this font object.
- * @param[out] gfname name of GF font file
- * @return true on success */
-bool PhysicalFont::createGF (string &gfname) const {
- SignalHandler::instance().check();
- gfname = name()+".gf";
- MetafontWrapper mf(name());
- bool ok = mf.make("ljfour", METAFONT_MAG); // call Metafont if necessary
- return ok && mf.success() && getMetrics();
-}
-
-
-/** Traces all glyphs of the current font and stores them in the cache. If caching is disabled, nothing happens.
- * @param[in] includeCached if true, glyphs already cached are traced again
- * @param[in] cb optional callback methods called by the tracer
- * @return number of glyphs traced */
-int PhysicalFont::traceAllGlyphs (bool includeCached, GFGlyphTracer::Callback *cb) const {
- int count = 0;
- if (type() == MF && CACHE_PATH) {
- if (const FontMetrics *metrics = getMetrics()) {
- int fchar = metrics->firstChar();
- int lchar = metrics->lastChar();
- string gfname;
- Glyph glyph;
- if (createGF(gfname)) {
- _cache.read(name().c_str(), CACHE_PATH);
- double ds = getMetrics() ? getMetrics()->getDesignSize() : 1;
- GFGlyphTracer tracer(gfname, unitsPerEm()/ds, cb);
- tracer.setGlyph(glyph);
- for (int i=fchar; i <= lchar; i++) {
- if (includeCached || !_cache.getGlyph(i)) {
- glyph.newpath();
- tracer.executeChar(i);
- glyph.closeOpenSubPaths();
- _cache.setGlyph(i, glyph);
- ++count;
- }
- }
- _cache.write(CACHE_PATH);
- }
- }
- }
- return count;
-}
-
-
-/** Computes the exact bounding box of a glyph.
- * @param[in] c character code of the glyph
- * @param[out] bbox the computed bounding box
- * @param[in] cb optional calback object forwarded to the tracer
- * @return true if the box could be computed successfully */
-bool PhysicalFont::getExactGlyphBox(int c, BoundingBox& bbox, GFGlyphTracer::Callback* cb) const {
- Glyph glyph;
- if (getGlyph(c, glyph, cb)) {
- glyph.computeBBox(bbox);
- double s = scaledSize()/unitsPerEm();
- bbox.scale(s, s);
- return true;
- }
- return false;
-}
-
-
-bool PhysicalFont::getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical, GFGlyphTracer::Callback *cb) const {
- BoundingBox charbox;
- if (!getExactGlyphBox(c, charbox, cb))
- return false;
- if ((metrics.wl = -charbox.minX()) < 0) metrics.wl=0;
- if ((metrics.wr = charbox.maxX()) < 0) metrics.wr=0;
- if ((metrics.h = charbox.maxY()) < 0) metrics.h=0;
- if ((metrics.d = -charbox.minY()) < 0) metrics.d=0;
- if (vertical) { // vertical text orientation
- if (verticalLayout()) { // font designed for vertical layout?
- metrics.wl = metrics.wr = (metrics.wl+metrics.wr)/2;
- metrics.d += metrics.h;
- metrics.h = 0;
- }
- else {
- double depth = metrics.d;
- metrics.d = metrics.wr;
- metrics.wr = metrics.h;
- metrics.h = metrics.wl;
- metrics.wl = depth;
- }
- }
- return true;
-}
-
-
-Font* VirtualFont::create (string name, UInt32 checksum, double dsize, double ssize) {
- return new VirtualFontImpl(name, checksum, dsize, ssize);
-}
-
-
-//////////////////////////////////////////////////////////////////////////////
-
-
-PhysicalFontImpl::PhysicalFontImpl (string name, int fontindex, UInt32 cs, double ds, double ss, PhysicalFont::Type type)
- : TFMFont(name, cs, ds, ss),
- _filetype(type), _fontIndex(fontindex), _fontMapEntry(Font::fontMapEntry()), _encodingPair(Font::encoding()), _localCharMap(0)
-{
-}
-
-
-PhysicalFontImpl::~PhysicalFontImpl () {
- if (CACHE_PATH)
- _cache.write(CACHE_PATH);
- if (!KEEP_TEMP_FILES)
- tidy();
- delete _localCharMap;
-}
-
-
-const FontEncoding* PhysicalFontImpl::encoding () const {
- if (!_encodingPair.enc1())
- return 0;
- return &_encodingPair;
-}
-
-
-bool PhysicalFontImpl::findAndAssignBaseFontMap () {
- const FontEncoding *enc = encoding();
- if (enc && enc->mapsToCharIndex()) {
- // try to find a base font map that maps from character indexes to a suitable
- // target encoding supported by the font file
- if (const FontEncoding *bfmap = enc->findCompatibleBaseFontMap(this, _charmapID))
- _encodingPair.assign(bfmap);
- else
- return false;
- }
- else if (type() != MF) {
- FontEngine::instance().setFont(*this);
- if ((_localCharMap = FontEngine::instance().createCustomToUnicodeMap()) != 0)
- _charmapID = FontEngine::instance().setCustomCharMap();
- else
- _charmapID = FontEngine::instance().setUnicodeCharMap();
- }
- return true;
-}
-
-
-UInt32 PhysicalFontImpl::unicode (UInt32 c) const {
- if (type() == MF)
- return Font::unicode(c);
- Character chr = decodeChar(c);
- if (chr.type() == Character::NAME || chr.number() == 0)
- return Font::unicode(c);
-
- if (_localCharMap) {
- if (UInt32 mapped_char = (*_localCharMap)[chr.number()])
- return mapped_char;
- // No unicode equivalent found in font file.
- // Now we should look for a smart alternative but at the moment
- // it's sufficient to simply choose a valid unused unicode value...
- // Can we use the charcode itself as a unicode replacement?
- if (!_localCharMap->valueExists(chr.number()) && valid_unicode(chr.number()))
- return chr.number();
- }
- if (valid_unicode(chr.number()))
- return chr.number();
- return Font::unicode(chr.number());
-}
-
-
-/** Delete all temporary font files created by Metafont. */
-void PhysicalFontImpl::tidy () const {
- if (type() == MF) {
- const char *ext[] = {"gf", "tfm", "log", 0};
- for (const char **p=ext; *p; ++p) {
- if (FileSystem::exists((name()+"."+(*p)).c_str()))
- FileSystem::remove(name()+"."+(*p));
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-string NativeFont::uniqueName (const string &path, const FontStyle &style) {
- static map<string, int> ids;
- ostringstream oss;
- oss << path << "b" << style.bold << "e" << style.extend << "s" << style.slant;
- map<string, int>::iterator it = ids.find(oss.str());
- int id = ids.size();
- if (it == ids.end())
- ids[oss.str()] = id;
- else
- id = it->second;
- oss.str("");
- oss << "nf" << id;
- return oss.str();
-}
-
-
-string NativeFont::name () const {
- return uniqueName(path(), _style);
-}
-
-
-PhysicalFont::Type NativeFont::type () const {
- if (const char *filepath = path()) {
- if (const char *p =strrchr(filepath, '.')) {
- string ext = p+1;
- if (ext == "otf")
- return PhysicalFont::OTF;
- if (ext == "ttf")
- return PhysicalFont::TTF;
- if (ext == "pfb")
- return PhysicalFont::PFB;
- }
- }
- return PhysicalFont::UNKNOWN;
-}
-
-
-double NativeFont::charWidth (int c) const {
- FontEngine::instance().setFont(*this);
- int upem = FontEngine::instance().getUnitsPerEM();
- double w = upem ? (scaledSize()*FontEngine::instance().getAdvance(c)/upem*_style.extend) : 0;
- w += fabs(_style.slant*charHeight(c));
- return w;
-}
-
-
-double NativeFont::charHeight (int c) const {
- FontEngine::instance().setFont(*this);
- int upem = FontEngine::instance().getUnitsPerEM();
- return upem ? (scaledSize()*FontEngine::instance().getAscender()/upem) : 0;
-}
-
-
-double NativeFont::charDepth (int c) const {
- FontEngine::instance().setFont(*this);
- int upem = FontEngine::instance().getUnitsPerEM();
- return upem ? (-scaledSize()*FontEngine::instance().getDescender()/upem) : 0;
-}
-
-
-UInt32 NativeFont::unicode (UInt32 c) const {
- UInt32 ucode = decodeChar(c).number();
- return valid_unicode(ucode) ? ucode : 0x3400+ucode;
-}
-
-
-bool NativeFontImpl::findAndAssignBaseFontMap () {
- FontEngine &fe = FontEngine::instance();
- fe.setFont(*this);
- fe.buildCharMap(true, _toUnicodeMap);
- _charmapID = fe.setUnicodeCharMap();
- return true;
-}
-
-
-Character NativeFontImpl::decodeChar (UInt32 c) const {
- return Character(Character::CHRCODE, _toUnicodeMap[c]);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-VirtualFontImpl::VirtualFontImpl (string name, UInt32 cs, double ds, double ss)
- : TFMFont(name, cs, ds, ss)
-{
-}
-
-
-VirtualFontImpl::~VirtualFontImpl () {
- // delete dvi vectors received by VFReaderAction
- for (map<UInt32, DVIVector*>::iterator i=_charDefs.begin(); i != _charDefs.end(); ++i)
- delete i->second;
-}
-
-
-const char* VirtualFontImpl::path () const {
- return FileFinder::lookup(name()+".vf");
-}
-
-
-void VirtualFontImpl::assignChar (UInt32 c, DVIVector *dvi) {
- if (dvi) {
- if (_charDefs.find(c) == _charDefs.end())
- _charDefs[c] = dvi;
- else
- delete dvi;
- }
-}
-
-
-const vector<UInt8>* VirtualFontImpl::getDVI (int c) const {
- map<UInt32,DVIVector*>::const_iterator it = _charDefs.find(c);
- return (it == _charDefs.end() ? 0 : it->second);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.h
deleted file mode 100644
index bc33f630004..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Font.h
+++ /dev/null
@@ -1,388 +0,0 @@
-/*************************************************************************
-** Font.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONT_H
-#define DVISVGM_FONT_H
-
-#include <map>
-#include <string>
-#include <vector>
-#include "Character.h"
-#include "CharMap.h"
-#include "CharMapID.h"
-#include "Color.h"
-#include "FontCache.h"
-#include "FontEncoding.h"
-#include "FontMap.h"
-#include "FontMetrics.h"
-#include "GFGlyphTracer.h"
-#include "Glyph.h"
-#include "GraphicPath.h"
-#include "MessageException.h"
-#include "VFActions.h"
-#include "VFReader.h"
-#include "types.h"
-#include "CharMap.h"
-
-
-struct FontStyle;
-
-
-struct GlyphMetrics
-{
- GlyphMetrics () : wl(0), wr(0), h(0), d(0) {}
- GlyphMetrics (double wwl, double wwr, double hh, double dd) : wl(wwl), wr(wwr), h(hh), d(dd) {}
- double wl, wr, h, d;
-};
-
-
-/** Abstract base for all font classes. */
-struct Font {
- virtual ~Font () {}
- virtual Font* clone (double ds, double sc) const =0;
- virtual const Font* uniqueFont () const =0;
- virtual std::string name () const =0;
- virtual double designSize () const =0;
- virtual double scaledSize () const =0;
- virtual double scaleFactor () const {return scaledSize()/designSize();}
- virtual double charWidth (int c) const =0;
- virtual double charDepth (int c) const =0;
- virtual double charHeight (int c) const =0;
- virtual double italicCorr (int c) const =0;
- virtual const FontMetrics* getMetrics () const =0;
- virtual const char* path () const =0;
- virtual const FontEncoding* encoding () const;
- virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const =0;
- virtual void getGlyphMetrics (int c, bool vertical, GlyphMetrics &metrics) const;
- virtual UInt32 unicode (UInt32 c) const;
- virtual void tidy () const {}
- virtual bool findAndAssignBaseFontMap () {return true;}
- virtual bool verticalLayout () const {return getMetrics() ? getMetrics()->verticalLayout() : false;}
- virtual bool verifyChecksums () const {return true;}
- virtual int fontIndex () const {return 0;}
- virtual const FontStyle* style () const {return 0;}
- virtual Color color () const {return Color::BLACK;}
- virtual const FontMap::Entry* fontMapEntry () const;
-};
-
-
-/** Empty font without any glyphs. Instances of this class are used
- * if no physical or virtual font file can be found.
- * The metric values returned by the member functions are based on cmr10. */
-struct EmptyFont : public Font
-{
- public:
- EmptyFont (std::string name) : _fontname(name) {}
- Font* clone (double ds, double sc) const {return new EmptyFont(*this);}
- const Font* uniqueFont () const {return this;}
- std::string name () const {return _fontname;}
- double designSize () const {return 10;} // cmr10 design size in pt
- double scaledSize () const {return 10;} // cmr10 scaled size in pt
- double charWidth (int c) const {return 9.164;} // width of cmr10's 'M' in pt
- double charHeight (int c) const {return 6.833;} // height of cmr10's 'M' in pt
- double charDepth (int c) const {return 0;}
- double italicCorr (int c) const {return 0;}
- const FontMetrics* getMetrics () const {return 0;}
- const char* path () const {return 0;}
- bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const {return false;}
-
- private:
- std::string _fontname;
-};
-
-
-/** Interface for all physical fonts. */
-class PhysicalFont : public virtual Font
-{
- public:
- enum Type {MF, OTF, PFB, TTC, TTF, UNKNOWN};
-
- static Font* create (std::string name, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type);
- static Font* create (std::string name, int fontindex, UInt32 checksum, double dsize, double ssize);
- virtual Type type () const =0;
- virtual bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const;
- virtual bool getExactGlyphBox (int c, BoundingBox &bbox, GFGlyphTracer::Callback *cb=0) const;
- virtual bool getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical, GFGlyphTracer::Callback *cb=0) const;
- virtual bool isCIDFont () const;
- virtual int hAdvance () const;
- virtual double hAdvance (int c) const;
- virtual double vAdvance (int c) const;
- std::string glyphName (int c) const;
- virtual int unitsPerEm () const;
- virtual double scaledAscent () const;
- virtual int ascent () const;
- virtual int descent () const;
- virtual int traceAllGlyphs (bool includeCached, GFGlyphTracer::Callback *cb=0) const;
- virtual int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const;
- virtual CharMapID getCharMapID () const =0;
- virtual void setCharMapID (const CharMapID &id) {}
- virtual Character decodeChar (UInt32 c) const;
- const char* path () const;
-
- protected:
- bool createGF (std::string &gfname) const;
-
- public:
- static bool EXACT_BBOX;
- static bool KEEP_TEMP_FILES;
- static const char *CACHE_PATH; ///< path to cache directory (0 if caching is disabled)
- static double METAFONT_MAG; ///< magnification factor for Metafont calls
-
- protected:
- static FontCache _cache;
-};
-
-
-/** Interface for all virtual fonts. */
-class VirtualFont : public virtual Font
-{
- friend class FontManager;
- public:
- typedef std::vector<UInt8> DVIVector;
-
- public:
- static Font* create (std::string name, UInt32 checksum, double dsize, double ssize);
- virtual const DVIVector* getDVI (int c) const =0;
- bool getGlyph (int c, Glyph &glyph, GFGlyphTracer::Callback *cb=0) const {return false;}
-
- protected:
- virtual void assignChar (UInt32 c, DVIVector *dvi) =0;
-};
-
-
-class TFMFont : public virtual Font
-{
- public:
- TFMFont (std::string name, UInt32 checksum, double dsize, double ssize);
- ~TFMFont ();
- const FontMetrics* getMetrics () const;
- std::string name () const {return _fontname;}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const;
- double charDepth (int c) const;
- double charHeight (int c) const;
- double italicCorr (int c) const;
- bool verifyChecksums () const;
-
- private:
- mutable FontMetrics *_metrics;
- std::string _fontname;
- UInt32 _checksum; ///< cheksum to be compared with TFM checksum
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class PhysicalFontProxy : public PhysicalFont
-{
- friend class PhysicalFontImpl;
- public:
- Font* clone (double ds, double sc) const {return new PhysicalFontProxy(*this, ds, sc);}
- const Font* uniqueFont () const {return _pf;}
- std::string name () const {return _pf->name();}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const {return _pf->charWidth(c);}
- double charDepth (int c) const {return _pf->charDepth(c);}
- double charHeight (int c) const {return _pf->charHeight(c);}
- double italicCorr (int c) const {return _pf->italicCorr(c);}
- const FontMetrics* getMetrics () const {return _pf->getMetrics();}
- Type type () const {return _pf->type();}
- UInt32 unicode (UInt32 c) const {return _pf->unicode(c);}
- int fontIndex () const {return _pf->fontIndex();}
- const FontStyle* style () const {return _pf->style();}
- const FontMap::Entry* fontMapEntry () const {return _pf->fontMapEntry();}
- const FontEncoding* encoding () const {return _pf->encoding();}
- CharMapID getCharMapID () const {return _pf->getCharMapID();}
- int collectCharMapIDs (std::vector<CharMapID> &charmapIDs) const {return _pf->collectCharMapIDs(charmapIDs);}
-
- protected:
- PhysicalFontProxy (const PhysicalFont *font, double ds, double ss) : _pf(font), _dsize(ds), _ssize(ss) {}
- PhysicalFontProxy (const PhysicalFontProxy &proxy, double ds, double ss) : _pf(proxy._pf), _dsize(ds), _ssize(ss) {}
-
- private:
- const PhysicalFont *_pf;
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class PhysicalFontImpl : public PhysicalFont, public TFMFont
-{
- friend class PhysicalFont;
- public:
- ~PhysicalFontImpl();
- Font* clone (double ds, double ss) const {return new PhysicalFontProxy(this, ds, ss);}
- const Font* uniqueFont () const {return this;}
- Type type () const {return _filetype;}
- int fontIndex() const {return _fontIndex;}
- const FontStyle* style () const {return _fontMapEntry ? &_fontMapEntry->style : 0;}
- const FontMap::Entry* fontMapEntry () const {return _fontMapEntry;}
- const FontEncoding* encoding () const;
- UInt32 unicode (UInt32 c) const;
- bool findAndAssignBaseFontMap ();
- void tidy () const;
- CharMapID getCharMapID () const {return _charmapID;}
-
- protected:
- PhysicalFontImpl (std::string name, int fontindex, UInt32 checksum, double dsize, double ssize, PhysicalFont::Type type);
-
- private:
- Type _filetype;
- int _fontIndex;
- const FontMap::Entry *_fontMapEntry;
- FontEncodingPair _encodingPair;
- CharMapID _charmapID; ///< ID of the font's charmap to use
- const CharMap *_localCharMap;
-};
-
-
-class NativeFont : public PhysicalFont
-{
- public:
- virtual NativeFont* clone (double ptsize, const FontStyle &style, Color color) const =0;
- virtual Font* clone (double ds, double sc) const =0;
- std::string name () const;
- Type type () const;
- UInt32 unicode (UInt32 c) const;
- double designSize () const {return _ptsize;}
- double scaledSize () const {return _ptsize;}
- double charWidth (int c) const;
- double charDepth (int c) const;
- double charHeight (int c) const;
- double italicCorr (int c) const {return 0;}
- const FontMetrics* getMetrics () const {return 0;}
- const FontStyle* style () const {return &_style;}
- Color color () const {return _color;}
- const FontMap::Entry* fontMapEntry () const {return 0;}
- static std::string uniqueName (const std::string &path, const FontStyle &style);
-
- protected:
- NativeFont (double ptsize, const FontStyle &style, Color color) : _ptsize(ptsize), _style(style), _color(color) {}
-
- private:
- double _ptsize; ///< font size in PS point units
- FontStyle _style;
- Color _color;
-};
-
-
-class NativeFontProxy : public NativeFont
-{
- friend class NativeFontImpl;
- public:
- NativeFont* clone (double ptsize, const FontStyle &style, Color color) const {
- return new NativeFontProxy(this, ptsize, style, color);
- }
-
- Font* clone (double ds, double sc) const {return new NativeFontProxy(this , sc, *style(), color());}
- const Font* uniqueFont () const {return _nfont;}
- const char* path () const {return _nfont->path();}
- Character decodeChar (UInt32 c) const {return _nfont->decodeChar(c);}
- CharMapID getCharMapID () const {return _nfont->getCharMapID();}
-
- protected:
- NativeFontProxy (const NativeFont *nfont, double ptsize, const FontStyle &style, Color color)
- : NativeFont(ptsize, style, color), _nfont(nfont) {}
-
- private:
- const NativeFont *_nfont;
-};
-
-
-class NativeFontImpl : public NativeFont
-{
- public:
- NativeFontImpl (const std::string &fname, double ptsize, const FontStyle &style, Color color)
- : NativeFont(ptsize, style, color), _path(fname) {}
-
- NativeFont* clone (double ptsize, const FontStyle &style, Color color) const {
- return new NativeFontProxy(this, ptsize, style, color);
- }
-
- Font* clone (double ds, double sc) const {return new NativeFontProxy(this , sc, *style(), color());}
- const Font* uniqueFont () const {return this;}
- const char* path () const {return _path.c_str();}
- bool findAndAssignBaseFontMap ();
- CharMapID getCharMapID () const {return _charmapID;}
- Character decodeChar (UInt32 c) const;
-
- private:
- std::string _path;
- CharMap _toUnicodeMap; ///< maps from char indexes to unicode point
- CharMapID _charmapID; ///< unicode charmap ID
-};
-
-
-class VirtualFontProxy : public VirtualFont
-{
- friend class VirtualFontImpl;
- public:
- Font* clone (double ds, double ss) const {return new VirtualFontProxy(*this, ds, ss);}
- const Font* uniqueFont () const {return _vf;}
- std::string name () const {return _vf->name();}
- const DVIVector* getDVI (int c) const {return _vf->getDVI(c);}
- double designSize () const {return _dsize;}
- double scaledSize () const {return _ssize;}
- double charWidth (int c) const {return _vf->charWidth(c);}
- double charDepth (int c) const {return _vf->charDepth(c);}
- double charHeight (int c) const {return _vf->charHeight(c);}
- double italicCorr (int c) const {return _vf->italicCorr(c);}
- const FontMetrics* getMetrics () const {return _vf->getMetrics();}
- const char* path () const {return _vf->path();}
-
- protected:
- VirtualFontProxy (const VirtualFont *font, double ds, double ss) : _vf(font), _dsize(ds), _ssize(ss) {}
- VirtualFontProxy (const VirtualFontProxy &proxy, double ds, double ss) : _vf(proxy._vf), _dsize(ds), _ssize(ss) {}
- void assignChar (UInt32 c, DVIVector *dvi) {delete dvi;}
-
- private:
- const VirtualFont *_vf;
- double _dsize; ///< design size in PS point units
- double _ssize; ///< scaled size in PS point units
-};
-
-
-class VirtualFontImpl : public VirtualFont, public TFMFont
-{
- friend class VirtualFont;
- public:
- ~VirtualFontImpl ();
- Font* clone (double ds, double ss) const {return new VirtualFontProxy(this, ds, ss);}
- const Font* uniqueFont () const {return this;}
- const DVIVector* getDVI (int c) const;
- const char* path () const;
-
- protected:
- VirtualFontImpl (std::string name, UInt32 checksum, double dsize, double ssize);
- void assignChar (UInt32 c, DVIVector *dvi);
-
- private:
- std::map<UInt32, DVIVector*> _charDefs; ///< dvi subroutines defining the characters
-};
-
-
-struct FontException : public MessageException
-{
- FontException (std::string msg) : MessageException(msg) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.cpp
deleted file mode 100644
index e617bc9fd34..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.cpp
+++ /dev/null
@@ -1,390 +0,0 @@
-/*************************************************************************
-** FontCache.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-
-#include <config.h>
-#include <algorithm>
-#include <cstring>
-#include <fstream>
-#include <iomanip>
-#include <sstream>
-#include "CRC32.h"
-#include "FileSystem.h"
-#include "FontCache.h"
-#include "Glyph.h"
-#include "Pair.h"
-#include "StreamReader.h"
-#include "StreamWriter.h"
-#include "types.h"
-
-using namespace std;
-
-const UInt8 FontCache::FORMAT_VERSION = 5;
-
-
-static Pair32 read_pair (int bytes, StreamReader &sr) {
- Int32 x = sr.readSigned(bytes);
- Int32 y = sr.readSigned(bytes);
- return Pair32(x, y);
-}
-
-
-FontCache::FontCache () : _changed(false)
-{
-}
-
-
-FontCache::~FontCache () {
- clear();
-}
-
-
-/** Removes all data from the cache. This does not affect the cache files. */
-void FontCache::clear () {
- _glyphs.clear();
- _fontname.clear();
-}
-
-
-/** Assigns glyph data to a character and adds it to the cache.
- * @param[in] c character code
- * @param[in] glyph font glyph data */
-void FontCache::setGlyph (int c, const Glyph &glyph) {
- _glyphs[c] = glyph;
- _changed = true;
-}
-
-
-/** Returns the corresponding glyph data of a given character of the current font.
- * @param[in] c character code
- * @return font glyph data (0 if no matching data was found) */
-const Glyph* FontCache::getGlyph (int c) const {
- GlyphMap::const_iterator it = _glyphs.find(c);
- return (it != _glyphs.end()) ? &it->second : 0;
-}
-
-
-/** Writes the current cache data to a file (only if anything changed after
- * the last call of read()).
- * @param[in] fontname name of current font
- * @param[in] dir directory where the cache file should go
- * @return true if writing was successful */
-bool FontCache::write (const char *fontname, const char *dir) const {
- if (!_changed)
- return true;
-
- if (fontname && strlen(fontname) > 0) {
- string dirstr = (dir == 0 || strlen(dir) == 0) ? FileSystem::getcwd() : dir;
- ostringstream oss;
- oss << dirstr << '/' << fontname << ".fgd";
- ofstream ofs(oss.str().c_str(), ios::binary);
- return write(fontname, ofs);
- }
- return false;
-}
-
-
-bool FontCache::write (const char* dir) const {
- return _fontname.empty() ? false : write(_fontname.c_str(), dir);
-}
-
-
-/** Returns the minimal number of bytes needed to store the given value. */
-static int max_int_size (Int32 value) {
- Int32 limit = 0x7f;
- for (int i=1; i <= 4; i++) {
- if ((value < 0 && -value <= limit+1) || (value >= 0 && value <= limit))
- return i;
- limit = (limit << 8) | 0xff;
- }
- return 4;
-}
-
-
-/** Returns the minimal number of bytes needed to store the biggest
- * pair component of the given vector. */
-static int max_int_size (const Pair<Int32> *pairs, size_t n) {
- int ret=0;
- for (size_t i=0; i < n; i++) {
- ret = max(ret, max_int_size(pairs[i].x()));
- ret = max(ret, max_int_size(pairs[i].y()));
- }
- return ret;
-}
-
-
-/** Writes the current cache data to a stream (only if anything changed after
- * the last call of read()).
- * @param[in] fontname name of current font
- * @param[in] os output stream
- * @return true if writing was successful */
-bool FontCache::write (const char *fontname, ostream &os) const {
- if (!_changed)
- return true;
- if (!os)
- return false;
-
- StreamWriter sw(os);
- CRC32 crc32;
-
- struct WriteActions : Glyph::Actions {
- WriteActions (StreamWriter &sw, CRC32 &crc32) : _sw(sw), _crc32(crc32) {}
-
- void draw (char cmd, const Glyph::Point *points, int n) {
- int bytes = max_int_size(points, n);
- int cmdchar = (bytes << 5) | (cmd - 'A');
- _sw.writeUnsigned(cmdchar, 1, _crc32);
- for (int i=0; i < n; i++) {
- _sw.writeSigned(points[i].x(), bytes, _crc32);
- _sw.writeSigned(points[i].y(), bytes, _crc32);
- }
- }
- StreamWriter &_sw;
- CRC32 &_crc32;
- } actions(sw, crc32);
-
- sw.writeUnsigned(FORMAT_VERSION, 1, crc32);
- sw.writeUnsigned(0, 4); // space for checksum
- sw.writeString(fontname, crc32, true);
- sw.writeUnsigned(_glyphs.size(), 4, crc32);
- FORALL(_glyphs, GlyphMap::const_iterator, it) {
- const Glyph &glyph = it->second;
- sw.writeUnsigned(it->first, 4, crc32);
- sw.writeUnsigned(glyph.size(), 2, crc32);
- glyph.iterate(actions, false);
- }
- os.seekp(1);
- sw.writeUnsigned(crc32.get(), 4); // insert CRC32 checksum
- os.seekp(0, ios::end);
- return true;
-}
-
-
-/** Reads font glyph information from a file.
- * @param[in] fontname name of font data to read
- * @param[in] dir directory where the cache files are located
- * @return true if reading was successful */
-bool FontCache::read (const char *fontname, const char *dir) {
- if (!fontname || strlen(fontname) == 0)
- return false;
- if (_fontname == fontname)
- return true;
- clear();
- string dirstr = (dir == 0 || strlen(dir) == 0) ? FileSystem::getcwd() : dir;
- ostringstream oss;
- oss << dirstr << '/' << fontname << ".fgd";
- ifstream ifs(oss.str().c_str(), ios::binary);
- return read(fontname, ifs);
-}
-
-
-/** Reads font glyph information from a stream.
- * @param[in] fontname name of font data to read
- * @param[in] is input stream to read the glyph data from
- * @return true if reading was successful */
-bool FontCache::read (const char *fontname, istream &is) {
- if (_fontname == fontname)
- return true;
- clear();
- _fontname = fontname;
- if (!is)
- return false;
-
- StreamReader sr(is);
- CRC32 crc32;
- if (sr.readUnsigned(1, crc32) != FORMAT_VERSION)
- return false;
-
- UInt32 crc32_cmp = sr.readUnsigned(4);
- crc32.update(is);
- if (crc32.get() != crc32_cmp)
- return false;
-
- is.clear();
- is.seekg(5); // continue reading after checksum
-
- string fname = sr.readString();
- if (fname != fontname)
- return false;
-
- UInt32 num_glyphs = sr.readUnsigned(4);
- while (num_glyphs-- > 0) {
- UInt32 c = sr.readUnsigned(4); // character code
- UInt16 s = sr.readUnsigned(2); // number of path commands
- Glyph &glyph = _glyphs[c];
- while (s-- > 0) {
- UInt8 cmdval = sr.readUnsigned(1);
- UInt8 cmdchar = (cmdval & 0x1f) + 'A';
- int bytes = cmdval >> 5;
- switch (cmdchar) {
- case 'C': {
- Pair32 p1 = read_pair(bytes, sr);
- Pair32 p2 = read_pair(bytes, sr);
- Pair32 p3 = read_pair(bytes, sr);
- glyph.cubicto(p1, p2, p3);
- break;
- }
- case 'L':
- glyph.lineto(read_pair(bytes, sr));
- break;
- case 'M':
- glyph.moveto(read_pair(bytes, sr));
- break;
- case 'Q': {
- Pair32 p1 = read_pair(bytes, sr);
- Pair32 p2 = read_pair(bytes, sr);
- glyph.conicto(p1, p2);
- break;
- }
- case 'Z':
- glyph.closepath();
- }
- }
- }
- _changed = false;
- return true;
-}
-
-
-/** Collects font cache information.
- * @param[in] dirname path to font cache directory
- * @param[out] infos the collected font information
- * @param[out] invalid names of outdated/corrupted cache files
- * @return true on success */
-bool FontCache::fontinfo (const char *dirname, vector<FontInfo> &infos, vector<string> &invalid) {
- infos.clear();
- invalid.clear();
- if (dirname) {
- vector<string> fnames;
- FileSystem::collect(dirname, fnames);
- FORALL(fnames, vector<string>::iterator, it) {
- if ((*it)[0] == 'f' && it->length() > 5 && it->substr(it->length()-4) == ".fgd") {
- FontInfo info;
- string path = string(dirname)+"/"+(it->substr(1));
- ifstream ifs(path.c_str(), ios::binary);
- if (fontinfo(ifs, info))
- infos.push_back(info);
- else
- invalid.push_back(it->substr(1));
- }
- }
- }
- return !infos.empty();
-}
-
-
-/** Collects font cache information of a single font.
- * @param[in] is input stream of the cache file
- * @param[out] info the collected data
- * @return true if data could be read, false if cache file is unavailable, outdated, or corrupted */
-bool FontCache::fontinfo (std::istream &is, FontInfo &info) {
- info.name.clear();
- info.numchars = info.numbytes = info.numcmds = 0;
- if (is) {
- is.clear();
- is.seekg(0);
- try {
- StreamReader sr(is);
- CRC32 crc32;
- if ((info.version = sr.readUnsigned(1, crc32)) != FORMAT_VERSION)
- return false;
-
- info.checksum = sr.readUnsigned(4);
- crc32.update(is);
- if (crc32.get() != info.checksum)
- return false;
-
- is.clear();
- is.seekg(5); // continue reading after checksum
-
- info.name = sr.readString();
- info.numchars = sr.readUnsigned(4);
- for (UInt32 i=0; i < info.numchars; i++) {
- sr.readUnsigned(4); // character code
- UInt16 s = sr.readUnsigned(2); // number of path commands
- while (s-- > 0) {
- UInt8 cmdval = sr.readUnsigned(1);
- UInt8 cmdchar = (cmdval & 0x1f) + 'A';
- int bytes = cmdval >> 5;
- int bc = 0;
- switch (cmdchar) {
- case 'C': bc = 6*bytes; break;
- case 'H':
- case 'L':
- case 'M':
- case 'T':
- case 'V': bc = 2*bytes; break;
- case 'Q':
- case 'S': bc = 4*bytes; break;
- case 'Z': break;
- default : return false;
- }
- info.numbytes += bc+1; // command length + command
- info.numcmds++;
- is.seekg(bc, ios_base::cur);
- }
- info.numbytes += 6; // number of path commands + char code
- }
- info.numbytes += 6+info.name.length(); // version + 0-byte + fontname + number of chars
- }
- catch (StreamReaderException &e) {
- return false;
- }
- }
- return true;
-}
-
-
-/** Collects font cache information and write it to a stream.
- * @param[in] dirname path to font cache directory
- * @param[in] os output is written to this stream
- * @param[in] purge if true, outdated and corrupted cache files are removed */
-void FontCache::fontinfo (const char *dirname, ostream &os, bool purge) {
- if (dirname) {
- ios::fmtflags osflags(os.flags());
- vector<FontInfo> infos;
- vector<string> invalid_files;
- if (fontinfo(dirname, infos, invalid_files)) {
- os << "cache format version " << infos[0].version << endl;
- typedef map<string,FontInfo*> SortMap;
- SortMap sortmap;
- FORALL(infos, vector<FontInfo>::iterator, it)
- sortmap[it->name] = &(*it);
-
- FORALL(sortmap, SortMap::iterator, it) {
- os << dec << setfill(' ') << left
- << setw(10) << left << it->second->name
- << setw(5) << right << it->second->numchars << " glyph" << (it->second->numchars == 1 ? ' ':'s')
- << setw(10) << right << it->second->numcmds << " cmd" << (it->second->numcmds == 1 ? ' ':'s')
- << setw(12) << right << it->second->numbytes << " byte" << (it->second->numbytes == 1 ? ' ':'s')
- << setw(6) << "crc:" << setw(8) << hex << right << setfill('0') << it->second->checksum
- << endl;
- }
- }
- else
- os << "cache is empty\n";
- FORALL(invalid_files, vector<string>::iterator, it) {
- string path=string(dirname)+"/"+(*it);
- if (FileSystem::remove(path))
- os << "invalid cache file " << (*it) << " removed\n";
- }
- os.flags(osflags); // restore format flags
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.h
deleted file mode 100644
index c6c868edf49..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontCache.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*************************************************************************
-** FontCache.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTCACHE_H
-#define DVISVGM_FONTCACHE_H
-
-#include <iostream>
-#include <string>
-#include <map>
-#include "types.h"
-#include "Glyph.h"
-
-
-class FontCache
-{
- typedef std::map<int, Glyph> GlyphMap;
-
- public:
- struct FontInfo
- {
- std::string name; // fontname
- UInt16 version; // file format version
- UInt32 checksum; // CRC32 checksum of file data
- UInt32 numchars; // number of characters
- UInt32 numbytes; // number of bytes
- UInt32 numcmds; // number of path commands
- };
-
- public:
- FontCache ();
- ~FontCache ();
- bool read (const char *fontname, const char *dir);
- bool read (const char *fontname, std::istream &is);
- bool write (const char *dir) const;
- bool write (const char *fontname, const char *dir) const;
- bool write (const char *fontname, std::ostream &os) const;
- const Glyph* getGlyph (int c) const;
- void setGlyph (int c, const Glyph &glyph);
- void clear ();
- const std::string& fontname () const {return _fontname;}
-
- static bool fontinfo (const char *dirname, std::vector<FontInfo> &infos, std::vector<std::string> &invalid);
- static bool fontinfo (std::istream &is, FontInfo &info);
- static void fontinfo (const char *dirname, std::ostream &os, bool purge=false);
-
- private:
- static const UInt8 FORMAT_VERSION;
- std::string _fontname;
- GlyphMap _glyphs;
- bool _changed;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.cpp
deleted file mode 100644
index dfa5b6c750e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*************************************************************************
-** FontEncoding.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "CMap.h"
-#include "CMapManager.h"
-#include "EncFile.h"
-#include "FileFinder.h"
-#include "FontEncoding.h"
-
-using namespace std;
-
-
-struct EncodingMap : public map<string, EncFile*>
-{
- ~EncodingMap () {
- for (EncodingMap::iterator it=begin(); it != end(); ++it)
- delete it->second;
- }
-};
-
-
-/** Returns the encoding object for a given encoding name.
- * @param[in] encname name of the encoding to lookup
- * @return pointer to encoding object, or 0 if there is no encoding defined */
-FontEncoding* FontEncoding::encoding (const string &encname) {
- if (encname.empty())
- return 0;
- // initially, try to find an .enc file with the given name
- static EncodingMap encmap;
- EncodingMap::const_iterator it = encmap.find(encname);
- if (it != encmap.end())
- return it->second;
- if (FileFinder::lookup(encname + ".enc", false)) {
- EncFile *enc = new EncFile(encname);
- encmap[encname] = enc;
- return enc;
- }
- // no .enc file found => try to find a CMap
- if (CMap *cmap = CMapManager::instance().lookup(encname))
- return cmap;
- return 0;
-}
-
-/////////////////////////////////////////////////////////////////////////
-
-Character FontEncodingPair::decode (UInt32 c) const {
- if (_enc1) {
- Character chr = _enc1->decode(c);
- if (_enc2 && chr.type() != Character::NAME)
- chr = _enc2->decode(chr.number());
- return chr;
- }
- return Character(Character::INDEX, 0);
-}
-
-
-bool FontEncodingPair::mapsToCharIndex () const {
- if (_enc2)
- return _enc2->mapsToCharIndex();
- if (_enc1)
- return _enc1->mapsToCharIndex();
- return false;
-}
-
-
-const FontEncoding* FontEncodingPair::findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const {
- if (_enc2)
- return _enc2->findCompatibleBaseFontMap(font, charmapID);
- if (_enc1)
- return _enc1->findCompatibleBaseFontMap(font, charmapID);
- return 0;
-}
-
-
-void FontEncodingPair::assign (const FontEncoding *enc) {
- if (!_enc1)
- _enc1 = enc;
- else
- _enc2 = enc;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.h
deleted file mode 100644
index 4c366182632..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEncoding.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** FontEncoding.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTENCODING_H
-#define DVISVGM_FONTENCODING_H
-
-#include <string>
-#include "Character.h"
-#include "types.h"
-
-
-struct CharMapID;
-class PhysicalFont;
-
-struct FontEncoding
-{
- virtual ~FontEncoding () {}
- virtual Character decode (UInt32 c) const =0;
- virtual bool mapsToCharIndex () const =0;
- virtual const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const {return 0;}
- static FontEncoding* encoding (const std::string &encname);
-};
-
-
-struct NamedFontEncoding : public FontEncoding
-{
- virtual const char* name () const =0;
- virtual const char* path () const =0;
-};
-
-
-class FontEncodingPair : public FontEncoding
-{
- public:
- FontEncodingPair (const FontEncoding *enc1) : _enc1(enc1), _enc2(0) {}
- FontEncodingPair (const FontEncoding *enc1, const FontEncoding *enc2) : _enc1(enc1), _enc2(enc2) {}
- Character decode (UInt32 c) const;
- bool mapsToCharIndex () const;
- const FontEncoding* findCompatibleBaseFontMap (const PhysicalFont *font, CharMapID &charmapID) const;
- const FontEncoding* enc1 () const {return _enc1;}
- const FontEncoding* enc2 () const {return _enc2;}
- void assign (const FontEncoding *enc);
-
- private:
- const FontEncoding *_enc1, *_enc2;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.cpp
deleted file mode 100644
index 5bfeba236d2..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.cpp
+++ /dev/null
@@ -1,426 +0,0 @@
-/*************************************************************************
-** FontEngine.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <iostream>
-#include <sstream>
-#include <ft2build.h>
-#include FT_ADVANCES_H
-#include FT_GLYPH_H
-#include FT_OUTLINE_H
-#include FT_TRUETYPE_TABLES_H
-#include FT_TYPES_H
-#include "Font.h"
-#include "FontEngine.h"
-#include "FontStyle.h"
-#include "Message.h"
-
-using namespace std;
-
-
-/** Converts a floating point value to a 16.16 fixed point value. */
-static inline FT_Fixed to_16dot16 (double val) {
- return static_cast<FT_Fixed>(val*65536.0 + 0.5);
-}
-
-/** Converts an integer to a 16.16 fixed point value. */
-static inline FT_Fixed to_16dot16 (int val) {
- return static_cast<FT_Fixed>(val) << 16;
-}
-
-
-static inline double conv_16dot16_to_double (FT_Fixed fixed) {
- return static_cast<double>(fixed)/(1 << 16);
-}
-
-
-/** Converts a floating point value to a 26.6 fixed point value. */
-static inline FT_F26Dot6 to_26dot6 (double val) {
- return static_cast<FT_F26Dot6>(val*64.0 + 0.5);
-}
-
-/** Converts an integer to a 26.6 fixed point value. */
-static inline FT_F26Dot6 to_26dot6 (int val) {
- return static_cast<FT_F26Dot6>(val) << 6;
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-
-
-FontEngine::FontEngine () : _currentFace(0), _currentFont(0)
-{
- _currentChar = _currentGlyphIndex = 0;
- _horDeviceRes = _vertDeviceRes = 300;
- if (FT_Init_FreeType(&_library))
- Message::estream(true) << "FontEngine: error initializing FreeType library\n";
-}
-
-
-FontEngine::~FontEngine () {
- if (_currentFace && FT_Done_Face(_currentFace))
- Message::estream(true) << "FontEngine: error removing glyph\n";
- if (FT_Done_FreeType(_library))
- Message::estream(true) << "FontEngine: error removing FreeType library\n";
-}
-
-
-/** Returns the singleton instance of this class. */
-FontEngine& FontEngine::instance () {
- static FontEngine engine;
- return engine;
-}
-
-
-string FontEngine::version () {
- FT_Int major, minor, patch;
- FT_Library &lib = instance()._library;
- FT_Library_Version(lib, &major, &minor, &patch);
- ostringstream oss;
- oss << major << '.' << minor << '.' << patch;
- return oss.str();
-}
-
-
-void FontEngine::setDeviceResolution (int x, int y) {
- _horDeviceRes = x;
- _vertDeviceRes = y;
-}
-
-
-/** Sets the font to be used.
- * @param[in] fname path to font file
- * @param[in] fontindex index of font in font collection (multi-font files, like TTC)
- * @return true on success */
-bool FontEngine::setFont (const string &fname, int fontindex, const CharMapID &charMapID) {
- if (FT_New_Face(_library, fname.c_str(), fontindex, &_currentFace)) {
- Message::estream(true) << "FontEngine: error reading file " << fname << '\n';
- return false;
- }
- if (charMapID.valid())
- setCharMap(charMapID);
- return true;
-}
-
-
-bool FontEngine::setFont (const Font &font) {
- if (!_currentFont || _currentFont->name() != font.name()) {
- const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(&font);
- _currentFont = &font;
- return setFont(font.path(), font.fontIndex(), pf ? pf->getCharMapID() : CharMapID());
- }
- return true;
-}
-
-
-bool FontEngine::isCIDFont() const {
- FT_Bool cid_keyed;
- return FT_Get_CID_Is_Internally_CID_Keyed(_currentFace, &cid_keyed) == 0 && cid_keyed;
-}
-
-
-bool FontEngine::setCharMap (const CharMapID &charMapID) {
- for (int i=0; i < _currentFace->num_charmaps; i++) {
- FT_CharMap ft_cmap = _currentFace->charmaps[i];
- if (ft_cmap->platform_id == charMapID.platform_id && ft_cmap->encoding_id == charMapID.encoding_id) {
- FT_Set_Charmap(_currentFace, ft_cmap);
- return true;
- }
- }
- return false;
-}
-
-
-/** Returns a character map that maps from character codes of the current
- * encoding to character indexes, or vice versa.
- * @param[in] invert if true, the resulting charmap maps from char indexes to char codes
- * @param[out] charmap the resultig charmap */
-void FontEngine::buildCharMap (bool invert, CharMap &charmap) {
- charmap.clear();
- FT_UInt glyph_index;
- UInt32 charcode = FT_Get_First_Char(_currentFace, &glyph_index);
- while (glyph_index) {
- if (invert)
- charmap.append(glyph_index, charcode);
- else
- charmap.append(charcode, glyph_index);
- charcode = FT_Get_Next_Char(_currentFace, charcode, &glyph_index);
- }
- charmap.sort();
-}
-
-
-/** Creates a charmap that maps from the custom character encoding to unicode.
- * @return pointer to charmap if is could be created, 0 otherwise */
-const CharMap* FontEngine::createCustomToUnicodeMap () {
- FT_CharMap ftcharmap = _currentFace->charmap;
- if (FT_Select_Charmap(_currentFace, FT_ENCODING_ADOBE_CUSTOM) != 0)
- return 0;
- CharMap index_to_source_chrcode;
- buildCharMap(true, index_to_source_chrcode);
- if (FT_Select_Charmap(_currentFace, FT_ENCODING_UNICODE) != 0)
- return 0;
- CharMap *charmap = new CharMap;
- FT_UInt glyph_index;
- UInt32 charcode = FT_Get_First_Char(_currentFace, &glyph_index);
- while (glyph_index) {
- charmap->append(index_to_source_chrcode[glyph_index], charcode);
- charcode = FT_Get_Next_Char(_currentFace, charcode, &glyph_index);
- }
- charmap->sort();
- FT_Set_Charmap(_currentFace, ftcharmap);
- return charmap;
-}
-
-
-const char* FontEngine::getFamilyName () const {
- return _currentFace ? _currentFace->family_name : 0;
-}
-
-
-const char* FontEngine::getStyleName () const {
- return _currentFace ? _currentFace->style_name : 0;
-}
-
-
-int FontEngine::getUnitsPerEM () const {
- return _currentFace ? _currentFace->units_per_EM : 0;
-}
-
-
-/** Returns the ascender of the current font in font units. */
-int FontEngine::getAscender () const {
- return _currentFace ? _currentFace->ascender : 0;
-}
-
-
-/** Returns the descender of the current font in font units. */
-int FontEngine::getDescender () const {
- return _currentFace ? _currentFace->descender : 0;
-}
-
-
-int FontEngine::getAdvance (int c) const {
- if (_currentFace) {
- FT_Fixed adv=0;
- FT_Get_Advance(_currentFace, c, FT_LOAD_NO_SCALE, &adv);
- return adv;
- }
- return 0;
-}
-
-
-int FontEngine::getHAdvance () const {
- if (_currentFace) {
- TT_OS2 *table = static_cast<TT_OS2*>(FT_Get_Sfnt_Table(_currentFace, ft_sfnt_os2));
- return table ? table->xAvgCharWidth : 0;
- }
- return 0;
-}
-
-
-int FontEngine::getHAdvance (const Character &c) const {
- if (_currentFace) {
- FT_Load_Glyph(_currentFace, charIndex(c), FT_LOAD_NO_SCALE);
- return _currentFace->glyph->metrics.horiAdvance;
- }
- return 0;
-}
-
-
-int FontEngine::getVAdvance (const Character &c) const {
- if (_currentFace) {
- FT_Load_Glyph(_currentFace, charIndex(c), FT_LOAD_NO_SCALE);
- if (FT_HAS_VERTICAL(_currentFace))
- return _currentFace->glyph->metrics.vertAdvance;
- return _currentFace->glyph->metrics.horiAdvance;
- }
- return 0;
-}
-
-
-int FontEngine::charIndex (const Character &c) const {
- switch (c.type()) {
- case Character::CHRCODE:
- return FT_Get_Char_Index(_currentFace, (FT_ULong)c.number());
- case Character::NAME:
- return FT_Get_Name_Index(_currentFace, (FT_String*)c.name());
- default:
- return c.number();
- }
-}
-
-
-/** Get first available character of the current font face. */
-int FontEngine::getFirstChar () const {
- if (_currentFace)
- return _currentChar = FT_Get_First_Char(_currentFace, &_currentGlyphIndex);
- return 0;
-}
-
-
-/** Get the next available character of the current font face. */
-int FontEngine::getNextChar () const {
- if (_currentFace && _currentGlyphIndex)
- return _currentChar = FT_Get_Next_Char(_currentFace, _currentChar, &_currentGlyphIndex);
- return getFirstChar();
-}
-
-
-/** Returns the glyph name for a given charater code.
- * @param[in] c char code
- * @return glyph name */
-string FontEngine::getGlyphName (const Character &c) const {
- if (c.type() == Character::NAME)
- return c.name();
-
- if (_currentFace && FT_HAS_GLYPH_NAMES(_currentFace)) {
- char buf[256];
- FT_Get_Glyph_Name(_currentFace, charIndex(c), buf, 256);
- return string(buf);
- }
- return "";
-}
-
-
-vector<int> FontEngine::getPanose () const {
- vector<int> panose(10);
- if (_currentFace) {
- TT_OS2 *table = static_cast<TT_OS2*>(FT_Get_Sfnt_Table(_currentFace, ft_sfnt_os2));
- if (table)
- for (int i=0; i < 10; i++)
- panose[i] = table->panose[i];
- }
- return panose;
-}
-
-
-int FontEngine::getCharMapIDs (vector<CharMapID> &charmapIDs) const {
- charmapIDs.clear();
- if (_currentFace) {
- for (int i=0; i < _currentFace->num_charmaps; i++) {
- FT_CharMap charmap = _currentFace->charmaps[i];
- charmapIDs.push_back(CharMapID(charmap->platform_id, charmap->encoding_id));
- }
- }
- return charmapIDs.size();
-}
-
-
-CharMapID FontEngine::setUnicodeCharMap () {
- if (_currentFace && FT_Select_Charmap(_currentFace, FT_ENCODING_UNICODE) == 0)
- return CharMapID(_currentFace->charmap->platform_id, _currentFace->charmap->encoding_id);
- return CharMapID();
-}
-
-
-CharMapID FontEngine::setCustomCharMap () {
- if (_currentFace && FT_Select_Charmap(_currentFace, FT_ENCODING_ADOBE_CUSTOM) == 0)
- return CharMapID(_currentFace->charmap->platform_id, _currentFace->charmap->encoding_id);
- return CharMapID();
-}
-
-
-// handle API change in freetype version 2.2.1
-#if FREETYPE_MAJOR > 2 || (FREETYPE_MAJOR == 2 && (FREETYPE_MINOR > 2 || (FREETYPE_MINOR == 2 && FREETYPE_PATCH >= 1)))
- typedef const FT_Vector *FTVectorPtr;
-#else
- typedef FT_Vector *FTVectorPtr;
-#endif
-
-
-// Callback functions used by trace_outline/FT_Outline_Decompose
-static int moveto (FTVectorPtr to, void *user) {
- Glyph *glyph = static_cast<Glyph*>(user);
- glyph->moveto(to->x, to->y);
- return 0;
-}
-
-
-static int lineto (FTVectorPtr to, void *user) {
- Glyph *glyph = static_cast<Glyph*>(user);
- glyph->lineto(to->x, to->y);
- return 0;
-}
-
-
-static int conicto (FTVectorPtr control, FTVectorPtr to, void *user) {
- Glyph *glyph = static_cast<Glyph*>(user);
- glyph->conicto(control->x, control->y, to->x, to->y);
- return 0;
-}
-
-
-static int cubicto (FTVectorPtr control1, FTVectorPtr control2, FTVectorPtr to, void *user) {
- Glyph *glyph = static_cast<Glyph*>(user);
- glyph->cubicto(control1->x, control1->y, control2->x, control2->y, to->x, to->y);
- return 0;
-}
-
-
-/** Traces the outline of a glyph by calling the corresponding "drawing" functions.
- * Each glyph is composed of straight lines, quadratic (conic) or cubic B�zier curves.
- * This function creates a Glyph object representing these graphics segments.
- * @param[in] face FreeType object representing the font to scan
- * @param[in] font corresponding Font object providing additional data
- * @param[in] index index of the glyph to be traced
- * @param[out] glyph resulting Glyph object containing the graphics segments
- * @param[in] scale if true the current pt size will be considered otherwise the plain TrueType units are used.
- * @return false on errors */
-static bool trace_outline (FT_Face face, const Font *font, int index, Glyph &glyph, bool scale) {
- if (face) {
- if (FT_Load_Glyph(face, index, scale ? FT_LOAD_DEFAULT : FT_LOAD_NO_SCALE)) {
- Message::estream(true) << "can't load glyph " << int(index) << '\n';
- return false;
- }
- if (face->glyph->format != FT_GLYPH_FORMAT_OUTLINE) {
- Message::estream(true) << "no outlines found in glyph " << int(index) << '\n';
- return false;
- }
- FT_Outline outline = face->glyph->outline;
- // apply style parameters if set
- if (const FontStyle *style = font->style()) {
- FT_Matrix matrix = {to_16dot16(style->extend), to_16dot16(style->slant), 0, to_16dot16(1)};
- FT_Outline_Transform(&outline, &matrix);
- if (style->bold != 0)
- FT_Outline_Embolden(&outline, style->bold/font->scaledSize()*face->units_per_EM);
- }
- const FT_Outline_Funcs funcs = {moveto, lineto, conicto, cubicto, 0, 0};
- FT_Outline_Decompose(&outline, &funcs, &glyph);
- return true;
- }
- Message::wstream(true) << "FontEngine: can't trace outline, no font face selected\n";
- return false;
-}
-
-
-/** Traces the outline of a glyph by calling the corresponding "drawing" functions.
- * Each glyph is composed of straight lines, quadratic (conic) or cubic B�zier curves.
- * This function creates a Glyph object representing these graphics segments.
- * @param[in] c the glyph of this character will be traced
- * @param[out] glyph resulting Glyph object containing the graphics segments
- * @param[in] scale if true the current pt size will be considered otherwise the plain TrueType units are used.
- * @return false on errors */
-bool FontEngine::traceOutline (const Character &c, Glyph &glyph, bool scale) const {
- if (_currentFace)
- return trace_outline(_currentFace, _currentFont, charIndex(c), glyph, scale);
- Message::wstream(true) << "FontEngine: can't trace outline, no font face selected\n";
- return false;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.h
deleted file mode 100644
index 353613a40ef..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontEngine.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** FontEngine.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTENGINE_H
-#define DVISVGM_FONTENGINE_H
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_CID_H
-#include <map>
-#include <string>
-#include <vector>
-#include "Character.h"
-#include "CharMap.h"
-#include "CharMapID.h"
-#include "Font.h"
-#include "Glyph.h"
-#include "types.h"
-
-
-/** This class provides methods to handle font files and font data.
- * It's a wrapper for the Freetype font library. */
-class FontEngine
-{
- public:
- ~FontEngine ();
- static FontEngine& instance ();
- static std::string version ();
- void setDeviceResolution (int x, int y);
- bool setFont (const Font &font);
- bool isCIDFont() const;
- bool traceOutline (const Character &c, Glyph &glyph, bool scale=true) const;
- const char* getFamilyName () const;
- const char* getStyleName () const;
- int getUnitsPerEM () const;
- int getAscender () const;
- int getDescender () const;
- int getAdvance (int c) const;
- int getHAdvance () const;
- int getHAdvance (const Character &c) const;
- int getVAdvance (const Character &c) const;
- int getFirstChar () const;
- int getNextChar () const;
- int getCharMapIDs (std::vector<CharMapID> &charmapIDs) const;
- CharMapID setUnicodeCharMap ();
- CharMapID setCustomCharMap ();
- std::vector<int> getPanose () const;
- std::string getGlyphName (const Character &c) const;
- int getCharByGlyphName (const char *name) const;
- bool setCharMap (const CharMapID &charMapID);
- void buildCharMap (bool invert, CharMap &charmap);
- const CharMap* createCustomToUnicodeMap ();
-
- protected:
- FontEngine ();
- bool setFont (const std::string &fname, int fontindex, const CharMapID &charmapID);
- int charIndex (const Character &c) const;
-
- private:
- int _horDeviceRes, _vertDeviceRes;
- mutable unsigned int _currentChar, _currentGlyphIndex;
- FT_Face _currentFace;
- FT_Library _library;
- const Font *_currentFont;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.cpp
deleted file mode 100644
index 7db9bad13bb..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/*************************************************************************
-** FontManager.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <cstdlib>
-#include <fstream>
-#include <set>
-#include "CMap.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "FontMap.h"
-#include "FileFinder.h"
-#include "FileSystem.h"
-#include "Message.h"
-#include "macros.h"
-#include "CMapManager.h"
-
-using namespace std;
-
-
-FontManager::~FontManager () {
- FORALL(_fonts, vector<Font*>::iterator, i)
- delete *i;
-}
-
-
-/** Returns the singleton instance */
-FontManager& FontManager::instance () {
- static FontManager fm;
- return fm;
-}
-
-
-/** Returns a unique ID that identifies the font.
- * @param[in] n local font number, as used in DVI and VF files
- * @return non-negative font ID if font was found, -1 otherwise */
-int FontManager::fontID (int n) const {
- if (_vfStack.empty()) {
- Num2IdMap::const_iterator it = _num2id.find(n);
- return (it == _num2id.end()) ? -1 : it->second;
- }
- VfNum2IdMap::const_iterator vit = _vfnum2id.find(_vfStack.top());
- if (vit == _vfnum2id.end())
- return -1;
- const Num2IdMap &num2id = vit->second;
- Num2IdMap::const_iterator it = num2id.find(n);
- return (it == num2id.end()) ? -1 : it->second;
-}
-
-
-/** Returns a unique ID that identifies the font. Not the font object but the
- * font pointer is looked up to get the ID. Thus, two different pointers
- * referencing different objects of the same font are mapped to different IDs.
- * @param[in] font pointer to font object to be identified
- * @return non-negative font ID if font was found, -1 otherwise */
-int FontManager::fontID (const Font *font) const {
- for (size_t i=0; i < _fonts.size(); i++)
- if (_fonts[i] == font)
- return i;
- return -1;
-}
-
-
-/** Returns a unique ID that identifies the font.
- * @param[in] name name of font to be identified, e.g. cmr10
- * @return non-negative font ID if font was found, -1 otherwise */
-int FontManager::fontID (const string &name) const {
- map<string,int>::const_iterator it = _name2id.find(name);
- if (it == _name2id.end())
- return -1;
- return it->second;
-}
-
-
-int FontManager::fontnum (int id) const {
- if (id < 0 || size_t(id) > _fonts.size())
- return -1;
- if (_vfStack.empty()) {
- FORALL(_num2id, Num2IdMap::const_iterator, i)
- if (i->second == id)
- return i->first;
- }
- else {
- VfNum2IdMap::const_iterator it = _vfnum2id.find(_vfStack.top());
- if (it == _vfnum2id.end())
- return -1;
- const Num2IdMap &num2id = it->second;
- FORALL(num2id, Num2IdMap::const_iterator, i)
- if (i->second == id)
- return i->first;
- }
- return -1;
-}
-
-
-int FontManager::vfFirstFontNum (VirtualFont *vf) const {
- VfFirstFontMap::const_iterator it = _vfFirstFontMap.find(vf);
- return (it == _vfFirstFontMap.end()) ? -1 : (int) it->second;
-}
-
-
-/** Returns a previously registered font.
- * @param[in] n local font number, as used in DVI and VF files
- * @return pointer to font if font was found, 0 otherwise */
-Font* FontManager::getFont (int n) const {
- int id = fontID(n);
- return (id < 0) ? 0 : _fonts[id];
-}
-
-
-Font* FontManager::getFont (const string &name) const {
- int id = fontID(name);
- if (id < 0)
- return 0;
- return _fonts[id];
-}
-
-
-Font* FontManager::getFontById (int id) const {
- if (id < 0 || size_t(id) >= _fonts.size())
- return 0;
- return _fonts[id];
-}
-
-
-/** Returns the current active virtual font. */
-VirtualFont* FontManager::getVF () const {
- return _vfStack.empty() ? 0 : _vfStack.top();
-}
-
-
-static Font* create_font (const string &filename, const string &fontname, int fontindex, UInt32 checksum, double dsize, double ssize) {
- string ext;
- if (const char *dot = strrchr(filename.c_str(), '.'))
- ext = dot+1;
- if (!ext.empty() && FileFinder::lookup(filename)) {
- if (ext == "pfb")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::PFB);
- if (ext == "otf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::OTF);
- if (ext == "ttf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::TTF);
- if (ext == "ttc")
- return PhysicalFont::create(fontname, fontindex, checksum, dsize, ssize);
- if (ext == "vf")
- return VirtualFont::create(fontname, checksum, dsize, ssize);
- if (ext == "mf")
- return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::MF);
- }
- return 0;
-}
-
-
-/** Registers a new font to be managed by the FontManager. If there is
- * already a registered font assigned to number n, nothing happens.
- * @param[in] fontnum local font number, as used in DVI and VF files
- * @param[in] name TFM fontname given in DVI file, e.g. cmr10
- * @param[in] checksum checksum to be compared with TFM checksum
- * @param[in] dsize design size in PS point units
- * @param[in] ssize scaled size in PS point units
- * @return id of registered font */
-int FontManager::registerFont (UInt32 fontnum, string name, UInt32 checksum, double dsize, double ssize) {
- int id = fontID(fontnum);
- if (id >= 0)
- return id;
-
- Font *newfont = 0;
- const int newid = _fonts.size(); // the new font gets this ID
- Name2IdMap::iterator it = _name2id.find(name);
- if (it != _name2id.end()) { // font with same name already registered?
- Font *font = _fonts[it->second];
- newfont = font->clone(dsize, ssize);
- }
- else {
- string filename = name;
- int fontindex = 0;
- const FontMap::Entry *map_entry = FontMap::instance().lookup(name);
- if (map_entry) {
- filename = map_entry->fontname;
- fontindex = map_entry->fontindex;
- }
- // try to find font file with the exact given name
- if (filename.rfind(".") != string::npos)
- newfont = create_font(filename, name, fontindex, checksum, dsize, ssize);
- else {
- // try various font file formats if the given file has no extension
- const char *exts[] = {"pfb", "otf", "ttc", "ttf", "vf", "mf", 0};
- for (const char **p = exts; *p && !newfont; ++p)
- newfont = create_font(filename+"."+*p, name, fontindex, checksum, dsize, ssize);
- }
- if (newfont) {
- if (!newfont->findAndAssignBaseFontMap())
- Message::wstream(true) << "no suitable encoding table found for font " << filename << "\n";
- if (!newfont->verifyChecksums())
- Message::wstream(true) << "checksum mismatch in font " << name << '\n';
- }
- else {
- // create dummy font as a placeholder if the proper font is not available
- newfont = new EmptyFont(name);
- if (filename.rfind(".") == string::npos)
- filename += ".mf";
- // print warning message about missing font file (only once for each filename)
- static set<string> missing_fonts;
- if (missing_fonts.find(filename) == missing_fonts.end()) {
- Message::wstream(true) << "font file '" << filename << "' not found\n";
- missing_fonts.insert(filename);
- }
- }
- _name2id[name] = newid;
- }
- _fonts.push_back(newfont);
- if (_vfStack.empty()) // register font referenced in dvi file?
- _num2id[fontnum] = newid;
- else { // register font referenced in vf file
- VirtualFont *vf = const_cast<VirtualFont*>(_vfStack.top());
- _vfnum2id[vf][fontnum] = newid;
- if (_vfFirstFontMap.find(vf) == _vfFirstFontMap.end()) // first fontdef of VF?
- _vfFirstFontMap[vf] = fontnum;
- }
- return newid;
-}
-
-
-
-int FontManager::registerFont (UInt32 fontnum, string filename, double ptsize, const FontStyle &style, Color color) {
- int id = fontID(fontnum);
- if (id >= 0)
- return id;
-
- if (!filename.empty() && filename[0] == '[' && filename[filename.size()-1] == ']')
- filename = filename.substr(1, filename.size()-2);
- string fontname = NativeFont::uniqueName(filename, style);
- const char *path = filename.c_str();
- Font *newfont=0;
- const int newid = _fonts.size(); // the new font gets this ID
- Name2IdMap::iterator it = _name2id.find(fontname);
- if (it != _name2id.end()) { // font with same name already registered?
- if (NativeFont *font = dynamic_cast<NativeFont*>(_fonts[it->second]))
- newfont = font->clone(ptsize, style, color);
- }
- else {
- if (!FileSystem::exists(path))
- path = FileFinder::lookup(filename, false);
- if (path) {
- newfont = new NativeFontImpl(path, ptsize, style, color);
- newfont->findAndAssignBaseFontMap();
- }
- if (!newfont) {
- // create dummy font as a placeholder if the proper font is not available
- newfont = new EmptyFont(filename);
- // print warning message about missing font file (only once for each filename)
- static set<string> missing_fonts;
- if (missing_fonts.find(filename) == missing_fonts.end()) {
- Message::wstream(true) << "font file '" << filename << "' not found\n";
- missing_fonts.insert(filename);
- }
- }
- _name2id[fontname] = newid;
- }
- _fonts.push_back(newfont);
- _num2id[fontnum] = newid;
- return newid;
-}
-
-
-/** Enters a new virtual font frame.
- * This method must be called before processing a VF character.
- * @param[in] vf virtual font */
-void FontManager::enterVF (VirtualFont *vf) {
- if (vf)
- _vfStack.push(vf);
-}
-
-
-/** Leaves a previously entered virtual font frame. */
-void FontManager::leaveVF () {
- if (!_vfStack.empty())
- _vfStack.pop();
-}
-
-
-/** Assigns a sequence of DVI commands to a char code.
- * @param[in] c character code
- * @param[in] dvi points to vector with DVI commands */
-void FontManager::assignVfChar (int c, vector<UInt8> *dvi) {
- if (!_vfStack.empty() && dvi)
- _vfStack.top()->assignChar(c, dvi);
-}
-
-
-ostream& FontManager::write (ostream &os, Font *font, int level) {
-#if 0
- if (font) {
- int id = -1;
- for (int i=0; i < fonts.size() && id < 0; i++)
- if (fonts[i] == font)
- id = i;
-
- VirtualFont *vf = dynamic_cast<VirtualFont*>(font);
- for (int j=0; j < level+1; j++)
- os << " ";
- os << "id " << id
- << " fontnum " << fontnum(id) << " "
- << (vf ? "VF" : "PF") << " "
- << font->name()
- << endl;
-
- if (vf) {
- enterVF(vf);
- const Num2IdMap &num2id = vfnum2id.find(vf)->second;
- FORALL(num2id, Num2IdMap::const_iterator, i) {
- Font *font = fonts[i->second];
- write(os, font, level+1);
- }
- leaveVF();
- }
- }
- else {
- for (int i=0; i < fonts.size(); i++)
- write(os, fonts[i], level);
- os << endl;
- }
-#endif
- return os;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.h
deleted file mode 100644
index 24402f5ae5e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontManager.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** FontManager.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTMANAGER_H
-#define DVISVGM_FONTMANAGER_H
-
-#include <map>
-#include <ostream>
-#include <set>
-#include <string>
-#include <stack>
-#include <vector>
-#include "Color.h"
-#include "FontStyle.h"
-#include "types.h"
-
-
-struct FileFinder;
-struct Font;
-class VirtualFont;
-
-/** This class provides methods for easy DVI font handling.
- * DVI and VF files use local font numbers to reference fonts. For SVG output
- * we need a single list with unique IDs of all physical fonts. Characters of
- * virtual fonts are completely replaced by their DVI description so they don't
- * appear anywhere in the output. */
-class FontManager
-{
- typedef std::map<UInt32,int> Num2IdMap;
- typedef std::map<std::string,int> Name2IdMap;
- typedef std::map<VirtualFont*,Num2IdMap> VfNum2IdMap;
- typedef std::map<VirtualFont*, UInt32> VfFirstFontMap;
- typedef std::stack<VirtualFont*> VfStack;
-
- public:
- ~FontManager ();
- static FontManager& instance ();
- int registerFont (UInt32 fontnum, std::string fontname, UInt32 checksum, double dsize, double scale);
- int registerFont (UInt32 fontnum, std::string fname, double ptsize, const FontStyle &style, Color color);
- Font* getFont (int n) const;
- Font* getFont (const std::string &name) const;
- Font* getFontById (int id) const;
- VirtualFont* getVF () const;
- int fontID (int n) const;
- int fontID (const Font *font) const;
- int fontID (const std::string &name) const;
- int fontnum (int id) const;
- int vfFirstFontNum (VirtualFont *vf) const;
- void enterVF (VirtualFont *vf);
- void leaveVF ();
- void assignVfChar (int c, std::vector<UInt8> *dvi);
- const std::vector<Font*>& getFonts () const {return _fonts;}
- std::ostream& write (std::ostream &os, Font *font=0, int level=0);
-
- protected:
- FontManager () {}
-
- private:
- std::vector<Font*> _fonts; ///< all registered Fonts
- Num2IdMap _num2id; ///< DVI font number -> fontID
- Name2IdMap _name2id; ///< fontname -> fontID
- VfNum2IdMap _vfnum2id;
- VfStack _vfStack; ///< stack of currently processed virtual fonts
- VfFirstFontMap _vfFirstFontMap; ///< VF -> local font number of first font defined in VF
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.cpp
deleted file mode 100644
index a094093b2f1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.cpp
+++ /dev/null
@@ -1,305 +0,0 @@
-/*************************************************************************
-** FontMap.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <fstream>
-#include <iostream>
-#include <limits>
-#include <vector>
-#include "CMap.h"
-#include "Directory.h"
-#include "FileFinder.h"
-#include "FontManager.h"
-#include "FontMap.h"
-#include "MapLine.h"
-#include "Message.h"
-#include "Subfont.h"
-
-using namespace std;
-
-
-FontMap::~FontMap () {
- for (Iterator it=_entries.begin(); it != _entries.end(); ++it)
- delete it->second;
-}
-
-
-/** Returns the singleton instance. */
-FontMap& FontMap::instance() {
- static FontMap fontmap;
- return fontmap;
-}
-
-
-/** Reads and evaluates a single font map file.
- * @param[in] fname name of map file to read
- * @param[in] mode selects how to integrate the map file entries into the global map tree
- * @return true if file could be opened */
-bool FontMap::read (const string &fname, FontMap::Mode mode) {
- ifstream ifs(fname.c_str());
- if (!ifs)
- return false;
-
- int line_number = 1;
- while (ifs) {
- int c = ifs.peek();
- if (c < 0 || strchr("\n&#%;*", c)) // comment or empty line?
- ifs.ignore(numeric_limits<int>::max(), '\n');
- else {
- try {
- MapLine mapline(ifs);
- apply(mapline, mode);
- }
- catch (const MapLineException &e) {
- Message::wstream(true) << fname << ", line " << line_number << ": " << e.what() << '\n';
- }
- catch (const SubfontException &e) {
- Message::wstream(true) << e.filename();
- if (e.lineno() > 0)
- Message::wstream(false) << ", line " << e.lineno();
- Message::wstream(false) << e.what() << '\n';
- }
- }
- line_number++;
- }
- return true;
-}
-
-
-bool FontMap::read (const string &fname, char modechar) {
- Mode mode;
- switch (modechar) {
- case '=': mode = FM_REPLACE; break;
- case '-': mode = FM_REMOVE; break;
- default : mode = FM_APPEND;
- }
- return read(fname, mode);
-}
-
-
-/** Applies a mapline according to the given mode (append, remove, replace).
- * @param[in] mapline the mapline to be applied
- * @param[in] mode mode to use
- * @return true in case of success */
-bool FontMap::apply (const MapLine& mapline, FontMap::Mode mode) {
- switch (mode) {
- case FM_APPEND:
- return append(mapline);
- case FM_REMOVE:
- return remove(mapline);
- default:
- return replace(mapline);
- }
-}
-
-
-/** Applies a mapline according to the given mode (append, remove, replace).
- * @param[in] mapline the mapline to be applied
- * @param[in] modechar character that denotes the mode (+, -, or =)
- * @return true in case of success */
-bool FontMap::apply (const MapLine& mapline, char modechar) {
- Mode mode;
- switch (modechar) {
- case '=': mode = FM_REPLACE; break;
- case '-': mode = FM_REMOVE; break;
- default : mode = FM_APPEND;
- }
- return apply(mapline, mode);
-}
-
-
-/** Reads and evaluates a sequence of map files. Each map file is looked up in the local
- * directory and the TeX file tree.
- * @param[in] fname_seq comma-separated list of map file names
- * @return true if at least one of the given map files was found */
-bool FontMap::read (const string &fname_seq) {
- bool found = false;
- size_t left=0;
- while (left < fname_seq.length()) {
- const char modechar = fname_seq[left];
- if (strchr("+-=", modechar))
- left++;
- string fname;
- size_t right = fname_seq.find(',', left);
- if (right != string::npos)
- fname = fname_seq.substr(left, right-left);
- else {
- fname = fname_seq.substr(left);
- right = fname_seq.length();
- }
- if (!fname.empty()) {
- if (!read(fname, modechar)) {
- if (const char *path = FileFinder::lookup(fname, false))
- found = found || read(path, modechar);
- else
- Message::wstream(true) << "map file " << fname << " not found\n";
- }
- }
- left = right+1;
- }
- return found;
-}
-
-
-/** Appends given map line data to the font map if there is no entry for the corresponding
- * font in the map yet.
- * @param[in] mapline parsed font data
- * @return true if data has been appended */
-bool FontMap::append (const MapLine &mapline) {
- bool ret = false;
- if (!mapline.texname().empty()) {
- if (!mapline.fontfname().empty() || !mapline.encname().empty()) {
- vector<Subfont*> subfonts;
- if (mapline.sfd())
- mapline.sfd()->subfonts(subfonts);
- else
- subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
- if (it == _entries.end()) {
- _entries[fontname] = new Entry(mapline, subfonts[i]);
- ret = true;
- }
- }
- }
- }
- return ret;
-}
-
-
-/** Replaces the map data of the given font.
- * If the font is locked (because it's already in use) nothing happens.
- * @param[in] mapline parsed font data
- * @return true if data has been replaced */
-bool FontMap::replace (const MapLine &mapline) {
- if (mapline.texname().empty())
- return false;
- if (mapline.fontfname().empty() && mapline.encname().empty())
- return remove(mapline);
-
- vector<Subfont*> subfonts;
- if (mapline.sfd())
- mapline.sfd()->subfonts(subfonts);
- else
- subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
- if (it == _entries.end())
- _entries[fontname] = new Entry(mapline, subfonts[i]);
- else if (!it->second->locked)
- *it->second = Entry(mapline, subfonts[i]);
- }
- return true;
-}
-
-
-/** Removes the map entry of the given font.
- * If the font is locked (because it's already in use) nothing happens.
- * @param[in] mapline parsed font data
- * @return true if entry has been removed */
-bool FontMap::remove (const MapLine &mapline) {
- bool ret = false;
- if (!mapline.texname().empty()) {
- vector<Subfont*> subfonts;
- if (mapline.sfd())
- mapline.sfd()->subfonts(subfonts);
- else
- subfonts.push_back(0);
- for (size_t i=0; i < subfonts.size(); i++) {
- string fontname = mapline.texname()+(subfonts[i] ? subfonts[i]->id() : "");
- Iterator it = _entries.find(fontname);
- if (it != _entries.end() && !it->second->locked) {
- _entries.erase(it);
- ret = true;
- }
- }
- }
- return ret;
-}
-
-
-ostream& FontMap::write (ostream &os) const {
- for (ConstIterator it=_entries.begin(); it != _entries.end(); ++it)
- os << it->first << " -> " << it->second->fontname << " [" << it->second->encname << "]\n";
- return os;
-}
-
-
-/** Reads and evaluates all map files in the given directory.
- * @param[in] dirname path to directory containing the map files to be read */
-void FontMap::readdir (const string &dirname) {
- Directory dir(dirname);
- while (const char *fname = dir.read(Directory::ET_FILE)) {
- if (strlen(fname) >= 4 && strcmp(fname+strlen(fname)-4, ".map") == 0) {
- string path = dirname + "/" + fname;
- read(path.c_str());
- }
- }
-}
-
-
-/** Returns name of font that is mapped to a given font.
- * @param[in] fontname name of font whose mapped name is retrieved
- * @returns name of mapped font */
-const FontMap::Entry* FontMap::lookup (const string &fontname) const {
- ConstIterator it = _entries.find(fontname);
- if (it == _entries.end())
- return 0;
- return it->second;
-}
-
-
-/** Sets the lock flag for the given font in order to avoid changing the map data of this font.
- * @param[in] fontname name of font to be locked */
-void FontMap::lockFont (const string& fontname) {
- Iterator it = _entries.find(fontname);
- if (it != _entries.end())
- it->second->locked = true;
-}
-
-
-/** Removes all (unlocked) entries from the font map.
- * @param[in] unlocked_only if true, only unlocked entries are removed */
-void FontMap::clear (bool unlocked_only) {
- if (!unlocked_only)
- _entries.clear();
- else {
- Iterator it=_entries.begin();
- while (it != _entries.end()) {
- if (it->second->locked)
- ++it;
- else {
- delete it->second;
- _entries.erase(it++);
- }
- }
- }
-}
-
-/////////////////////////////////////////////////
-
-FontMap::Entry::Entry (const MapLine &mapline, Subfont *sf)
- : fontname(mapline.fontfname()), encname(mapline.encname()), subfont(sf), fontindex(mapline.fontindex()),
- locked(false), style(mapline.bold(), mapline.extend(), mapline.slant())
-{
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.h
deleted file mode 100644
index 8bd2f712340..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMap.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*************************************************************************
-** FontMap.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTMAP_H
-#define DVISVGM_FONTMAP_H
-
-#include <map>
-#include <ostream>
-#include <string>
-#include "FontStyle.h"
-
-
-struct FontEncoding;
-class MapLine;
-class Subfont;
-
-class FontMap
-{
- public:
- struct Entry
- {
- Entry (const MapLine &mapline, Subfont *subfont=0);
- std::string fontname; ///< target font name
- std::string encname; ///< name of font encoding
- Subfont *subfont;
- int fontindex; ///< index of font in multi-font file
- bool locked;
- FontStyle style;
- };
-
- protected:
- typedef std::map<std::string,Entry*>::iterator Iterator;
- typedef std::map<std::string,Entry*>::const_iterator ConstIterator;
-
- public:
- enum Mode {FM_APPEND, FM_REMOVE, FM_REPLACE};
-
- ~FontMap ();
- static FontMap& instance ();
- bool read (const std::string &fname, Mode mode);
- bool read (const std::string &fname, char modechar);
- bool read (const std::string &fname_seq);
- void readdir (const std::string &dirname);
- bool apply (const MapLine &mapline, Mode mode);
- bool apply (const MapLine &mapline, char modechar);
- bool append (const MapLine &mapline);
- bool replace (const MapLine &mapline);
- bool remove (const MapLine &mapline);
- void lockFont (const std::string &fontname);
- void clear (bool unlocked_only=false);
- std::ostream& write (std::ostream &os) const;
- const Entry* lookup(const std::string &fontname) const;
-
- protected:
- FontMap () {}
-
- private:
- std::map<std::string,Entry*> _entries;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.cpp
deleted file mode 100644
index 3920e4e6e76..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
-** FontMetrics.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <fstream>
-#include "FileFinder.h"
-#include "FontMetrics.h"
-#include "JFM.h"
-#include "TFM.h"
-
-using namespace std;
-
-
-FontMetrics* FontMetrics::read (const char *fontname) {
- const char *path = FileFinder::lookup(string(fontname) + ".tfm");
- ifstream ifs(path, ios::binary);
- if (!ifs)
- return 0;
- UInt16 id = 256*ifs.get();
- id += ifs.get();
- if (id == 9 || id == 11) // Japanese font metric file?
- return new JFM(ifs);
- return new TFM(ifs);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.h
deleted file mode 100644
index 50207211d2c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontMetrics.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*************************************************************************
-** FontMetrics.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_FONTMETRICS_H
-#define DVISVGM_FONTMETRICS_H
-
-#include <istream>
-#include "MessageException.h"
-#include "types.h"
-
-struct FontMetrics
-{
- virtual ~FontMetrics () {}
- virtual double getDesignSize () const =0;
- virtual double getCharWidth (int c) const =0;
- virtual double getCharHeight (int c) const =0;
- virtual double getCharDepth (int c) const =0;
- virtual double getItalicCorr (int c) const =0;
- virtual bool verticalLayout () const =0;
- virtual UInt32 getChecksum () const =0;
- virtual UInt16 firstChar () const =0;
- virtual UInt16 lastChar () const =0;
- static FontMetrics* read (const char *fontname);
-};
-
-
-struct NullFontMetric : public FontMetrics
-{
- double getDesignSize () const {return 1;}
- double getCharWidth (int c) const {return 0;}
- double getCharHeight (int c) const {return 0;}
- double getCharDepth (int c) const {return 0;}
- double getItalicCorr (int c) const {return 0;}
- bool verticalLayout () const {return false;}
- UInt32 getChecksum () const {return 0;}
- UInt16 firstChar () const {return 0;}
- UInt16 lastChar () const {return 0;}
-};
-
-
-struct FontMetricException : public MessageException
-{
- FontMetricException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontStyle.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontStyle.h
deleted file mode 100644
index 932c09291cc..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/FontStyle.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef FONTSTYLE
-#define FONTSTYLE
-
-struct FontStyle {
- FontStyle () : bold(0), extend(1), slant(0) {}
- FontStyle (float b, float e, float s) : bold(b), extend(e), slant(s) {}
- double bold; ///< stroke width in pt used to draw the glyph outlines
- double extend; ///< factor to strech/shrink the glyphs horizontally
- double slant; ///< horizontal slanting/skewing value (= tan(phi))
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.cpp
deleted file mode 100644
index 4eff0912d42..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*************************************************************************
-** GFGlyphTracer.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "GFGlyphTracer.h"
-#include "Pair.h"
-
-using namespace std;
-
-GFGlyphTracer::GFGlyphTracer () : GFTracer(_ifs, 0), _glyph(0), _callback(0)
-{
-}
-
-/** Constructs a new glyph tracer.
- * @param[in] is GF input stream
- * @param[in] upp target units per PS point */
-GFGlyphTracer::GFGlyphTracer (string &fname, double upp, Callback *cb)
- : GFTracer(_ifs, upp), _glyph(0), _callback(cb)
-{
- if (_callback)
- _callback->setFont(fname);
- _ifs.open(fname.c_str(), ios::binary);
-}
-
-
-void GFGlyphTracer::reset (string &fname, double upp) {
- if (_callback)
- _callback->setFont(fname);
- if (_ifs.is_open())
- _ifs.close();
- unitsPerPoint(upp);
- _ifs.open(fname.c_str(), ios::binary);
-}
-
-
-bool GFGlyphTracer::executeChar (UInt8 c) {
- if (_glyph) {
- if (_callback)
- _callback->beginChar(c);
- bool ok = GFTracer::executeChar(c);
- if (_callback) {
- if (ok)
- _callback->endChar(c);
- else
- _callback->emptyChar(c);
- return ok;
- }
- }
- return false;
-}
-
-
-void GFGlyphTracer::moveTo (double x, double y) {
- _glyph->moveto(int(x), int(y));
-}
-
-
-void GFGlyphTracer::lineTo (double x, double y) {
- _glyph->lineto(int(x), int(y));
-}
-
-
-void GFGlyphTracer::curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y) {
- _glyph->cubicto(int(c1x), int(c1y), int(c2x), int(c2y), int(x), int(y));
-}
-
-
-void GFGlyphTracer::closePath () {
- _glyph->closepath();
-}
-
-
-void GFGlyphTracer::endChar (UInt32 c) {
- _glyph->newpath();
- GFTracer::endChar(c);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.h
deleted file mode 100644
index 84063a994b5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFGlyphTracer.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*************************************************************************
-** GFGlyphTracer.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GFGLYPHTRACER_H
-#define DVISVGM_GFGLYPHTRACER_H
-
-#include <fstream>
-#include <string>
-#include "GFTracer.h"
-#include "Glyph.h"
-
-class GFGlyphTracer : public GFTracer
-{
- public:
- struct Callback {
- virtual ~Callback () {}
- virtual void setFont (const std::string &fontname) {}
- virtual void beginChar (UInt8 c) {}
- virtual void endChar (UInt8 c) {}
- virtual void emptyChar (UInt8 c) {}
- };
-
- public:
- GFGlyphTracer ();
- GFGlyphTracer (std::string &fname, double upp, Callback *cb=0);
- void reset (std::string &fname, double upp);
- void setCallback (Callback *cb) {_callback = cb;}
- bool executeChar (UInt8 c);
- void moveTo (double x, double y);
- void lineTo (double x, double y);
- void curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y);
- void closePath ();
- void endChar (UInt32 c);
- void setGlyph (Glyph &glyph) {_glyph = &glyph;}
- const Glyph& getGlyph () const {return *_glyph;}
-
- private:
- std::ifstream _ifs;
- Glyph *_glyph;
- Callback *_callback;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.cpp
deleted file mode 100644
index 0c0238b5766..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-/*************************************************************************
-** GFReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <iostream>
-#include <sstream>
-#include "GFReader.h"
-#include "macros.h"
-#include "SignalHandler.h"
-
-using namespace std;
-
-struct GFCommand
-{
- void (GFReader::*method)(int);
- int numBytes;
-};
-
-
-static inline double fix2double (Int32 fix) {
- return double(fix)/(1 << 20)*72/72.27;
-}
-
-
-static inline double scaled2double (Int32 scaled) {
- return double(scaled)/(1 << 16);
-}
-
-
-GFReader::GFReader (istream &is) : _in(is), _penDown(false)
-{
- _minX = _maxX = _minY = _maxY = _x = _y = 0;
- _currentChar = 0;
- _designSize = 0;
- _hppp = _vppp = 0;
- _checksum = 0;
-}
-
-
-UInt32 GFReader::readUnsigned (int bytes) {
- UInt32 ret = 0;
- for (int i=bytes-1; i >= 0 && !_in.eof(); i--) {
- UInt32 b = _in.get();
- ret |= b << (8*i);
- }
- return ret;
-}
-
-
-Int32 GFReader::readSigned (int bytes) {
- Int32 ret = _in.get();
- if (ret & 128) // negative value?
- ret |= 0xffffff00;
- for (int i=bytes-2; i >= 0 && !_in.eof(); i--)
- ret = (ret << 8) | _in.get();
- return ret;
-}
-
-
-string GFReader::readString (int bytes) {
- vector<char> buf(bytes+1);
- if (bytes > 0)
- _in.get(&buf[0], bytes+1); // reads 'bytes' bytes (pos. bytes+1 is set to 0)
- else
- buf[0] = 0;
- return &buf[0];
-}
-
-
-/** Reads a single GF command from the current position of the input stream and calls the
- * corresponding cmdFOO method.
- * @return opcode of the executed command */
-int GFReader::executeCommand () {
- SignalHandler::instance().check();
- /* Each cmdFOO command reads the necessary number of bytes from the stream so executeCommand
- doesn't need to know the exact GF command format. Some cmdFOO methods are used for multiple
- GF commands because they only differ in the size of their parameters. */
- static const GFCommand commands[] = {
- {&GFReader::cmdPaint, 1}, {&GFReader::cmdPaint, 2}, {&GFReader::cmdPaint, 3}, // 64-66
- {&GFReader::cmdBoc, 0}, {&GFReader::cmdBoc1, 0}, // 67-68
- {&GFReader::cmdEoc, 0}, // 69
- {&GFReader::cmdSkip, 0}, {&GFReader::cmdSkip, 1}, {&GFReader::cmdSkip, 2},{&GFReader::cmdSkip, 3}, // 70-73
- {&GFReader::cmdXXX, 1}, {&GFReader::cmdXXX, 2}, {&GFReader::cmdXXX, 3}, {&GFReader::cmdXXX, 4}, // 239-242
- {&GFReader::cmdYYY, 0}, // 243
- {&GFReader::cmdNop, 0}, // 244
- {&GFReader::cmdCharLoc, 0}, {&GFReader::cmdCharLoc0, 0}, // 245-246
- {&GFReader::cmdPre, 0}, {&GFReader::cmdPost, 0}, {&GFReader::cmdPostPost, 0} // 247-249
- };
-
- int opcode = _in.get();
- if (opcode < 0) // at end of file?
- throw GFException("unexpected end of file");
-
- if (opcode >= 0 && opcode <= 63)
- cmdPaint0(opcode);
- else if (opcode >= 74 && opcode <= 238)
- cmdNewRow(opcode-74);
- else if (opcode >= 250) {
- ostringstream oss;
- oss << "undefined GF command (opcode " << opcode << ")";
- throw GFException(oss.str());
- }
- else {
- int offset = opcode <= 73 ? 64 : 239-(73-64+1);
- const GFCommand &cmd = commands[opcode-offset];
- if (cmd.method)
- (this->*cmd.method)(cmd.numBytes);
- }
- return opcode;
-}
-
-
-bool GFReader::executeChar (UInt8 c) {
- _in.clear();
- if (_charInfoMap.empty())
- executePostamble(); // read character info
- _in.clear();
- Iterator it = _charInfoMap.find(c);
- if (_in && it != _charInfoMap.end()) {
- _in.seekg(it->second.location, ios_base::beg);
- while (executeCommand() != 69); // execute all commands until eoc is reached
- return true;
- }
- return false;
-}
-
-
-bool GFReader::executeAllChars () {
- _in.clear();
- if (_charInfoMap.empty())
- executePostamble(); // read character info
- _in.clear();
- if (_in) {
- _in.seekg(0);
- while (executeCommand() != 248); // execute all commands until postamble is reached
- return true;
- }
- return false;
-}
-
-
-bool GFReader::executePostamble () {
- _in.clear();
- if (!_in)
- return false;
- _in.seekg(-1, ios_base::end);
- while (_in.peek() == 223) // skip fill bytes
- _in.seekg(-1, ios_base::cur);
- _in.seekg(-4, ios_base::cur);
- UInt32 q = readUnsigned(4); // pointer to begin of postamble
- _in.seekg(q, ios_base::beg); // now on begin of postamble
- while (executeCommand() != 249); // execute all commands until postpost is reached
- return true;
-}
-
-
-/** Returns the design size of this font int PS point units. */
-double GFReader::getDesignSize () const {
- return fix2double(_designSize);
-}
-
-/** Returns the number of horizontal pixels per point. */
-double GFReader::getHPixelsPerPoint () const {
- return scaled2double(_hppp)*72/72.27;
-}
-
-/** Returns the number of vertical pixels per point. */
-double GFReader::getVPixelsPerPoint () const {
- return scaled2double(_vppp)*72/72.27;
-}
-
-/** Returns the width of character c in PS point units */
-double GFReader::getCharWidth (UInt32 c) const {
- ConstIterator it = _charInfoMap.find(c%256);
- return it == _charInfoMap.end() ? 0 : it->second.width*getDesignSize()/(1<<24);
-}
-
-///////////////////////
-
-
-/** Reads the preamble. */
-void GFReader::cmdPre (int) {
- UInt32 i = readUnsigned(1);
- if (i == 131) {
- UInt32 k = readUnsigned(1);
- string s = readString(k);
- preamble(s);
- }
- else
- throw GFException("invalid identification number in GF preamble");
-}
-
-
-/** Reads the postamble. */
-void GFReader::cmdPost (int) {
- readUnsigned(4); // pointer to byte after final eoc
- _designSize = readUnsigned(4); // design size of font in points
- _checksum = readUnsigned(4); // checksum
- _hppp = readUnsigned(4); // horizontal pixels per point (scaled int)
- _vppp = readUnsigned(4); // vertical pixels per point (scaled int)
- _in.seekg(16, ios_base::cur); // skip x and y bounds
- postamble();
-}
-
-
-/** Reads trailing bytes at end of stream. */
-void GFReader::cmdPostPost (int) {
- readUnsigned(4); // pointer to begin of postamble
- UInt32 i = readUnsigned(1);
- if (i == 131)
- while (readUnsigned(1) == 223); // skip fill bytes
- else
- throw GFException("invalid identification number in GF preamble");
-}
-
-
-/** Inverts "paint color" (black to white or vice versa) of n pixels
- * and advances the cursor by n.
- * @param[in] n number of pixels to be inverted */
-void GFReader::cmdPaint0 (int n) {
- if (_penDown) // set pixels?
- _bitmap.setBits(_y, _x, n);
- _x += n;
- _penDown = !_penDown; // inverse pen state
-}
-
-
-/** Inverts "paint color" (black to white or vice versa) of n pixels
- * and advances the cursor by n. The number n of pixels is read from
- * the input stream.
- * @param[in] len size of n in bytes */
-void GFReader::cmdPaint (int len) {
- UInt32 pixels = readUnsigned(len);
- cmdPaint0(pixels);
-}
-
-
-/** Beginning of character (generic format). */
-void GFReader::cmdBoc (int) {
- _currentChar = readSigned(4);
- readSigned(4); // pointer to previous boc with same c mod 256
- _minX = readSigned(4);
- _maxX = readSigned(4);
- _minY = readSigned(4);
- _maxY = readSigned(4);
- _x = _minX;
- _y = _maxY;
- _penDown = false;
- _bitmap.resize(_minX, _maxX, _minY, _maxY);
- beginChar(_currentChar);
-}
-
-
-/** Beginning of character (compact format). */
-void GFReader::cmdBoc1 (int) {
- _currentChar = readUnsigned(1);
- UInt32 dx = readUnsigned(1);
- _maxX = readUnsigned(1);
- _minX = _maxX - dx;
- UInt32 dy = readUnsigned(1);
- _maxY = readUnsigned(1);
- _minY = _maxY - dy;
- _x = _minX;
- _y = _maxY;
- _penDown = false;
- _bitmap.resize(_minX, _maxX, _minY, _maxY);
- beginChar(_currentChar);
-}
-
-
-/** End of character. */
-void GFReader::cmdEoc (int) {
- endChar(_currentChar);
-}
-
-
-/** Moves cursor to the beginning of a following row and sets
- * paint color to white.
- * @param[in] len if 0: move to next row, otherwise: number of bytes to read.
- * The read value denotes the number of rows to be skipped. */
-void GFReader::cmdSkip (int len) {
- if (len == 0)
- _y--;
- else
- _y -= readUnsigned(len)+1;
- _x = _minX;
- _penDown = false;
-}
-
-
-/** Moves cursor to pixel number 'col' in the next row and sets
- * the paint color to black.
- * @param[in] col pixel/column number */
-void GFReader::cmdNewRow (int col) {
- _x = _minX + col ;
- _y--;
- _penDown = true;
-}
-
-
-void GFReader::cmdXXX (int len) {
- UInt32 n = readUnsigned(len);
- string str = readString(n);
- special(str);
-}
-
-
-void GFReader::cmdYYY (int) {
- Int32 y = readSigned(4);
- numspecial(y);
-}
-
-
-/** Does nothing. */
-void GFReader::cmdNop (int) {
-}
-
-
-/** Reads character locator (part of postamble) */
-void GFReader::cmdCharLoc0 (int) {
- UInt8 c = readUnsigned(1); // character code mod 256
- UInt8 dm = readUnsigned(1); //
- Int32 w = readSigned(4); // (1<<24)*characterWidth/designSize
- Int32 p = readSigned(4); // pointer to begin of (last) character data
- Int32 dx = 65536*dm;
- Int32 dy = 0;
- _charInfoMap[c] = CharInfo(dx, dy, w, p);
-}
-
-
-/** Reads character locator (part of postamble) */
-void GFReader::cmdCharLoc (int) {
- UInt32 c = readUnsigned(1); // character code mod 256
- Int32 dx = readSigned(4); // horizontal escapement (scaled pixel units)
- Int32 dy = readSigned(4); // vertical escapement (scaled pixel units)
- Int32 w = readSigned(4); // (1<<24)*characterWidth/designSize
- Int32 p = readSigned(4); // pointer to begin of (last) character data
- _charInfoMap[c] = CharInfo(dx, dy, w, p);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.h
deleted file mode 100644
index 62c36a0498b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFReader.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*************************************************************************
-** GFReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GFREADER_H
-#define DVISVGM_GFREADER_H
-
-#include <istream>
-#include <map>
-#include <string>
-#include "Bitmap.h"
-#include "MessageException.h"
-#include "types.h"
-
-
-class CharInfo;
-
-
-struct GFException : public MessageException
-{
- GFException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-class GFReader
-{
- struct CharInfo
- {
- CharInfo () : dx(0), dy(0), width(0), location(0) {}
- CharInfo (Int32 dxx, Int32 dyy, Int32 w, UInt32 p) : dx(dxx), dy(dyy), width(w), location(p) {}
-
- Int32 dx, dy;
- Int32 width; // 2^24 * (true width)/(design size)
- UInt32 location;
- };
-
- typedef std::map<UInt8,CharInfo>::iterator Iterator;
- typedef std::map<UInt8,CharInfo>::const_iterator ConstIterator;
- public:
- GFReader (std::istream &is);
- virtual ~GFReader () {}
- bool executeChar (UInt8 c);
- bool executeAllChars ();
- bool executePostamble ();
- virtual void preamble (const std::string &str) {}
- virtual void postamble () {}
- virtual void beginChar (UInt32 c) {}
- virtual void endChar (UInt32 c) {}
- virtual void special (std::string str) {}
- virtual void numspecial (Int32 y) {}
- const Bitmap& getBitmap () const {return _bitmap;}
- double getDesignSize () const;
- double getHPixelsPerPoint () const;
- double getVPixelsPerPoint () const;
- double getCharWidth (UInt32 c) const;
- UInt32 getChecksum () const {return _checksum;}
-
- protected:
- Int32 readSigned (int bytes);
- UInt32 readUnsigned (int bytes);
- std::string readString (int len);
- int executeCommand ();
- std::istream& getInputStream () const {return _in;}
-
- void cmdPre (int);
- void cmdPost (int);
- void cmdPostPost (int);
- void cmdPaint0 (int pixels);
- void cmdPaint (int len);
- void cmdBoc (int);
- void cmdBoc1 (int);
- void cmdEoc (int);
- void cmdSkip (int len);
- void cmdNewRow (int col);
- void cmdXXX (int len);
- void cmdYYY (int);
- void cmdNop (int);
- void cmdCharLoc0 (int);
- void cmdCharLoc (int);
-
- private:
- std::istream &_in;
- Int32 _minX, _maxX, _minY, _maxY;
- Int32 _x, _y; // current pen location (pixel units)
- Int32 _currentChar;
- Bitmap _bitmap; // bitmap of current char
- FixWord _designSize; // designSize
- ScaledInt _hppp, _vppp; // horizontal and vertical pixel per point
- UInt32 _checksum;
- std::map<UInt8,CharInfo> _charInfoMap;
- bool _penDown;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.cpp
deleted file mode 100644
index 89ff4359fda..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*************************************************************************
-** GFTracer.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include "GFTracer.h"
-#include "Glyph.h"
-#include "Message.h"
-
-#ifdef __MSVC__
-#include <potracelib.h>
-#else
-extern "C" {
-#include <potracelib.h>
-}
-#endif
-
-using namespace std;
-
-
-GFTracer::GFTracer (istream &is)
- : GFReader(is), _unitsPerPoint(0.0)
-{
-}
-
-
-/** Constructs a new GFTracer.
- * @param[in] is GF file is read from this stream
- * @param[in] upp target units per PS point */
-GFTracer::GFTracer (istream &is, double upp)
- : GFReader(is), _unitsPerPoint(upp)
-{
-}
-
-
-void GFTracer::beginChar (UInt32 c) {
-}
-
-
-void GFTracer::endChar (UInt32 c) {
- const Bitmap &bitmap = getBitmap();
- if (bitmap.empty())
- return;
-
- // prepare potrace's bitmap structure
- vector<potrace_word> buffer;
- potrace_bitmap_t pobitmap;
- pobitmap.w = bitmap.width();
- pobitmap.h = bitmap.height();
- pobitmap.dy = bitmap.copy(buffer);
- pobitmap.map = &buffer[0];
- potrace_param_t *param = potrace_param_default();
- potrace_state_t *state = potrace_trace(param, &pobitmap);
- potrace_param_free(param);
-
- if (!state || state->status == POTRACE_STATUS_INCOMPLETE)
- Message::wstream(true) << "error while tracing character\n";
- else {
- double hsf=1.0, vsf=1.0; // horizontal a d vertical scale factor
- if (_unitsPerPoint != 0.0) {
- hsf = _unitsPerPoint/getHPixelsPerPoint(); // horizontal scale factor
- vsf = _unitsPerPoint/getVPixelsPerPoint(); // vertical scale factor
- }
- for (potrace_path_t *path = state->plist; path; path = path->next) {
- potrace_dpoint_t &p = path->curve.c[path->curve.n-1][2]; // start/end point
- moveTo(hsf*(p.x+bitmap.xshift()), vsf*(p.y+bitmap.yshift()));
- for (int i=0; i < path->curve.n; i++) {
- if (path->curve.tag[i] == POTRACE_CURVETO) {
- curveTo(hsf*(path->curve.c[i][0].x+bitmap.xshift()), vsf*(path->curve.c[i][0].y+bitmap.yshift()),
- hsf*(path->curve.c[i][1].x+bitmap.xshift()), vsf*(path->curve.c[i][1].y+bitmap.yshift()),
- hsf*(path->curve.c[i][2].x+bitmap.xshift()), vsf*(path->curve.c[i][2].y+bitmap.yshift()));
- }
- else {
- lineTo(hsf*(path->curve.c[i][1].x+bitmap.xshift()), vsf*(path->curve.c[i][1].y+bitmap.yshift()));
- if (i == path->curve.n-1)
- closePath();
- else
- lineTo(hsf*(path->curve.c[i][2].x+bitmap.xshift()), vsf*(path->curve.c[i][2].y+bitmap.yshift()));
- }
- }
- }
- }
- potrace_state_free(state);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.h
deleted file mode 100644
index 7171ac1e3aa..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GFTracer.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*************************************************************************
-** GFTracer.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GFTRACER_H
-#define DVISVGM_GFTRACER_H
-
-#include <istream>
-#include "GFReader.h"
-
-class GFTracer : public GFReader
-{
- public:
- GFTracer (std::istream &is);
- GFTracer (std::istream &is, double upp);
- virtual ~GFTracer () {}
- virtual void moveTo (double x, double y) {}
- virtual void lineTo (double x, double y) {}
- virtual void curveTo (double c1x, double c1y, double c2x, double c2y, double x, double y) {}
- virtual void closePath () {}
- void beginChar (UInt32 c);
- void endChar (UInt32 c);
-
- protected:
- void unitsPerPoint(double upp) {_unitsPerPoint = upp;}
-
- private:
- double _unitsPerPoint; ///< target units per PS point
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.cpp
deleted file mode 100644
index 5a872960774..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/*************************************************************************
-** Ghostscript.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "Ghostscript.h"
-#if !defined(DISABLE_GS)
-#include <cstring>
-#include <iomanip>
-#include <sstream>
-#if defined(HAVE_LIBGS)
- #include <ghostscript/ierrors.h>
-#else
- #include "ierrors.h"
- #include "FileFinder.h"
-#endif
-
-using namespace std;
-
-// name of Ghostscript shared library set by the user
-string Ghostscript::LIBGS_NAME;
-
-
-#ifndef HAVE_LIBGS
-/** Try to detect name of the Ghostscript shared library depending on the user settings.
- * @param[in] fname path/filename given by the user
- * @return name of Ghostscript shared library */
-static string get_libgs (const string &fname) {
- if (!fname.empty())
- return fname;
-#ifdef MIKTEX
-#if defined(__WIN64__)
- const char *gsdll = "mgsdll64.dll";
-#elif defined(__WIN32__)
- const char *gsdll = "mgsdll32.dll";
-#endif
- // try to look up the Ghostscript DLL coming with MiKTeX
- if (const char *gsdll_path = FileFinder::lookup(gsdll))
- return gsdll_path;
-#endif // MIKTEX
-#if defined(__WIN64__)
- return "gsdll64.dll";
-#elif defined(__WIN32__)
- return "gsdll32.dll";
-#else
- // try to find libgs.so.X on the user's system
- const int abi_min=7, abi_max=9; // supported libgs ABI versions
- for (int i=abi_max; i >= abi_min; i--) {
- ostringstream oss;
- oss << "libgs.so." << i;
- DLLoader loader(oss.str().c_str());
- if (loader.loaded())
- return oss.str();
- }
-#endif
- // no appropriate library found
- return "";
-}
-#endif // HAVE_LIBGS
-
-
-/** Loads the Ghostscript library but does not create an instance. This
- * constructor should only be used to call available() and revision(). */
-Ghostscript::Ghostscript ()
-#if !defined(HAVE_LIBGS)
- : DLLoader(get_libgs(LIBGS_NAME).c_str())
-#endif
-{
- _inst = 0;
-}
-
-
-/** Tries to load the shared library and to initialize Ghostscript.
- * @param[in] argc number of parameters in array argv
- * @param[in] argv parameters passed to Ghostscript
- * @param[in] caller this parameter is passed to all callback functions */
-Ghostscript::Ghostscript (int argc, const char **argv, void *caller)
-#if !defined(HAVE_LIBGS)
- : DLLoader(get_libgs(LIBGS_NAME).c_str())
-#endif
-{
- _inst = 0;
- init(argc, argv, caller);
-}
-
-
-/** Exits Ghostscript and unloads the dynamic library. */
-Ghostscript::~Ghostscript () {
- if (_inst) {
- exit();
- delete_instance();
- }
-}
-
-
-bool Ghostscript::init (int argc, const char **argv, void *caller) {
- if (!_inst) {
- int status = new_instance(&_inst, caller);
- if (status < 0)
- _inst = 0;
- else {
- init_with_args(argc, (char**)argv);
- }
- }
- return _inst != 0;
-}
-
-
-/** Returns true if Ghostscript library was found and can be loaded. */
-bool Ghostscript::available () {
-#if defined(HAVE_LIBGS)
- return true;
-#else
- gsapi_revision_t rev;
- return loaded() && revision(&rev);
-#endif
-}
-
-
-/** Retrieves version information about Ghostscript.
- * @param[out] r takes the revision information (see GS API documentation for further details)
- * @return true on success */
-bool Ghostscript::revision (gsapi_revision_t *r) {
-#if defined(HAVE_LIBGS)
- return (gsapi_revision(r, sizeof(gsapi_revision_t)) == 0);
-#else
- if (PFN_gsapi_revision fn = (PFN_gsapi_revision)loadSymbol("gsapi_revision"))
- return (fn(r, sizeof(gsapi_revision_t)) == 0);
- return false;
-#endif
-}
-
-
-/** Returns product name and revision number of the GS library.
- * @param[in] revonly if true, only the revision number is returned */
-string Ghostscript::revision (bool revonly) {
- gsapi_revision_t r;
- if (revision(&r)) {
- ostringstream oss;
- if (!revonly)
- oss << r.product << ' ';
- oss << (r.revision/100) << '.' << setfill('0') << setw(2) << (r.revision%100);
- return oss.str();
- }
- return "";
-}
-
-
-/** Creates a new instance of Ghostscript. This method is called by the constructor and
- * should not be used elsewhere.
- * @param[out] psinst handle of newly created instance (or 0 on error)
- * @param[in] caller pointer forwarded to callback functions */
-int Ghostscript::new_instance (void **psinst, void *caller) {
-#if defined(HAVE_LIBGS)
- return gsapi_new_instance(psinst, caller);
-#else
- if (PFN_gsapi_new_instance fn = (PFN_gsapi_new_instance)loadSymbol("gsapi_new_instance"))
- return fn(psinst, caller);
- *psinst = 0;
- return 0;
-#endif
-}
-
-
-/** Destroys the current instance of Ghostscript. This method is called by the destructor
- * and should not be used elsewhere. */
-void Ghostscript::delete_instance () {
-#if defined(HAVE_LIBGS)
- gsapi_delete_instance(_inst);
-#else
- if (PFN_gsapi_delete_instance fn = (PFN_gsapi_delete_instance)loadSymbol("gsapi_delete_instance"))
- fn(_inst);
-#endif
-}
-
-
-/** Exits the interpreter. Must be called before destroying the GS instance. */
-int Ghostscript::exit () {
-#if defined(HAVE_LIBGS)
- return gsapi_exit(_inst);
-#else
- if (PFN_gsapi_exit fn = (PFN_gsapi_exit)loadSymbol("gsapi_exit"))
- return fn(_inst);
- return 0;
-#endif
-}
-
-
-/** Sets the I/O callback functions.
- * @param[in] in pointer to stdin handler
- * @param[in] out pointer to stdout handler
- * @param[in] err pointer to stderr handler */
-int Ghostscript::set_stdio (Stdin in, Stdout out, Stderr err) {
-#if defined(HAVE_LIBGS)
- return gsapi_set_stdio(_inst, in, out, err);
-#else
- if (PFN_gsapi_set_stdio fn = (PFN_gsapi_set_stdio)loadSymbol("gsapi_set_stdio"))
- return fn(_inst, in, out, err);
- return 0;
-#endif
-}
-
-
-/** Initializes Ghostscript with a set of optional parameters. This
- * method is called by the constructor and should not be used elsewhere.
- * @param[in] argc number of paramters
- * @param[in] argv parameters passed to Ghostscript */
-int Ghostscript::init_with_args (int argc, char **argv) {
-#if defined(HAVE_LIBGS)
- return gsapi_init_with_args(_inst, argc, argv);
-#else
- if (PFN_gsapi_init_with_args fn = (PFN_gsapi_init_with_args)loadSymbol("gsapi_init_with_args"))
- return fn(_inst, argc, argv);
- return 0;
-#endif
-}
-
-
-/** Tells Ghostscript that several calls of run_string_continue will follow. */
-int Ghostscript::run_string_begin (int user_errors, int *pexit_code) {
-#if defined(HAVE_LIBGS)
- return gsapi_run_string_begin(_inst, user_errors, pexit_code);
-#else
- if (PFN_gsapi_run_string_begin fn = (PFN_gsapi_run_string_begin)loadSymbol("gsapi_run_string_begin"))
- return fn(_inst, user_errors, pexit_code);
- *pexit_code = 0;
- return 0;
-#endif
-}
-
-
-/** Executes a chunk of PostScript commands given by a buffer of characters. The size of
- * this buffer must not exceed 64KB. Longer programs can be split into arbitrary smaller chunks
- * and passed to Ghostscript by successive calls of run_string_continue.
- * @param[in] str buffer containing the PostScript code
- * @param[in] length number of characters in buffer
- * @param[in] user_errors if non-negative, the default PS error values will be generated, otherwise this value is returned
- * @param[out] pexit_code takes the PS error code */
-int Ghostscript::run_string_continue (const char *str, unsigned length, int user_errors, int *pexit_code) {
-#if defined(HAVE_LIBGS)
- return gsapi_run_string_continue(_inst, str, length, user_errors, pexit_code);
-#else
- if (PFN_gsapi_run_string_continue fn = (PFN_gsapi_run_string_continue)loadSymbol("gsapi_run_string_continue"))
- return fn(_inst, str, length, user_errors, pexit_code);
- *pexit_code = 0;
- return 0;
-#endif
-}
-
-
-/** Terminates the successive code feeding. Must be called after the last call of run_string_continue. */
-int Ghostscript::run_string_end (int user_errors, int *pexit_code) {
-#if defined(HAVE_LIBGS)
- return gsapi_run_string_end(_inst, user_errors, pexit_code);
-#else
- if (PFN_gsapi_run_string_end fn = (PFN_gsapi_run_string_end)loadSymbol("gsapi_run_string_end"))
- return fn(_inst, user_errors, pexit_code);
- *pexit_code = 0;
- return 0;
-#endif
-}
-
-
-const char* Ghostscript::error_name (int code) {
- if (code < 0)
- code = -code;
- const char *error_names[] = { ERROR_NAMES };
- if (code == 0 || (size_t)code > sizeof(error_names)/sizeof(error_names[0]))
- return 0;
-#if defined(HAVE_LIBGS)
- // use array defined in libgs to avoid linking the error strings into the binary
- return gs_error_names[code-1];
-#elif defined(__WIN32__)
- // gs_error_names is private in the Ghostscript DLL so we can't access it here
- return error_names[code-1];
-#else
- if (const char **error_names = (const char**)loadSymbol("gs_error_names"))
- return error_names[code-1];
- return 0;
-#endif
-}
-
-#endif // !DISABLE_GS
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.h
deleted file mode 100644
index d223ad04edf..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Ghostscript.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*************************************************************************
-** Ghostscript.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GHOSTSCRIPT_H
-#define DVISVGM_GHOSTSCRIPT_H
-
-#include <config.h>
-#include <string>
-
-#if defined(DISABLE_GS)
- #include "iapi.h"
-#elif defined(HAVE_LIBGS)
- #include <ghostscript/iapi.h>
-#else
- #include "DLLoader.h"
- #include "iapi.h"
-#endif
-
-#if defined(__WIN32__) && !defined(_Windows)
- #define _Windows
-#endif
-
-#if defined(DISABLE_GS)
-struct Ghostscript
-{
- typedef int (GSDLLCALLPTR Stdin) (void *caller, char *buf, int len);
- typedef int (GSDLLCALLPTR Stdout) (void *caller, const char *str, int len);
- typedef int (GSDLLCALLPTR Stderr) (void *caller, const char *str, int len);
-
- Ghostscript () {}
- Ghostscript (int argc, const char **argv, void *caller=0) {}
- bool init (int argc, const char **argv, void *caller=0) {return false;}
- bool available () {return false;}
- bool revision (gsapi_revision_t *r) {return false;}
- std::string revision (bool revonly=false) {return "";}
- int set_stdio (Stdin in, Stdout out, Stderr err) {return 0;}
- int run_string_begin (int user_errors, int *pexit_code) {return 0;}
- int run_string_continue (const char *str, unsigned int length, int user_errors, int *pexit_code) {return 0;}
- int run_string_end (int user_errors, int *pexit_code) {return 0;}
- int exit () {return 0;}
- const char* error_name (int code) {return 0;}
-};
-
-#else
-
-/** Wrapper class of (a subset of) the Ghostscript API. */
-class Ghostscript
-#if !defined(HAVE_LIBGS)
-: public DLLoader
-#endif
-{
- public:
- typedef int (GSDLLCALLPTR Stdin) (void *caller, char *buf, int len);
- typedef int (GSDLLCALLPTR Stdout) (void *caller, const char *str, int len);
- typedef int (GSDLLCALLPTR Stderr) (void *caller, const char *str, int len);
-
- public:
- Ghostscript ();
- Ghostscript (int argc, const char **argv, void *caller=0);
- ~Ghostscript ();
- bool init (int argc, const char **argv, void *caller=0);
- bool available ();
- bool revision (gsapi_revision_t *r);
- std::string revision (bool revonly=false);
- int set_stdio (Stdin in, Stdout out, Stderr err);
- int run_string_begin (int user_errors, int *pexit_code);
- int run_string_continue (const char *str, unsigned int length, int user_errors, int *pexit_code);
- int run_string_end (int user_errors, int *pexit_code);
- int exit ();
- const char* error_name (int code);
-
- static std::string LIBGS_NAME;
-
- protected:
- Ghostscript (const Ghostscript &gs) : _inst(0) {}
- int init_with_args (int argc, char **argv);
- int new_instance (void **psinst, void *caller);
- void delete_instance ();
-
- private:
- void *_inst; ///< Ghostscript handle needed to call the gsapi_foo functions
-};
-
-#endif // DISABLE_GS
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Glyph.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Glyph.h
deleted file mode 100644
index 5a003a2196b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Glyph.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*************************************************************************
-** Glyph.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GLYPH_H
-#define DVISVGM_GLYPH_H
-
-#include "GraphicPath.h"
-
-typedef GraphicPath<Int32> Glyph;
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GlyphTracerMessages.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GlyphTracerMessages.h
deleted file mode 100644
index 6256bb843a0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GlyphTracerMessages.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** GlyphTracerMessages.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GLYPHTRACERMESSAGES_H
-#define DVISVGM_GLYPHTRACERMESSAGES_H
-
-#include <sstream>
-#include "GFGlyphTracer.h"
-#include "Message.h"
-#include "types.h"
-
-class GlyphTracerMessages : public GFGlyphTracer::Callback
-{
- public:
- GlyphTracerMessages (bool sfmsg=true, bool autonl=true) : _sfmsg(sfmsg), _autonl(autonl) {}
-
- ~GlyphTracerMessages () {
- if (_autonl)
- Message::mstream() << '\n';
- }
-
- void endChar (UInt8 c) {
- std::ostringstream oss;
- oss << '[';
- if (isprint(c))
- oss << c;
- else
- oss << '#' << unsigned(c);
- oss << ']';
- Message::mstream(false, Message::MC_TRACING) << oss.str();
- }
-
- void setFont (const std::string &fname) {
- if (_sfmsg && fname != _fname) {
- if (!_fname.empty())
- Message::mstream() << '\n';
- Message::mstream(false, Message::MC_STATE) << "tracing glyphs of " << fname.substr(0, fname.length()-3) << '\n';
- _fname = fname;
- }
- }
-
- private:
- std::string _fname;
- bool _sfmsg, _autonl;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GraphicPath.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GraphicPath.h
deleted file mode 100644
index e1bd457d554..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/GraphicPath.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/*************************************************************************
-** GraphicPath.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_GRAPHICPATH_H
-#define DVISVGM_GRAPHICPATH_H
-
-#include <list>
-#include <ostream>
-#include <vector>
-#include "BoundingBox.h"
-#include "Matrix.h"
-#include "Pair.h"
-#include "XMLString.h"
-
-
-template <typename T>
-class GraphicPath
-{
- public:
- typedef Pair<T> Point;
-
- struct Command {
- enum Type {MOVETO, LINETO, CONICTO, CUBICTO, CLOSEPATH};
-
- Command (Type t) : type(t) {}
-
- Command (Type t, const Point &p) : type(t) {
- params[0] = p;
- }
-
- Command (Type t, const Point &p1, const Point &p2) : type(t) {
- params[0] = p1;
- params[1] = p2;
- }
-
- Command (Type t, const Point &p1, const Point &p2, const Point &p3) : type(t) {
- params[0] = p1;
- params[1] = p2;
- params[2] = p3;
- }
-
- int numParams () const {
- switch (type) {
- case CLOSEPATH : return 0;
- case MOVETO :
- case LINETO : return 1;
- case CONICTO : return 2;
- case CUBICTO : return 3;
- }
- return 0;
- }
-
- void transform (const Matrix &matrix) {
- for (int i=0; i < numParams(); i++)
- params[i] = matrix * params[i];
- }
-
- Type type;
- Point params[3];
- };
-
- struct Actions
- {
- virtual ~Actions () {}
- virtual void moveto (const Point &p) {}
- virtual void lineto (const Point &p) {}
- virtual void hlineto (const T &y) {}
- virtual void vlineto (const T &x) {}
- virtual void sconicto (const Point &p) {}
- virtual void conicto (const Point &p1, const Point &p2) {}
- virtual void scubicto (const Point &p1, const Point &p2) {}
- virtual void cubicto (const Point &p1, const Point &p2, const Point &p3) {}
- virtual void closepath () {}
- virtual void draw (char cmd, const Point *points, int n) {}
- virtual bool quit () {return false;}
- };
-
- typedef typename std::vector<Command>::iterator Iterator;
- typedef typename std::vector<Command>::const_iterator ConstIterator;
- typedef typename std::vector<Command>::const_reverse_iterator ConstRevIterator;
-
- public:
- void newpath () {
- _commands.clear();
- }
-
- /// Returns true if path is empty (there is nothing to draw)
- bool empty () const {
- return _commands.empty();
- }
-
-
- /// Returns the number of path commands used to describe the path.
- size_t size () const {
- return _commands.size();
- }
-
- void moveto (const T &x, const T &y) {
- moveto(Point(x, y));
- }
-
- void moveto (const Point &p) {
- // avoid sequences of several MOVETOs; always use latest
- if (_commands.empty() || _commands.back().type != Command::MOVETO)
- _commands.push_back(Command(Command::MOVETO, p));
- else
- _commands.back().params[0] = p;
- }
-
- void lineto (const T &x, const T &y) {
- lineto(Point(x, y));
- }
-
- void lineto (const Point &p) {
- _commands.push_back(Command(Command::LINETO, p));
- }
-
- void conicto (const T &x1, const T &y1, const T &x2, const T &y2) {
- conicto(Point(x1, y1), Point(x2, y2));
- }
-
- void conicto (const Point &p1, const Point &p2) {
- _commands.push_back(Command(Command::CONICTO, p1, p2));
- }
-
- void cubicto (const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3) {
- cubicto(Point(x1, y1), Point(x2, y2), Point(x3, y3));
- }
-
- void cubicto (const Point &p1, const Point &p2, const Point &p3) {
- _commands.push_back(Command(Command::CUBICTO, p1, p2, p3));
- }
-
- void closepath () {
- _commands.push_back(Command(Command::CLOSEPATH));
- }
-
-
- const std::vector<Command>& commands () const {
- return _commands;
- }
-
-
- /** Detects all open subpaths and closes them by adding a closePath command.
- * Most font formats only support closed outline paths so there are no explicit closePath statements
- * in the glyph's outline description. All open paths are automatically closed by the renderer.
- * This method detects all open paths and adds the missing closePath statement. */
- void closeOpenSubPaths () {
- Command *prevCommand = 0;
- FORALL(_commands, Iterator, it) {
- if (it->type == Command::MOVETO && prevCommand && prevCommand->type != Command::CLOSEPATH) {
- prevCommand = &(*it);
- it = _commands.insert(it, Command(Command::CLOSEPATH))+1;
-// ++it; // skip inserted closePath command in next iteration step
- }
- else
- prevCommand = &(*it);
- }
- if (!_commands.empty() && _commands.back().type != Command::CLOSEPATH)
- closepath();
- }
-
-
- /** Writes the path data as SVG path drawing command to a given output stream.
- * @param[in] os output stream used to write the SVG commands to
- * @param[in] sx horizontal scale factor
- * @param[in] sy vertical scale factor
- * @param[in] dx horizontal translation in PS point units
- * @param[in] dy vertical translation in PS point units */
- void writeSVG (std::ostream &os, double sx=1.0, double sy=1.0, double dx=0.0, double dy=0.0) const {
- struct WriteActions : Actions {
- WriteActions (std::ostream &os, double sx, double sy, double dx, double dy)
- : _os(os), _sx(sx), _sy(sy), _dx(dx), _dy(dy) {}
-
- void draw (char cmd, const Point *points, int n) {
- _os << cmd;
- switch (cmd) {
- case 'H': _os << XMLString(_sx*points->x()+_dx); break;
- case 'V': _os << XMLString(_sy*points->y()+_dy); break;
- default :
- for (int i=0; i < n; i++) {
- if (i > 0)
- _os << ' ';
- _os << XMLString(_sx*points[i].x()+_dx) << ' ' << XMLString(_sy*points[i].y()+_dy);
- }
- }
- }
- std::ostream &_os;
- double _sx, _sy, _dx, _dy;
- } actions(os, sx, sy, dx, dy);
- iterate(actions, true);
- }
-
-
- /** Computes the bounding box of the current path.
- * @param[out] bbox the computed bounding box */
- void computeBBox (BoundingBox &bbox) const {
- struct BBoxActions : Actions {
- BBoxActions (BoundingBox &bb) : bbox(bb) {}
- void moveto (const Point &p) {bbox.embed(p);}
- void lineto (const Point &p) {bbox.embed(p);}
- void conicto (const Point &p1, const Point &p2) {bbox.embed(p1); bbox.embed(p2);}
- void cubicto (const Point &p1, const Point &p2, const Point &p3) {bbox.embed(p1); bbox.embed(p2); bbox.embed(p3);}
- BoundingBox &bbox;
- } actions(bbox);
- iterate(actions, false);
- }
-
-
- /** Checks whether the current path describes a dot/point only (with no extent).
- * @param[out] p coordinates of the point if path describes a dot
- * @return true if path is a dot/point */
- bool isDot (Point &p) const {
- struct DotActions : Actions {
- DotActions () : differs(false) {}
- void moveto (const Point &p) {point = p;}
- void lineto (const Point &p) {differs = (p != point);}
- void conicto (const Point &p1, const Point &p2) {differs = (point != p1 || point != p2);}
- void cubicto (const Point &p1, const Point &p2, const Point &p3) {differs = (point != p1 || point != p2 || point != p3);}
- bool quit () {return differs;}
- Point point;
- bool differs;
- } actions;
- iterate(actions, false);
- p = actions.point;
- return !actions.differs;
- }
-
-
- /** Transforms the path according to a given Matrix.
- * @param[in] matrix Matrix describing the affine transformation */
- void transform (const Matrix &matrix) {
- FORALL(_commands, Iterator, it)
- it->transform(matrix);
- }
-
- void iterate (Actions &actions, bool optimize) const;
-
- private:
- std::vector<Command> _commands;
-};
-
-
-/** Iterates over all commands defining this path and calls the corresponding template methods.
- * In the case of successive bezier curve sequences, control points or tangent slopes are often
- * identical so that the path description contains redundant information. SVG provides shorthand
- * curve commands that require less parameters. If 'optimize' is true, this method detects such
- * command sequences.
- * @param[in] actions template methods called by each iteration step
- * @param[in] optimize if true, shorthand drawing commands (sconicto, scubicto,...) are considered */
-template <typename T>
-void GraphicPath<T>::iterate (Actions &actions, bool optimize) const {
- ConstIterator prev = _commands.end(); // pointer to preceding command
- Point fp; // first point of current path
- Point cp; // current point
- Point pstore[2];
- for (ConstIterator it=_commands.begin(); it != _commands.end() && !actions.quit(); ++it) {
- const Point *params = it->params;
- switch (it->type) {
- case Command::MOVETO:
- actions.moveto(params[0]);
- actions.draw('M', params, 1);
- fp = params[0];
- break;
- case Command::LINETO:
- if (optimize) {
- if (cp.x() == params[0].x()) {
- actions.vlineto(params[0].y());
- actions.draw('V', params, 1);
- }
- else if (cp.y() == params[0].y()) {
- actions.hlineto(params[0].x());
- actions.draw('H', params, 1);
- }
- else {
- actions.lineto(params[0]);
- actions.draw('L', params, 1);
- }
- }
- else {
- actions.lineto(params[0]);
- actions.draw('L', params, 1);
- }
- break;
- case Command::CONICTO:
- if (optimize && prev != _commands.end() && prev->type == Command::CONICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
- actions.sconicto(params[1]);
- actions.draw('T', params+1, 1);
- }
- else {
- actions.conicto(params[0], params[1]);
- actions.draw('Q', params, 2);
- }
- pstore[0] = params[0]; // store control point and
- pstore[1] = params[1]; // curve endpoint
- break;
- case Command::CUBICTO:
- // is first control point reflection of preceding second control point?
- if (optimize && prev != _commands.end() && prev->type == Command::CUBICTO && params[0] == pstore[1]*T(2)-pstore[0]) {
- actions.scubicto(params[1], params[2]);
- actions.draw('S', params+1, 2);
- }
- else {
- actions.cubicto(params[0], params[1], params[2]);
- actions.draw('C', params, 3);
- }
- pstore[0] = params[1]; // store second control point and
- pstore[1] = params[2]; // curve endpoint
- break;
- case Command::CLOSEPATH:
- actions.closepath();
- actions.draw('Z', params, 0);
- cp = fp;
- }
- // update current point
- const int np = it->numParams();
- if (np > 0)
- cp = it->params[np-1];
- prev = it;
- }
-}
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.cpp
deleted file mode 100644
index 29ae75b5821..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-/*************************************************************************
-** HtmlSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "HtmlSpecialHandler.h"
-#include "InputReader.h"
-#include "Message.h"
-#include "SVGTree.h"
-#include "XMLNode.h"
-
-using namespace std;
-
-// variable to select the link marker variant (none, underlined, boxed, or colored background)
-HtmlSpecialHandler::MarkerType HtmlSpecialHandler::MARKER_TYPE = HtmlSpecialHandler::MT_LINE;
-Color HtmlSpecialHandler::LINK_BGCOLOR;
-Color HtmlSpecialHandler::LINK_LINECOLOR;
-bool HtmlSpecialHandler::USE_LINECOLOR = false;
-
-
-bool HtmlSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- if (!actions)
- return true;
- _actions = actions;
- StreamInputReader ir(is);
- ir.skipSpace();
- map<string,string> attribs;
- map<string,string>::iterator it;
- if (ir.check("<a ") && ir.parseAttributes(attribs, '"') > 0) {
- if ((it = attribs.find("href")) != attribs.end()) // <a href="URI">
- hrefAnchor(it->second);
- else if ((it = attribs.find("name")) != attribs.end()) // <a name="ID">
- nameAnchor(it->second);
- else
- return false; // none or only invalid attributes
- }
- else if (ir.check("</a>"))
- closeAnchor();
- else if (ir.check("<img src=")) {
- }
- else if (ir.check("<base ") && ir.parseAttributes(attribs, '"') > 0 && (it = attribs.find("href")) != attribs.end())
- _base = it->second;
- return true;
-}
-
-
-/** Handles anchors with href attribute: <a href="URI">...</a>
- * @param uri value of href attribute */
-void HtmlSpecialHandler::hrefAnchor (string uri) {
- closeAnchor();
- int id=0;
- if (uri[0] == '#') { // reference to named anchor?
- string name = uri.substr(1);
- NamedAnchors::iterator it = _namedAnchors.find(name);
- if (it == _namedAnchors.end()) {
- id = _namedAnchors.size()+1;
- _namedAnchors[name] = NamedAnchor(-id, 0);
- }
- }
- if (!_base.empty() && uri.find("://") != string::npos) {
- if (*_base.rbegin() != '/' && uri[0] != '/' && uri[0] != '#')
- uri = "/" + uri;
- uri = _base + uri;
- }
- XMLElementNode *anchor = new XMLElementNode("a");
- anchor->addAttribute("xlink:href", id ? "#loc"+XMLString(id) : uri);
- anchor->addAttribute("xlink:title", uri);
- _actions->pushContextElement(anchor);
- _actions->bbox("{anchor}", true); // start computing the bounding box of the linked area
- _depthThreshold = _actions->getDVIStackDepth();
- _anchorType = AT_HREF;
-}
-
-
-/** Handles anchors with name attribute: <a name="NAME">...</a>
- * @param name value of name attribute */
-void HtmlSpecialHandler::nameAnchor (const string &name) {
- closeAnchor();
- _anchorName = name;
- NamedAnchors::iterator it = _namedAnchors.find(name);
- if (it == _namedAnchors.end()) { // first occurrence of this anchor
- int id = _namedAnchors.size()+1;
- _namedAnchors[name] = NamedAnchor(id, _actions->getY());
- }
- else if (it->second.id < 0) { // anchor referenced but not defined yet
- it->second.id *= -1;
- it->second.pos = _actions->getY();
- }
- else
- Message::wstream(true) << "named hyperref anchor '" << name << "' redefined\n";
- _anchorType = AT_NAME;
-}
-
-
-/** Handles the closing tag (</a> of the current anchor element. */
-void HtmlSpecialHandler::closeAnchor () {
- if (_anchorType == AT_HREF) {
- markLinkedBox();
- _actions->popContextElement();
- _depthThreshold = 0;
- }
- else if (_anchorType == AT_NAME)
- _anchorName.clear();
- _anchorType = AT_NONE;
-}
-
-
-/** Marks a single rectangular area of the linked part of the document with a line or
- * a box so that it's noticeable by the user. Additionally, an invisible rectangle is
- * placed over this area in order to avoid flickering of the mouse cursor when moving
- * it over the hyperlinked area. */
-void HtmlSpecialHandler::markLinkedBox () {
- const BoundingBox &bbox = _actions->bbox("{anchor}");
- if (bbox.width() > 0 && bbox.height() > 0) { // does the bounding box extend in both dimensions?
- if (MARKER_TYPE != MT_NONE) {
- const double linewidth = min(0.5, bbox.height()/15);
- XMLElementNode *rect = new XMLElementNode("rect");
- double x = bbox.minX();
- double y = bbox.maxY()+linewidth;
- double w = bbox.width();
- double h = linewidth;
- const Color &linecolor = USE_LINECOLOR ? LINK_LINECOLOR : _actions->getColor();
- if (MARKER_TYPE == MT_LINE)
- rect->addAttribute("fill", linecolor.rgbString());
- else {
- x -= linewidth;
- y = bbox.minY()-linewidth;
- w += 2*linewidth;
- h += bbox.height()+linewidth;
- if (MARKER_TYPE == MT_BGCOLOR) {
- rect->addAttribute("fill", LINK_BGCOLOR.rgbString());
- if (USE_LINECOLOR) {
- rect->addAttribute("stroke", linecolor.rgbString());
- rect->addAttribute("stroke-width", linewidth);
- }
- }
- else { // LM_BOX
- rect->addAttribute("fill", "none");
- rect->addAttribute("stroke", linecolor.rgbString());
- rect->addAttribute("stroke-width", linewidth);
- }
- }
- rect->addAttribute("x", x);
- rect->addAttribute("y", y);
- rect->addAttribute("width", w);
- rect->addAttribute("height", h);
- _actions->prependToPage(rect);
- if (MARKER_TYPE == MT_BOX || MARKER_TYPE == MT_BGCOLOR) {
- // slightly enlarge the boxed area
- x -= linewidth;
- y -= linewidth;
- w += 2*linewidth;
- h += 2*linewidth;
- }
- _actions->embed(BoundingBox(x, y, x+w, y+h));
- }
- // Create an invisible rectangle around the linked area so that it's easier to access.
- // This is only necessary when using paths rather than real text elements together with fonts.
- if (!SVGTree::USE_FONTS) {
- XMLElementNode *rect = new XMLElementNode("rect");
- rect->addAttribute("x", bbox.minX());
- rect->addAttribute("y", bbox.minY());
- rect->addAttribute("width", bbox.width());
- rect->addAttribute("height", bbox.height());
- rect->addAttribute("fill", "white");
- rect->addAttribute("fill-opacity", 0);
- _actions->appendToPage(rect);
- }
- }
-}
-
-
-/** This method is called every time the DVI position changes. */
-void HtmlSpecialHandler::dviMovedTo (double x, double y) {
- if (_actions && _anchorType != AT_NONE) {
- // Start a new box if the current depth of the DVI stack underruns
- // the initial threshold which indicates a line break.
- if (_actions->getDVIStackDepth() < _depthThreshold) {
- markLinkedBox();
- _depthThreshold = _actions->getDVIStackDepth();
- _actions->bbox("{anchor}", true); // start a new box on the new line
- }
- }
-}
-
-
-void HtmlSpecialHandler::dviEndPage (unsigned pageno) {
- if (_actions) {
- // create views for all collected named anchors defined on the recent page
- const BoundingBox &pagebox = _actions->bbox();
- for (NamedAnchors::iterator it=_namedAnchors.begin(); it != _namedAnchors.end(); ++it) {
- if (it->second.id > 0) { // current anchor referenced?
- ostringstream oss;
- oss << pagebox.minX() << ' ' << it->second.pos << ' '
- << pagebox.width() << ' ' << pagebox.height();
- XMLElementNode *view = new XMLElementNode("view");
- view->addAttribute("id", "loc"+XMLString(it->second.id));
- view->addAttribute("viewBox", oss.str());
- _actions->appendToDefs(view);
- }
- }
- closeAnchor();
- _namedAnchors.clear();
- _actions = 0;
- }
-}
-
-
-/** Sets the appearance of the link markers.
- * @param[in] marker string specifying the marker (format: type[:linecolor])
- * @return true on success */
-bool HtmlSpecialHandler::setLinkMarker (const string &marker) {
- string type; // "none", "box", "line", or a background color specifier
- string color; // optional line color specifier
- size_t seppos = marker.find(":");
- if (seppos == string::npos)
- type = marker;
- else {
- type = marker.substr(0, seppos);
- color = marker.substr(seppos+1);
- }
- if (type.empty() || type == "none")
- MARKER_TYPE = MT_NONE;
- else if (type == "line")
- MARKER_TYPE = MT_LINE;
- else if (type == "box")
- MARKER_TYPE = MT_BOX;
- else {
- if (!LINK_BGCOLOR.set(type, false))
- return false;
- MARKER_TYPE = MT_BGCOLOR;
- }
- USE_LINECOLOR = false;
- if (MARKER_TYPE != MT_NONE && !color.empty()) {
- if (!LINK_LINECOLOR.set(color, false))
- return false;
- USE_LINECOLOR = true;
- }
- return true;
-}
-
-
-const char** HtmlSpecialHandler::prefixes () const {
- static const char *pfx[] = {"html:", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.h
deleted file mode 100644
index e94b3800e1d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/HtmlSpecialHandler.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*************************************************************************
-** HtmlSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_HTMLSPECIALHANDLER_H
-#define DVISVGM_HTMLSPECIALHANDLER_H
-
-#include <map>
-#include <string>
-#include "Color.h"
-#include "SpecialHandler.h"
-
-struct SpecialActions;
-
-class HtmlSpecialHandler : public SpecialHandler, public DVIEndPageListener, public DVIPositionListener
-{
- struct NamedAnchor {
- NamedAnchor () : id(0), pos(0) {}
- NamedAnchor (int i, double p) : id(i), pos(p) {}
- int id; ///< unique numerical ID (< 0 if anchor is unreferenced)
- double pos; ///< vertical position of named anchor (in PS point units)
- };
-
- enum AnchorType {AT_NONE, AT_HREF, AT_NAME};
- typedef std::map<std::string, NamedAnchor> NamedAnchors;
-
- public:
- HtmlSpecialHandler () : _actions(0), _anchorType(AT_NONE), _depthThreshold(0) {}
- bool process (const char *prefix, std::istream &in, SpecialActions *actions);
- const char* name () const {return "html";}
- const char* info () const {return "hyperref specials";}
- const char** prefixes () const;
-
- static bool setLinkMarker (const std::string &type);
-
- protected:
- void hrefAnchor (std::string uri);
- void nameAnchor (const std::string &name);
- void dviEndPage (unsigned pageno);
- void dviMovedTo (double x, double y);
- void closeAnchor ();
- void markLinkedBox ();
-
- enum MarkerType {MT_NONE, MT_LINE, MT_BOX, MT_BGCOLOR};
- static MarkerType MARKER_TYPE; ///< selects how linked areas are marked
- static Color LINK_BGCOLOR; ///< background color if linkmark type == LT_BGCOLOR
- static Color LINK_LINECOLOR; ///< line color if linkmark type is LM_LINE or LM_BOX
- static bool USE_LINECOLOR; ///< if true, LINK_LINECOLOR is applied
-
- private:
- SpecialActions *_actions;
- AnchorType _anchorType; ///< type of active anchor
- int _depthThreshold; ///< break anchor box if the DVI stack depth underruns this threshold
- std::string _anchorName; ///< name of currently active named anchor
- std::string _base; ///< base URL that is prepended to all relative targets
- NamedAnchors _namedAnchors; ///< information about all named anchors processed
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.cpp
deleted file mode 100644
index 79e0dcf39c7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*************************************************************************
-** InputBuffer.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <cstring>
-#include "InputBuffer.h"
-
-using namespace std;
-
-
-StreamInputBuffer::StreamInputBuffer (istream &is, size_t bufsize)
- : _is(is), _bufsize(bufsize), _buf1(new UInt8[_bufsize]), _buf2(new UInt8[_bufsize]), _bufptr(_buf1)
-{
- _size1 = fillBuffer(_buf1);
- _size2 = fillBuffer(_buf2);
-}
-
-
-StreamInputBuffer::~StreamInputBuffer () {
- delete [] _buf1;
- delete [] _buf2;
-}
-
-
-int StreamInputBuffer::get () {
- if (pos() == _size1) {
- if (_size2 == 0)
- return -1;
- swap(_buf1, _buf2);
- _size1 = _size2;
- _bufptr = _buf1;
- _size2 = fillBuffer(_buf2);
- }
- UInt8 c = *_bufptr++;
- return c;
-}
-
-
-/** Returns the next character to be read without skipping it.
- * Same as peek(0). */
-int StreamInputBuffer::peek () const {
- if (pos() < _size1)
- return *_bufptr;
- return _size2 > 0 ? *_buf2 : -1;
-}
-
-
-/** Returns the n-th next character without skipping it. */
-int StreamInputBuffer::peek (size_t n) const {
- if (pos()+n < _size1)
- return *(_bufptr+n);
- if (pos()+n < _size1+_size2)
- return *(_buf2 + pos()+n-_size1);
- return -1;
-}
-
-
-/** Fills the buffer by reading a sequence of characters from the assigned
- * input stream.
- * @param[in] buf pointer to character buffer to be filled
- * @return number of characters read */
-int StreamInputBuffer::fillBuffer (UInt8 *buf) {
- if (_is && !_is.eof()) {
- _is.read((char*)buf, _bufsize);
- return _is.gcount();
- }
- return 0;
-}
-
-///////////////////////////////////////////////
-
-SplittedCharInputBuffer::SplittedCharInputBuffer (const char *buf1, size_t s1, const char *buf2, size_t s2) {
- _buf[0] = buf1;
- _buf[1] = buf2;
- _size[0] = buf1 ? s1 : 0;
- _size[1] = buf2 ? s2 : 0;
- _index = _size[0] ? 0 : 1;
-}
-
-
-int SplittedCharInputBuffer::get () {
- if (_size[_index] == 0)
- return -1;
- int ret = *_buf[_index]++;
- _size[_index]--;
- if (_index == 0 && _size[0] == 0)
- _index++;
- return ret;
-}
-
-
-int SplittedCharInputBuffer::peek () const {
- return _size[_index] ? *_buf[_index] : -1;
-}
-
-
-int SplittedCharInputBuffer::peek (size_t n) const {
- if (n < _size[_index])
- return _buf[_index][n];
- n -= _size[_index];
- if (_index == 0 && n < _size[1])
- return _buf[1][n];
- return -1;
-}
-
-///////////////////////////////////////////////
-
-
-int TextStreamInputBuffer::get () {
- int c = StreamInputBuffer::get();
- if (c == '\n') {
- _line++;
- _col = 1;
- }
- else
- _col++;
- return c;
-}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.h
deleted file mode 100644
index c29a943a7e7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputBuffer.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/*************************************************************************
-** InputBuffer.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_INPUTBUFFER_H
-#define DVISVGM_INPUTBUFFER_H
-
-#include <algorithm>
-#include <cstring>
-#include <istream>
-#include <string>
-#include <ostream>
-#include "types.h"
-
-struct InputBuffer
-{
- virtual ~InputBuffer () {}
- virtual int get () =0;
- virtual int peek () const =0;
- virtual int peek (size_t n) const =0;
- virtual bool eof () const =0;
- virtual void invalidate () =0;
-};
-
-
-class StreamInputBuffer : public InputBuffer
-{
- public:
- StreamInputBuffer (std::istream &is, size_t bufsize=1024);
- ~StreamInputBuffer ();
- int get ();
- int peek () const;
- int peek (size_t n) const;
- bool eof () const {return pos() == _size1 && _size2 == 0;}
- void invalidate () {_bufptr = _buf1+_size1; _size2 = 0;}
-
- protected:
- int fillBuffer (UInt8 *buf);
- size_t pos () const {return _bufptr-_buf1;}
-
- private:
- std::istream &_is;
- const size_t _bufsize; ///< maximal number of bytes each buffer can hold
- UInt8 *_buf1; ///< pointer to first buffer
- UInt8 *_buf2; ///< pointer to second buffer
- size_t _size1; ///< number of bytes in buffer 1
- size_t _size2; ///< number of bytes in buffer 2
- UInt8 *_bufptr; ///< pointer to next byte to read
-};
-
-
-class StringInputBuffer : public InputBuffer
-{
- public:
- StringInputBuffer (const std::string &str) : _str(str), _pos(0) {}
- int get () {return _pos < _str.length() ? _str[_pos++] : -1;}
- int peek () const {return _pos < _str.length() ? _str[_pos] : -1;}
- int peek (size_t n) const {return _pos+n < _str.length() ? _str[_pos+n] : -1;}
- bool eof () const {return _pos >= _str.length();}
- void invalidate () {_pos = _str.length();}
-
- private:
- const std::string &_str;
- size_t _pos;
-};
-
-
-class CharInputBuffer : public InputBuffer
-{
- public:
- CharInputBuffer (const char *buf, size_t size) : _pos(buf), _size(buf ? size : 0) {}
-
- int get () {
- if (_size == 0)
- return -1;
- else {
- _size--;
- return *_pos++;
- }
- }
-
-
- void assign (const char *buf, size_t size) {
- _pos = buf;
- _size = size;
- }
-
- void assign (const char *buf) {assign(buf, std::strlen(buf));}
- int peek () const {return _size > 0 ? *_pos : -1;}
- int peek (size_t n) const {return _size >= n ? _pos[n] : -1;}
- bool eof () const {return _size == 0;}
- void invalidate () {_size = 0;}
-
- private:
- const char *_pos;
- size_t _size;
-};
-
-
-class SplittedCharInputBuffer : public InputBuffer
-{
- public:
- SplittedCharInputBuffer (const char *buf1, size_t s1, const char *buf2, size_t s2);
- int get ();
- int peek () const;
- int peek (size_t n) const;
- bool eof () const {return _size[_index] == 0;}
- void invalidate () {_size[_index] = 0;}
-
- private:
- const char *_buf[2];
- size_t _size[2];
- int _index;
-};
-
-
-class TextStreamInputBuffer : public StreamInputBuffer
-{
- public:
- TextStreamInputBuffer (std::istream &is) : StreamInputBuffer(is), _line(1), _col(1) {}
- int get ();
- int line () const {return _line;}
- int col () const {return _col;}
-
- private:
- int _line, _col;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.cpp
deleted file mode 100644
index b2f01f5ea1e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/*************************************************************************
-** InputReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <vector>
-#include "InputReader.h"
-
-using namespace std;
-
-
-/** Skips n characters. */
-void InputReader::skip (size_t n) {
- while (n-- > 0)
- get();
-}
-
-
-/** Moves the buffer pointer to the next non-space character. A following call
- * of get() returns this character. */
-void InputReader::skipSpace () {
- while (isspace(peek()))
- get();
-}
-
-
-/** Tries to find a given string and skips all characters preceding that string.
- * @param[in] s string to look for (must not be longer than the maximal buffer size)
- * @param[in] consume if true, the buffer pointer is moved to the first character following string s
- * @return true if s was found */
-bool InputReader::skipUntil (const char *s, bool consume) {
- bool found = false;
- while (!eof() && !(found = check(s, consume)))
- get();
- return found;
-}
-
-
-/** Looks for the first occurrence of a given character.
- * @param[in] c character to lookup
- * @return position of character relative to current location, -1 if character was not found */
-int InputReader::find (char c) const {
- int pos = 0;
- int cc;
- while ((cc = peek(pos)) >= 0 && cc != c)
- pos++;
- return cc < 0 ? -1 : pos;
-}
-
-
-/** Checks if the next characters to be read match a given string.
- * @param[in] s string to be matched
- * @param[in] consume if true, the characters of the matched string are skipped
- * @return true if s matches */
-bool InputReader::check (const char *s, bool consume) {
- size_t count = 0;
- for (const char *p=s; *p; p++) {
- if (peek(count++) != *p)
- return false;
- }
- if (consume)
- skip(count);
- return true;
-}
-
-
-int InputReader::compare (const char *s, bool consume) {
- size_t count = 0;
- for (const char *p=s; *p; p++) {
- int c = peek(count++);
- if (c != *p)
- return *p < c ? -1 : 1;
- }
- if (consume)
- skip(count);
- return 0;
-}
-
-
-/** Reads an integer from the buffer. All characters that are part of
- * the read integer constant are skipped. If this function returns false,
- * the buffer pointer points to the same position as before the function call.
- * @param[out] val contains the read integer value on success
- * @param[in] accept_sign if false, only positive integers (without sign) are accepted
- * @return true if integer could be read */
-bool InputReader::parseInt (int &val, bool accept_sign) {
- val = 0;
- int fac=1;
- char sign; // explicitly given sign
- if (accept_sign && ((sign = peek()) == '+' || sign == '-')) {
- if (isdigit(peek(1))) {
- get(); // skip sign
- if (sign == '-')
- fac = -1;
- }
- else
- return false;
- }
- else if (!isdigit(peek()))
- return false;
-
- while (isdigit(peek()))
- val = val*10 + (get()-'0');
- val *= fac;
- return true;
-}
-
-
-bool InputReader::parseUInt (unsigned &val) {
- val = 0;
- if (!isdigit(peek()))
- return false;
- while (isdigit(peek()))
- val = val*10 + (get()-'0');
- return true;
-}
-
-
-bool InputReader::parseInt (int base, int &val) {
- if (base < 2 || base > 32)
- return false;
-
- const char *digits = "0123456789abcdefghijklmnopqrstuvwxyz";
- const char maxdigit = digits[base-1];
- char c;
- if (!isalnum(c = tolower(peek())) || c > maxdigit)
- return false;
-
- val = 0;
- while (isalnum(c = tolower(peek())) && c <= maxdigit) {
- get();
- int digit = c - (c <= '9' ? '0' : 'a'-10);
- val = val*base + digit;
- }
- return true;
-}
-
-
-/** Reads a double from the buffer. All characters that are part of
- * the read double constant are skipped. If this function returns false,
- * the buffer pointer points to the same position as before the function call.
- * @param[out] val contains the read double value on success
- * @return number details: 0=no number, 'i'=integer, 'f'=floating point number */
-char InputReader::parseDouble (double &val) {
- int fac=1;
- int int_part=0;
- bool is_float = false;
- skipSpace();
- char sign = peek();
- if (parseInt(int_part)) { // match [+-]?[0-9]+\.?
- if (peek() == '.') {
- get();
- is_float = true;
- }
- if (int_part < 0 || sign == '-') {
- fac = -1;
- int_part = -int_part;
- }
- }
- else { // match [+-]?\.
- char sign; // explicitly given sign
- if ((sign = peek()) == '+' || sign == '-') { // match [+-]?\.[0-9]
- if (peek(1) != '.' || !isdigit(peek(2)))
- return 0;
- if (sign == '-')
- fac = -1;
- skip(2); // skip sign and dot
- }
- else if (peek() == '.' && isdigit(peek(1)))
- get();
- else
- return 0;
- is_float = true;
- }
- // parse fractional part
- double frac_part=0.0;
- for (double u=10; isdigit(peek()); u*=10)
- frac_part += (get()-'0')/u;
- val = (int_part + frac_part) * fac;
- // parse exponent
- char c;
- if (tolower(peek()) == 'e' && (isdigit(c=peek(1)) || ((c == '+' || c == '-') && isdigit(peek(2))))) {
- get(); // skip 'e'
- int exp;
- parseInt(exp);
- val *= pow(10.0, exp);
- is_float = true;
- }
- return is_float ? 'f' : 'i';
-}
-
-
-/** Reads an integer value from the buffer. If no valid integer constant
- * could be found at the current position 0 is returned. */
-int InputReader::getInt () {
- skipSpace();
- int val;
- return parseInt(val) ? val : 0;
-}
-
-
-/** Reads an double value from the buffer. If no valid double constant
- * could be found at the current position 0 is returned. */
-double InputReader::getDouble () {
- skipSpace();
- double val;
- return parseDouble(val) ? val : 0.0;
-}
-
-
-string InputReader::getWord () {
- string ret;
- skipSpace();
- while (isalpha(peek()))
- ret += get();
- return ret;
-}
-
-
-char InputReader::getPunct () {
- skipSpace();
- if (ispunct(peek()))
- return get();
- return 0;
-}
-
-
-/** Reads a string delimited by a given quotation character.
- * Before reading the string, all leading whitespace is skipped. Then, the function checks
- * for the given quotation character. If it is found, all characters until the second
- * appearance of the quotation char are appended to the result. Otherwise, an empty string
- * is returned. If the quotation character is 0, the behavior of this function is identical to
- * a call of getString().
- * @param[in] quotechar the quotation character bounding the string to be read
- * @return the string read */
-string InputReader::getQuotedString (char quotechar) {
- if (quotechar == 0)
- return getString();
-
- string ret;
- skipSpace();
- if (peek() == quotechar) {
- get();
- while (!eof() && peek() != quotechar)
- ret += get();
- get();
- }
- return ret;
-}
-
-
-/** Reads a string delimited by whitespace and/or invisible characters.
- * Before reading the string, all leading whitespace is skipped. Then, the function adds
- * all printable characters to the result until a whitespace, an unprintable character, or
- * EOF is found.
- * @return the string read */
-string InputReader::getString () {
- string ret;
- skipSpace();
- while (!eof() && !isspace(peek()) && isprint(peek()))
- ret += get();
- return ret;
-}
-
-
-/** Reads a given number of characters and returns the resulting string.
- * @param n number of character to read
- * @return the string read */
-string InputReader::getString (size_t n) {
- string ret;
- while (n-- > 0)
- ret += get();
- return ret;
-}
-
-
-/** Parses a sequence of key-value pairs of the form KEY=VALUE or KEY="VALUE"
- * @param[out] attr the scanned atributes
- * @param[in] quotechar quote character used to enclose the attribute values
- * @return number of attributes scanned */
-int InputReader::parseAttributes (map<string,string> &attr, char quotechar) {
- bool ready=false;
- while (!eof() && !ready) {
- string key;
- skipSpace();
- while (isalnum(peek()))
- key += get();
- skipSpace();
- if (peek() == '=') {
- get();
- skipSpace();
- string val = getQuotedString(quotechar);
- attr[key] = val;
- }
- else
- ready = true;
- }
- return attr.size();
-}
-
-//////////////////////////////////////////
-
-
-int StreamInputReader::peek (size_t n) const {
- if (n == 0)
- return peek();
- vector<char> chars(n);
- _is.read(&chars[0], n);
- int ret = peek();
- for (int i=n-1; i >= 0; i--)
- _is.putback(chars[i]);
- return ret;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.h
deleted file mode 100644
index c0d726424f6..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/InputReader.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*************************************************************************
-** InputReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_INPUTREADER_H
-#define DVISVGM_INPUTREADER_H
-
-#include <istream>
-#include <map>
-#include <string>
-#include "InputBuffer.h"
-
-
-class InputReader
-{
- public:
- virtual ~InputReader() {}
- virtual int get () =0;
- virtual int peek () const =0;
- virtual int peek (size_t n) const =0;
- virtual bool eof () const =0;
- virtual bool check (char c) const {return peek() == c;}
- virtual bool check (const char *s, bool consume=true);
- virtual int compare (const char *s, bool consume=true);
- virtual void skip (size_t n);
- virtual bool skipUntil (const char *s, bool consume=true);
- virtual int find (char c) const;
- virtual void skipSpace ();
- virtual int getInt ();
- virtual bool parseInt (int &val, bool accept_sign=true);
- virtual bool parseInt (int base, int &val);
- virtual bool parseUInt (unsigned &val);
- virtual char parseDouble (double &val);
- virtual double getDouble ();
- virtual std::string getWord ();
- virtual char getPunct ();
- virtual std::string getQuotedString (char quotechar);
- virtual std::string getString ();
- virtual std::string getString (size_t n);
- virtual int parseAttributes (std::map<std::string,std::string> &attr, char quotechar=0);
- virtual operator bool () const {return !eof();}
-};
-
-
-class StreamInputReader : public InputReader
-{
- public:
- StreamInputReader (std::istream &is) : _is(is) {}
- int get () {return _is.get();}
- int peek () const {return _is.peek();}
- int peek (size_t n) const;
- bool eof () const {return !_is || _is.eof();}
-
- private:
- std::istream &_is;
-};
-
-
-class BufferInputReader : public InputReader
-{
- public:
- BufferInputReader (InputBuffer &ib) : _ib(&ib) {}
- void assign (InputBuffer &ib) {_ib = &ib;}
- int get () {return _ib->get();}
- int peek () const {return _ib->peek();}
- int peek (size_t n) const {return _ib->peek(n);}
- bool eof () const {return _ib->eof();}
-
- private:
- InputBuffer *_ib;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.cpp
deleted file mode 100644
index 89c4796616c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************
-** JFM.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cstring>
-#include <fstream>
-#include <sstream>
-#include "JFM.h"
-#include "StreamReader.h"
-
-using namespace std;
-
-
-JFM::JFM (istream &is) {
- is.seekg(0);
- StreamReader sr(is);
- UInt16 id = UInt16(sr.readUnsigned(2)); // JFM ID (9 or 11)
- if (id != 9 && id != 11) {
- ostringstream oss;
- oss << "invalid JFM identifier " << id << " (9 or 11 expected)";
- throw FontMetricException(oss.str());
- }
- _vertical = (id == 9);
- UInt16 nt = UInt16(sr.readUnsigned(2)); // length of character type table
- UInt16 lf = UInt16(sr.readUnsigned(2)); // length of entire file in 4 byte words
- UInt16 lh = UInt16(sr.readUnsigned(2)); // length of header in 4 byte words
- UInt16 bc = UInt16(sr.readUnsigned(2)); // smallest character code in font
- UInt16 ec = UInt16(sr.readUnsigned(2)); // largest character code in font
- UInt16 nw = UInt16(sr.readUnsigned(2)); // number of words in width table
- UInt16 nh = UInt16(sr.readUnsigned(2)); // number of words in height table
- UInt16 nd = UInt16(sr.readUnsigned(2)); // number of words in depth table
- UInt16 ni = UInt16(sr.readUnsigned(2)); // number of words in italic corr. table
- UInt16 nl = UInt16(sr.readUnsigned(2)); // number of words in glue/kern table
- UInt16 nk = UInt16(sr.readUnsigned(2)); // number of words in kern table
- UInt16 ng = UInt16(sr.readUnsigned(2)); // number of words in glue table
- UInt16 np = UInt16(sr.readUnsigned(2)); // number of font parameter words
-
- if (7+nt+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ng+np != lf)
- throw FontMetricException("inconsistent length values");
-
- setCharRange(bc, ec);
- readHeader(sr);
- is.seekg(28+lh*4);
- readTables(sr, nt, nw, nh, nd, ni);
-}
-
-
-void JFM::readTables (StreamReader &sr, int nt, int nw, int nh, int nd, int ni) {
- // determine smallest charcode with chartype > 0
- UInt16 minchar=0xFFFF, maxchar=0;
- for (int i=0; i < nt; i++) {
- UInt16 c = (UInt16)sr.readUnsigned(2);
- UInt16 t = (UInt16)sr.readUnsigned(2);
- if (t > 0) {
- minchar = min(minchar, c);
- maxchar = max(maxchar, c);
- }
- }
- // build charcode to chartype map
- if (minchar <= maxchar) {
- _minchar = minchar;
- _charTypeTable.resize(maxchar-minchar+1);
- memset(&_charTypeTable[0], 0, nt*sizeof(UInt16));
- sr.seek(-nt*4, ios::cur);
- for (int i=0; i < nt; i++) {
- UInt16 c = (UInt16)sr.readUnsigned(2);
- UInt16 t = (UInt16)sr.readUnsigned(2);
- if (c >= minchar)
- _charTypeTable[c-minchar] = t;
- }
- }
- TFM::readTables(sr, nw, nh, nd, ni);
-}
-
-
-int JFM::charIndex (int c) const {
- UInt16 chartype = 0;
- if (!_charTypeTable.empty() && c >= _minchar && size_t(c) < _minchar+_charTypeTable.size())
- chartype = _charTypeTable[c-_minchar];
- return TFM::charIndex(chartype);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.h
deleted file mode 100644
index 86585477f74..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/JFM.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
-** JFM.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_JFM_H
-#define DVISVGM_JFM_H
-
-#include <istream>
-#include "TFM.h"
-
-
-class JFM : public TFM
-{
- public:
- JFM (std::istream &is);
- bool verticalLayout () const {return _vertical;}
-
- protected:
- void readTables (StreamReader &sr, int nt, int nw, int nh, int nd, int ni);
- int charIndex (int c) const;
-
- private:
- UInt16 _minchar; ///< character code of first entry in character type table
- bool _vertical; ///< true if metrics refer to vertical text layout
- std::vector<UInt16> _charTypeTable;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.cpp
deleted file mode 100644
index 63d1509d3fd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************
-** Length.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "InputReader.h"
-#include "Length.h"
-
-#define UNIT(c1,c2) ((c1 << 8)|c2)
-
-using namespace std;
-
-
-void Length::set (const string &len) {
- switch (len.length()) {
- case 0:
- _pt = 0;
- break;
- case 1:
- if (isdigit(len[0]))
- _pt = len[0] - '0';
- else
- throw UnitException("invalid length: "+len);
- break;
- default:
- istringstream iss(len);
- StreamInputReader ir(iss);
- double val;
- if (!ir.parseDouble(val))
- throw UnitException("invalid length: "+len);
- string unit = ir.getWord();
- set(val, unit);
- }
-}
-
-
-void Length::set (double val, Unit unit) {
- switch (unit) {
- case PT: _pt = val; break;
- case BP: _pt = val*72.27/72; break;
- case IN: _pt = val*72.27; break;
- case CM: _pt = val/2.54*72.27; break;
- case MM: _pt = val/25.4*72.27; break;
- case PC: _pt = val/12*72.27; break;
- }
-}
-
-
-void Length::set (double val, string unitstr) {
- if (unitstr.empty())
- unitstr = "pt";
- else if (unitstr.length() != 2)
- throw UnitException("invalid length unit: "+unitstr);
-
- Unit unit;
- switch (UNIT(unitstr[0], unitstr[1])) {
- case UNIT('p','t'): unit = PT; break;
- case UNIT('b','p'): unit = BP; break;
- case UNIT('i','n'): unit = IN; break;
- case UNIT('c','m'): unit = CM; break;
- case UNIT('m','m'): unit = MM; break;
- case UNIT('p','c'): unit = PC; break;
- default:
- throw UnitException("invalid length unit: "+unitstr);
- }
- set(val, unit);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.h
deleted file mode 100644
index f2e4f5d4114..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Length.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*************************************************************************
-** Length.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_LENGTH_H
-#define DVISVGM_LENGTH_H
-
-#include <string>
-#include "MessageException.h"
-
-#ifdef IN
-#undef IN
-#endif
-
-struct UnitException : MessageException
-{
- UnitException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-class Length
-{
- public:
- enum Unit {PT, BP, CM, MM, IN, PC};
-
- public:
- Length () : _pt(0) {}
- Length (double val, Unit unit=PT) {set(val, unit);}
- Length (double val, const std::string &unit) {set(val, unit);}
- Length (const std::string &len) {set(len);}
- void set (double val, Unit unit);
- void set (double val, std::string unit);
- void set (const std::string &len);
-
- double pt () const {return _pt;}
- double in () const {return _pt/72.27;}
- double bp () const {return in()*72;}
- double cm () const {return in()*2.54;}
- double mm () const {return cm()*10;}
- double pc () const {return in()*12;}
-
- private:
- double _pt; // length in TeX point units
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Makefile.am
deleted file mode 100644
index b504093a3bf..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Makefile.am
+++ /dev/null
@@ -1,53 +0,0 @@
-:## This file is part of dvisvgm
-## Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de>
-##
-## Process this file with automake.
-
-bin_PROGRAMS = dvisvgm
-noinst_LIBRARIES = libdvisvgm.a
-
-dvisvgm_SOURCES = gzstream.h \
- dvisvgm.cpp gzstream.cpp
-
-dvisvgm_LDADD = $(noinst_LIBRARIES) @EXTRA_LIBS@
-dvisvgm_DEPENDENCIES = $(noinst_LIBRARIES) @EXTRA_LIBS@
-
-libdvisvgm_a_SOURCES = Bitmap.h BoundingBox.h BgColorSpecialHandler.h Calculator.h Character.h CharMap.h CharMapID.h CMap.h \
- CMapManager.h CMapReader.h CmdLineParserBase.h Color.h CRC32.h ColorSpecialHandler.h CommandLine.h Directory.h DLLoader.h \
- DVIActions.h DVIReader.h DvisvgmSpecialHandler.h DVIToSVG.h DVIToSVGActions.h EncFile.h EmSpecialHandler.h EPSFile.h EPSToSVG.h \
- FileFinder.h FilePath.h FileSystem.h Font.h FontCache.h FontEncoding.h FontEngine.h FontManager.h FontMap.h FontMetrics.h \
- FontStyle.h GFReader.h GFTracer.h GFGlyphTracer.h Ghostscript.h Glyph.h GlyphTracerMessages.h GraphicPath.h HtmlSpecialHandler.h \
- InputBuffer.h InputReader.h JFM.h Length.h macros.h MapLine.h Matrix.h Message.h MessageException.h MetafontWrapper.h \
- NoPsSpecialHandler.h PageRanges.h PageSize.h Pair.h PdfSpecialHandler.h Process.h PSFilter.h PSInterpreter.h PSPattern.h \
- PSPreviewFilter.h PsSpecialHandler.h SignalHandler.h SpecialActions.h SpecialHandler.h SpecialManager.h StreamReader.h \
- StreamWriter.h Subfont.h SVGOutputBase.h SVGTree.h System.h Terminal.h TpicSpecialHandler.h TFM.h types.h VectorStream.h \
- VFActions.h VFReader.h XMLDocument.h XMLNode.h XMLString.h \
- BgColorSpecialHandler.cpp Bitmap.cpp BoundingBox.cpp Calculator.cpp CharMap.cpp CharMapID.cpp CMap.cpp CMapManager.cpp \
- CMapReader.cpp CmdLineParserBase.cpp Color.cpp ColorSpecialHandler.cpp CommandLine.cpp CRC32.cpp Directory.cpp DLLoader.cpp \
- DVIReader.cpp DvisvgmSpecialHandler.cpp DVIToSVG.cpp DVIToSVGActions.cpp EmSpecialHandler.cpp EncFile.cpp \
- EPSFile.cpp EPSToSVG.cpp FileFinder.cpp FilePath.cpp FileSystem.cpp Font.cpp FontCache.cpp FontEncoding.cpp FontEngine.cpp \
- FontManager.cpp FontMap.cpp FontMetrics.cpp GFReader.cpp GFGlyphTracer.cpp GFTracer.cpp Ghostscript.cpp HtmlSpecialHandler.cpp \
- InputBuffer.cpp InputReader.cpp JFM.cpp Length.cpp MapLine.cpp Matrix.cpp Message.cpp MetafontWrapper.cpp NoPsSpecialHandler.cpp \
- PageRanges.cpp PageSize.cpp PdfSpecialHandler.cpp Process.cpp psdefs.cpp PSInterpreter.cpp PSPattern.cpp PSPreviewFilter.cpp \
- PsSpecialHandler.cpp SignalHandler.cpp SpecialManager.cpp StreamReader.cpp StreamWriter.cpp Subfont.cpp SVGTree.cpp System.cpp \
- Terminal.cpp TFM.cpp TpicSpecialHandler.cpp VFReader.cpp XMLDocument.cpp XMLNode.cpp XMLString.cpp
-
-EXTRA_DIST = options.xml iapi.h ierrors.h MiKTeXCom.h MiKTeXCom.cpp
-
-AM_CXXFLAGS = -Wall -Wnon-virtual-dtor
-
-# the command-line parser is generated from options.xml by opt2cpp
-CommandLine.cpp: options.xml
- if test -f opt2cpp.xsl; then \
- rm -f $@ $*.h; \
- xsltproc opt2cpp.xsl $<; \
- fi
-
-# Create a C string definition containing the PostScript routines psdefs.ps needed by class PSInterpreter
-$(srcdir)/psdefs.cpp: psdefs.ps
- if test -f $<; then \
- ps2c PSInterpreter::PSDEFS $< >$@; \
- fi
-
-psdefs.ps: ;
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.cpp
deleted file mode 100644
index b225b0ba4fd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/*************************************************************************
-** MapLine.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <sstream>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "MapLine.h"
-#include "Subfont.h"
-
-using namespace std;
-
-
-/** Constructs a MapLine object by parsing a single mapline from the given stream. */
-MapLine::MapLine (istream &is)
- : _sfd(0), _fontindex(0), _slant(0), _bold(0), _extend(1)
-{
- char buf[256];
- is.getline(buf, 256);
- parse(buf);
-}
-
-
-// Some of the following functions have been derived from the dvipdfmx source file fontmap.c:
-// http://cvs.ktug.or.kr/viewcvs/dvipdfmx/src/fontmap.c?revision=1.43&view=markup
-
-
-/** Returns true if the given string is in dvips mapline format, and false if it's in dvipdfm format.
- @param[in] line string to check */
-bool MapLine::isDVIPSFormat (const char *line) const {
- if (strchr(line, '"') || strchr(line, '<')) // these chars are only present in dvips maps
- return true;
- char prevchar = ' ';
- int entry_count=0;
- for (const char *p=line; *p; ++p) {
- if (isspace(prevchar)) {
- if (*p == '-') // options starting with '-' are only present in dvipdfm map files
- return false;
- if (!isspace(*p))
- entry_count++;
- }
- prevchar = *p;
- }
- // tfm_name and ps_name only => dvips map
- return entry_count == 2;
-}
-
-
-/** Separates main font name and subfont definition name from a given combined name.
- * Example: "basename@sfdname@10" => {"basename10", "sfdname"}
- * @param[in,out] fontname complete fontname; after separation: main fontname only
- * @param[out] sfdname name of subfont definition
- * @return true on success */
-static bool split_fontname (string &fontname, string &sfdname) {
- size_t pos1; // index of first '@'
- if ((pos1 = fontname.find('@')) != string::npos && pos1 > 0) {
- size_t pos2; // index of second '@'
- if ((pos2 = fontname.find('@', pos1+1)) != string::npos && pos2 > pos1+1) {
- sfdname = fontname.substr(pos1+1, pos2-pos1-1);
- fontname = fontname.substr(0, pos1) + fontname.substr(pos2+1);
- return true;
- }
- }
- return false;
-}
-
-
-/** Parses a single mapline and stores the scanned data in member variables.
- * The line may either be given in dvips or dvipdfmx mapfile format.
- * @param[in] line the mapline */
-void MapLine::parse (const char *line) {
- CharInputBuffer ib(line, strlen(line));
- BufferInputReader ir(ib);
- _texname = ir.getString();
- string sfdname;
- split_fontname(_texname, sfdname);
- if (!sfdname.empty())
- _sfd = SubfontDefinition::lookup(sfdname);
- if (isDVIPSFormat(line))
- parseDVIPSLine(ir);
- else
- parseDVIPDFMLine(ir);
-}
-
-
-/** Parses a single line in dvips mapfile format.
- * @param[in] ir the input stream must be assigned to this reader */
-void MapLine::parseDVIPSLine (InputReader &ir) {
- ir.skipSpace();
- if (ir.peek() != '<' && ir.peek() != '"')
- _psname = ir.getString();
- ir.skipSpace();
- while (ir.peek() == '<' || ir.peek() == '"') {
- if (ir.peek() == '<') {
- ir.get();
- if (ir.peek() == '[')
- ir.get();
- string name = ir.getString();
- if (name.length() > 4 && name.substr(name.length()-4) == ".enc")
- _encname = name.substr(0, name.length()-4);
- else
- _fontfname = name;
- }
- else { // ir.peek() == '"' => list of PS font operators
- string options = ir.getQuotedString('"');
- StringInputBuffer sib(options);
- BufferInputReader sir(sib);
- while (!sir.eof()) {
- double number;
- if (sir.parseDouble(number)) {
- // operator with preceding numeric parameter (value opstr)
- string opstr = sir.getString();
- if (opstr == "SlantFont")
- _slant = number;
- else if (opstr == "ExtendFont")
- _extend = number;
- }
- else {
- // operator without parameter => skip for now
- sir.getString();
- }
- }
- }
- ir.skipSpace();
- }
-}
-
-
-static void throw_number_expected (char opt, bool integer_only=false) {
- ostringstream oss;
- oss << "option -" << opt << ": " << (integer_only ? "integer" : "floating point") << " value expected";
- throw MapLineException(oss.str());
-}
-
-
-/** Parses a single line in dvipdfmx mapfile format.
- * @param[in] ir the input stream must be assigned to this reader */
-void MapLine::parseDVIPDFMLine (InputReader &ir) {
- ir.skipSpace();
- if (ir.peek() != '-') {
- _encname = ir.getString();
- if (_encname == "default" || _encname == "none")
- _encname.clear();
- }
- ir.skipSpace();
- if (ir.peek() != '-')
- _fontfname = ir.getString();
- if (!_fontfname.empty()) {
- parseFilenameOptions(_fontfname);
- }
- ir.skipSpace();
- while (ir.peek() == '-') {
- ir.get();
- char option = ir.get();
- if (!isprint(option))
- throw MapLineException("option character expected");
- ir.skipSpace();
- switch (option) {
- case 's': // slant
- if (!ir.parseDouble(_slant))
- throw_number_expected('s');
- break;
- case 'e': // extend
- if (!ir.parseDouble(_extend))
- throw_number_expected('e');
- break;
- case 'b': // bold
- if (!ir.parseDouble(_bold))
- throw_number_expected('b');
- break;
- case 'r': //remap (deprecated)
- break;
- case 'i': // ttc index
- if (!ir.parseInt(_fontindex, false))
- throw_number_expected('i', true);
- break;
- case 'p': // UCS plane
- int dummy;
- if (!ir.parseInt(dummy, false))
- throw_number_expected('p', true);
- break;
- case 'u': // to unicode
- ir.getString();
- break;
- case 'v': // stemV
- int stemv;
- if (!ir.parseInt(stemv, true))
- throw_number_expected('v', true);
- break;
- case 'm': // map single chars
- ir.skipUntil("-");
- break;
- case 'w': // writing mode (horizontal=0, vertical=1)
- int vertical;
- if (!ir.parseInt(vertical, false))
- throw_number_expected('w', true);
- break;
- default:
- ostringstream oss;
- oss << "invalid option: -" << option;
- throw MapLineException(oss.str());
- }
- ir.skipSpace();
- }
-}
-
-
-/** [:INDEX:][!]FONTNAME[/CSI][,VARIANT] */
-void MapLine::parseFilenameOptions (string fname) {
- _fontfname = fname;
- StringInputBuffer ib(fname);
- BufferInputReader ir(ib);
- if (ir.peek() == ':' && isdigit(ir.peek(1))) { // index given?
- ir.get();
- _fontindex = ir.getInt(); // font index of file with multiple fonts
- if (ir.peek() == ':')
- ir.get();
- else
- _fontindex = 0;
- }
- if (ir.peek() == '!') // no embedding
- ir.get();
-
- bool csi_given=false, style_given=false;
- int pos;
- if ((pos = ir.find('/')) >= 0) { // csi delimiter
- csi_given = true;
- _fontfname = ir.getString(pos);
- }
- else if ((pos = ir.find(',')) >= 0) {
- style_given = true;
- _fontfname = ir.getString(pos);
- }
- else
- _fontfname = ir.getString();
-
- if (csi_given) {
- if ((pos = ir.find(',')) >= 0) {
- style_given = true;
- ir.getString(pos); // charcoll
- }
- else if (ir.eof())
- throw MapLineException("CSI specifier expected");
- else
- ir.getString(); // charcoll
- }
- if (style_given) {
- ir.get(); // skip ','
- if (ir.check("BoldItalic")) {
- }
- else if (ir.check("Bold")) {
- }
- else if (ir.check("Italic")) {
- }
- if (!ir.eof())
- throw MapLineException("invalid style given");
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.h
deleted file mode 100644
index 16ee9687ae3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MapLine.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*************************************************************************
-** MapLine.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MAPLINE_H
-#define DVISVGM_MAPLINE_H
-
-#include <istream>
-#include <string>
-#include "MessageException.h"
-
-
-class InputReader;
-class SubfontDefinition;
-
-
-struct MapLineException : MessageException
-{
- MapLineException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-class MapLine
-{
- public:
- MapLine (std::istream &is);
- const std::string& texname () const {return _texname;}
- const std::string& psname () const {return _psname;}
- const std::string& fontfname () const {return _fontfname;}
- const std::string& encname () const {return _encname;}
- int fontindex () const {return _fontindex;}
- double bold () const {return _bold;}
- double slant () const {return _slant;}
- double extend () const {return _extend;}
- SubfontDefinition* sfd () const {return _sfd;}
-
- protected:
- void init ();
- bool isDVIPSFormat (const char *line) const;
- void parse (const char *line);
- void parseDVIPSLine (InputReader &ir);
- void parseDVIPDFMLine (InputReader &ir);
- void parseFilenameOptions (std::string opt);
-
- private:
- std::string _texname; ///< TeX font name
- std::string _psname; ///< PS font name
- std::string _fontfname; ///< name of fontfile
- std::string _encname; ///< name of encoding (without file suffix ".enc")
- SubfontDefinition *_sfd; ///< subfont definition to be used
- int _fontindex; ///< font index of file with multiple fonts (e.g. ttc files)
- double _slant, _bold, _extend;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.cpp
deleted file mode 100644
index 9eb956f0529..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.cpp
+++ /dev/null
@@ -1,491 +0,0 @@
-/*************************************************************************
-** Matrix.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cmath>
-#include <limits>
-#include <sstream>
-#include "Calculator.h"
-#include "Matrix.h"
-#include "XMLString.h"
-
-using namespace std;
-
-
-
-/** Computes the determinant of a given matrix */
-double det (const Matrix &m) {
- double sum=0;
- for (int i=0; i < 3; ++i) {
- sum += m._values[0][i] * m._values[1][(i+1)%3] * m._values[2][(i+2)%3]
- - m._values[0][2-i] * m._values[1][(4-i)%3] * m._values[2][(3-i)%3];
- }
- return sum;
-}
-
-
-/** Computes the determinant of the 2x2 submatrix of m where a given
- * row and column were removed.
- * @param[in] m base matrix
- * @param[in] row row to remove
- * @param[in] col column to remove */
-double det (const Matrix &m, int row, int col) {
- int c1 = (col+1)%3, c2 = (col+2)%3;
- int r1 = (row+1)%3, r2 = (row+2)%3;
- if (c1 > c2)
- swap(c1, c2);
- if (r1 > r2)
- swap(r1, r2);
- return m._values[r1][c1] * m._values[r2][c2]
- - m._values[r1][c2] * m._values[r2][c1];
-}
-
-
-static inline double deg2rad (double deg) {
- const double PI = acos(-1.0);
- return PI*deg/180.0;
-}
-
-
-/** Creates a diagonal matrix ((d,0,0),(0,d,0),(0,0,d)).
- * @param[in] d value of diagonal elements */
-Matrix::Matrix (double d) {
- set(d);
-}
-
-
-/** Creates the matrix ((v0,v1,v2),(v3,v4,v5),(v6,v7,v8)).
- * Expects that array v consists of 'size' elements. If size is less than 9, the
- * remaining matrix components will be set to those of the identity matrix.
- * @param[in] v array containing the matrix components
- * @param[in] size size of array v */
-Matrix::Matrix (double v[], unsigned size) {
- set(v, size);
-}
-
-
-/** Creates the matrix ((v0,v1,v2),(v3,v4,v5),(v6,v7,v8)).
- * If vector v has less than 9 elements, the remaining matrix components will be set to
- * those of the identity matrix.
- * @param[in] v array containing the matrix components
- * @param[in] start use vector components start,...,start+8 */
-Matrix::Matrix (const std::vector<double> &v, int start) {
- set(v, start);
-}
-
-
-Matrix::Matrix (const string &cmds, Calculator &calc) {
- parse(cmds, calc);
-}
-
-
-Matrix& Matrix::set (double d) {
- for (int i=0; i < 3; i++)
- for (int j=0; j < 3; j++)
- _values[i][j] = (i==j ? d : 0);
- return *this;
-}
-
-
-Matrix& Matrix::set (double v[], unsigned size) {
- size = min(size, 9u);
- for (unsigned i=0; i < size; i++)
- _values[i/3][i%3] = v[i];
- for (unsigned i=size; i < 9; i++)
- _values[i/3][i%3] = (i%4 ? 0 : 1);
- return *this;
-}
-
-
-/** Set matrix values ((v0,v1,v2),(v3,v4,v5),(v6,v7,v8)).
- * If vector v has less than 9 elements, the remaining matrix components will be set to
- * those of the identity matrix.
- * @param[in] v array containing the matrix components
- * @param[in] start use vector components start,...,start+8 */
-Matrix& Matrix::set (const vector<double> &v, int start) {
- unsigned size = min((unsigned)v.size()-start, 9u);
- for (unsigned i=0; i < size; i++)
- _values[i/3][i%3] = v[i+start];
- for (unsigned i=size; i < 9; i++)
- _values[i/3][i%3] = (i%4 ? 0 : 1);
- return *this;
-}
-
-
-Matrix& Matrix::set(const string &cmds, Calculator &calc) {
- parse(cmds, calc);
- return *this;
-}
-
-
-Matrix& Matrix::translate (double tx, double ty) {
- if (tx != 0 || ty != 0) {
- TranslationMatrix t(tx, ty);
- rmultiply(t);
- }
- return *this;
-}
-
-
-Matrix& Matrix::scale (double sx, double sy) {
- if (sx != 1 || sy != 1) {
- ScalingMatrix s(sx, sy);
- rmultiply(s);
- }
- return *this;
-}
-
-
-/** Multiplies this matrix by ((cos d, -sin d, 0), (sin d, cos d, 0), (0,0,1)) that
- * describes an anti-clockwise rotation by d degrees.
- * @param[in] deg rotation angle in degrees */
-Matrix& Matrix::rotate (double deg) {
- RotationMatrix r(deg);
- rmultiply(r);
- return *this;
-}
-
-
-Matrix& Matrix::xskewByAngle (double deg) {
- if (fmod(fabs(deg)-90, 180) != 0)
- return xskewByRatio(tan(deg2rad(deg)));
- return *this;
-}
-
-
-Matrix& Matrix::xskewByRatio (double xyratio) {
- if (xyratio != 0) {
- double v[] = {1, xyratio};
- Matrix t(v, 2);
- rmultiply(t);
- }
- return *this;
-}
-
-
-Matrix& Matrix::yskewByAngle (double deg) {
- if (fmod(fabs(deg)-90, 180) != 0)
- return yskewByRatio(tan(deg2rad(deg)));
- return *this;
-}
-
-
-Matrix& Matrix::yskewByRatio (double xyratio) {
- if (xyratio != 0) {
- double v[] = {1, 0, 0, xyratio};
- Matrix t(v, 4);
- rmultiply(t);
- }
- return *this;
-}
-
-
-Matrix& Matrix::flip (bool haxis, double a) {
- double s = 1;
- if (haxis) // mirror at horizontal axis?
- s = -1;
- double v[] = {-s, 0, (haxis ? 0 : 2*a), 0, s, (haxis ? 2*a : 0), 0, 0, 1};
- Matrix t(v);
- rmultiply(t);
- return *this;
-}
-
-
-/** Swaps rows and columns of the matrix. */
-Matrix& Matrix::transpose () {
- for (int i=0; i < 3; i++)
- for (int j=i+1; j < 3; j++)
- swap(_values[i][j], _values[j][i]);
- return *this;
-}
-
-
-/** Multiplies this matrix M with matrix tm (tm is the factor on the left side): M := tm * M */
-Matrix& Matrix::lmultiply (const Matrix &tm) {
- Matrix ret;
- for (int i=0; i < 3; i++)
- for (int j=0; j < 3; j++)
- for (int k=0; k < 3; k++)
- ret._values[i][j] += _values[i][k] * tm._values[k][j];
- return *this = ret;
-}
-
-
-/** Multiplies this matrix M with matrix tm (tm is the factor on the right side): M := M * tm */
-Matrix& Matrix::rmultiply (const Matrix &tm) {
- Matrix ret;
- for (int i=0; i < 3; i++)
- for (int j=0; j < 3; j++)
- for (int k=0; k < 3; k++)
- ret._values[i][j] += tm._values[i][k] * _values[k][j];
- return *this = ret;
-}
-
-
-Matrix& Matrix::invert () {
- Matrix ret;
- if (double denom = det(*this)) {
- for (int i=0; i < 3; ++i) {
- for (int j=0; j < 3; ++j) {
- ret._values[i][j] = det(*this, i, j)/denom;
- if ((i+j)%2 != 0)
- ret._values[i][j] *= -1;
- }
- }
- return *this = ret;
- }
- throw exception();
-}
-
-
-Matrix& Matrix::operator *= (double c) {
- for (int i=0; i < 3; i++)
- for (int j=0; j < 3; j++)
- _values[i][j] *= c;
- return *this;
-}
-
-
-DPair Matrix::operator * (const DPair &p) const {
- double pp[] = {p.x(), p.y(), 1};
- double ret[]= {0, 0};
- for (int i=0; i < 2; i++)
- for (int j=0; j < 3; j++)
- ret[i] += _values[i][j] * pp[j];
- return DPair(ret[0], ret[1]);
-}
-
-
-/** Returns true if this matrix equals. Checks equality by comparing the matrix components. */
-bool Matrix::operator == (const Matrix &m) const {
- for (int i=0; i < 2; i++)
- for (int j=0; j < 3; j++)
- if (_values[i][j] != m._values[i][j])
- return false;
- return true;
-}
-
-
-/** Returns true if this matrix doesn't equal m. Checks inequality by comparing the matrix components. */
-bool Matrix::operator != (const Matrix &m) const {
- for (int i=0; i < 2; i++)
- for (int j=0; j < 3; j++)
- if (_values[i][j] != m._values[i][j])
- return true;
- return false;
-}
-
-
-/** Returns true if this matrix is the identity matrix ((1,0,0),(0,1,0),(0,0,1)). */
-bool Matrix::isIdentity() const {
- for (int i=0; i < 2; i++)
- for (int j=0; j < 3; j++) {
- const double &v = _values[i][j];
- if ((i == j && v != 1) || (i != j && v != 0))
- return false;
- }
- return true;
-}
-
-
-/** Checks whether this matrix describes a plain translation (without any other transformations).
- * If so, the parameters tx and ty are filled with the translation components.
- * @param[out] tx horizontal translation
- * @param[out] ty vertical translation
- * @return true if matrix describes a pure translation */
-bool Matrix::isTranslation (double &tx, double &ty) const {
- tx = _values[0][2];
- ty = _values[1][2];
- for (int i=0; i < 3; i++)
- for (int j=0; j < 2; j++) {
- const double &v = _values[i][j];
- if ((i == j && v != 1) || (i != j && v != 0))
- return false;
- }
- return _values[2][2] == 1;
-}
-
-
-/** Gets a parameter for the transformation command.
- * @param[in] is parameter chars are read from this stream
- * @param[in] calc parameters can be arithmetic expressions, so we need a calculator to evaluate them
- * @param[in] def default value if parameter is optional
- * @param[in] optional true if parameter is optional
- * @param[in] leadingComma true if first non-blank must be a comma
- * @return value of argument */
-static double getArgument (istream &is, Calculator &calc, double def, bool optional, bool leadingComma) {
- while (isspace(is.peek()))
- is.get();
- if (!optional && leadingComma && is.peek() != ',')
- throw ParserException("',' expected");
- if (is.peek() == ',') {
- is.get(); // skip comma
- optional = false; // now we expect a parameter
- }
- string expr;
- while (is && !isupper(is.peek()) && is.peek() != ',')
- expr += (char)is.get();
- if (expr.length() == 0) {
- if (optional)
- return def;
- else
- throw ParserException("parameter expected");
- }
- return calc.eval(expr);
-}
-
-
-Matrix& Matrix::parse (istream &is, Calculator &calc) {
- *this = Matrix(1);
- while (is) {
- while (isspace(is.peek()))
- is.get();
- int cmd = is.get();
- switch (cmd) {
- case 'T': {
- double tx = getArgument(is, calc, 0, false, false);
- double ty = getArgument(is, calc, 0, true, true);
- translate(tx, ty);
- break;
- }
- case 'S': {
- double sx = getArgument(is, calc, 1, false, false);
- double sy = getArgument(is, calc, sx, true, true );
- scale(sx, sy);
- break;
- }
- case 'R': {
- double a = getArgument(is, calc, 0, false, false);
- double x = getArgument(is, calc, calc.getVariable("ux")+calc.getVariable("w")/2, true, true);
- double y = getArgument(is, calc, calc.getVariable("uy")+calc.getVariable("h")/2, true, true);
- translate(-x, -y);
- rotate(a);
- translate(x, y);
- break;
- }
- case 'F': {
- int c = is.get();
- if (c != 'H' && c != 'V')
- throw ParserException("'H' or 'V' expected");
- double a = getArgument(is, calc, 0, false, false);
- flip(c == 'H', a);
- break;
- }
- case 'K': {
- int c = is.get();
- if (c != 'X' && c != 'Y')
- throw ParserException("transformation command 'K' must be followed by 'X' or 'Y'");
- double a = getArgument(is, calc, 0, false, false);
- if (fabs(cos(deg2rad(a))) <= numeric_limits<double>::epsilon()) {
- ostringstream oss;
- oss << "illegal skewing angle: " << a << " degrees";
- throw ParserException(oss.str());
- }
- if (c == 'X')
- xskewByAngle(a);
- else
- yskewByAngle(a);
- break;
- }
- case 'M': {
- double v[9];
- for (int i=0; i < 6; i++)
- v[i] = getArgument(is, calc, i%4 ? 0 : 1, i!=0, i!=0);
- // third row (0, 0, 1)
- v[6] = v[7] = 0;
- v[8] = 1;
- Matrix tm(v);
- rmultiply(tm);
- break;
- }
- default:
- ostringstream oss;
- oss << "transformation command expected (found '" << cmd << "' instead)";
- throw ParserException(oss.str());
- }
- }
- return *this;
-}
-
-
-Matrix& Matrix::parse (const string &cmds, Calculator &calc) {
- istringstream iss;
- iss.str(cmds);
- return parse(iss, calc);
-}
-
-
-/** Returns an SVG matrix expression that can be used in transform attributes.
- * ((a,b,c),(d,e,f),(0,0,1)) => matrix(a d b e c f) */
-string Matrix::getSVG () const {
- ostringstream oss;
- oss << "matrix(";
- for (int i=0; i < 3; i++) {
- for (int j=0; j < 2; j++) {
- if (i > 0 || j > 0)
- oss << ' ';
- oss << XMLString(_values[j][i]);
- }
- }
- oss << ')';
- return oss.str();
-}
-
-
-ostream& Matrix::write (ostream &os) const {
- os << '(';
- for (int i=0; i < 3; i++) {
- os << '(' << _values[i][0];
- for (int j=1; j < 3; j++)
- os << ',' << _values[i][j];
- os << ')';
- if (i < 2)
- os << ',';
- }
- os << ')';
- return os;
-}
-
-
-//////////////////////////////////////////////////////////////////
-
-
-TranslationMatrix::TranslationMatrix (double tx, double ty) {
- double v[] = {1, 0, tx, 0, 1, ty};
- set(v, 6);
-}
-
-
-ScalingMatrix::ScalingMatrix (double sx, double sy) {
- double v[] = {sx, 0, 0, 0, sy};
- set(v, 5);
-}
-
-
-RotationMatrix::RotationMatrix (double deg) {
- double rad = deg2rad(deg);
- double c = cos(rad);
- double s = sin(rad);
- double v[] = {c, -s, 0, s, c};
- set(v, 5);
-}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.h
deleted file mode 100644
index 1da461d99a0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Matrix.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*************************************************************************
-** Matrix.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MATRIX_H
-#define DVISVGM_MATRIX_H
-
-#include <istream>
-#include <string>
-#include <vector>
-#include "MessageException.h"
-#include "Pair.h"
-
-
-struct ParserException : public MessageException
-{
- ParserException (const std::string &msg) : MessageException(msg) {}
-};
-
-class Calculator;
-
-class Matrix
-{
- friend double det (const Matrix &m);
- friend double det (const Matrix &m, int row, int col);
-
- public:
- Matrix (const std::string &cmds, Calculator &calc);
- Matrix (double d=0);
- Matrix (double v[], unsigned size=9);
- Matrix (const std::vector<double> &v, int start=0);
- Matrix& set (double d);
- Matrix& set (double v[], unsigned size);
- Matrix& set (const std::vector<double> &v, int start=0);
- Matrix& set (const std::string &cmds, Calculator &calc);
- double get (int row, int col) const {return _values[row][col];}
- Matrix& transpose ();
- Matrix& invert ();
- Matrix& parse (std::istream &is, Calculator &c);
- Matrix& parse (const std::string &cmds, Calculator &c);
- Matrix& lmultiply (const Matrix &tm);
- Matrix& rmultiply (const Matrix &tm);
- Matrix& translate (double tx, double ty);
- Matrix& scale (double sx, double sy);
- Matrix& rotate (double deg);
- Matrix& xskewByAngle (double deg);
- Matrix& yskewByAngle (double deg);
- Matrix& xskewByRatio (double xyratio);
- Matrix& yskewByRatio (double xyratio);
- Matrix& flip (bool h, double a);
- Matrix& operator *= (double c);
- DPair operator * (const DPair &p) const;
- bool operator == (const Matrix &m) const;
- bool operator != (const Matrix &m) const;
- bool isIdentity() const;
- bool isTranslation (double &tx, double &ty) const;
- std::string getSVG () const;
- std::ostream& write (std::ostream &os) const;
-
- private:
- double _values[3][3]; // row x col
-};
-
-
-struct TranslationMatrix : public Matrix
-{
- TranslationMatrix (double tx, double ty);
-};
-
-
-struct ScalingMatrix : public Matrix
-{
- ScalingMatrix (double sx, double sy);
-};
-
-
-struct RotationMatrix : public Matrix
-{
- RotationMatrix (double deg);
-};
-
-
-inline std::ostream& operator << (std::ostream &os, const Matrix &m) {
- return m.write(os);
-}
-
-
-double det (const Matrix &m);
-double det (const Matrix &m, int row, int col);
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.cpp
deleted file mode 100644
index c875109633f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.cpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*************************************************************************
-** Message.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdarg>
-#include <cstdlib>
-#include <cstring>
-#include <iostream>
-#include <map>
-#include "Message.h"
-#include "Terminal.h"
-
-using namespace std;
-
-MessageStream::MessageStream () : _os(0), _nl(false), _col(1), _indent(0) {
-}
-
-
-MessageStream::MessageStream (std::ostream &os)
- : _os(&os), _nl(true), _col(1), _indent(0)
-{
- Terminal::init(os);
-}
-
-
-MessageStream::~MessageStream () {
- if (_os && Message::COLORIZE)
- Terminal::finish(*_os);
-}
-
-
-void MessageStream::putChar (const char c, ostream &os) {
- switch (c) {
- case '\r':
- os << '\r';
- _nl = true;
- _col = 1;
- return;
- case '\n':
- if (!_nl) {
- _col = 1;
- _nl = true;
- os << '\n';
- }
- return;
- default:
- if (_nl) {
- os << string(_indent, ' ');
- _col += _indent;
- }
- else {
- const int cols = Terminal::columns();
- if (cols > 0 && _col >= cols) {
-#ifndef __WIN32__
- // move cursor to next line explicitly (not necessary in Windows/DOS terminal)
- os << '\n';
-#endif
- os << string(_indent, ' ');
- _col = _indent+1;
- }
- else
- _col++;
- }
- _nl = false;
- if (!_nl || c != '\n')
- os << c;
- }
-}
-
-
-MessageStream& MessageStream::operator << (const char *str) {
- if (_os && str) {
- const char *first = str;
- while (*first) {
- const char *last = strchr(first, '\n');
- if (!last)
- last = first+strlen(first)-1;
-#ifndef __WIN32__
- // move cursor to next line explicitly (not necessary in Windows/DOS terminal)
- const int cols = Terminal::columns();
- int len = last-first+1;
- if (cols > 0 && _col+len > cols && _indent+len <= cols)
- putChar('\n', *_os);
-#endif
- while (first <= last)
- putChar(*first++, *_os);
- first = last+1;
- }
- }
- return *this;
-}
-
-
-MessageStream& MessageStream::operator << (const char &c) {
- if (_os)
- putChar(c, *_os);
- return *this;
-}
-
-
-void MessageStream::indent (bool reset) {
- if (reset)
- _indent = 0;
- _indent += 2;
-}
-
-
-void MessageStream::outdent (bool all) {
- if (all)
- _indent = 0;
- else if (_indent > 0)
- _indent -= 2;
-}
-
-
-void MessageStream::clearline () {
- if (_os) {
- int cols = Terminal::columns();
- *_os << '\r' << string(cols ? cols-1 : 79, ' ') << '\r';
- _nl = true;
- _col = 1;
- }
-}
-
-static MessageStream nullStream;
-static MessageStream messageStream(cerr);
-
-
-//////////////////////////////
-
-// maximal verbosity
-int Message::LEVEL = Message::MESSAGES | Message::WARNINGS | Message::ERRORS;
-bool Message::COLORIZE = false;
-bool Message::_initialized = false;
-Message::Color Message::_classColors[9];
-
-
-/** Returns the stream for usual messages. */
-MessageStream& Message::mstream (bool prefix, MessageClass mclass) {
- init();
- MessageStream *ms = (LEVEL & MESSAGES) ? &messageStream : &nullStream;
- if (COLORIZE && ms && ms->os()) {
- Terminal::fgcolor(_classColors[mclass].foreground, *ms->os());
- Terminal::bgcolor(_classColors[mclass].background, *ms->os());
- }
- if (prefix)
- *ms << "\nMESSAGE: ";
- return *ms;
-}
-
-
-/** Returns the stream for warning messages. */
-MessageStream& Message::wstream (bool prefix) {
- init();
- MessageStream *ms = (LEVEL & WARNINGS) ? &messageStream : &nullStream;
- if (COLORIZE && ms && ms->os()) {
- Terminal::fgcolor(_classColors[MC_WARNING].foreground, *ms->os());
- Terminal::bgcolor(_classColors[MC_WARNING].background, *ms->os());
- }
- if (prefix)
- *ms << "\nWARNING: ";
- return *ms;
-}
-
-
-/** Returns the stream for error messages. */
-MessageStream& Message::estream (bool prefix) {
- init();
- MessageStream *ms = (LEVEL & ERRORS) ? &messageStream : &nullStream;
- if (COLORIZE && ms && ms->os()) {
- Terminal::fgcolor(_classColors[MC_ERROR].foreground, *ms->os());
- Terminal::bgcolor(_classColors[MC_ERROR].background, *ms->os());
- }
- if (prefix)
- *ms << "\nERROR: ";
- return *ms;
-}
-
-
-static bool colorchar2int (char colorchar, int *val) {
- colorchar = tolower(colorchar);
- if (colorchar >= '0' && colorchar <= '9')
- *val = int(colorchar-'0');
- else if (colorchar >= 'a' && colorchar <= 'f')
- *val = int(colorchar-'a'+10);
- else if (colorchar == '*')
- *val = -1;
- else
- return false;
- return true;
-}
-
-
-/** Initializes the Message class. Sets the colors for each message set.
- * The colors can be changed via environment variable DVISVGM_COLORS. Its
- * value must be a sequence of color entries of the form gg:BF where the
- * two-letter ID gg specifies a message set, B the hex digit of the
- * background, and F the hex digit of the foreground/text color.
- * Color codes:
- * - 1: red, 2: green, 4: blue
- * - 0-7: dark colors
- * - 8-F: light colors
- * - *: default color
- * Example: num:01 sets page number messages to red on black background */
-void Message::init () {
- if (_initialized || !Message::COLORIZE)
- return;
-
- // set default message colors
- _classColors[MC_ERROR] = Color(Terminal::RED, true);
- _classColors[MC_WARNING] = Color(Terminal::YELLOW);
- _classColors[MC_PAGE_NUMBER] = Color(Terminal::BLUE, true);
- _classColors[MC_PAGE_SIZE] = Color(Terminal::MAGENTA);
- _classColors[MC_PAGE_WRITTEN] = Color(Terminal::GREEN);
- _classColors[MC_STATE] = Color(Terminal::CYAN);
- _classColors[MC_TRACING] = Color(Terminal::BLUE);
- _classColors[MC_PROGRESS] = Color(Terminal::MAGENTA);
-
- if (const char *color_str = getenv("DVISVGM_COLORS")) {
- map<string, MessageClass> classes;
- classes["er"] = MC_ERROR;
- classes["wn"] = MC_WARNING;
- classes["pn"] = MC_PAGE_NUMBER;
- classes["ps"] = MC_PAGE_SIZE;
- classes["fw"] = MC_PAGE_WRITTEN;
- classes["sm"] = MC_STATE;
- classes["tr"] = MC_TRACING;
- classes["pi"] = MC_PROGRESS;
- const char *p=color_str;
-
- // skip leading whitespace
- while (isspace(*p))
- ++p;
-
- // iterate over color assignments
- while (strlen(p) >= 5) {
- map<string, MessageClass>::iterator it = classes.find(string(p, 2));
- if (it != classes.end() && p[2] == '=') {
- int bgcolor, fgcolor;
- if (colorchar2int(p[3], &bgcolor) && colorchar2int(p[4], &fgcolor)) {
- _classColors[it->second].background = bgcolor;
- _classColors[it->second].foreground = fgcolor;
- }
- }
- p += 5;
-
- // skip trailing characters in a malformed entry
- while (!isspace(*p) && *p != ':' && *p != ';')
- ++p;
- // skip separation characters
- while (isspace(*p) || *p == ':' || *p == ';')
- ++p;
- }
- }
- _initialized = true;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.h
deleted file mode 100644
index 7c39127dbd4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Message.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*************************************************************************
-** Message.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MESSAGE_H
-#define DVISVGM_MESSAGE_H
-
-#include <algorithm>
-#include <string>
-#include <ostream>
-#include <sstream>
-#include "Terminal.h"
-#include "types.h"
-
-
-class Message;
-
-class MessageStream
-{
- friend class Message;
-
- public:
- MessageStream ();
- MessageStream (std::ostream &os);
- ~MessageStream ();
-
- template <typename T>
- MessageStream& operator << (const T &obj) {
- std::ostringstream oss;
- oss << obj;
- (*this) << oss.str();
- return *this;
- }
-
- MessageStream& operator << (const char *str);
- MessageStream& operator << (const char &c);
- MessageStream& operator << (const std::string &str) {return (*this) << str.c_str();}
-
- void indent (int level) {_indent = std::max(0, level*2);}
- void indent (bool reset=false);
- void outdent (bool all=false);
- void clearline ();
-
- protected:
- void putChar (const char c, std::ostream &os);
- std::ostream* os () {return _os;}
-
- private:
- std::ostream *_os;
- bool _nl; ///< true if previous character was a newline
- int _col; ///< current terminal column
- int _indent; ///< indentation width (number of columns/characters)
-};
-
-
-class Message
-{
- struct Color {
- Color () : foreground(-1), background(-1) {}
- Color (Int8 fgcolor) : foreground(fgcolor), background(-1) {}
- Color (Int8 fgcolor, bool light) : foreground(fgcolor + (light ? 8 : 0)), background(-1) {}
- Color (Int8 fgcolor, Int8 bgcolor) : foreground(fgcolor), background(bgcolor) {}
- Int8 foreground;
- Int8 background;
- };
-
- public:
- enum MessageClass {
- MC_ERROR,
- MC_WARNING,
- MC_MESSAGE,
- MC_PAGE_NUMBER,
- MC_PAGE_SIZE,
- MC_PAGE_WRITTEN,
- MC_STATE,
- MC_TRACING,
- MC_PROGRESS,
- };
-
- public:
- static MessageStream& mstream (bool prefix=false, MessageClass mclass=MC_MESSAGE);
- static MessageStream& estream (bool prefix=false);
- static MessageStream& wstream (bool prefix=false);
-
- enum {ERRORS=1, WARNINGS=2, MESSAGES=4};
- static int LEVEL;
- static bool COLORIZE;
-
- protected:
- static void init ();
-
-
- private:
- static Color _classColors[];
- static bool _initialized;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MessageException.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MessageException.h
deleted file mode 100644
index 48ae4b5bb4c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MessageException.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*************************************************************************
-** MessageException.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MESSAGEEXCEPTION_H
-#define DVISVGM_MESSAGEEXCEPTION_H
-
-#include <exception>
-#include <string>
-
-
-class MessageException : public std::exception
-{
- public:
- MessageException (const std::string &msg) : _message(msg) {}
- virtual ~MessageException () throw() {}
- const char* what () const throw() {return _message.c_str();}
-
- private:
- std::string _message;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.cpp
deleted file mode 100644
index d7922b1825b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************
-** MetafontWrapper.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdlib>
-#include <cctype>
-#include <fstream>
-#include <sstream>
-#include "FileSystem.h"
-#include "FileFinder.h"
-#include "Message.h"
-#include "MetafontWrapper.h"
-#include "Process.h"
-#include "SignalHandler.h"
-#include "macros.h"
-
-using namespace std;
-
-
-MetafontWrapper::MetafontWrapper (const string &fname) : _fontname(fname)
-{
-}
-
-
-/** Calls Metafont and evaluates the logfile. If a gf file was successfully
- * generated the dpi value is stripped from the filename
- * (e.g. cmr10.600gf => cmr10.gf). This makes life easier...
- * @param[in] mode Metafont mode, e.g. "ljfour"
- * @param[in] mag magnification factor
- * @return true on success */
-bool MetafontWrapper::call (const string &mode, double mag) {
- if (!FileFinder::lookup(_fontname+".mf"))
- return false; // mf file not available => no need to call the "slow" Metafont
- FileSystem::remove(_fontname+".gf");
-
-#ifdef __WIN32__
-#ifdef TEXLIVEWIN32
- const char *mfname = "mf-nowin.exe";
-#else
- const char *mfname = "mf.exe";
-#endif
- const char *cmd = FileFinder::lookup(mfname, false);
- if (!cmd) {
- Message::estream(true) << "can't run Metafont (" << mfname << " not found)\n";
- return false;
- }
-#else
- const char *cmd = "mf";
-#endif
- ostringstream oss;
- oss << "\"\\mode=" << mode << ";"
- "mag:=" << mag << ";"
- "batchmode;"
- "input " << _fontname << "\"";
- Message::mstream(false, Message::MC_STATE) << "\nrunning Metafont for " << _fontname << '\n';
- Process mf_process(cmd, oss.str().c_str());
- mf_process.run();
-
- // try to read Metafont's logfile and get name of created GF file
- ifstream ifs((_fontname+".log").c_str());
- if (ifs) {
- char buf[128];
- while (ifs) {
- ifs.getline(buf, 128);
- string line = buf;
- if (line.substr(0, 15) == "! Interruption.")
- SignalHandler::instance().trigger(true);
- if (line.substr(0, 17) == "Output written on") {
- size_t pos = line.find("gf ", 18+_fontname.length());
- if (pos != string::npos) {
- string gfname = line.substr(18, pos-16); // GF filename found
- FileSystem::rename(gfname, _fontname+".gf");
- }
- break;
- }
- }
- }
- ifstream gf((_fontname+".gf").c_str());
- return (bool)gf;
-}
-
-
-/** Calls Metafont if output files (tfm and gf) don't already exist.
- * @param[in] mode Metafont mode to be used (e.g. 'ljfour')
- * @param[in] mag magnification factor
- * @return true on success */
-bool MetafontWrapper::make (const string &mode, double mag) {
- ifstream tfm((_fontname+".tfm").c_str());
- ifstream gf((_fontname+".gf").c_str());
- if (gf && tfm) // @@ distinguish between gf and tfm
- return true;
- return call(mode, mag);
-}
-
-
-bool MetafontWrapper::success () const {
- ifstream tfm((_fontname+".tfm").c_str());
- ifstream gf((_fontname+".gf").c_str());
- return tfm && gf;
-}
-
-
-/** Remove all files created by a Metafont call (tfm, gf, log).
- * @param[in] keepGF if true, GF files won't be removed */
-void MetafontWrapper::removeOutputFiles (bool keepGF) {
- removeOutputFiles(_fontname, keepGF);
-}
-
-
-/** Remove all files created by a Metafont call for a given font (tfm, gf, log).
- * @param[in] fontname name of font whose temporary files should be removed
- * @param[in] keepGF if true, GF files will be kept */
-void MetafontWrapper::removeOutputFiles (const string &fontname, bool keepGF) {
- const char *ext[] = {"gf", "tfm", "log", 0};
- for (const char **p = keepGF ? ext+2 : ext; *p; ++p)
- FileSystem::remove(fontname + "." + *p);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.h
deleted file mode 100644
index 3b2485122d0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MetafontWrapper.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*************************************************************************
-** MetafontWrapper.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_METAFONTWRAPPER_H
-#define DVISVGM_METAFONTWRAPPER_H
-
-#include <string>
-
-
-struct FileFinder;
-
-class MetafontWrapper
-{
- public:
- MetafontWrapper (const std::string &fontname);
- bool call (const std::string &mode, double mag);
- bool make (const std::string &mode, double mag);
- bool success () const;
- void removeOutputFiles (bool keepGF=false);
- static void removeOutputFiles (const std::string &fontname, bool keepGF=false);
-
- private:
- std::string _fontname;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.cpp
deleted file mode 100644
index bb4353f8ee4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*************************************************************************
-** MiKTeXCom.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <comdef.h>
-#include <string>
-#include "MessageException.h"
-#include "MiKTeXCom.h"
-#include "macros.h"
-
-using namespace std;
-
-
-MiKTeXCom::MiKTeXCom () : _session(0) {
- if (FAILED(CoInitialize(0)))
- throw MessageException("COM library could not be initialized\n");
-#ifdef _MSC_VER
- HRESULT hres = _session.CreateInstance(L"MiKTeX.Session");
-#elif defined(__WIN64__)
- HRESULT hres = CoCreateInstance(CLSID_MiKTeXSession2_9, 0, CLSCTX_LOCAL_SERVER, IID_ISession2, (void**)&_session);
-#else
- HRESULT hres = CoCreateInstance(CLSID_MiKTeXSession2_9, 0, CLSCTX_INPROC_SERVER, IID_ISession2, (void**)&_session);
-#endif
- if (FAILED(hres)) {
- CoUninitialize();
- throw MessageException("MiKTeX.Session could not be initialized");
- }
-}
-
-
-MiKTeXCom::~MiKTeXCom () {
- if (_session) {
-#ifdef _MSC_VER
- _session.Release();
-#else
- _session->Release();
-#endif
- _session = 0; // avoid automatic calling of Release() after CoUninitialize()
- }
- CoUninitialize();
-}
-
-
-string MiKTeXCom::getVersion () {
-#ifdef _MSC_VER
- MiKTeXSetupInfo info = _session->GetMiKTeXSetupInfo();
-#else
- MiKTeXSetupInfo info;
- _session->GetMiKTeXSetupInfo(&info);
-#endif
- _bstr_t version = info.version;
- return string(version);
-}
-
-
-string MiKTeXCom::getBinDir () {
-#ifdef _MSC_VER
- MiKTeXSetupInfo info = _session->GetMiKTeXSetupInfo();
-#else
- MiKTeXSetupInfo info;
- _session->GetMiKTeXSetupInfo(&info);
-#endif
- _bstr_t bindir = info.binDirectory;
- return string(bindir);
-}
-
-
-const char* MiKTeXCom::findFile (const char *fname) {
- try {
- _bstr_t path;
- static string ret;
-#ifdef _MSC_VER
- HRESULT hres = _session->FindFile(fname, path.GetAddress());
- bool found = (hres != 0);
-#else
- VARIANT_BOOL found_var;
- _session->FindFile(_bstr_t(fname), path.GetAddress(), &found_var);
- bool found = (found_var == VARIANT_TRUE);
-#endif
- if (found) {
- ret = _bstr_t(path);
- return ret.c_str();
- }
- return 0;
- }
- catch (_com_error &e) {
- throw MessageException((const char*)e.Description());
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.h
deleted file mode 100644
index dcb6271a4bc..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/MiKTeXCom.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*************************************************************************
-** MiKTeXCom.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MIKTEXCOM_H
-#define DVISVGM_MIKTEXCOM_H
-
-#include <string>
-
-#ifdef _MSC_VER
-#import <MiKTeX209-session.tlb>
-using namespace MiKTeXSession2_9;
-#else
-#include "miktex209-session.h"
-#endif
-
-
-class MiKTeXCom
-{
- public:
- MiKTeXCom ();
- ~MiKTeXCom ();
- std::string getBinDir ();
- std::string getVersion ();
- const char* findFile (const char* fname);
-
- private:
-#ifdef _MSC_VER
- ISession2Ptr _session;
-#else
- ISession2 *_session;
-#endif
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.cpp
deleted file mode 100644
index 0a5119f6938..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
-** NoPsSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "Message.h"
-#include "NoPsSpecialHandler.h"
-
-using namespace std;
-
-
-bool NoPsSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- _count++;
- return true;
-}
-
-
-void NoPsSpecialHandler::dviEndPage (unsigned pageno) {
- if (_count > 0) {
- string suffix = (_count > 1 ? "s" : "");
- Message::wstream(true) << _count << " PostScript special" << suffix << " ignored. The resulting SVG might look wrong.\n";
- _count = 0;
- }
-}
-
-
-const char** NoPsSpecialHandler::prefixes () const {
- static const char *pfx[] = {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\"", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.h
deleted file mode 100644
index 7a017fecb06..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/NoPsSpecialHandler.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*************************************************************************
-** NoPsSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_NOPSSPECIALHANDLER_H
-#define DVISVGM_NOPSSPECIALHANDLER_H
-
-#include "SpecialHandler.h"
-
-class NoPsSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
- public:
- NoPsSpecialHandler () : _count(0) {}
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
- const char* name () const {return 0;}
- const char* info () const {return 0;}
- const char** prefixes () const;
-
- protected:
- void dviEndPage (unsigned pageno);
-
- private:
- unsigned _count; // number of PS specials skipped
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSFilter.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSFilter.h
deleted file mode 100644
index e2c5c092dd3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSFilter.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
-** PSFilter.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PSFILTER_H
-#define DVISVGM_PSFILTER_H
-
-class PSInterpreter;
-
-class PSFilter
-{
- public:
- PSFilter (PSInterpreter &psi) : _psi(psi) {}
- virtual ~PSFilter () {}
- virtual void execute (const char *code, size_t len) =0;
- virtual bool active () const =0;
-
- protected:
- PSInterpreter& psInterpreter () {return _psi;}
-
- private:
- PSInterpreter &_psi;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.cpp
deleted file mode 100644
index 9ca5ed39c27..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.cpp
+++ /dev/null
@@ -1,357 +0,0 @@
-/*************************************************************************
-** PSInterpreter.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include "FileFinder.h"
-#include "InputReader.h"
-#include "Message.h"
-#include "PSFilter.h"
-#include "PSInterpreter.h"
-#include "SignalHandler.h"
-
-using namespace std;
-
-
-const char *PSInterpreter::GSARGS[] = {
- "gs", // dummy name
- "-q", // be quiet, suppress gs banner
- "-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
- "-dNOPROMPT",
-// "-dNOBIND",
-};
-
-
-/** Constructs a new PSInterpreter object.
- * @param[in] actions template methods to be executed after recognizing the corresponding PS operator. */
-PSInterpreter::PSInterpreter (PSActions *actions)
- : _mode(PS_NONE), _actions(actions), _filter(0), _bytesToRead(0), _inError(false), _initialized(false)
-{
-}
-
-
-void PSInterpreter::init () {
- if (!_initialized) {
- _gs.init(sizeof(GSARGS)/sizeof(char*), GSARGS, this);
- _gs.set_stdio(input, output, error);
- _initialized = true;
- // Before executing any random PS code redefine some operators and run
- // initializing PS code. This cannot be done in the constructor because we
- // need the completely initialized PSInterpreter object here.
- execute(PSDEFS);
- }
-}
-
-
-PSActions* PSInterpreter::setActions (PSActions *actions) {
- PSActions *old_actions = _actions;
- _actions = actions;
- return old_actions;
-}
-
-
-/** Checks if the given status value returned by Ghostscript indicates an error.
- * @param[in] status status value returned by Ghostscript after the execution of a PS snippet
- * @throw PSException if the status value indicates a PostScript error */
-void PSInterpreter::checkStatus (int status) {
- if (status < 0) {
- _mode = PS_QUIT;
- if (status < -100)
- throw PSException("fatal error");
- if (_errorMessage.empty())
- throw PSException(_gs.error_name(status));
- throw PSException(_errorMessage);
- }
-}
-
-
-/** Executes a chunk of PostScript code.
- * @param[in] str buffer containing the code
- * @param[in] len number of characters in buffer
- * @param[in] flush If true, a final 'flush' is sent which forces the output buffer to be written immediately.
- * @return true if the assigned number of bytes have been read */
-bool PSInterpreter::execute (const char *str, size_t len, bool flush) {
- init();
- if (_mode == PS_QUIT)
- return false;
-
- int status=0;
- if (_mode == PS_NONE) {
- _gs.run_string_begin(0, &status);
- _mode = PS_RUNNING;
- }
- checkStatus(status);
-
- bool complete=false;
- if (_bytesToRead > 0 && len >= _bytesToRead) {
- len = _bytesToRead;
- complete = true;
- }
-
- if (_filter && _filter->active()) {
- PSFilter *filter = _filter;
- _filter = 0; // prevent recursion when filter calls execute()
- filter->execute(str, len);
- if (filter->active()) // filter still active after execution?
- _filter = filter;
- return complete;
- }
-
- // feed Ghostscript with code chunks that are not larger than 64KB
- // => see documentation of gsapi_run_string_foo()
- const char *p=str;
- while (PS_RUNNING && len > 0) {
- SignalHandler::instance().check();
- size_t chunksize = min(len, (size_t)0xffff);
- _gs.run_string_continue(p, chunksize, 0, &status);
- p += chunksize;
- len -= chunksize;
- if (_bytesToRead > 0)
- _bytesToRead -= chunksize;
- if (status == -101) // e_Quit
- _mode = PS_QUIT;
- else
- checkStatus(status);
- }
- if (flush) {
- // force writing contents of output buffer
- _gs.run_string_continue("\nflush ", 7, 0, &status);
- }
- return complete;
-}
-
-
-/** Executes a chunk of PostScript code read from a stream. The method returns on EOF.
- * @param[in] is the input stream
- * @param[in] flush If true, a final 'flush' is sent which forces the output buffer to be written immediately.
- * @return true if the assigned number of bytes have been read */
-bool PSInterpreter::execute (istream &is, bool flush) {
- char buf[4096];
- bool finished = false;
- while (is && !is.eof() && !finished) {
- is.read(buf, 4096);
- finished = execute(buf, is.gcount(), false);
- }
- execute("\n", 1, flush);
- return finished;
-}
-
-
-bool PSInterpreter::executeRaw (const string &str, int n) {
- _rawData.clear();
- ostringstream oss;
- oss << str << ' ' << n << " (raw) prcmd\n";
- execute(oss.str());
- return !_rawData.empty();
-}
-
-
-/** This callback function handles input from stdin to Ghostscript. Currently not needed.
- * @param[in] inst pointer to calling instance of PSInterpreter
- * @param[in] buf takes the read characters
- * @param[in] len size of buffer buf
- * @return number of characters read */
-int GSDLLCALL PSInterpreter::input (void *inst, char *buf, int len) {
- return 0;
-}
-
-
-/** This callback function handles output from Ghostscript to stdout. It looks for
- * emitted commands staring with "dvi." and executes them by calling method callActions.
- * Ghostscript sends the text in chunks by several calls of this function.
- * Unfortunately, the PostScript specification wants error messages also to be sent to stdout
- * instead of stderr. Thus, we must collect and concatenate the chunks until an evaluable text
- * snippet is completely received. Furthermore, error messages have to be recognized and to be
- * filtered out.
- * @param[in] inst pointer to calling instance of PSInterpreter
- * @param[in] buf contains the characters to be output
- * @param[in] len number of characters in buf
- * @return number of processed characters (equals 'len') */
-int GSDLLCALL PSInterpreter::output (void *inst, const char *buf, int len) {
- PSInterpreter *self = static_cast<PSInterpreter*>(inst);
- if (self && self->_actions) {
- const size_t MAXLEN = 512; // maximal line length (longer lines are of no interest)
- const char *end = buf+len-1; // last position of buf
- for (const char *first=buf, *last=buf; first <= end; last++, first=last) {
- // move first and last to begin and end of the next line, respectively
- while (last < end && *last != '\n')
- last++;
- size_t linelength = last-first+1;
- if (linelength > MAXLEN) // skip long lines since they don't contain any relevant information
- continue;
-
- vector<char> &linebuf = self->_linebuf; // just a shorter name...
- if ((*last == '\n' || !self->active()) || self->_inError) {
- if (linelength + linebuf.size() > 1) { // prefix "dvi." plus final newline
- SplittedCharInputBuffer ib(linebuf.empty() ? 0 : &linebuf[0], linebuf.size(), first, linelength);
- BufferInputReader in(ib);
- if (self->_inError)
- self->_errorMessage += string(first, linelength);
- else {
- in.skipSpace();
- if (in.check("Unrecoverable error: ")) {
- self->_errorMessage.clear();
- while (!in.eof())
- self->_errorMessage += in.get();
- self->_inError = true;
- }
- else if (in.check("dvi."))
- self->callActions(in);
- }
- }
- linebuf.clear();
- }
- else { // no line end found =>
- // save remaining characters and prepend them to the next incoming chunk of characters
- if (linebuf.size() + linelength > MAXLEN)
- linebuf.clear(); // don't care for long lines
- else {
- size_t currsize = linebuf.size();
- linebuf.resize(currsize+linelength);
- memcpy(&linebuf[currsize], first, linelength);
- }
- }
- }
- }
- return len;
-}
-
-
-/** Converts a vector of strings to a vector of doubles.
- * @param[in] str the strings to be converted
- * @param[out] d the resulting doubles */
-static void str2double (const vector<string> &str, vector<double> &d) {
- for (size_t i=0; i < str.size(); i++) {
- istringstream iss(str[i]);
- iss >> d[i];
- }
-}
-
-
-/** Evaluates a command emitted by Ghostscript and invokes the corresponding
- * method of interface class PSActions.
- * @param[in] in reader pointing to the next command */
-void PSInterpreter::callActions (InputReader &in) {
- // array of currently supported operators (must be ascendingly sorted)
- static const struct Operator {
- const char *name; // name of operator
- int pcount; // number of parameters (< 0 : variable number of parameters)
- void (PSActions::*op)(vector<double> &p); // operation handler
- } operators [] = {
- {"applyscalevals", 3, &PSActions::applyscalevals},
- {"clip", 0, &PSActions::clip},
- {"closepath", 0, &PSActions::closepath},
- {"curveto", 6, &PSActions::curveto},
- {"eoclip", 0, &PSActions::eoclip},
- {"eofill", 0, &PSActions::eofill},
- {"fill", 0, &PSActions::fill},
- {"grestore", 0, &PSActions::grestore},
- {"grestoreall", 0, &PSActions::grestoreall},
- {"gsave", 0, &PSActions::gsave},
- {"initclip", 0, &PSActions::initclip},
- {"lineto", 2, &PSActions::lineto},
- {"makepattern", -1, &PSActions::makepattern},
- {"moveto", 2, &PSActions::moveto},
- {"newpath", 0, &PSActions::newpath},
- {"querypos", 2, &PSActions::querypos},
- {"raw", -1, 0},
- {"restore", 1, &PSActions::restore},
- {"rotate", 1, &PSActions::rotate},
- {"save", 1, &PSActions::save},
- {"scale", 2, &PSActions::scale},
- {"setcmykcolor", 4, &PSActions::setcmykcolor},
- {"setdash", -1, &PSActions::setdash},
- {"setgray", 1, &PSActions::setgray},
- {"sethsbcolor", 3, &PSActions::sethsbcolor},
- {"setlinecap", 1, &PSActions::setlinecap},
- {"setlinejoin", 1, &PSActions::setlinejoin},
- {"setlinewidth", 1, &PSActions::setlinewidth},
- {"setmatrix", 6, &PSActions::setmatrix},
- {"setmiterlimit", 1, &PSActions::setmiterlimit},
- {"setopacityalpha", 1, &PSActions::setopacityalpha},
- {"setpattern", -1, &PSActions::setpattern},
- {"setrgbcolor", 3, &PSActions::setrgbcolor},
- {"stroke", 0, &PSActions::stroke},
- {"translate", 2, &PSActions::translate},
- };
- if (_actions) {
- in.skipSpace();
- // binary search
- int first=0, last=sizeof(operators)/sizeof(Operator)-1;
- while (first <= last) {
- int mid = first+(last-first)/2;
- int cmp = in.compare(operators[mid].name);
- if (cmp > 0)
- last = mid-1;
- else if (cmp < 0)
- first = mid+1;
- else {
- if (!operators[mid].op) { // raw string data received
- _rawData.clear();
- in.skipSpace();
- while (!in.eof()) {
- _rawData.push_back(in.getString());
- in.skipSpace();
- }
- }
- else {
- // collect parameters and call handler
- vector<string> params;
- int pcount = operators[mid].pcount;
- if (pcount < 0) { // variable number of parameters?
- in.skipSpace();
- while (!in.eof()) { // read all available parameters
- params.push_back(in.getString());
- in.skipSpace();
- }
- }
- else { // fix number of parameters
- for (int i=0; i < pcount; i++) {
- in.skipSpace();
- params.push_back(in.getString());
- }
- }
- vector<double> v(params.size());
- str2double(params, v);
- (_actions->*operators[mid].op)(v);
- _actions->executed();
- }
- break;
- }
- }
- }
-}
-
-
-/** This callback function handles output from Ghostscript to stderr.
- * @param[in] inst pointer to calling instance of PSInterpreter
- * @param[in] buf contains the characters to be output
- * @param[in] len number of chars in buf
- * @return number of processed characters */
-int GSDLLCALL PSInterpreter::error (void *inst, const char *buf, int len) {
- return len;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.h
deleted file mode 100644
index c1f30598e16..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSInterpreter.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*************************************************************************
-** PSInterpreter.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PSINTERPRETER_H
-#define DVISVGM_PSINTERPRETER_H
-
-#include <cstring>
-#include <istream>
-#include <string>
-#include <vector>
-#include "Ghostscript.h"
-#include "InputReader.h"
-#include "MessageException.h"
-
-
-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
-{
- virtual ~PSActions () {}
- virtual void applyscalevals (std::vector<double> &p) =0;
- virtual void clip (std::vector<double> &p) =0;
- virtual void closepath (std::vector<double> &p) =0;
- virtual void curveto (std::vector<double> &p) =0;
- virtual void eoclip (std::vector<double> &p) =0;
- virtual void eofill (std::vector<double> &p) =0;
- virtual void fill (std::vector<double> &p) =0;
- virtual void gsave (std::vector<double> &p) =0;
- virtual void grestore (std::vector<double> &p) =0;
- virtual void grestoreall (std::vector<double> &p) =0;
- virtual void initclip (std::vector<double> &p) =0;
- virtual void lineto (std::vector<double> &p) =0;
- virtual void makepattern (std::vector<double> &p) =0;
- virtual void moveto (std::vector<double> &p) =0;
- virtual void newpath (std::vector<double> &p) =0;
- virtual void querypos (std::vector<double> &p) =0;
- virtual void restore (std::vector<double> &p) =0;
- virtual void rotate (std::vector<double> &p) =0;
- virtual void save (std::vector<double> &p) =0;
- virtual void scale (std::vector<double> &p) =0;
- virtual void setcmykcolor (std::vector<double> &cmyk) =0;
- virtual void setdash (std::vector<double> &p) =0;
- virtual void setgray (std::vector<double> &p) =0;
- virtual void sethsbcolor (std::vector<double> &hsb) =0;
- virtual void setlinecap (std::vector<double> &p) =0;
- virtual void setlinejoin (std::vector<double> &p) =0;
- virtual void setlinewidth (std::vector<double> &p) =0;
- 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 setpattern (std::vector<double> &p) =0;
- virtual void setrgbcolor (std::vector<double> &rgb) =0;
- virtual void stroke (std::vector<double> &p) =0;
- virtual void translate (std::vector<double> &p) =0;
- virtual void executed () {} // triggered if one of the above PS operators has been executed
-};
-
-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
-{
- enum Mode {PS_NONE, PS_RUNNING, PS_QUIT};
-
- public:
- PSInterpreter (PSActions *actions=0);
- bool execute (const char *str, size_t len, bool flush=true);
- bool execute (const char *str, bool flush=true) {return execute(str, std::strlen(str), flush);}
- bool execute (const std::string &str, bool flush=true) {return execute(str.c_str(), flush);}
- bool execute (std::istream &is, bool flush=true);
- bool executeRaw (const std::string &str, int n);
- bool active () const {return _mode != PS_QUIT;}
- void limit (size_t max_bytes) {_bytesToRead = max_bytes;}
- void setFilter (PSFilter *filter) {_filter = filter;}
- PSActions* setActions (PSActions *actions);
- const std::vector<std::string>& rawData () const {return _rawData;}
-
- protected:
- void init ();
- // callback functions
- static int GSDLLCALL input (void *inst, char *buf, int len);
- static int GSDLLCALL output (void *inst, const char *buf, int len);
- static int GSDLLCALL error (void *inst, const char *buf, int len);
-
- void checkStatus (int status);
- void callActions (InputReader &cib);
-
- private:
- Ghostscript _gs;
- Mode _mode; ///< current execution mode
- PSActions *_actions; ///< actions to be performed
- PSFilter *_filter; ///< active filter used to process PS code
- size_t _bytesToRead; ///< if > 0, maximal number of bytes to be processed by following calls of execute()
- std::vector<char> _linebuf;
- std::string _errorMessage; ///< text of error message
- bool _inError; ///< true if scanning error message
- bool _initialized; ///< true if PSInterpreter has been completely initialized
- std::vector<std::string> _rawData; ///< raw data received
- static const char *GSARGS[]; ///< parameters passed to Ghostscript
- static const char *PSDEFS; ///< initial PostScript definitions
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.cpp
deleted file mode 100644
index 107dac4f795..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/*************************************************************************
-** PSPattern.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include <vector>
-#include "BoundingBox.h"
-#include "PSPattern.h"
-#include "SpecialActions.h"
-#include "SVGTree.h"
-#include "XMLNode.h"
-
-using namespace std;
-
-
-string PSPattern::svgID () const {
- return XMLString("pat")+XMLString(_id);
-}
-
-
-/** Appends the definition of this pattern to the "def" section of the SVG tree. */
-void PSPattern::apply (SpecialActions *actions) {
- if (XMLElementNode *pattern = createPatternNode())
- actions->appendToDefs(pattern);
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-
-PSTilingPattern::PSTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep)
- : PSPattern(id), _bbox(bbox), _matrix(matrix), _xstep(xstep), _ystep(ystep), _groupNode(0)
-{
- _groupNode = PSTilingPattern::createGroupNode();
-}
-
-
-PSTilingPattern::~PSTilingPattern () {
- delete _groupNode;
-}
-
-
-/** Creates a new pattern element representing the pattern defined in the PS code. */
-XMLElementNode* PSTilingPattern::createPatternNode () const {
- if (!_groupNode)
- return 0;
- BoundingBox box(_bbox.minX(), _bbox.minY(), _bbox.minX()+_xstep, _bbox.minY()+_ystep);
- XMLElementNode *pattern = new XMLElementNode("pattern");
- pattern->addAttribute("id", svgID());
- pattern->addAttribute("x", box.minX());
- pattern->addAttribute("y", box.minY());
- pattern->addAttribute("width", box.width());
- pattern->addAttribute("height", box.height());
- pattern->addAttribute("viewBox", box.toSVGViewBox());
- pattern->addAttribute("patternUnits", "userSpaceOnUse");
- if (!_matrix.isIdentity())
- pattern->addAttribute("patternTransform", _matrix.getSVG());
- if (_xstep < _bbox.width() || _ystep < _bbox.height()) { // overlapping tiles?
- // disable clipping at the tile borders => tiles become "transparent"
- pattern->addAttribute("overflow", "visible");
- }
- if (XMLElementNode *clip=createClipNode())
- pattern->append(clip);
- pattern->append(_groupNode);
- return pattern;
-}
-
-
-/** Creates a new clip element restricting the drawing area to the
- * dimensions given in the definition of the pattern. */
-XMLElementNode* PSTilingPattern::createClipNode() const {
- XMLElementNode *clip = new XMLElementNode("clipPath");
- clip->addAttribute("id", "pc"+XMLString(psID()));
- XMLElementNode *rect = new XMLElementNode("rect");
- rect->addAttribute("x", _bbox.minX());
- rect->addAttribute("y", _bbox.minY());
- rect->addAttribute("width", _bbox.width());
- rect->addAttribute("height", _bbox.height());
- clip->append(rect);
- return clip;
-}
-
-
-/** Creates a new group element that contains all "drawing" elements that
- * define the pattern graphic. */
-XMLElementNode* PSTilingPattern::createGroupNode () const {
- // add all succeeding path elements to this group
- XMLElementNode *group = new XMLElementNode("g");
- group->addAttribute("clip-path", XMLString("url(#pc")+XMLString(psID())+")");
- return group;
-}
-
-
-void PSTilingPattern::apply (SpecialActions *actions) {
- PSPattern::apply(actions);
- _groupNode = 0;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-
-PSColoredTilingPattern::PSColoredTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep)
- : PSTilingPattern(id, bbox, matrix, xstep, ystep)
-{
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-
-PSUncoloredTilingPattern::PSUncoloredTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep)
- : PSTilingPattern(id, bbox, matrix, xstep, ystep), _applied(false)
-{
-}
-
-
-PSUncoloredTilingPattern::~PSUncoloredTilingPattern () {
- if (_applied)
- setGroupNode(0); // prevent deleting the group node in the parent destructor
-}
-
-
-/** Returns an SVG id value that identifies this pattern with the current color applied. */
-string PSUncoloredTilingPattern::svgID () const {
- ostringstream oss;
- oss << PSPattern::svgID() << '-' << hex << _currentColor;
- return oss.str();
-}
-
-
-/** Appends the definition of this pattern with the current color applied
- * to the "def" section of the SVG tree. */
-void PSUncoloredTilingPattern::apply (SpecialActions* actions) {
- set<Color>::iterator it=_colors.find(_currentColor);
- if (it == _colors.end()) {
- if (_applied)
- setGroupNode(static_cast<XMLElementNode*>(getGroupNode()->clone()));
- // assign current color to the pattern graphic
- vector<XMLElementNode*> colored_elems;
- const char *attribs[] = {"fill", "stroke"};
- for (int i=0; i < 2; i++) {
- getGroupNode()->findDescendants(0, attribs[i], colored_elems);
- for (vector<XMLElementNode*>::iterator it=colored_elems.begin(); it != colored_elems.end(); ++it)
- if (string((*it)->getAttributeValue(attribs[i])) != "none")
- (*it)->addAttribute(attribs[i], _currentColor.rgbString());
- colored_elems.clear();
- }
- PSPattern::apply(actions);
- _colors.insert(_currentColor);
- _applied = true;
- }
-}
-
-
-XMLElementNode* PSUncoloredTilingPattern::createClipNode() const {
- // only the first instance of this patterns get a clip element
- if (_colors.empty())
- return PSTilingPattern::createClipNode();
- return 0;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.h
deleted file mode 100644
index db11b59f0e0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPattern.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*************************************************************************
-** PSPattern.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PSPATTERN_H
-#define DVISVGM_PSPATTERN_H
-
-#include <set>
-#include <string>
-#include "BoundingBox.h"
-#include "Color.h"
-#include "Matrix.h"
-
-
-struct SpecialActions;
-class SVGTree;
-class XMLElementNode;
-
-class PSPattern
-{
- public:
- virtual ~PSPattern () {}
- virtual int psID () const {return _id;}
- virtual std::string svgID () const;
- virtual void apply (SpecialActions *actions);
-
- protected:
- PSPattern (int id) : _id(id) {}
- virtual XMLElementNode* createPatternNode () const =0;
-
- private:
- int _id; ///< PostSCript ID of this pattern
-};
-
-
-class PSTilingPattern : public PSPattern
-{
- public:
- ~PSTilingPattern ();
- virtual XMLElementNode* getContainerNode () {return _groupNode;}
- void apply (SpecialActions *actions);
-
- protected:
- PSTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep);
- XMLElementNode* createPatternNode () const;
- virtual XMLElementNode* createClipNode () const;
- virtual XMLElementNode* createGroupNode () const;
- virtual XMLElementNode* getGroupNode () const {return _groupNode;}
- virtual void setGroupNode (XMLElementNode *node) {_groupNode = node;}
-
- private:
- BoundingBox _bbox; ///< bounding box of the tile graphics
- Matrix _matrix; ///< tile transformation
- double _xstep, _ystep; ///< horizontal and vertical distance between neighboured tiles
- XMLElementNode *_groupNode; ///< group containing the drawing elements
-};
-
-
-class PSColoredTilingPattern : public PSTilingPattern
-{
- public:
- PSColoredTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep);
-};
-
-
-class PSUncoloredTilingPattern : public PSTilingPattern
-{
- public:
- PSUncoloredTilingPattern (int id, BoundingBox &bbox, Matrix &matrix, double xstep, double ystep);
- ~PSUncoloredTilingPattern ();
- std::string svgID () const;
- void setColor (Color color) {_currentColor = color;}
- void apply (SpecialActions *actions);
-
- protected:
- XMLElementNode* createClipNode () const;
-
- private:
- std::set<Color> _colors; ///< colors this pattern has already been drawn with
- Color _currentColor; ///< current color to be applied
- bool _applied; ///< has pattern with current group node already been applied to the SVG tree?
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.cpp
deleted file mode 100644
index c9b3b080118..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*************************************************************************
-** PSPreviewFilter.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <vector>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "PSInterpreter.h"
-#include "PSPreviewFilter.h"
-#include "SpecialActions.h"
-
-
-using namespace std;
-
-PSPreviewFilter::PSPreviewFilter (PSInterpreter &psi)
- : PSFilter(psi), _active(false), _tightpage(false), _dvi2bp(1.0/65536.0)
-{
-}
-
-
-/** Activates this filter so that the PS code will be redirected through it if
- * it's hooked into the PSInterpreter. */
-void PSPreviewFilter::activate () {
- if (_tightpage) // reactivate filter?
- _active = true;
- else { // first activation?
- _tightpage = _active = false;
- // try to retrieve version string of preview package set in the PS header section
- if (psInterpreter().executeRaw("SDict begin currentdict/preview@version known{preview@version}{0}ifelse end", 1))
- _version = psInterpreter().rawData()[0];
- // check if tightpage option was set
- if (_version != "0" && psInterpreter().executeRaw("SDict begin preview@tightpage end", 1)) {
- _tightpage = (psInterpreter().rawData()[0] == "true");
- _active = true;
- }
- }
- _boxExtents.clear();
-}
-
-
-/** Tries to extract the bounding box information from a chunk of PostScript code.
- * @param[in] code pointer to buffer with PS code to filter
- * @param[in] len number of bytes in buffer */
-void PSPreviewFilter::execute (const char *code, size_t len) {
- // If the "tightpage" option was set in the TeX file, 7 integers representing the
- // extent of the bounding box are present at the begin of each page.
- if (!_tightpage)
- psInterpreter().execute(code, len);
- else {
- CharInputBuffer ib(code, len);
- BufferInputReader ir(ib);
- ir.skipSpace();
- int val;
- while (ir.parseInt(val) && _boxExtents.size() <= 7) {
- _boxExtents.push_back(val);
- ir.skipSpace();
- }
- }
- _active = false; // no further processing required
-}
-
-
-/** Returns the bounding box defined by the preview package. */
-bool PSPreviewFilter::getBoundingBox (BoundingBox &bbox) const {
- if (_boxExtents.size() < 7)
- return false;
- double left = -_boxExtents[0]*_dvi2bp;
- bbox = BoundingBox(-left, -height(), width()-left, depth());
- return true;
-}
-
-
-/** Gets the 4 border values set by the preview package.
- * @return true if the border data is available */
-bool PSPreviewFilter::getBorders (double &left, double &right, double &top, double &bottom) const {
- if (_boxExtents.size() < 4)
- return false;
- left = -_boxExtents[0]*_dvi2bp;
- top = -_boxExtents[1]*_dvi2bp;
- right = _boxExtents[2]*_dvi2bp;
- bottom = _boxExtents[3]*_dvi2bp;
- return true;
-}
-
-
-/** Returns the box height in PS points, or -1 if no data was found or read yet. */
-double PSPreviewFilter::height () const {
- return _boxExtents.size() > 4 ? (_boxExtents[4]-_boxExtents[1])*_dvi2bp : -1;
-}
-
-
-/** Returns the box depth in PS points, or -1 if no data was found or read yet. */
-double PSPreviewFilter::depth () const {
- return _boxExtents.size() > 5 ? (_boxExtents[5]+_boxExtents[3])*_dvi2bp : -1;
-}
-
-
-/** Returns the box width in PS points, or -1 if no data was found or read yet. */
-double PSPreviewFilter::width () const {
- return _boxExtents.size() > 6 ? (_boxExtents[6]+_boxExtents[2]-_boxExtents[0])*_dvi2bp : -1;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.h
deleted file mode 100644
index bbed9640aab..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PSPreviewFilter.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*************************************************************************
-** PSPreviewFilter.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PSPREVIEWFILTER_H
-#define DVISVGM_PSPREVIEWFILTER_H
-
-#include <string>
-#include <vector>
-#include "BoundingBox.h"
-#include "PSFilter.h"
-
-struct SpecialActions;
-
-class PSPreviewFilter : public PSFilter
-{
- public:
- PSPreviewFilter (PSInterpreter &psi);
- void activate ();
- void execute (const char *code, size_t len);
- bool active () const {return _active;}
- std::string version () const {return _version;}
- bool tightpage () const {return _tightpage;}
- void setDviScaleFactor (double dvi2bp) {_dvi2bp = dvi2bp;}
- bool getBorders (double &left, double &right, double &top, double &bottom) const;
- void assignBorders (BoundingBox &bbox) const;
- bool getBoundingBox (BoundingBox &bbox) const;
- double height () const;
- double depth () const;
- double width () const;
-
- private:
- std::string _version; ///< version string of preview package
- bool _active; ///< true if filter is active
- bool _tightpage; ///< true if tightpage option was given
- double _dvi2bp; ///< factor to convert dvi units to PS points
- std::vector<int> _boxExtents;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.cpp
deleted file mode 100644
index 71650753d67..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*************************************************************************
-** PageRanges.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "PageRanges.h"
-
-#include "macros.h"
-
-using namespace std;
-
-
-/** Analyzes a string describing a range sequence.
- * Syntax: ([0-9]+(-[0-9]*)?)|(-[0-9]+)(,([0-9]+(-[0-9]*)?)|(-[0-9]+))*
- * @param[in] str string to parse
- * @param[in] max_page greatest allowed value
- * @return true on success; false denotes a syntax error */
-bool PageRanges::parse (string str, int max_page) {
- StringInputBuffer ib(str);
- BufferInputReader ir(ib);
- while (ir) {
- int first=1;
- int last=max_page;
- ir.skipSpace();
- if (!isdigit(ir.peek()) && ir.peek() != '-')
- return false;
-
- if (isdigit(ir.peek()))
- first = ir.getInt();
- ir.skipSpace();
- if (ir.peek() == '-') {
- while (ir.peek() == '-')
- ir.get();
- ir.skipSpace();
- if (isdigit(ir.peek()))
- last = ir.getInt();
- }
- else
- last = first;
- ir.skipSpace();
- if (ir.peek() == ',') {
- ir.get();
- if (ir.eof())
- return false;
- }
- else if (!ir.eof())
- return false;
- if (first > last)
- swap(first, last);
- first = max(1, first);
- last = max(first, last);
- if (max_page > 0) {
- first = min(first, max_page);
- last = min(last, max_page);
- }
- insert(first, last);
- }
- return true;
-}
-
-
-/** Adds a page range to the range collection.
- * @param[in] first first page of new range
- * @param[in] last last page of new range */
-void PageRanges::insert (int first, int last) {
- if (first > last)
- swap(first, last);
- Container::iterator it = _ranges.begin();
- while (it != _ranges.end() && first > it->first+1 && first > it->second+1)
- ++it;
- if (it == _ranges.end() || last < it->first-1 || first > it->second+1)
- it = _ranges.insert(it, Range(first, last));
- else if ((first < it->first && last >= it->first-1) || (first <= it->second+1 && last > it->second)) {
- it->first = min(it->first, first);
- it->second = max(it->second, last);
- }
- // merge adjacent ranges
- if (it != _ranges.end()) {
- Container::iterator l = it;
- Container::iterator r = it;
- if (l == _ranges.begin())
- l = _ranges.end();
- else
- --l;
- ++r;
- bool l_modified = false;
- bool r_modified = false;
- if (l != _ranges.end() && l->second >= it->first-1) {
- l->first = min(l->first, it->first);
- l->second = max(l->second, it->second);
- l_modified = true;
- }
- if (r != _ranges.end() && r->first <= it->second+1) {
- r->first = min(r->first, it->first);
- r->second = max(r->second, it->second);
- r_modified = true;
- }
- if (l_modified || r_modified) {
- _ranges.erase(it);
- if (l_modified && r_modified && l->second >= r->first-1) {
- l->first = min(l->first, r->first);
- l->second = max(l->second, r->second);
- _ranges.erase(r);
- }
- }
- }
-}
-
-
-/** Returns the number of pages. */
-size_t PageRanges::pages () const {
- size_t sum=0;
- for (ConstIterator it=_ranges.begin(); it != _ranges.end(); ++it)
- sum += it->second - it->first + 1;
- return sum;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.h
deleted file mode 100644
index 57b47b91e44..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageRanges.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*************************************************************************
-** PageRanges.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PAGERANGES_H
-#define DVISVGM_PAGERANGES_H
-
-#include <list>
-#include <string>
-#include <utility>
-
-class PageRanges
-{
- public:
- typedef std::pair<int,int> Range;
- typedef std::list<Range> Container;
- typedef Container::iterator Iterator;
- typedef Container::const_iterator ConstIterator;
-
- public:
- bool parse (std::string str, int max_page=0);
- void insert (int first, int last);
- size_t pages () const;
- size_t size () const {return _ranges.size();}
- const Container& ranges () const {return _ranges;}
- ConstIterator begin () const {return _ranges.begin();}
- ConstIterator end () const {return _ranges.end();}
-
- private:
- Container _ranges;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.cpp
deleted file mode 100644
index 2cc3f36512d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*************************************************************************
-** PageSize.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <cctype>
-#include <cmath>
-#include <sstream>
-#include "PageSize.h"
-
-using namespace std;
-
-// make sure tolower is a function (and not a macro)
-// so that 'transform' can be applied
-static int my_tolower (int c) {
- return tolower(c);
-}
-
-
-/** Computes width and height of ISO/DIN An in millimeters.
- * @param[in] n the A level (e.g. n=4 => DIN A4)
- * @param[out] width contains the page width when function returns
- * @param[out] height contains the page height when function returns */
-static void computeASize (int n, double &width, double &height) {
- double sqrt2 = sqrt(2.0);
- height = floor(1189.0/pow(sqrt2, n)+0.5);
- width = floor(height/sqrt2+0.5);
-}
-
-
-/** Computes width and height of ISO/DIN Bn in millimeters.
- * @param[in] n the B level (e.g. n=4 => DIN B4)
- * @param[out] width contains the page width when function returns
- * @param[out] height contains the page height when function returns */
-static void computeBSize (int n, double &width, double &height) {
- double w, h;
- computeASize(n, width, height);
- computeASize(n-1, w, h);
- width = floor(sqrt(width * w)+0.5);
- height = floor(sqrt(height * h)+0.5);
-}
-
-
-/** Computes width and height of ISO/DIN Cn in millimeters.
- * @param[in] n the C level (e.g. n=4 => DIN C4)
- * @param[out] width contains the page width when function returns
- * @param[out] height contains the page height when function returns */
-static void computeCSize (int n, double &width, double &height) {
- double w, h;
- computeASize(n, width, height);
- computeBSize(n, w, h);
- width = floor(sqrt(width * w)+0.5);
- height = floor(sqrt(height * h)+0.5);
-}
-
-
-/** Computes width and height of ISO/DIN Dn in millimeters.
- * @param[in] n the D level (e.g. n=4 => DIN D4)
- * @param[out] width contains the page width when function returns
- * @param[out] height contains the page height when function returns */
-static void computeDSize (int n, double &width, double &height) {
- double w, h;
- computeASize(n, width, height);
- computeBSize(n+1, w, h);
- width = floor(sqrt(width * w)+0.5);
- height = floor(sqrt(height * h)+0.5);
-}
-
-
-/** Constructs a PageSize object of given size.
- * @param[in] name specifies the page size, e.g. "A4" or "letter" */
-PageSize::PageSize (string name) : _width(0), _height(0) {
- resize(name);
-}
-
-
-void PageSize::resize (double w, double h) {
- _width = w;
- _height = h;
-}
-
-void PageSize::resize (string name) {
- if (name.length() < 2)
- throw PageSizeException("unknown page format: "+name);
-
- transform(name.begin(), name.end(), name.begin(), my_tolower);
- // extract optional suffix
- size_t pos = name.rfind("-");
- bool landscape = false;
- if (pos != string::npos) {
- string suffix = name.substr(pos);
- name = name.substr(0, pos);
- if (suffix == "-l" || suffix == "-landscape")
- landscape = true;
- else if (suffix != "-p" && suffix != "-portrait")
- throw PageSizeException("invalid page format suffix: " + suffix);
- }
-
- if (name == "invoice") {
- _width = 140;
- _height = 216;
- }
- else if (name == "executive") {
- _width = 184;
- _height = 267;
- }
- else if (name == "legal") {
- _width = 216;
- _height = 356;
- }
- else if (name == "letter") {
- _width = 216;
- _height = 279;
- }
- else if (name == "ledger") {
- _width = 279;
- _height = 432;
- }
- else if (isdigit(name[1]) && name.length() < 5) { // limit length of number to prevent arithmetic errors
- istringstream iss(name.substr(1));
- int n;
- iss >> n;
- switch (name[0]) {
- case 'a' : computeASize(n, _width, _height); break;
- case 'b' : computeBSize(n, _width, _height); break;
- case 'c' : computeCSize(n, _width, _height); break;
- case 'd' : computeDSize(n, _width, _height); break;
- default : throw PageSizeException("invalid page format: "+name);
- }
- }
- if (_width == 0 || _height == 0)
- throw PageSizeException("unknown page format: "+name);
- if (landscape)
- swap(_width, _height);
-
- const double bppmm = 72/25.4; // PS points per millimeter (72pt = 1in = 25.4mm)
- _width *= bppmm;
- _height *= bppmm;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.h
deleted file mode 100644
index 77cbdbcc44d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PageSize.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*************************************************************************
-** PageSize.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PAGESIZE_H
-#define DVISVGM_PAGESIZE_H
-
-#include "MessageException.h"
-
-struct PageSizeException : public MessageException
-{
- PageSizeException (const std::string &msg) : MessageException(msg) {}
-};
-
-class PageSize
-{
- public:
- PageSize (double w=0, double h=0) : _width(w), _height(h) {}
- PageSize (std::string name);
- void resize (std:: string name);
- void resize (double w, double h);
- double widthInBP () const {return _width;}
- double heightInBP () const {return _height;}
- double widthInMM () const {return _width*25.4/72;}
- double heightInMM () const {return _height*25.4/72;}
- bool valid () const {return _width > 0 && _height > 0;}
-
- private:
- double _width, _height; // in PS points
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Pair.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Pair.h
deleted file mode 100644
index 4c2d465e7c0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Pair.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*************************************************************************
-** Pair.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PAIR_H
-#define DVISVGM_PAIR_H
-
-#include <cmath>
-#include <ostream>
-#include "macros.h"
-#include "types.h"
-
-template <typename T>
-class Pair
-{
- public:
- Pair (T x=0, T y=0) : _x(x), _y(y) {}
- Pair operator += (const Pair &p) {_x += p._x; _y += p._y; return *this;}
- Pair operator -= (const Pair &p) {_x -= p._x; _y -= p._y; return *this;}
- Pair operator *= (T c) {_x *= c; _y *= c; return *this;}
- Pair operator /= (T c) {_x /= c; _y /= c; return *this;}
- Pair ortho () const {return Pair(-_y, _x);}
- double length () const {return std::sqrt(_x*_x + _y*_y);}
- bool operator == (const Pair &p) const {return _x == p._x && _y == p._y;}
- bool operator != (const Pair &p) const {return _x != p._x || _y != p._y;}
- T x () const {return _x;}
- T y () const {return _y;}
- void x (const T &xx) {_x = xx;}
- void y (const T &yy) {_y = yy;}
- std::ostream& write (std::ostream &os) const {return os << '(' << _x << ',' << _y << ')';}
-
- private:
- T _x, _y;
-};
-
-
-struct Pair32 : public Pair<Int32>
-{
- Pair32 (Int32 x=0, Int32 y=0) : Pair<Int32>(x, y) {}
- explicit Pair32 (double x, double y) : Pair<Int32>(Int32(x+0.5), Int32(y+0.5)) {}
- Pair32 (const Pair<Int32> &p) : Pair<Int32>(p) {}
-// operator Pair<Int32> () {return *this;}
-};
-
-typedef Pair<double> DPair;
-
-template <typename T>
-IMPLEMENT_ARITHMETIC_OPERATOR(Pair<T>, +)
-
-template <typename T>
-IMPLEMENT_ARITHMETIC_OPERATOR(Pair<T>, -)
-
-template <typename T>
-IMPLEMENT_ARITHMETIC_OPERATOR2(Pair<T>, T, *)
-
-template <typename T>
-IMPLEMENT_ARITHMETIC_OPERATOR2(Pair<T>, T, /)
-
-template <typename T>
-IMPLEMENT_OUTPUT_OPERATOR(Pair<T>)
-
-IMPLEMENT_ARITHMETIC_OPERATOR2(Pair32, Int32, *)
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.cpp
deleted file mode 100644
index 998b8016eae..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*************************************************************************
-** PdfSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstring>
-#include "InputReader.h"
-#include "MapLine.h"
-#include "PdfSpecialHandler.h"
-#include "FontMap.h"
-#include "Message.h"
-
-using namespace std;
-
-
-PdfSpecialHandler::PdfSpecialHandler () : _maplineProcessed(false)
-{
-}
-
-
-bool PdfSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- if (!actions)
- return true;
- StreamInputReader ir(is);
- ir.skipSpace();
- string cmd = ir.getWord();
- ir.skipSpace();
- if (cmd == "mapline" || cmd == "mapfile") {
- // read mode selector ('+', '-', or '=')
- char modechar = '+'; // default mode (append if new, do not replace existing mapping)
- if (strchr("=+-", ir.peek())) // leading modifier given?
- modechar = ir.get();
- else if (!_maplineProcessed) { // no modifier given?
- // remove default map entries if this is the first mapline/mapfile special called
- FontMap::instance().clear();
- }
-
- if (cmd == "mapline") {
- try {
- MapLine mapline(is);
- FontMap::instance().apply(mapline, modechar);
- }
- catch (const MapLineException &ex) {
- Message::wstream(true) << "pdf:mapline: " << ex.what() << '\n';
- }
- }
- else { // mapfile
- string fname = ir.getString();
- if (!FontMap::instance().read(fname, modechar))
- Message::wstream(true) << "can't open map file " << fname << '\n';
- }
- _maplineProcessed = true;
- }
- return true;
-}
-
-
-const char** PdfSpecialHandler::prefixes () const {
- static const char *pfx[] = {"pdf:", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.h
deleted file mode 100644
index a5391fbf141..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PdfSpecialHandler.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*************************************************************************
-** PdfSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PDFSPECIALHANDLER_H
-#define DVISVGM_PDFSPECIALHANDLER_H
-
-#include "SpecialHandler.h"
-
-class PdfSpecialHandler : public SpecialHandler
-{
- public:
- PdfSpecialHandler ();
- const char* info () const {return "pdfTeX font map specials";}
- const char* name () const {return "pdf";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
-
- private:
- bool _maplineProcessed; ///< true if a mapline or mapfile special has already been processed
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.cpp
deleted file mode 100644
index 41c3bec0daa..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/*************************************************************************
-** Process.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-
-#ifdef __WIN32__
- #include <windows.h>
-#else
- #include <fcntl.h>
- #include <sys/wait.h>
- #include <unistd.h>
- #include <signal.h>
-#endif
-
-#include <cstdlib>
-#include "FileSystem.h"
-#include "Process.h"
-#include "SignalHandler.h"
-#include "macros.h"
-
-using namespace std;
-
-Process::Process (const string &cmd, const string &paramstr)
- : _cmd(cmd), _paramstr(paramstr)
-{
-}
-
-
-#ifdef __WIN32__
-static void pipe_read (HANDLE handle, string &out) {
- char buf[4096];
- out.clear();
- for (;;) {
- DWORD num_chars;
- bool success = ReadFile(handle, buf, 1024, &num_chars, NULL);
- if (!success || num_chars == 0)
- break;
- out.append(buf, num_chars);
- }
- // remove trailing space
- if (!out.empty()) {
- int pos = out.size()-1;
- while (pos >= 0 && isspace(out[pos]))
- pos--;
- out.erase(pos+1);
- }
-}
-
-
-static inline void close_handle (HANDLE handle) {
- if (handle != NULL)
- CloseHandle(handle);
-}
-
-#else
-
-/** Extracts whitespace-sparated parameters from a string.
- * @param[in] paramstr the parameter string
- * @param[out] params vector holding the extracted parameters */
-static void split_paramstr (string paramstr, vector<const char*> &params) {
- size_t left=0, right=0; // index of first and last character of current parameter
- char quote=0; // current quote character, 0=none
- const size_t len = paramstr.length();
- while (left <= right && right < len) {
- while (left < len && isspace(paramstr[left]))
- ++left;
- if (left < len && (paramstr[left] == '"' || paramstr[left] == '\''))
- quote = paramstr[left++];
- right = left;
- while (right < len && (quote || !isspace(paramstr[right]))) {
- if (quote && paramstr[right] == quote) {
- quote=0;
- break;
- }
- else
- ++right;
- }
- if (right < len)
- paramstr[right]=0;
- if (left < len)
- params.push_back(&paramstr[left]);
- left = ++right;
- }
-}
-
-#endif
-
-
-/** Runs the process and waits until it's finished.
- * @param[out] out takes the output written to stdout by the executed process
- * @return true if process terminated properly
- * @throw SignalException if CTRL-C was pressed during execution */
-bool Process::run (string *out) {
-#ifdef __WIN32__
- SECURITY_ATTRIBUTES sa;
- ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
- sa.nLength = sizeof(SECURITY_ATTRIBUTES);
- sa.bInheritHandle = true;
-
- STARTUPINFO si;
- ZeroMemory(&si, sizeof(STARTUPINFO));
- si.cb = sizeof(STARTUPINFO);
- si.dwFlags = STARTF_USESTDHANDLES;
- HANDLE devnull = NULL;
- HANDLE proc_read_handle = NULL;
- HANDLE proc_write_handle = NULL;
- if (out) {
- CreatePipe(&proc_read_handle, &proc_write_handle, &sa, 0);
- SetHandleInformation(proc_read_handle, HANDLE_FLAG_INHERIT, 0);
- si.hStdOutput = proc_write_handle;
- }
- else {
- devnull = CreateFile("nul", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, &sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- si.hStdOutput = devnull;
- }
- si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
- si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
-
- PROCESS_INFORMATION pi;
- ZeroMemory(&pi, sizeof(pi));
- DWORD exitcode = DWORD(-1);
- string cmdline = _cmd+" "+_paramstr;
- bool success = CreateProcess(NULL, (LPSTR)cmdline.c_str(), NULL, NULL, true, 0, NULL, NULL, &si, &pi);
- if (success) {
- WaitForSingleObject(pi.hProcess, INFINITE);
- GetExitCodeProcess(pi.hProcess, &exitcode);
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
- }
- close_handle(proc_write_handle); // must be closed before reading from pipe to prevent blocking
- if (success && out)
- pipe_read(proc_read_handle, *out);
- close_handle(proc_read_handle);
- close_handle(devnull);
- return exitcode == 0;
-#else
- pid_t pid = fork();
- if (pid == 0) { // child process
- if (!out) {
- int devnull = open(FileSystem::DEVNULL, O_WRONLY);
- if (devnull >= 0) {
- dup2(devnull, STDOUT_FILENO);
- dup2(devnull, STDERR_FILENO);
- close(devnull);
- }
- }
- vector<const char*> params;
- params.push_back(_cmd.c_str());
- split_paramstr(_paramstr, params);
- params.push_back(0); // trailing NULL marks end
- execvp(_cmd.c_str(), const_cast<char* const*>(&params[0]));
- exit(1);
- }
- if (pid > 0) { // main process
- int status;
- for (;;) {
- waitpid(pid, &status, WNOHANG);
- if (WIFEXITED(status)) // child process exited normally
- return WEXITSTATUS(status) == 0;
-
- try {
- SignalHandler::instance().check();
- }
- catch (SignalException &e) { // caught ctrl-c
- kill(pid, SIGKILL);
- throw;
- }
- }
- }
- return false;
-#endif
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.h
deleted file mode 100644
index df2e0545049..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Process.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
-** Process.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PROCESS_H
-#define DVISVGM_PROCESS_H
-
-#include <string>
-
-class Process
-{
- public:
- Process (const std::string &cmd, const std::string &paramstr);
- bool run (std::string *out=0);
-
- protected:
- Process (const Process& orig) {}
-
- private:
- std::string _cmd;
- std::string _paramstr;
-};
-
-#endif
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.cpp
deleted file mode 100644
index f0742a36194..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.cpp
+++ /dev/null
@@ -1,874 +0,0 @@
-/*************************************************************************
-** PsSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <fstream>
-#include <iostream>
-#include <sstream>
-#include "EPSFile.h"
-#include "FileFinder.h"
-#include "Ghostscript.h"
-#include "Message.h"
-#include "PSPattern.h"
-#include "PSPreviewFilter.h"
-#include "PsSpecialHandler.h"
-#include "SpecialActions.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-static inline double str2double (const string &str) {
- double ret;
- istringstream iss(str);
- iss >> ret;
- return ret;
-}
-
-
-PsSpecialHandler::PsSpecialHandler () : _psi(this), _actions(0), _previewFilter(_psi), _psSection(PS_NONE), _xmlnode(0)
-{
-}
-
-
-PsSpecialHandler::~PsSpecialHandler () {
- _psi.setActions(0); // ensure no further PS actions are performed
- for (map<int, PSPattern*>::iterator it=_patterns.begin(); it != _patterns.end(); ++it)
- delete it->second;
-}
-
-
-/** Initializes the PostScript handler. It's called by the first use of process(). The
- * deferred initialization speeds up the conversion of DVI files that doesn't contain
- * PS specials. */
-void PsSpecialHandler::initialize () {
- if (_psSection == PS_NONE) {
- // initial values of graphics state
- _linewidth = 1;
- _linecap = _linejoin = 0;
- _miterlimit = 4;
- _xmlnode = _savenode = 0;
- _opacityalpha = 1; // fully opaque
- _sx = _sy = _cos = 1.0;
- _pattern = 0;
-
- // execute dvips prologue/header files
- const char *headers[] = {"tex.pro", "texps.pro", "special.pro", /*"color.pro",*/ 0};
- for (const char **p=headers; *p; ++p)
- processHeaderFile(*p);
- _psSection = PS_HEADERS; // allow to process header specials now
- }
-}
-
-
-void PsSpecialHandler::processHeaderFile (const char *name) {
- if (const char *path = FileFinder::lookup(name, false)) {
- ifstream ifs(path);
- _psi.execute(string("%%BeginProcSet: ")+name+" 0 0\n", false);
- _psi.execute(ifs, false);
- _psi.execute("%%EndProcSet\n", false);
- }
- else
- Message::wstream(true) << "PostScript header file " << name << " not found\n";
-}
-
-
-void PsSpecialHandler::enterBodySection () {
- if (_psSection == PS_HEADERS) {
- _psSection = PS_BODY; // don't process any PS header code
- ostringstream oss;
- // process collected header code
- if (!_headerCode.empty()) {
- oss << "\nTeXDict begin @defspecial " << _headerCode << "\n@fedspecial end";
- _headerCode.clear();
- }
- // push dictionary "TeXDict" with dvips definitions on dictionary stack
- // and initialize basic dvips PostScript variables
- oss << "\nTeXDict begin 0 0 1000 72 72 () @start 0 0 moveto ";
- if (_actions) {
- float r, g, b;
- _actions->getColor().getRGB(r, g, b);
- oss << r << ' ' << g << ' ' << b << " setrgbcolor ";
- }
- _psi.execute(oss.str(), false);
- // Check for information generated by preview.sty. If the tightpage options
- // was set, don't execute the bop-hook but allow the PS filter to read
- // the bbox data present at the beginning of the page.
- _psi.setFilter(&_previewFilter);
- _previewFilter.activate();
- if (!_previewFilter.tightpage())
- _psi.execute("userdict/bop-hook known{bop-hook}if\n", false);
- }
-}
-
-
-/** Move PS graphic position to current DVI location. */
-void PsSpecialHandler::moveToDVIPos () {
- if (_actions) {
- const double x = _actions->getX();
- const double y = _actions->getY();
- ostringstream oss;
- oss << '\n' << x << ' ' << y << " moveto ";
- _psi.execute(oss.str());
- _currentpoint = DPair(x, y);
- }
-}
-
-
-/** Executes a PS snippet and moves the DVI cursor to the current DVI position afterwards.
- * It's just a shorthand function as this action sequence is required several times.
- * @param[in] psi PS interpreter instance
- * @param[in] is stream to read the PS code from
- * @param[in] pos current PS graphic position
- * @param[in] actions special actions */
-static void exec_and_syncpos (PSInterpreter &psi, istream &is, const DPair &pos, SpecialActions *actions) {
- psi.execute(is);
- psi.execute("\nquerypos "); // retrieve current PS position (stored in 'pos')
- if (actions) {
- actions->setX(pos.x());
- actions->setY(pos.y());
- }
-}
-
-
-
-bool PsSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- _actions = actions;
- initialize();
- if (_psSection != PS_BODY && *prefix != '!' && strcmp(prefix, "header=") != 0)
- enterBodySection();
-
- if (*prefix == '"') {
- // read and execute literal PostScript code (isolated by a wrapping save/restore pair)
- moveToDVIPos();
- _psi.execute("\n@beginspecial @setspecial ");
- _psi.execute(is);
- _psi.execute("\n@endspecial ");
- }
- else if (*prefix == '!') {
- if (_psSection == PS_HEADERS) {
- _headerCode += "\n";
- _headerCode += string(istreambuf_iterator<char>(is), istreambuf_iterator<char>());
- }
- }
- else if (strcmp(prefix, "header=") == 0) {
- if (_psSection == PS_HEADERS) {
- // read and execute PS header file
- string fname;
- is >> fname;
- processHeaderFile(fname.c_str());
- }
- }
- else if (strcmp(prefix, "psfile=") == 0 || strcmp(prefix, "PSfile=") == 0) {
- if (_actions) {
- StreamInputReader in(is);
- string fname = in.getQuotedString(in.peek() == '"' ? '"' : 0);
- map<string,string> attr;
- in.parseAttributes(attr);
- psfile(fname, attr);
- }
- }
- else if (strcmp(prefix, "ps::") == 0) {
- if (_actions)
- _actions->finishLine(); // reset DVI position on next DVI command
- if (is.peek() == '[') {
- // collect characters inside the brackets
- string code;
- for (int i=0; i < 9 && is.peek() != ']' && !is.eof(); ++i)
- code += is.get();
- if (is.peek() == ']')
- code += is.get();
-
- if (code == "[begin]" || code == "[nobreak]") {
- moveToDVIPos();
- exec_and_syncpos(_psi, is, _currentpoint, _actions);
- }
- else {
- // no move to DVI position here
- if (code != "[end]") // PS array?
- _psi.execute(code);
- exec_and_syncpos(_psi, is, _currentpoint, _actions);
- }
- }
- else { // ps::<code> behaves like ps::[end]<code>
- // no move to DVI position here
- exec_and_syncpos(_psi, is, _currentpoint, _actions);
- }
- }
- else { // ps: ...
- if (_actions)
- _actions->finishLine();
- moveToDVIPos();
- StreamInputReader in(is);
- if (in.check(" plotfile ")) { // ps: plotfile fname
- string fname = in.getString();
- ifstream ifs(fname.c_str());
- if (ifs)
- _psi.execute(ifs);
- else
- Message::wstream(true) << "file '" << fname << "' not found in ps: plotfile\n";
- }
- else {
- // ps:<code> is almost identical to ps::[begin]<code> but does
- // a final repositioning to the current DVI location
- exec_and_syncpos(_psi, is, _currentpoint, _actions);
- moveToDVIPos();
- }
- }
- return true;
-}
-
-
-/** Handles psfile special.
- * @param[in] fname EPS file to be included
- * @param[in] attr attributes given with \\special psfile */
-void PsSpecialHandler::psfile (const string &fname, const map<string,string> &attr) {
- EPSFile epsfile(fname);
- istream &is = epsfile.istream();
- if (!is)
- Message::wstream(true) << "file '" << fname << "' not found in special 'psfile'\n";
- else {
- map<string,string>::const_iterator it;
-
- // bounding box of EPS figure
- double llx = (it = attr.find("llx")) != attr.end() ? str2double(it->second) : 0;
- double lly = (it = attr.find("lly")) != attr.end() ? str2double(it->second) : 0;
- double urx = (it = attr.find("urx")) != attr.end() ? str2double(it->second) : 0;
- double ury = (it = attr.find("ury")) != attr.end() ? str2double(it->second) : 0;
-
- // desired width/height of resulting figure
- double rwi = (it = attr.find("rwi")) != attr.end() ? str2double(it->second)/10.0 : -1;
- double rhi = (it = attr.find("rhi")) != attr.end() ? str2double(it->second)/10.0 : -1;
- if (rwi == 0 || rhi == 0 || urx-llx == 0 || ury-lly == 0)
- return;
-
- // user transformations (default values chosen according to dvips manual)
- double hoffset = (it = attr.find("hoffset")) != attr.end() ? str2double(it->second) : 0;
- double voffset = (it = attr.find("voffset")) != attr.end() ? str2double(it->second) : 0;
-// double hsize = (it = attr.find("hsize")) != attr.end() ? str2double(it->second) : 612;
-// double vsize = (it = attr.find("vsize")) != attr.end() ? str2double(it->second) : 792;
- double hscale = (it = attr.find("hscale")) != attr.end() ? str2double(it->second) : 100;
- double vscale = (it = attr.find("vscale")) != attr.end() ? str2double(it->second) : 100;
- double angle = (it = attr.find("angle")) != attr.end() ? str2double(it->second) : 0;
-
- Matrix m(1);
- m.rotate(angle).scale(hscale/100, vscale/100).translate(hoffset, voffset);
- BoundingBox bbox(llx, lly, urx, ury);
- bbox.transform(m);
-
- double sx = rwi/bbox.width();
- double sy = rhi/bbox.height();
- if (sx < 0) sx = sy;
- if (sy < 0) sy = sx;
- if (sx < 0) sx = sy = 1.0;
-
- // save current DVI position (in pt units)
- const double x = _actions->getX();
- const double y = _actions->getY();
-
- // all following drawings are relative to (0,0)
- _actions->setX(0);
- _actions->setY(0);
- moveToDVIPos();
-
- _xmlnode = new XMLElementNode("g");
- _psi.execute("\n@beginspecial @setspecial "); // enter \special environment
- _psi.limit(epsfile.pslength()); // limit the number of bytes to be processed
- _psi.execute(is); // process EPS file
- _psi.limit(0); // disable limitation
- _psi.execute("\n@endspecial "); // leave special environment
- if (!_xmlnode->empty()) { // has anything been drawn?
- Matrix m(1);
- m.rotate(angle).scale(hscale/100, vscale/100).translate(hoffset, voffset);
- m.translate(-llx, lly);
- m.scale(sx, sy); // resize image to width "rwi" and height "rhi"
- m.translate(x, y); // move image to current DVI position
- _xmlnode->addAttribute("transform", m.getSVG());
- _actions->appendToPage(_xmlnode);
- }
- else
- delete _xmlnode;
- _xmlnode = 0;
-
- // restore DVI position
- _actions->setX(x);
- _actions->setY(y);
- moveToDVIPos();
-
- // update bounding box
- m.scale(sx, -sy);
- m.translate(x, y);
- bbox = BoundingBox(0, 0, fabs(urx-llx), fabs(ury-lly));
- bbox.transform(m);
- _actions->embed(bbox);
- }
-}
-
-
-/** Apply transformation to width, height, and depth set by preview package.
- * @param[in] matrix transformation matrix to apply
- * @param[out] w width
- * @param[out] h height
- * @param[out] d depth
- * @return true if the baseline is still horizontal after the transformation */
-static bool transform_box_extents (const Matrix &matrix, double &w, double &h, double &d) {
- DPair shift = matrix*DPair(0,0); // the translation component of the matrix
- DPair ex = matrix*DPair(1,0)-shift;
- DPair ey = matrix*DPair(0,1)-shift;
- if (ex.y() != 0 && ey.x() != 0) // rotation != mod 90 degrees?
- return false; // => non-horizontal baseline, can't compute meaningful extents
-
- if (ex.y() == 0) // horizontal scaling or skewing?
- w *= fabs(ex.x());
- if (ey.x()==0 || ex.y()==0) { // vertical scaling?
- if (ey.y() < 0) swap(h, d);
- if (double sy = fabs(ey.y())/ey.length()) {
- h *= fabs(ey.y()/sy);
- d *= fabs(ey.y()/sy);
- }
- else
- h = d = 0;
- }
- return true;
-}
-
-
-void PsSpecialHandler::dviEndPage (unsigned) {
- BoundingBox bbox;
- if (_previewFilter.getBoundingBox(bbox)) {
- double w = _previewFilter.width();
- double h = _previewFilter.height();
- double d = _previewFilter.depth();
- bool horiz_baseline = true;
- if (_actions) {
- _actions->bbox() = bbox;
- // apply page transformations to box extents
- Matrix pagetrans;
- _actions->getPageTransform(pagetrans);
- horiz_baseline = transform_box_extents(pagetrans, w, h, d);
- _actions->bbox().lock();
- }
- Message::mstream() << "\napplying bounding box set by preview package (version " << _previewFilter.version() << ")\n";
- if (horiz_baseline)
- Message::mstream() << "width=" << XMLString(w) << "pt, " "height=" << XMLString(h) << "pt, " "depth=" << XMLString(d) << "pt\n";
- else
- Message::mstream() << "can't determine height, width, and depth due to non-horizontal baseline\n";
- }
- // close dictionary TeXDict and execute end-hook if defined
- if (_psSection == PS_BODY) {
- _psi.execute("\nend userdict/end-hook known{end-hook}if ");
- _psSection = PS_HEADERS;
- }
-}
-
-///////////////////////////////////////////////////////
-
-void PsSpecialHandler::gsave (vector<double> &p) {
- _clipStack.dup();
-}
-
-
-void PsSpecialHandler::grestore (vector<double> &p) {
- _clipStack.pop();
-}
-
-
-void PsSpecialHandler::grestoreall (vector<double> &p) {
- _clipStack.pop(-1, true);
-}
-
-
-void PsSpecialHandler::save (vector<double> &p) {
- _clipStack.dup(static_cast<int>(p[0]));
-}
-
-
-void PsSpecialHandler::restore (vector<double> &p) {
- _clipStack.pop(static_cast<int>(p[0]));
-}
-
-
-void PsSpecialHandler::moveto (vector<double> &p) {
- _path.moveto(p[0], p[1]);
-}
-
-
-void PsSpecialHandler::lineto (vector<double> &p) {
- _path.lineto(p[0], p[1]);
-}
-
-
-void PsSpecialHandler::curveto (vector<double> &p) {
- _path.cubicto(p[0], p[1], p[2], p[3], p[4], p[5]);
-}
-
-
-void PsSpecialHandler::closepath (vector<double> &p) {
- _path.closepath();
-}
-
-
-/** Draws the current path recorded by previously executed path commands (moveto, lineto,...).
- * @param[in] p not used */
-void PsSpecialHandler::stroke (vector<double> &p) {
- if (!_path.empty() && _actions) {
- BoundingBox bbox;
- if (!_actions->getMatrix().isIdentity()) {
- _path.transform(_actions->getMatrix());
- if (!_xmlnode)
- bbox.transform(_actions->getMatrix());
- }
-
- XMLElementNode *path=0;
- Pair<double> point;
- if (_path.isDot(point)) { // zero-length path?
- if (_linecap == 1) { // round line ends? => draw dot
- double x = point.x();
- double y = point.y();
- double r = _linewidth/2.0;
- path = new XMLElementNode("circle");
- path->addAttribute("cx", x);
- path->addAttribute("cy", y);
- path->addAttribute("r", r);
- path->addAttribute("fill", _actions->getColor().rgbString());
- bbox = BoundingBox(x-r, y-r, x+r, y+r);
- }
- }
- else {
- // compute bounding box
- _path.computeBBox(bbox);
- bbox.expand(_linewidth/2);
-
- ostringstream oss;
- _path.writeSVG(oss);
- path = new XMLElementNode("path");
- path->addAttribute("d", oss.str());
- path->addAttribute("stroke", _actions->getColor().rgbString());
- path->addAttribute("fill", "none");
- if (_linewidth != 1)
- path->addAttribute("stroke-width", _linewidth);
- if (_miterlimit != 4)
- path->addAttribute("stroke-miterlimit", _miterlimit);
- if (_linecap > 0) // default value is "butt", no need to set it explicitly
- path->addAttribute("stroke-linecap", _linecap == 1 ? "round" : "square");
- if (_linejoin > 0) // default value is "miter", no need to set it explicitly
- path->addAttribute("stroke-linejoin", _linecap == 1 ? "round" : "bevel");
- if (_opacityalpha < 1)
- path->addAttribute("stroke-opacity", _opacityalpha);
- if (!_dashpattern.empty()) {
- ostringstream oss;
- for (size_t i=0; i < _dashpattern.size(); i++) {
- if (i > 0)
- oss << ',';
- oss << XMLString(_dashpattern[i]);
- }
- path->addAttribute("stroke-dasharray", oss.str());
- if (_dashoffset != 0)
- path->addAttribute("stroke-dashoffset", _dashoffset);
- }
- }
- if (path && _clipStack.top()) {
- // assign clipping path and clip bounding box
- path->addAttribute("clip-path", XMLString("url(#clip")+XMLString(_clipStack.topID())+")");
- BoundingBox clipbox;
- _clipStack.top()->computeBBox(clipbox);
- bbox.intersect(clipbox);
- }
-
- if (_xmlnode)
- _xmlnode->append(path);
- else {
- _actions->appendToPage(path);
- _actions->embed(bbox);
- }
- _path.newpath();
- }
-}
-
-
-/** Draws a closed path filled with the current color.
- * @param[in] p not used
- * @param[in] evenodd true: use even-odd fill algorithm, false: use nonzero fill algorithm */
-void PsSpecialHandler::fill (vector<double> &p, bool evenodd) {
- if (!_path.empty() && _actions) {
- // compute bounding box
- BoundingBox bbox;
- _path.computeBBox(bbox);
- if (!_actions->getMatrix().isIdentity()) {
- _path.transform(_actions->getMatrix());
- if (!_xmlnode)
- bbox.transform(_actions->getMatrix());
- }
-
- ostringstream oss;
- _path.writeSVG(oss);
- XMLElementNode *path = new XMLElementNode("path");
- path->addAttribute("d", oss.str());
- if (_pattern)
- path->addAttribute("fill", XMLString("url(#")+_pattern->svgID()+")");
- else if (_actions->getColor() != Color::BLACK || _savenode)
- path->addAttribute("fill", _actions->getColor().rgbString());
- if (_clipStack.top()) {
- // assign clipping path and clip bounding box
- path->addAttribute("clip-path", XMLString("url(#clip")+XMLString(_clipStack.topID())+")");
- BoundingBox clipbox;
- _clipStack.top()->computeBBox(clipbox);
- bbox.intersect(clipbox);
- }
- if (evenodd) // SVG default fill rule is "nonzero" algorithm
- path->addAttribute("fill-rule", "evenodd");
- if (_opacityalpha < 1)
- path->addAttribute("fill-opacity", _opacityalpha);
- if (_xmlnode)
- _xmlnode->append(path);
- else {
- _actions->appendToPage(path);
- _actions->embed(bbox);
- }
- _path.newpath();
- }
-}
-
-
-/** Creates a Matrix object out of 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
- * @param[out] matrix the generated matrix */
-static void create_matrix (vector<double> &v, int startindex, Matrix &matrix) {
- // Ensure vector p has 6 elements. If necessary, add missing ones
- // using corresponding values of the identity matrix.
- if (v.size()-startindex < 6) {
- v.resize(6+startindex);
- for (int i=v.size()-startindex; i < 6; ++i)
- v[i+startindex] = (i%3 ? 0 : 1);
- }
- // PS matrix [a b c d e f] equals ((a,b,0),(c,d,0),(e,f,1)).
- // Since PS uses left multiplications, we must transpose and reorder
- // the matrix to ((a,c,e),(b,d,f),(0,0,1)). This is done by the
- // following swaps.
- swap(v[startindex+1], v[startindex+2]); // => (a, c, b, d, e, f)
- swap(v[startindex+2], v[startindex+4]); // => (a, c, e, d, b, f)
- swap(v[startindex+3], v[startindex+4]); // => (a, c, e, b, d, f)
- matrix.set(v, startindex);
-}
-
-
-/** Starts the definition of a new fill pattern. This operator
- * expects 9 parameters for tiling patterns (see PS reference 4.9.2):
- * @param[in] p the 9 values defining a tiling pattern (see PS reference 4.9.2):
- * 0: pattern type (0:none, 1:tiling, 2:shading)
- * 1: pattern ID
- * 2-5: lower left and upper right coordinates of pattern box
- * 6: horizontal distance of adjacent tiles
- * 7: vertical distance of adjacent tiles
- * 8: paint type (1: colored pattern, 2: uncolored pattern)
- * 9-14: pattern matrix */
-void PsSpecialHandler::makepattern (vector<double> &p) {
- int pattern_type = static_cast<int>(p[0]);
- int id = static_cast<int>(p[1]);
- switch (pattern_type) {
- case 0:
- // pattern definition completed
- if (_savenode) {
- _xmlnode = _savenode;
- _savenode = 0;
- }
- break;
- case 1: { // tiling pattern
- BoundingBox bbox(p[2], p[3], p[4], p[5]);
- const double &xstep=p[6], &ystep=p[7]; // horizontal and vertical distance of adjacent tiles
- int paint_type = static_cast<int>(p[8]);
-
- Matrix matrix; // transformation matrix given together with pattern definition
- create_matrix(p, 9, matrix);
- matrix.rmultiply(_actions->getMatrix());
-
- PSTilingPattern *pattern=0;
- if (paint_type == 1)
- pattern = new PSColoredTilingPattern(id, bbox, matrix, xstep, ystep);
- else
- pattern = new PSUncoloredTilingPattern(id, bbox, matrix, xstep, ystep);
- _patterns[id] = pattern;
- _savenode = _xmlnode;
- _xmlnode = pattern->getContainerNode(); // insert the following SVG elements into this node
- break;
- }
- case 2: {
- // define a shading pattern
- }
- }
-}
-
-
-/** Selects a previously defined fill pattern.
- * 0: pattern ID
- * 1-3: (optional) RGB values for uncolored tiling patterns
- * further parameters depend on the pattern type */
-void PsSpecialHandler::setpattern (vector<double> &p) {
- int pattern_id = p[0];
- Color color;
- if (p.size() == 4)
- color.set((float)p[1], (float)p[2], (float)p[3]);
- map<int,PSPattern*>::iterator it = _patterns.find(pattern_id);
- if (it == _patterns.end())
- _pattern = 0;
- else {
- if (PSUncoloredTilingPattern *pattern = dynamic_cast<PSUncoloredTilingPattern*>(it->second))
- pattern->setColor(color);
- it->second->apply(_actions);
- if (PSTilingPattern *pattern = dynamic_cast<PSTilingPattern*>(it->second))
- _pattern = pattern;
- else
- _pattern = 0;
- }
-}
-
-
-/** Clears the current clipping path.
- * @param[in] p not used */
-void PsSpecialHandler::initclip (vector<double> &p) {
- _clipStack.push(); // push empty path
-}
-
-
-/** Assigns a new clipping path.
- * @param[in] p not used
- * @param[in] evenodd true: use even-odd fill algorithm, false: use nonzero fill algorithm */
-void PsSpecialHandler::clip (vector<double> &p, bool evenodd) {
- // when this method is called, _path contains the clipping path
- if (!_path.empty() && _actions) {
- if (!_actions->getMatrix().isIdentity())
- _path.transform(_actions->getMatrix());
-
- int oldID = _clipStack.topID();
- _clipStack.replace(_path);
- int newID = _clipStack.topID();
-
- ostringstream oss;
- _path.writeSVG(oss);
- XMLElementNode *path = new XMLElementNode("path");
- path->addAttribute("d", oss.str());
- if (evenodd)
- path->addAttribute("clip-rule", "evenodd");
-
- XMLElementNode *clip = new XMLElementNode("clipPath");
- clip->addAttribute("id", XMLString("clip")+XMLString(newID));
- if (oldID)
- clip->addAttribute("clip-path", XMLString("url(#clip")+XMLString(oldID)+")");
-
- clip->append(path);
- _actions->appendToDefs(clip);
- }
-}
-
-
-/** Clears current path */
-void PsSpecialHandler::newpath (vector<double> &p) {
- _path.newpath();
-}
-
-
-void PsSpecialHandler::setmatrix (vector<double> &p) {
- if (_actions) {
- Matrix m;
- create_matrix(p, 0, m);
- _actions->setMatrix(m);
- }
-}
-
-
-// In contrast to SVG, PostScript transformations are applied in
-// reverse order (M' = T*M). Thus, the transformation matrices must be
-// left-multiplied in the following methods scale(), translate() and rotate().
-
-
-void PsSpecialHandler::scale (vector<double> &p) {
- if (_actions) {
- Matrix m = _actions->getMatrix();
- ScalingMatrix s(p[0], p[1]);
- m.lmultiply(s);
- _actions->setMatrix(m);
- }
-}
-
-
-void PsSpecialHandler::translate (vector<double> &p) {
- if (_actions) {
- Matrix m = _actions->getMatrix();
- TranslationMatrix t(p[0], p[1]);
- m.lmultiply(t);
- _actions->setMatrix(m);
- }
-}
-
-
-void PsSpecialHandler::rotate (vector<double> &p) {
- if (_actions) {
- Matrix m = _actions->getMatrix();
- RotationMatrix r(p[0]);
- m.lmultiply(r);
- _actions->setMatrix(m);
- }
-}
-
-
-void PsSpecialHandler::setgray (vector<double> &p) {
- _pattern = 0;
- if (_actions) {
- Color c;
- c.setGray((float)p[0]);
- _actions->setColor(c);
- }
-}
-
-
-void PsSpecialHandler::setrgbcolor (vector<double> &p) {
- _pattern= 0;
- if (_actions)
- _actions->setColor(Color((float)p[0], (float)p[1], (float)p[2]));
-}
-
-
-void PsSpecialHandler::setcmykcolor (vector<double> &p) {
- _pattern = 0;
- if (_actions) {
- Color c;
- c.setCMYK((float)p[0], (float)p[1], (float)p[2], (float)p[3]);
- _actions->setColor(c);
- }
-}
-
-
-void PsSpecialHandler::sethsbcolor (vector<double> &p) {
- _pattern = 0;
- if (_actions) {
- Color c;
- c.setHSB((float)p[0], (float)p[1], (float)p[2]);
- _actions->setColor(c);
- }
-}
-
-
-/** Sets the dash parameters used for stroking.
- * @param[in] p dash pattern array m1,...,mn plus trailing dash offset */
-void PsSpecialHandler::setdash (vector<double> &p) {
- _dashpattern.clear();
- for (size_t i=0; i < p.size()-1; i++)
- _dashpattern.push_back(scale(p[i]));
- _dashoffset = scale(p.back());
-}
-
-
-/** This method is called by the PSInterpreter if an PS operator has been executed. */
-void PsSpecialHandler::executed () {
- if (_actions)
- _actions->progress("ps");
-}
-
-////////////////////////////////////////////
-
-void PsSpecialHandler::ClippingStack::push () {
- if (!_stack.empty())
- _stack.push(Entry(0, -1));
-}
-
-
-void PsSpecialHandler::ClippingStack::push (const Path &path, int saveID) {
- if (path.empty())
- _stack.push(Entry(0, saveID));
- else {
- _paths.push_back(path);
- _stack.push(Entry(_paths.size(), saveID));
- }
-}
-
-
-/** Pops a single or several elements from the clipping stack.
- * The method distingushes between the following cases:
- * 1) saveID < 0 and grestoreall == false:
- * pop top element if it was pushed by gsave (its saveID is < 0 as well)
- * 2) saveID < 0 and grestoreall == true
- * repeat popping until stack is empty or the top element was pushed
- * by save (its saveID is >= 0)
- * 3) saveID >= 0:
- * pop all elements until the saveID of the top element equals parameter saveID */
-void PsSpecialHandler::ClippingStack::pop (int saveID, bool grestoreall) {
- if (!_stack.empty()) {
- if (saveID < 0) { // grestore?
- if (_stack.top().saveID < 0) // pushed by 'gsave'?
- _stack.pop();
- // pop all further elements pushed by 'gsave' if grestoreall == true
- while (grestoreall && !_stack.empty() && _stack.top().saveID < 0)
- _stack.pop();
- }
- else {
- // pop elements pushed by 'gsave'
- while (!_stack.empty() && _stack.top().saveID != saveID)
- _stack.pop();
- // pop element pushed by 'save'
- if (!_stack.empty())
- _stack.pop();
- }
- }
-}
-
-
-/** Returns a pointer to the path on top of the stack, or 0 if the stack is empty. */
-const PsSpecialHandler::Path* PsSpecialHandler::ClippingStack::top () const {
- return (!_stack.empty() && _stack.top().pathID)
- ? &_paths[_stack.top().pathID-1]
- : 0;
-}
-
-
-/** Pops all elements from the stack. */
-void PsSpecialHandler::ClippingStack::clear() {
- _paths.clear();
- while (!_stack.empty())
- _stack.pop();
-}
-
-
-/** Replaces the top element by a new one.
- * @param[in] path new path to be on top of the stack */
-void PsSpecialHandler::ClippingStack::replace (const Path &path) {
- if (_stack.empty())
- push(path, -1);
- else {
- _paths.push_back(path);
- _stack.top().pathID = _paths.size();
- }
-}
-
-
-/** Duplicates the top element, i.e. the top element is pushed again. */
-void PsSpecialHandler::ClippingStack::dup (int saveID) {
- _stack.push(_stack.empty() ? Entry(0, -1) : _stack.top());
- _stack.top().saveID = saveID;
-}
-
-
-const char** PsSpecialHandler::prefixes () const {
- static const char *pfx[] = {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\"", 0};
- return pfx;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.h
deleted file mode 100644
index 8fc3d6b5ae3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/PsSpecialHandler.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*************************************************************************
-** PsSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_PSSPECIALHANDLER_H
-#define DVISVGM_PSSPECIALHANDLER_H
-
-#include <set>
-#include <stack>
-#include <string>
-#include <vector>
-#include "GraphicPath.h"
-#include "PSInterpreter.h"
-#include "SpecialHandler.h"
-#include "PSPattern.h"
-#include "PSPreviewFilter.h"
-
-
-class PSPattern;
-class XMLElementNode;
-
-class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, protected PSActions
-{
- typedef GraphicPath<double> Path;
-
- class ClippingStack
- {
- public:
- void push ();
- void push (const Path &path, int saveID=-1);
- void replace (const Path &path);
- void dup (int saveID=-1);
- void pop (int saveID=-1, bool grestore=false);
- void clear ();
- bool empty () const {return _stack.empty();}
- const Path* top () const;
- int topID () const {return _stack.empty() ? 0 : _stack.top().pathID;}
-
- private:
- struct Entry {
- int pathID; ///< index referencing a path of the pool
- int saveID; ///< if >=0, path was pushed by 'save', and saveID holds the ID of the
- Entry (int pid, int sid) : pathID(pid), saveID(sid) {}
- };
- std::vector<Path> _paths; ///< pool of all clipping paths
- std::stack<Entry> _stack;
- };
-
- enum PsSection {PS_NONE, PS_HEADERS, PS_BODY};
-
- public:
- PsSpecialHandler ();
- ~PsSpecialHandler ();
- const char* name () const {return "ps";}
- const char* info () const {return "dvips PostScript specials";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
- void setDviScaleFactor (double dvi2bp) {_previewFilter.setDviScaleFactor(dvi2bp);}
- void enterBodySection ();
-
- protected:
- void initialize ();
- void moveToDVIPos ();
- void processHeaderFile (const char *fname);
- void psfile (const std::string &fname, const std::map<std::string,std::string> &attr);
- void dviEndPage (unsigned pageno);
-
- /// scale given value by current PS scale factors
- double scale (double v) const {return v*(_sx*_cos*_cos + _sy*(1-_cos*_cos));}
-
- void applyscalevals (std::vector<double> &p) {_sx = p[0]; _sy = p[1]; _cos = p[2];}
- void clip (std::vector<double> &p) {clip(p, false);}
- void clip (std::vector<double> &p, bool evenodd);
- void closepath (std::vector<double> &p);
- void curveto (std::vector<double> &p);
- void eoclip (std::vector<double> &p) {clip(p, true);}
- void eofill (std::vector<double> &p) {fill(p, true);}
- void fill (std::vector<double> &p, bool evenodd);
- void fill (std::vector<double> &p) {fill(p, false);}
- void grestore (std::vector<double> &p);
- void grestoreall (std::vector<double> &p);
- void gsave (std::vector<double> &p);
- void initclip (std::vector<double> &p);
- void lineto (std::vector<double> &p);
- void makepattern (std::vector<double> &p);
- void moveto (std::vector<double> &p);
- void newpath (std::vector<double> &p);
- void querypos (std::vector<double> &p) {_currentpoint = DPair(p[0], p[1]);}
- void restore (std::vector<double> &p);
- void rotate (std::vector<double> &p);
- void save (std::vector<double> &p);
- void scale (std::vector<double> &p);
- void setcmykcolor (std::vector<double> &cmyk);
- void setdash (std::vector<double> &p);
- void setgray (std::vector<double> &p);
- void sethsbcolor (std::vector<double> &hsb);
- void setlinecap (std::vector<double> &p) {_linecap = UInt8(p[0]);}
- void setlinejoin (std::vector<double> &p) {_linejoin = UInt8(p[0]);}
- void setlinewidth (std::vector<double> &p) {_linewidth = p[0] ? scale(p[0])*1.00375 : 0.5;}
- void setmatrix (std::vector<double> &p);
- void setmiterlimit (std::vector<double> &p) {_miterlimit = p[0]*1.00375;}
- void setopacityalpha (std::vector<double> &p){_opacityalpha = p[0];}
- void setpattern (std::vector<double> &p);
- void setrgbcolor (std::vector<double> &rgb);
- void stroke (std::vector<double> &p);
- void translate (std::vector<double> &p);
- void executed ();
-
- private:
- PSInterpreter _psi;
- SpecialActions *_actions;
- PSPreviewFilter _previewFilter; ///< filter to extract information generated by the preview package
- PsSection _psSection; ///< current section processed (nothing yet, headers, or body specials)
- XMLElementNode *_xmlnode; ///< if != 0, created SVG elements are appended to this node
- XMLElementNode *_savenode; ///< pointer to temporaryly store _xmlnode
- std::string _headerCode; ///< collected literal PS header code
- Path _path;
- DPair _currentpoint; ///< current PS position in bp units
- double _sx, _sy; ///< horizontal and vertical scale factors retrieved by operator "applyscalevals"
- double _cos; ///< cosine of angle between (1,0) and transform(1,0)
- double _linewidth; ///< current linewidth
- double _miterlimit; ///< current miter limit
- double _opacityalpha; ///< opacity level (0=fully transparent, ..., 1=opaque)
- UInt8 _linecap : 2; ///< current line cap (0=butt, 1=round, 2=projecting square)
- UInt8 _linejoin : 2; ///< current line join (0=miter, 1=round, 2=bevel)
- double _dashoffset; ///< current dash offset
- std::vector<double> _dashpattern;
- ClippingStack _clipStack;
- std::map<int, PSPattern*> _patterns;
- PSTilingPattern *_pattern; ///< current pattern
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGOutputBase.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGOutputBase.h
deleted file mode 100644
index cad892ea068..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGOutputBase.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*************************************************************************
-** SVGOutputBase.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SVGOUTPUTBASE_H
-#define DVISVGM_SVGOUTPUTBASE_H
-
-#include <ostream>
-#include <string>
-
-struct SVGOutputBase {
- virtual ~SVGOutputBase () {}
- virtual std::ostream& getPageStream (int page, int numPages) const =0;
- virtual std::string filename (int page, int numPages) const =0;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.cpp
deleted file mode 100644
index a1f375a5f9a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-/*************************************************************************
-** SVGTree.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <algorithm>
-#include <sstream>
-#include <string>
-#include "BoundingBox.h"
-#include "DVIToSVG.h"
-#include "Font.h"
-#include "FontManager.h"
-#include "SVGTree.h"
-#include "XMLDocument.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-
-// static class variables
-bool SVGTree::CREATE_STYLE=true;
-bool SVGTree::USE_FONTS=true;
-bool SVGTree::CREATE_USE_ELEMENTS=false;
-double SVGTree::ZOOM_FACTOR=1.0;
-
-
-SVGTree::SVGTree () : _vertical(false), _font(0), _color(Color::BLACK), _matrix(1) {
- _xchanged = _ychanged = false;
- _fontnum = 0;
- reset();
-}
-
-
-/** Clears the SVG tree and initializes the root element. */
-void SVGTree::reset () {
- _doc.clear();
- _root = new XMLElementNode("svg");
- _root->addAttribute("version", "1.1");
- _root->addAttribute("xmlns", "http://www.w3.org/2000/svg");
- _root->addAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
- _doc.setRootNode(_root);
- _page = _text = _span = _defs = 0;
-}
-
-
-/** Sets the bounding box of the document.
- * @param[in] bbox bounding box in PS point units */
-void SVGTree::setBBox (const BoundingBox &bbox) {
- if (ZOOM_FACTOR >= 0) {
- _root->addAttribute("width", XMLString(bbox.width()*ZOOM_FACTOR)+"pt");
- _root->addAttribute("height", XMLString(bbox.height()*ZOOM_FACTOR)+"pt");
- }
- _root->addAttribute("viewBox", bbox.toSVGViewBox());
-}
-
-
-void SVGTree::setColor (const Color &c) {
- if (!_font.get() || _font.get()->color() == Color::BLACK)
- _color.set(c);
-}
-
-
-void SVGTree::setFont (int num, const Font *font) {
- _font.set(font);
- _fontnum = num;
- // set default color assigned to the font
- if (font->color() != Color::BLACK && _color.get() != font->color())
- _color.set(font->color());
-}
-
-
-/** Starts a new page.
- * @param[in] pageno number of new page */
-void SVGTree::newPage (int pageno) {
- _page = new XMLElementNode("g");
- if (pageno >= 0)
- _page->addAttribute("id", string("page")+XMLString(pageno));
- _root->append(_page);
- _text = _span = 0;
- while (!_pageContainerStack.empty())
- _pageContainerStack.pop();
-}
-
-
-void SVGTree::appendToDefs (XMLNode *node) {
- if (!_defs) {
- _defs = new XMLElementNode("defs");
- _root->prepend(_defs);
- }
- _defs->append(node);
-}
-
-
-void SVGTree::appendToPage (XMLNode *node) {
- if (_pageContainerStack.empty())
- _page->append(node);
- else
- _pageContainerStack.top()->append(node);
-}
-
-
-void SVGTree::prependToPage (XMLNode *node) {
- if (_pageContainerStack.empty())
- _page->prepend(node);
- else
- _pageContainerStack.top()->prepend(node);
-}
-
-
-/** Appends a single charater to the current text node. If necessary, and depending on output mode
- * and further output states, new XML elements (text, tspan, g, ...) are created.
- * @param[in] c character to be added
- * @param[in] x x coordinate
- * @param[in] y y coordinate
- * @param[in] font font to be used */
-void SVGTree::appendChar (int c, double x, double y, const Font &font) {
- XMLElementNode *node=_span;
- if (USE_FONTS) {
- // changes of fonts and transformations require a new text element
- if (!_text || _font.changed() || _matrix.changed() || _vertical.changed()) {
- newTextNode(x, y);
- node = _text;
- _color.changed(true);
- }
- if (_xchanged || _ychanged || (_color.changed() && _color.get() != Color::BLACK)) {
- // if drawing position was explicitly changed, create a new tspan element
- _span = new XMLElementNode("tspan");
- if (_xchanged) {
- if (_vertical) {
- // align glyphs designed for horizontal layout properly
- if (const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(_font.get()))
- if (!pf->getMetrics()->verticalLayout())
- x += pf->scaledAscent()/2.5; // move vertical baseline to the right by strikethrough offset
- }
- _span->addAttribute("x", x);
- _xchanged = false;
- }
- if (_ychanged) {
- _span->addAttribute("y", y);
- _ychanged = false;
- }
- if (_color.get() != font.color()) {
- _span->addAttribute("fill", _color.get().rgbString());
- _color.changed(false);
- }
- _text->append(_span);
- node = _span;
- }
- if (!node) {
- if (!_text)
- newTextNode(x, y);
- node = _text;
- }
- node->append(XMLString(font.unicode(c), false));
- }
- else {
- if (_color.changed() || _matrix.changed()) {
- bool set_color = (_color.changed() && _color.get() != Color::BLACK);
- bool set_matrix = (_matrix.changed() && !_matrix.get().isIdentity());
- if (set_color || set_matrix) {
- _span = new XMLElementNode("g");
- if (_color.get() != Color::BLACK)
- _span->addAttribute("fill", _color.get().rgbString());
- if (!_matrix.get().isIdentity())
- _span->addAttribute("transform", _matrix.get().getSVG());
- appendToPage(_span);
- node = _span;
- _color.changed(false);
- _matrix.changed(false);
- }
- else if (_color.get() == Color::BLACK && _matrix.get().isIdentity())
- node = _span = 0;
- }
- if (!node)
- node = _pageContainerStack.empty() ? _page : _pageContainerStack.top();
- if (font.verticalLayout()) {
- // move glyph graphics so that its origin is located at the top center position
- GlyphMetrics metrics;
- font.getGlyphMetrics(c, _vertical, metrics);
- x -= metrics.wl;
- if (const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(&font)) {
- // Center glyph between top and bottom border of the TFM box.
- // This is just an approximation used until I find a way to compute
- // the exact location in vertical mode.
- GlyphMetrics exact_metrics;
- pf->getExactGlyphBox(c, exact_metrics, false);
- y += exact_metrics.h+(metrics.d-exact_metrics.h-exact_metrics.d)/2;
- }
- else
- y += metrics.d;
- }
- Matrix rotation(1);
- if (_vertical && !font.verticalLayout()) {
- // alphabetic text designed for horizontal mode
- // must be rotated by 90 degrees if in vertical mode
- rotation.translate(-x, -y);
- rotation.rotate(90);
- rotation.translate(x, y);
- }
- if (CREATE_USE_ELEMENTS) {
- ostringstream oss;
- oss << "#g" << FontManager::instance().fontID(_font) << '-' << c;
- XMLElementNode *use = new XMLElementNode("use");
- use->addAttribute("x", XMLString(x));
- use->addAttribute("y", XMLString(y));
- use->addAttribute("xlink:href", oss.str());
- if (!rotation.isIdentity())
- use->addAttribute("transform", rotation.getSVG());
- node->append(use);
- }
- else {
- Glyph glyph;
- const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(&font);
- if (pf && pf->getGlyph(c, glyph)) {
- double sx = pf->scaledSize()/pf->unitsPerEm();
- double sy = -sx;
- ostringstream oss;
- glyph.writeSVG(oss, sx, sy, x, y);
- XMLElementNode *glyph_node = new XMLElementNode("path");
- glyph_node->addAttribute("d", oss.str());
- if (!rotation.isIdentity())
- glyph_node->addAttribute("transform", rotation.getSVG());
- node->append(glyph_node);
- }
- }
- }
-}
-
-
-/** Creates a new text element. This is a helper function used by appendChar().
- * @param[in] x current x coordinate
- * @param[in] y current y coordinate */
-void SVGTree::newTextNode (double x, double y) {
- _text = new XMLElementNode("text");
- _span = 0; // no tspan in text element yet
- if (USE_FONTS) {
- const Font *font = _font.get();
- if (CREATE_STYLE || !font)
- _text->addAttribute("class", string("f")+XMLString(_fontnum));
- else {
- _text->addAttribute("font-family", font->name());
- _text->addAttribute("font-size", font->scaledSize());
- if (font->color() != Color::BLACK)
- _text->addAttribute("fill", font->color().rgbString());
- }
- if (_vertical) {
- _text->addAttribute("writing-mode", "tb");
- // align glyphs designed for horizontal layout properly
- if (const PhysicalFont *pf = dynamic_cast<const PhysicalFont*>(_font.get()))
- if (!pf->getMetrics()->verticalLayout()) { // alphabetic text designed for horizontal layout?
- x += pf->scaledAscent()/2.5; // move vertical baseline to the right by strikethrough offset
- _text->addAttribute("glyph-orientation-vertical", 90); // ensure rotation
- }
- }
- }
- _text->addAttribute("x", x);
- _text->addAttribute("y", y);
- if (!_matrix.get().isIdentity())
- _text->addAttribute("transform", _matrix.get().getSVG());
- appendToPage(_text);
- _vertical.changed(false);
- _font.changed(false);
- _matrix.changed(false);
- _xchanged = false;
- _ychanged = false;
-}
-
-
-void SVGTree::transformPage (const Matrix *usermatrix) {
- if (usermatrix && !usermatrix->isIdentity())
- _page->addAttribute("transform", usermatrix->getSVG());
-}
-
-
-/** Creates an SVG element for a single glyph.
- * @param[in] c character number
- * @param[in] font font to extract the glyph from
- * @param[in] cb pointer to callback object for sending feedback to the glyph tracer (may be 0)
- * @return pointer to element node if glyph exists, 0 otherwise */
-static XMLElementNode* createGlyphNode (int c, const PhysicalFont &font, GFGlyphTracer::Callback *cb) {
- Glyph glyph;
- if (!font.getGlyph(c, glyph, cb) || (!SVGTree::USE_FONTS && !SVGTree::CREATE_USE_ELEMENTS))
- return 0;
-
- double sx=1.0, sy=1.0;
- double upem = font.unitsPerEm();
- XMLElementNode *glyph_node=0;
- if (SVGTree::USE_FONTS) {
- double extend = font.style() ? font.style()->extend : 1;
- glyph_node = new XMLElementNode("glyph");
- glyph_node->addAttribute("unicode", XMLString(font.unicode(c), false));
- glyph_node->addAttribute("horiz-adv-x", XMLString(font.hAdvance(c)*extend));
- glyph_node->addAttribute("vert-adv-y", XMLString(font.vAdvance(c)));
- string name = font.glyphName(c);
- if (!name.empty())
- glyph_node->addAttribute("glyph-name", name);
- }
- else {
- ostringstream oss;
- oss << 'g' << FontManager::instance().fontID(&font) << '-' << c;
- glyph_node = new XMLElementNode("path");
- glyph_node->addAttribute("id", oss.str());
- sx = font.scaledSize()/upem;
- sy = -sx;
- }
- ostringstream oss;
- glyph.writeSVG(oss, sx, sy);
- glyph_node->addAttribute("d", oss.str());
- return glyph_node;
-}
-
-
-void SVGTree::appendFontStyles (const set<const Font*> &fonts) {
- if (CREATE_STYLE && USE_FONTS && !fonts.empty() && _defs) {
- XMLElementNode *styleNode = new XMLElementNode("style");
- styleNode->addAttribute("type", "text/css");
- _root->insertAfter(styleNode, _defs);
- typedef map<int, const Font*> SortMap;
- SortMap sortmap;
- FORALL(fonts, set<const Font*>::const_iterator, it)
- if (!dynamic_cast<const VirtualFont*>(*it)) // skip virtual fonts
- sortmap[FontManager::instance().fontID(*it)] = *it;
- ostringstream style;
- // add font style definitions in ascending order
- FORALL(sortmap, SortMap::const_iterator, it) {
- style << "text.f" << it->first << ' '
- << "{font-family:" << it->second->name()
- << ";font-size:" << it->second->scaledSize() << "px";
- if (it->second->color() != Color::BLACK)
- style << ";fill:" << it->second->color().rgbString();
- style << "}\n";
- }
- XMLCDataNode *cdata = new XMLCDataNode(style.str());
- styleNode->append(cdata);
- }
-}
-
-
-/** Appends glyph definitions of a given font to the defs section of the SVG tree.
- * @param[in] font font to be appended
- * @param[in] chars codes of the characters whose glyph outlines should be appended
- * @param[in] cb pointer to callback object for sending feedback to the glyph tracer (may be 0) */
-void SVGTree::append (const PhysicalFont &font, const set<int> &chars, GFGlyphTracer::Callback *cb) {
- if (chars.empty())
- return;
-
- if (USE_FONTS) {
- XMLElementNode *fontNode = new XMLElementNode("font");
- string fontname = font.name();
- fontNode->addAttribute("id", fontname);
- fontNode->addAttribute("horiz-adv-x", XMLString(font.hAdvance()));
- appendToDefs(fontNode);
-
- XMLElementNode *faceNode = new XMLElementNode("font-face");
- faceNode->addAttribute("font-family", fontname);
- faceNode->addAttribute("units-per-em", XMLString(font.unitsPerEm()));
- if (font.type() != PhysicalFont::MF && !font.verticalLayout()) {
- faceNode->addAttribute("ascent", XMLString(font.ascent()));
- faceNode->addAttribute("descent", XMLString(font.descent()));
- }
- fontNode->append(faceNode);
-
- // add required missing-glyph element
- XMLElementNode *missing = new XMLElementNode("missing-glyph");
- missing->addAttribute("d", "");
- fontNode->append(missing);
- FORALL(chars, set<int>::const_iterator, i)
- fontNode->append(createGlyphNode(*i, font, cb));
- }
- else if (CREATE_USE_ELEMENTS && &font != font.uniqueFont()) {
- // If the same character is used in various sizes, we don't want to embed the complete (lengthy) path
- // descriptions multiple times. Because they would only differ by a scale factor, it's better to
- // reference the already embedded path together with a transformation attribute and let the SVG renderer
- // scale the glyphs properly. This is only necessary if we don't want to use font but path elements.
- FORALL(chars, set<int>::const_iterator, it) {
- ostringstream oss;
- XMLElementNode *use = new XMLElementNode("use");
- oss << 'g' << FontManager::instance().fontID(&font) << '-' << *it;
- use->addAttribute("id", oss.str());
- oss.str("");
- oss << "#g" << FontManager::instance().fontID(font.uniqueFont()) << '-' << *it;
- use->addAttribute("xlink:href", oss.str());
- double scale = font.scaledSize()/font.uniqueFont()->scaledSize();
- if (scale != 1.0) {
- oss.str("");
- oss << "scale(" << scale << ')';
- use->addAttribute("transform", oss.str());
- }
- appendToDefs(use);
- }
- }
- else {
- FORALL(chars, set<int>::const_iterator, i)
- appendToDefs(createGlyphNode(*i, font, cb));
- }
-}
-
-
-/** Pushes a new context element that will take all following nodes added to the page. */
-void SVGTree::pushContextElement (XMLElementNode *node) {
- if (_pageContainerStack.empty())
- _page->append(node);
- else
- _pageContainerStack.top()->append(node);
- _pageContainerStack.push(node);
- _text = _span = 0; // ensure the creation of a new text element for the following characters added
-}
-
-
-/** Pops the current context element and restored the previous one. */
-void SVGTree::popContextElement () {
- if (!_pageContainerStack.empty()) {
- _pageContainerStack.pop();
- _text = _span = 0; // ensure the creation of a new text element for the following characters added
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.h
deleted file mode 100644
index 541d299971c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SVGTree.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************
-** SVGTree.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SVGTREE_H
-#define DVISVGM_SVGTREE_H
-
-#include <map>
-#include <set>
-#include <stack>
-#include "Color.h"
-#include "GFGlyphTracer.h"
-#include "Matrix.h"
-#include "XMLDocument.h"
-#include "XMLNode.h"
-
-class BoundingBox;
-class Color;
-struct Font;
-class Matrix;
-class PhysicalFont;
-
-class SVGTree
-{
- template <typename T>
- class Property {
- public:
- Property (const T &v) : _value(v), _changed(false) {}
-
- void set (const T &v) {
- if (v != _value) {
- _value = v;
- _changed = true;
- }
- }
-
- const T& get () const {return _value;}
- operator const T& () {return _value;}
- bool changed () const {return _changed;}
- void changed (bool c) {_changed = c;}
-
- private:
- T _value;
- bool _changed;
- };
-
- public:
- SVGTree ();
- void reset ();
- void write (std::ostream &os) const {_doc.write(os);}
- void newPage (int pageno);
- void appendToDefs (XMLNode *node);
- void appendToPage (XMLNode *node);
- void prependToPage (XMLNode *node);
- void appendToDoc (XMLNode *node) {_doc.append(node);}
- void appendToRoot (XMLNode *node) {_root->append(node);}
- void appendChar (int c, double x, double y, const Font &font);
- void appendFontStyles (const std::set<const Font*> &fonts);
- void append (const PhysicalFont &font, const std::set<int> &chars, GFGlyphTracer::Callback *cb=0);
- void pushContextElement (XMLElementNode *node);
- void popContextElement ();
- void setBBox (const BoundingBox &bbox);
- void setFont (int id, const Font *font);
- void setX (double x) {_xchanged = true;}
- void setY (double y) {_ychanged = true;}
- void setMatrix (const Matrix &m) {_matrix.set(m);}
- void setColor (const Color &c);
- void setVertical (bool state) {_vertical.set(state);}
- void transformPage (const Matrix *m);
- const Color& getColor () const {return _color.get();}
- const Matrix& getMatrix () const {return _matrix.get();}
- XMLElementNode* rootNode () const {return _root;}
-
- public:
- static bool USE_FONTS; ///< if true, create font references and don't draw paths directly
- static bool CREATE_STYLE; ///< should style elements and class attributes be used to reference fonts?
- static bool CREATE_USE_ELEMENTS; ///< allow generation of <use/> elements?
- static double ZOOM_FACTOR; ///< factor applied to width/height attribute
-
- protected:
- void newTextNode (double x, double y);
-
- private:
- XMLDocument _doc;
- XMLElementNode *_root, *_page, *_text, *_span, *_defs;
- bool _xchanged, _ychanged;
- Property<bool> _vertical; ///< true if in vertical writing mode
- Property<const Font*> _font;
- Property<Color> _color;
- Property<Matrix> _matrix;
- int _fontnum;
- std::stack<XMLElementNode*> _pageContainerStack;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.cpp
deleted file mode 100644
index 6e91a05442d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*************************************************************************
-** SignalHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cerrno>
-#include <csignal>
-#include <cstdlib>
-#include "SignalHandler.h"
-
-using namespace std;
-
-bool SignalHandler::_break = false;
-
-
-SignalHandler::~SignalHandler() {
- stop();
-}
-
-
-/** Returns the singleton handler object. */
-SignalHandler& SignalHandler::instance() {
- static SignalHandler handler;
- return handler;
-}
-
-
-/** Starts listening to CTRL-C signals.
- * @return true if handler was activated. */
-bool SignalHandler::start () {
- if (!_active) {
- _break = false;
- if (signal(SIGINT, SignalHandler::callback) != SIG_ERR) {
- _active = true;
- return true;
- }
- }
- return false;
-}
-
-
-/** Stops listening for CTRL-C signals. */
-void SignalHandler::stop () {
- if (_active) {
- signal(SIGINT, SIG_DFL);
- _active = false;
- }
-}
-
-
-/** Checks for incoming signals and throws an exception if CTRL-C was caught.
- * @throw SignalException */
-void SignalHandler::check() {
- if (_break)
- throw SignalException();
-}
-
-
-void SignalHandler::trigger (bool notify) {
- _break = true;
- if (notify)
- check();
-}
-
-
-/** This function is called on CTRL-C signals. */
-void SignalHandler::callback (int) {
- _break = true;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.h
deleted file mode 100644
index dfece9963e4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SignalHandler.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*************************************************************************
-** SignalHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SIGNALHANDLER_H
-#define DVISVGM_SIGNALHANDLER_H
-
-#include <exception>
-
-struct SignalException : public std::exception {
-};
-
-
-class SignalHandler
-{
- public:
- ~SignalHandler ();
- static SignalHandler& instance ();
- bool start ();
- void stop ();
- void check ();
- void trigger (bool notify);
- bool active () const {return _active;}
-
- protected:
- SignalHandler () : _active(false) {}
- static void callback (int signal);
-
- private:
- bool _active; ///< true if listening for signals
- static bool _break; ///< true if signal has been caught
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialActions.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialActions.h
deleted file mode 100644
index e7b4503d148..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialActions.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*************************************************************************
-** SpecialActions.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SPECIALACTIONS_H
-#define DVISVGM_SPECIALACTIONS_H
-
-#include <string>
-#include "BoundingBox.h"
-#include "Color.h"
-#include "Matrix.h"
-
-
-struct XMLNode;
-class XMLElementNode;
-
-struct SpecialActions
-{
- virtual ~SpecialActions () {}
- virtual double getX () const =0;
- virtual double getY () const =0;
- virtual void setX (double x) =0;
- virtual void setY (double y) =0;
- virtual void finishLine () =0;
- virtual void setColor (const Color &color) =0;
- virtual Color getColor () const =0;
- virtual void setMatrix (const Matrix &m) =0;
- virtual const Matrix& getMatrix () const =0;
- virtual void getPageTransform (Matrix &matrix) const =0;
- virtual void setBgColor (const Color &color) =0;
- virtual void appendToPage (XMLNode *node) =0;
- virtual void appendToDefs (XMLNode *node) =0;
- virtual void prependToPage (XMLNode *node) =0;
- virtual void pushContextElement (XMLElementNode *node) =0;
- virtual void popContextElement () =0;
- virtual BoundingBox& bbox () =0;
- virtual BoundingBox& bbox (const std::string &name, bool reset=false) =0;
- virtual void embed (const BoundingBox &bbox) =0;
- virtual void embed (const DPair &p, double r=0) =0;
- virtual void progress (const char *id) {}
- virtual int getDVIStackDepth () const {return 0;}
-};
-
-
-class SpecialEmptyActions : public SpecialActions
-{
- public:
- double getX () const {return 0;}
- double getY () const {return 0;}
- void setX (double x) {}
- void setY (double y) {}
- void finishLine () {}
- void setColor (const Color &color) {}
- void setBgColor (const Color &color) {}
- Color getColor () const {return Color::BLACK;}
- void setMatrix (const Matrix &m) {}
- const Matrix& getMatrix () const {return _matrix;}
- void getPageTransform (Matrix &matrix) const {}
- void appendToPage (XMLNode *node) {}
- void appendToDefs (XMLNode *node) {}
- void prependToPage (XMLNode *node) {}
- void pushContextElement (XMLElementNode *node) {}
- void popContextElement () {}
- BoundingBox& bbox () {return _bbox;}
- BoundingBox& bbox (const std::string &name, bool reset=false) {return _bbox;}
- void embed (const BoundingBox &bbox) {}
- void embed (const DPair &p, double r=0) {}
-
- private:
- BoundingBox _bbox;
- Matrix _matrix;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialHandler.h
deleted file mode 100644
index b11bab4782c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialHandler.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*************************************************************************
-** SpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SPECIALHANDLER_H
-#define DVISVGM_SPECIALHANDLER_H
-
-#include <istream>
-#include <list>
-#include "MessageException.h"
-
-
-struct SpecialActions;
-class SpecialManager;
-
-
-struct SpecialException : public MessageException
-{
- SpecialException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-struct DVIEndPageListener
-{
- virtual ~DVIEndPageListener () {}
- virtual void dviEndPage (unsigned pageno) =0;
-};
-
-
-struct DVIPositionListener
-{
- virtual ~DVIPositionListener () {}
- virtual void dviMovedTo (double x, double y) =0;
-};
-
-
-struct SpecialHandler
-{
- friend class SpecialManager;
-
- virtual ~SpecialHandler () {}
- virtual const char** prefixes () const=0;
- virtual const char* info () const=0;
- virtual const char* name () const=0;
- virtual void setDviScaleFactor (double dvi2bp) {}
- virtual bool process (const char *prefix, std::istream &is, SpecialActions *actions)=0;
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.cpp
deleted file mode 100644
index 86aca42cd02..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*************************************************************************
-** SpecialManager.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <iomanip>
-#include <sstream>
-#include "SpecialActions.h"
-#include "SpecialHandler.h"
-#include "SpecialManager.h"
-#include "PsSpecialHandler.h"
-#include "macros.h"
-
-using namespace std;
-
-
-SpecialManager::~SpecialManager () {
- unregisterHandlers();
-}
-
-
-/** Remove all registered handlers. */
-void SpecialManager::unregisterHandlers () {
- FORALL(_pool, vector<SpecialHandler*>::iterator, it)
- delete *it;
- _pool.clear();
- _handlers.clear();
- _endPageListeners.clear();
- _positionListeners.clear();
-}
-
-
-/** Registers a single special handler. This method doesn't check if a
- * handler of the same class is already registered.
- * @param[in] handler pointer to handler to be registered */
-void SpecialManager::registerHandler (SpecialHandler *handler) {
- if (handler) {
- // get array of prefixes this handler is responsible for
- _pool.push_back(handler);
- for (const char **p=handler->prefixes(); *p; ++p)
- _handlers[*p] = handler;
- if (DVIEndPageListener *listener = dynamic_cast<DVIEndPageListener*>(handler))
- _endPageListeners.push_back(listener);
- if (DVIPositionListener *listener = dynamic_cast<DVIPositionListener*>(handler))
- _positionListeners.push_back(listener);
- }
-}
-
-
-/** Registers several special handlers at once.
- * If ignorelist == 0, all given handlers are registered. To exclude selected sets of
- * specials, the corresponding names can be given separated by non alpha-numeric characters,
- * e.g. "color, ps, em" or "color: ps em" etc.
- * @param[in] handlers pointer to zero-terminated array of handlers to be registered
- * @param[in] ignorelist list of special names to be ignored */
-void SpecialManager::registerHandlers (SpecialHandler **handlers, const char *ignorelist) {
- if (handlers) {
- string ign = ignorelist ? ignorelist : "";
- FORALL(ign, string::iterator, it)
- if (!isalnum(*it))
- *it = '%';
- ign = "%"+ign+"%";
-
- for (; *handlers; handlers++) {
- if (!(*handlers)->name() || ign.find("%"+string((*handlers)->name())+"%") == string::npos)
- registerHandler(*handlers);
- else
- delete *handlers;
- }
- }
-}
-
-
-/** Looks for an appropriate handler for a given special prefix.
- * @param[in] prefix the special prefix, e.g. "color" or "em"
- * @return in case of success: pointer to handler, 0 otherwise */
-SpecialHandler* SpecialManager::findHandler (const string &prefix) const {
- ConstIterator it = _handlers.find(prefix);
- if (it != _handlers.end())
- return it->second;
- return 0;
-}
-
-
-static string extract_prefix (istream &is) {
- int c;
- string prefix;
- while (isalnum(c=is.get()))
- prefix += c;
- if (ispunct(c)) // also add seperation character to identifying prefix
- prefix += c;
- if (prefix == "ps:" && is.peek() == ':')
- prefix += is.get();
- return prefix;
-}
-
-
-/** Executes a special command.
- * @param[in] special the special expression
- * @param[in] dvi2bp factor to convert DVI units to PS points
- * @param[in] actions actions the special handlers can perform
- * @param[in] listener object that wants to be notified about the processing state
- * @return true if the special could be processed successfully
- * @throw SpecialException in case of errors during special processing */
-bool SpecialManager::process (const string &special, double dvi2bp, SpecialActions *actions, Listener *listener) const {
- istringstream iss(special);
- string prefix = extract_prefix(iss);
- bool success=false;
- if (SpecialHandler *handler = findHandler(prefix)) {
- if (listener)
- listener->beginSpecial(prefix.c_str());
- handler->setDviScaleFactor(dvi2bp);
- success = handler->process(prefix.c_str(), iss, actions);
- if (listener)
- listener->endSpecial(prefix.c_str());
- }
- return success;
-}
-
-
-void SpecialManager::leavePSHeaderSection () const {
- if (PsSpecialHandler *pshandler = dynamic_cast<PsSpecialHandler*>(findHandler("!")))
- pshandler->enterBodySection();
-}
-
-
-void SpecialManager::notifyEndPage (unsigned pageno) const {
- FORALL(_endPageListeners, vector<DVIEndPageListener*>::const_iterator, it)
- (*it)->dviEndPage(pageno);
-}
-
-
-void SpecialManager::notifyPositionChange (double x, double y) const {
- FORALL(_positionListeners, vector<DVIPositionListener*>::const_iterator, it)
- (*it)->dviMovedTo(x, y);
-}
-
-
-void SpecialManager::writeHandlerInfo (ostream &os) const {
- ios::fmtflags osflags(os.flags());
- typedef map<string, SpecialHandler*> SortMap;
- SortMap m;
- FORALL(_handlers, ConstIterator, it)
- if (it->second->name())
- m[it->second->name()] = it->second;
- FORALL(m, SortMap::iterator, it) {
- os << setw(10) << left << it->second->name() << ' ';
- if (it->second->info())
- os << it->second->info();
- os << endl;
- }
- os.flags(osflags); // restore format flags
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.h
deleted file mode 100644
index a0cdd26ac91..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/SpecialManager.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*************************************************************************
-** SpecialManager.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SPECIALMANAGER_H
-#define DVISVGM_SPECIALMANAGER_H
-
-#include <map>
-#include <ostream>
-#include <string>
-#include <vector>
-#include "SpecialHandler.h"
-
-struct SpecialActions;
-
-class SpecialManager
-{
- public:
- struct Listener
- {
- virtual ~Listener () {}
- virtual void beginSpecial (const char *prefix)=0;
- virtual void endSpecial (const char *prefix)=0;
- };
-
- private:
- typedef std::vector<SpecialHandler*> HandlerPool;
- typedef std::map<std::string,SpecialHandler*> HandlerMap;
- typedef HandlerMap::iterator Iterator;
- typedef HandlerMap::const_iterator ConstIterator;
-
- public:
- SpecialManager () {}
- virtual ~SpecialManager ();
- void registerHandler (SpecialHandler *handler);
- void registerHandlers (SpecialHandler **handlers, const char *ignorelist);
- void unregisterHandlers ();
- bool process (const std::string &special, double dvi2bp, SpecialActions *actions, Listener *listener=0) const;
- void notifyEndPage (unsigned pageno) const;
- void notifyPositionChange (double x, double y) const;
- void writeHandlerInfo (std::ostream &os) const;
- void leavePSHeaderSection () const;
-
- protected:
- SpecialManager (const SpecialManager &) {}
- void operator = (const SpecialManager &) {}
- SpecialHandler* findHandler (const std::string &prefix) const;
-
- private:
- HandlerPool _pool; ///< stores pointers to all handlers
- HandlerMap _handlers; ///< pointers to handlers for corresponding prefixes
- std::vector<DVIEndPageListener*> _endPageListeners;
- std::vector<DVIPositionListener*> _positionListeners;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.cpp
deleted file mode 100644
index 1464b9fdcf6..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*************************************************************************
-** StreamReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "CRC32.h"
-#include "StreamReader.h"
-#include "macros.h"
-
-using namespace std;
-
-StreamReader::StreamReader (istream &s)
- : _is(&s)
-{
-}
-
-
-istream& StreamReader::replaceStream (istream &in) {
- istream &ret = *_is;
- _is = &in;
- return ret;
-}
-
-
-/** Reads an unsigned integer from assigned input stream.
- * @param[in] bytes number of bytes to read (max. 4)
- * @return read integer */
-UInt32 StreamReader::readUnsigned (int bytes) {
- UInt32 ret = 0;
- for (bytes--; bytes >= 0 && !_is->eof(); bytes--) {
- UInt32 b = _is->get();
- ret |= b << (8*bytes);
- }
- return ret;
-}
-
-
-/** Reads an unsigned integer from assigned input stream and updates the CRC32 checksum.
- * @param[in] bytes number of bytes to read (max. 4)
- * @param[in,out] crc32 checksum to be updated
- * @return read integer */
-UInt32 StreamReader::readUnsigned (int bytes, CRC32 &crc32) {
- UInt32 ret = readUnsigned(bytes);
- crc32.update(ret, bytes);
- return ret;
-}
-
-
-/** Reads an signed integer from assigned input stream.
- * @param[in] bytes number of bytes to read (max. 4)
- * @return read integer */
-Int32 StreamReader::readSigned (int bytes) {
- Int32 ret = _is->get();
- if (ret & 128) // negative value?
- ret |= 0xffffff00;
- for (bytes-=2; bytes >= 0 && !_is->eof(); bytes--)
- ret = (ret << 8) | _is->get();
- return ret;
-}
-
-
-/** Reads an signed integer from assigned input stream and updates the CRC32 checksum.
- * @param[in] bytes number of bytes to read (max. 4)
- * @param[in,out] crc32 checksum to be updated
- * @return read integer */
-Int32 StreamReader::readSigned (int bytes, CRC32 &crc32) {
- Int32 ret = readSigned(bytes);
- crc32.update(ret, bytes);
- return ret;
-}
-
-
-/** Reads a string terminated by a 0-byte. */
-string StreamReader::readString () {
- if (!_is)
- throw StreamReaderException("no stream assigned");
- string ret;
- while (!_is->eof() && _is->peek() > 0)
- ret += _is->get();
- _is->get(); // skip 0-byte
- return ret;
-}
-
-
-/** Reads a string terminated by a 0-byte and updates the CRC32 checksum.
- * @param[in,out] crc32 checksum to be updated
- * @param[in] finalZero consider final 0-byte in checksum
- * @return the string read */
-string StreamReader::readString (CRC32 &crc32, bool finalZero) {
- string ret = readString();
- crc32.update((const UInt8*)ret.c_str(), ret.length());
- if (finalZero)
- crc32.update(0, 1);
- return ret;
-}
-
-
-/** Reads a string of a given length.
- * @param[in] length number of characters to read
- * @return the string read */
-string StreamReader::readString (int length) {
- if (!_is)
- throw StreamReaderException("no stream assigned");
- char *buf = new char[length+1];
- if (length <= 0)
- *buf = 0;
- else {
- _is->read(buf, length); // reads 'length' bytes
- buf[length] = 0;
- }
- string ret = buf;
- delete [] buf;
- return ret;
-}
-
-
-/** Reads a string of a given length and updates the CRC32 checksum.
- * @param[in] length number of characters to read
- * @param[in,out] crc32 checksum to be updated
- * @return the string read */
-string StreamReader::readString (int length, CRC32 &crc32) {
- string ret = readString(length);
- crc32.update(ret.c_str());
- return ret;
-}
-
-
-vector<UInt8>& StreamReader::readBytes (int n, vector<UInt8> &bytes) {
- if (n > 0)
- in().read((char*)&bytes[0], n);
- return bytes;
-}
-
-
-vector<UInt8>& StreamReader::readBytes (int n, vector<UInt8> &bytes, CRC32 &crc32) {
- readBytes(n, bytes);
- crc32.update(&bytes[0], bytes.size());
- return bytes;
-}
-
-
-int StreamReader::readByte (CRC32 &crc32) {
- int ret = readByte();
- if (ret >= 0) {
- const UInt8 c = UInt8(ret & 0xff);
- crc32.update(&c, 1);
- }
- return ret;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.h
deleted file mode 100644
index a35bae2d91f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamReader.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** StreamReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_STREAMREADER_H
-#define DVISVGM_STREAMREADER_H
-
-#include <istream>
-#include <string>
-#include <vector>
-#include "MessageException.h"
-#include "types.h"
-
-class CRC32;
-
-class StreamReader
-{
- public:
- StreamReader (std::istream &s);
- virtual ~StreamReader () {}
- std::istream& replaceStream (std::istream &s);
- UInt32 readUnsigned (int n);
- UInt32 readUnsigned (int n, CRC32 &crc32);
- Int32 readSigned (int n);
- Int32 readSigned (int n, CRC32 &crc32);
- std::string readString ();
- std::string readString (CRC32 &crc32, bool finalZero=false);
- std::string readString (int length);
- std::string readString (int length, CRC32 &crc32);
- std::vector<UInt8>& readBytes (int n, std::vector<UInt8> &bytes);
- std::vector<UInt8>& readBytes (int n, std::vector<UInt8> &bytes, CRC32 &crc32);
- int readByte () {return _is->get();}
- int readByte (CRC32 &crc32);
- void seek (std::istream::streampos pos, std::ios::seekdir dir) {_is->seekg(pos, dir);}
-
- protected:
- std::istream& in () {return *_is;}
-
- private:
- std::istream *_is;
-};
-
-
-struct StreamReaderException : public MessageException
-{
- StreamReaderException (const std::string &msg) : MessageException(msg) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.cpp
deleted file mode 100644
index 203a1788f87..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*************************************************************************
-** StreamWriter.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "CRC32.h"
-#include "StreamWriter.h"
-
-using namespace std;
-
-
-/** Writes an unsigned integer to the output stream.
- * @param[in] val the value to write
- * @param[in] n number of bytes to be considered */
-void StreamWriter::writeUnsigned (UInt32 val, int n) {
- for (n--; n >= 0; n--)
- _os.put((val >> (8*n)) & 0xff);
-}
-
-
-/** Writes a signed integer to the output stream.
- * @param[in] val the value to write
- * @param[in] n number of bytes to be considered */
-void StreamWriter::writeSigned (Int32 val, int n) {
- writeUnsigned((UInt32)val, n);
-}
-
-
-/** Writes a signed integer to the output stream.
- * @param[in] val the value to write
- * @param[in] finalZero if true, a final 0-byte is appended */
-void StreamWriter::writeString (const string &str, bool finalZero) {
- for (size_t i=0; i < str.length(); i++)
- _os.put(str[i]);
- if (finalZero)
- _os.put(0);
-}
-
-
-/** Writes an unsigned integer to the output stream.
- * @param[in] val the value to write
- * @param[in] n number of bytes to be considered
- * @param[in,out] crc32 checksum to be updated */
-void StreamWriter::writeUnsigned (UInt32 val, int n, CRC32 &crc32) {
- writeUnsigned(val, n);
- crc32.update(val, n);
-}
-
-
-/** Writes a signed integer to the output stream and updates the CRC32 checksum.
- * @param[in] val the value to write
- * @param[in] n number of bytes to be considered
- * @param[in,out] crc32 checksum to be updated */
-void StreamWriter::writeSigned (Int32 val, int n, CRC32 &crc32) {
- writeUnsigned((UInt32)val, n, crc32);
-}
-
-
-/** Writes a string to the output stream and updates the CRC32 checksum.
- * @param[in] str the string to write
- * @param[in,out] crc32 checksum to be updated
- * @param[in] finalZero if true, a final 0-byte is appended */
-void StreamWriter::writeString (const std::string &str, CRC32 &crc32, bool finalZero) {
- writeString(str, finalZero);
- crc32.update((const UInt8*)str.c_str(), str.length() + (finalZero ? 1 : 0));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.h
deleted file mode 100644
index 05999c48fb5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/StreamWriter.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
-** StreamWriter.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_STREAMWRITER_H
-#define DVISVGM_STREAMWRITER_H
-
-#include <ostream>
-#include "types.h"
-
-
-class CRC32;
-
-class StreamWriter
-{
- public:
- StreamWriter (std::ostream &os) : _os(os) {}
- virtual ~StreamWriter () {}
- void writeUnsigned (UInt32 val, int n);
- void writeSigned (Int32 val, int n);
- void writeString (const std::string &str, bool finalZero=false);
- void writeUnsigned (UInt32 val, int n, CRC32 &crc32);
- void writeSigned (Int32 val, int n, CRC32 &crc32);
- void writeString (const std::string &str, CRC32 &crc32, bool finalZero=false);
-
- private:
- std::ostream &_os;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.cpp
deleted file mode 100644
index 1ac23a66139..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-/*************************************************************************
-** Subfont.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cstdlib>
-#include <cstring>
-#include <fstream>
-#include <limits>
-#include "FileFinder.h"
-#include "Subfont.h"
-#include "Message.h"
-
-using namespace std;
-
-// helper functions
-
-static int skip_mapping_data (istream &is);
-static bool scan_line (const char *line, int lineno, UInt16 *mapping, const string &fname, int &pos);
-
-
-/** Constructs a new SubfontDefinition object.
- * @param[in] name name of subfont definition
- * @param[in] fpath path to corresponding .sfd file*/
-SubfontDefinition::SubfontDefinition (const string &name, const char *fpath) : _sfname(name) {
- // read all subfont IDs from the .sfd file but skip the mapping data
- ifstream is(fpath);
- while (is) {
- if (is.peek() == '#') // comment line?
- is.ignore(numeric_limits<int>::max(), '\n'); // => skip it
- else if (isspace(is.peek()))
- is.get();
- else {
- string id;
- while (is && !isspace(is.peek()))
- id += is.get();
- if (!id.empty()) {
- pair<Iterator, bool> state = _subfonts.insert(pair<string,Subfont*>(id, (Subfont*)0));
- if (state.second) // id was not present in map already
- state.first->second = new Subfont(*this, state.first->first);
- skip_mapping_data(is);
- }
- }
- }
-}
-
-
-SubfontDefinition::~SubfontDefinition () {
- for (Iterator it=_subfonts.begin(); it != _subfonts.end(); ++it)
- delete it->second;
-}
-
-
-/** Looks for a subfont definition of the given name and returns the corresponding object.
- * All objects are only created once for a given name and stored in an internal cache.
- * @param[in] name name of subfont definition to lookup
- * @return pointer to subfont definition object or 0 if it doesn't exist */
-SubfontDefinition* SubfontDefinition::lookup (const std::string &name) {
- typedef map<string,SubfontDefinition*> SFDMap;
- static SFDMap sfdMap;
- SFDMap::iterator it = sfdMap.find(name);
- if (it != sfdMap.end())
- return it->second;
- SubfontDefinition *sfd=0;
- if (const char *path = FileFinder::lookup(name+".sfd", false)) {
- sfd = new SubfontDefinition(name, path);
- sfdMap[name] = sfd;
- }
- return sfd;
-}
-
-
-/** Returns the full path to the corresponding .sfd file or 0 if it can't be found. */
-const char* SubfontDefinition::path () const {
- return FileFinder::lookup(filename(), false);
-}
-
-
-/** Returns the subfont with the given ID, or 0 if it doesn't exist. */
-Subfont* SubfontDefinition::subfont (const string &id) const {
- ConstIterator it = _subfonts.find(id);
- if (it != _subfonts.end())
- return it->second;
- return 0;
-}
-
-
-/** Returns all subfonts defined in this SFD. */
-int SubfontDefinition::subfonts (vector<Subfont*> &sfs) const {
- for (ConstIterator it=_subfonts.begin(); it != _subfonts.end(); ++it)
- sfs.push_back(it->second);
- return sfs.size();
-}
-
-//////////////////////////////////////////////////////////////////////
-
-Subfont::~Subfont () {
- delete [] _mapping;
-}
-
-
-/** Reads the character mappings for a given subfont ID.
- * Format of subfont definition (sfd) files:
- * sfd ::= (ID entries | '#' <string> '\n')*
- * ID ::= <string without whitespace>
- * entries ::= (integer | integer ':' | integer '_' integer)*
- * The mapping data for a subfont is given as a sequence of 256 16-bit values where
- * value v at position c defines the (global) character code that is assigned to the
- * local subfont character c. The sequence v,v+1,v+2,...,v+n can be abbreviated with
- * v '_' v+n, e.g. 10_55. In order to continue the sequence at a different position,
- * the syntax number ':' can be used. Example: 10: 5 6 7 assigns the values v=5, 6, 7
- * to c=10, 11 and 12, respectively.
- * @return true if the data has been read successfully */
-bool Subfont::read () {
- if (_mapping) // if there's already a mapping assigned, we're finished here
- return true;
- if (const char *p = _sfd.path()) {
- ifstream is(p);
- if (!is)
- return false;
-
- int lineno=1;
- while (is) {
- if (is.peek() == '#' || is.peek() == '\n') {
- is.ignore(numeric_limits<int>::max(), '\n'); // skip comment and empty line
- lineno++;
- }
- else if (isspace(is.peek()))
- is.get();
- else {
- string id;
- while (is && !isspace(is.peek()))
- id += is.get();
- if (id != _id)
- lineno += skip_mapping_data(is);
- else {
- // build mapping array
- _mapping = new UInt16[256];
- memset(_mapping, 0, 256*sizeof(UInt16));
- int pos=0;
- char buf[1024];
- bool complete=false;
- while (!complete) {
- is.getline(buf, 1024);
- complete = scan_line(buf, lineno, _mapping, _sfd.filename() ,pos);
- }
- return true;
- }
- }
- }
- }
- return false;
-}
-
-
-/** Returns the global character code of the target font for a
- * (local) character code of the subfont.
- * @param[in] c local character code relative to the subfont
- * @return character code of the target font */
-UInt16 Subfont::decode (unsigned char c) {
- if (!_mapping && !read())
- return 0;
- return _mapping[c];
-}
-
-
-//////////////////////////////////////////////////////////////////////
-
-
-/** Skips the mapping data of a subfont entry.
- * @param[in] is stream to read from
- * @return number of lines skipped */
-static int skip_mapping_data (istream &is) {
- char buf[1024];
- bool complete=false;
- int lines=0;
- while (is && !complete) {
- is.getline(buf, 1024);
- if (is.gcount() > 1)
- lines++;
- const char *p = buf+is.gcount()-2;
- while (p >= buf && isspace(*p))
- p--;
- complete = (p < buf || *p != '\\'); // line doesn't end with backslash
- }
- return lines;
-}
-
-
-/** Scans a single line of mapping data and stores the values in the given array.
- * @param[in] line the line of text to be scanned
- * @param[in] lineno line number used in exception messages
- * @param[in,out] mapping the mapping data
- * @param[in] fname name of the mapfile being scanned
- * @param[in,out] offset position/index of next mapping value
- * @return true if the line is the last one the current mapping sequence, i.e. the line doesn't end with a backslash */
-static bool scan_line (const char *line, int lineno, UInt16 *mapping, const string &fname, int &offset) {
- const char *p=line;
- char *q;
- for (; *p && isspace(*p); p++);
- while (*p) {
- if (*p == '\\') {
- while (*++p)
- if (!isspace(*p))
- throw SubfontException("unexpected backslash in mapping table", fname, lineno);
- }
- else {
- long val1 = strtol(p, &q, 0); // first value of range
- long val2; // last value of range
- ostringstream oss; // output stream for exception messages
- switch (*q) {
- case ':':
- if (val1 < 0 || val1 > 255)
- throw SubfontException(oss << "offset value " << val1 << " out of range (0-255)", fname, lineno);
- offset = val1;
- val1 = -1;
- q++;
- break;
- case '_':
- p = q+1;
- val2 = strtol(p, &q, 0);
- if (val1 < 0 || val1 > 0xffffL)
- throw SubfontException(oss << "table value " << val1 << " out of range", fname, lineno);
- if (val2 < 0 || val2 > 0xffffL)
- throw SubfontException(oss << "table value " << val2 << " out of range", fname, lineno);
- if (p == q || (!isspace(*q) && *q != '\\' && *q))
- throw SubfontException(oss << "unexpected character '" << *q << "'", fname, lineno);
- break;
- default:
- if (p == q || (!isspace(*q) && *q != '\\' && *q))
- throw SubfontException(oss << "unexpected character '" << *q << "'", fname, lineno);
- if (val1 < 0 || val1 > 0xffffL)
- throw SubfontException("invalid character code", fname, lineno);
- val2 = val1;
- }
- if (val1 >= 0) {
- if (val1 > val2 || offset+val2-val1 > 255)
- throw SubfontException(oss << "invalid range in mapping table: " << hex << val1 << '_' << val2, fname, lineno);
- for (long v=val1; v <= val2; v++) {
- if (mapping[offset])
- throw SubfontException(oss << "mapping of character " << offset << " already defined", fname, lineno);
- mapping[offset++] = static_cast<UInt16>(v);
- }
- }
- for (p=q; *p && isspace(*p); p++);
- }
- }
- for (p--; p >= line && isspace(*p); p--);
- return p < line || *p != '\\';
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.h
deleted file mode 100644
index 03ce75c3e99..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Subfont.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*************************************************************************
-** Subfont.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SUBFONT_H
-#define DVISVGM_SUBFONT_H
-
-#include <istream>
-#include <map>
-#include <sstream>
-#include <string>
-#include <vector>
-#include "MessageException.h"
-#include "types.h"
-
-
-class Subfont;
-
-
-/** Represents a collection of subfont mappings as defined in a .sfd file, and
- * encapsulates the evaluation of these files. */
-class SubfontDefinition
-{
- typedef std::map<std::string, Subfont*> Subfonts;
- typedef Subfonts::iterator Iterator;
- typedef Subfonts::const_iterator ConstIterator;
- public:
- ~SubfontDefinition ();
- static SubfontDefinition* lookup (const std::string &name);
-// int getIDs (std::vector<std::string> &ids) const;
- const std::string& name() const {return _sfname;}
- std::string filename() const {return _sfname+".sfd";}
- Subfont* subfont (const std::string &id) const;
- int subfonts (std::vector<Subfont*> &sfs) const;
- const char* path () const;
-
- protected:
- SubfontDefinition (const std::string &name, const char *fpath);
- SubfontDefinition (const SubfontDefinition &sfd) {}
-
- private:
- std::string _sfname; ///< name of subfont
- Subfonts _subfonts; ///< all subfonts defined in the corresponding .sfd file
-};
-
-
-/** Represents a single subfont mapping defined in a SubfontDefinition (.sfd file). */
-class Subfont
-{
- friend class SubfontDefinition;
- public:
- ~Subfont();
- const std::string& id () const {return _id;}
- UInt16 decode (unsigned char c);
-
- protected:
- Subfont (SubfontDefinition &sfd, const std::string &id) : _sfd(sfd), _id(id), _mapping(0) {}
- bool read ();
-
- private:
- SubfontDefinition &_sfd; ///< SubfontDefinition where this Subfont belongs to
- const std::string &_id; ///< id of this subfont as specified in the .sfd file
- UInt16 *_mapping; ///< the character mapping table with 256 entries
-};
-
-
-class SubfontException : public MessageException
-{
- public:
- SubfontException (const std::string &msg, const std::string &fname, int lineno=0)
- : MessageException(msg), _fname(fname), _lineno(lineno) {}
-
- SubfontException (const std::ostream &oss, const std::string &fname, int lineno=0)
- : MessageException(dynamic_cast<const std::ostringstream&>(oss).str()), _fname(fname), _lineno(lineno) {}
-
- virtual ~SubfontException () throw() {}
-
- const char* filename () const {return _fname.c_str();}
- int lineno () const {return _lineno;}
-
- private:
- std::string _fname;
- int _lineno;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.cpp
deleted file mode 100644
index 6769f843cae..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*************************************************************************
-** System.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <ctime>
-#include "System.h"
-
-#if defined (HAVE_SYS_TIME_H)
-#include <sys/time.h>
-#elif defined (HAVE_SYS_TIMEB_H)
-#include <sys/timeb.h>
-#endif
-
-
-using namespace std;
-
-
-/** Returns timestamp (wall time) in seconds. */
-double System::time () {
-#if defined (HAVE_SYS_TIME_H)
- struct timeval tv;
- gettimeofday(&tv, NULL);
- return tv.tv_sec + tv.tv_usec/1000000.0;
-#elif defined (HAVE_SYS_TIMEB_H)
- struct timeb tb;
- ftime(&tb);
- return tb.time + tb.millitm/1000.0;
-#else
- clock_t myclock = clock();
- return double(myclock)/CLOCKS_PER_SEC;
-#endif
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.h
deleted file mode 100644
index 7200c93f291..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/System.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*************************************************************************
-** System.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_SYSTEM_H
-#define DVISVGM_SYSTEM_H
-
-namespace System
-{
- double time ();
-}
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.cpp
deleted file mode 100644
index db36b7f50b6..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*************************************************************************
-** TFM.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include "FileFinder.h"
-#include "Message.h"
-#include "StreamReader.h"
-#include "TFM.h"
-
-using namespace std;
-
-
-/** Reads a sequence of n TFM words (4 Bytes each).
- * @param[in] sr the TFM data is read from this object
- * @param[out] v the read words
- * @param[in] n number of words to be read */
-template <typename T>
-static void read_words (StreamReader &sr, vector<T> &v, unsigned n) {
- v.clear();
- v.resize(n);
- for (unsigned i=0; i < n; i++)
- v[i] = sr.readUnsigned(4);
-}
-
-
-/** Converts a TFM fix point value to double (PS point units). */
-static double fix2double (FixWord fix) {
- const double pt2bp = 72/72.27;
- return double(fix)/(1 << 20)*pt2bp;
-}
-
-
-TFM::TFM (istream &is) {
- is.seekg(0);
- StreamReader sr(is);
- UInt16 lf = UInt16(sr.readUnsigned(2)); // length of entire file in 4 byte words
- UInt16 lh = UInt16(sr.readUnsigned(2)); // length of header in 4 byte words
- _firstChar= UInt16(sr.readUnsigned(2)); // smallest character code in font
- _lastChar = UInt16(sr.readUnsigned(2)); // largest character code in font
- UInt16 nw = UInt16(sr.readUnsigned(2)); // number of words in width table
- UInt16 nh = UInt16(sr.readUnsigned(2)); // number of words in height table
- UInt16 nd = UInt16(sr.readUnsigned(2)); // number of words in depth table
- UInt16 ni = UInt16(sr.readUnsigned(2)); // number of words in italic corr. table
- UInt16 nl = UInt16(sr.readUnsigned(2)); // number of words in lig/kern table
- UInt16 nk = UInt16(sr.readUnsigned(2)); // number of words in kern table
- UInt16 ne = UInt16(sr.readUnsigned(2)); // number of words in ext. char table
- UInt16 np = UInt16(sr.readUnsigned(2)); // number of font parameter words
-
- if (6+lh+(_lastChar-_firstChar+1)+nw+nh+nd+ni+nl+nk+ne+np != lf)
- throw FontMetricException("inconsistent length values");
- if (_firstChar >= _lastChar || _lastChar > 255 || ne > 256)
- throw FontMetricException("character codes out of range");
-
- readHeader(sr);
- is.seekg(24+lh*4); // move to char info table
- readTables(sr, nw, nh, nd, ni);
-}
-
-
-void TFM::readHeader (StreamReader &sr) {
- _checksum = sr.readUnsigned(4);
- _designSize = sr.readUnsigned(4);
-}
-
-
-void TFM::readTables (StreamReader &sr, int nw, int nh, int nd, int ni) {
- read_words(sr, _charInfoTable, _lastChar-_firstChar+1);
- read_words(sr, _widthTable, nw);
- read_words(sr, _heightTable, nh);
- read_words(sr, _depthTable, nd);
- read_words(sr, _italicTable, ni);
-}
-
-
-/** Returns the design size of this font in PS point units. */
-double TFM::getDesignSize () const {
- return fix2double(_designSize);
-}
-
-
-/** Returns the index to the entry of the character info table that describes the metric of a given character.
- * @param[in] c character whose index is retrieved
- * @return table index for character c, or -1 if there's no entry */
-int TFM::charIndex (int c) const {
- if (c < _firstChar || c > _lastChar || size_t(c-_firstChar) >= _charInfoTable.size())
- return -1;
- return c-_firstChar;
-}
-
-
-// the char info word for each character consists of 4 bytes holding the following information:
-// width index w, height index (h), depth index (d), italic correction index (it),
-// tag (tg) and a remainder:
-//
-// byte 1 | byte 2 | byte 3 | byte 4
-// xxxxxxxx | xxxx xxxx | xxxxxx xx | xxxxxxxx
-// w | h d | it tg | remainder
-
-/** Returns the width of char c in PS point units. */
-double TFM::getCharWidth (int c) const {
- int index = charIndex(c);
- if (index < 0)
- return 0;
- index = (_charInfoTable[index] >> 24) & 0xFF;
- return fix2double(_widthTable[index]) * fix2double(_designSize);
-}
-
-
-/** Returns the height of char c in PS point units. */
-double TFM::getCharHeight (int c) const {
- int index = charIndex(c);
- if (index < 0)
- return 0;
- index = (_charInfoTable[index] >> 20) & 0x0F;
- return fix2double(_heightTable[index]) * fix2double(_designSize);
-}
-
-
-/** Returns the depth of char c in PS point units. */
-double TFM::getCharDepth (int c) const {
- int index = charIndex(c);
- if (index < 0)
- return 0;
- index = (_charInfoTable[index] >> 16) & 0x0F;
- return fix2double(_depthTable[index]) * fix2double(_designSize);
-}
-
-
-/** Returns the italic correction of char c in PS point units. */
-double TFM::getItalicCorr (int c) const {
- int index = charIndex(c);
- if (index < 0)
- return 0;
- index = (_charInfoTable[index] >> 10) & 0x3F;
- return fix2double(_italicTable[index]) * fix2double(_designSize);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.h
deleted file mode 100644
index 1f75d76cb50..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TFM.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*************************************************************************
-** TFM.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_TFM_H
-#define DVISVGM_TFM_H
-
-#include <istream>
-#include <string>
-#include <vector>
-#include "FontMetrics.h"
-#include "types.h"
-#include "StreamReader.h"
-
-class StreamReader;
-
-class TFM : public FontMetrics
-{
- public:
-// TFM (const char *fname);
- TFM (std::istream &is);
- double getDesignSize () const;
- double getCharWidth (int c) const;
- double getCharHeight (int c) const;
- double getCharDepth (int c) const;
- double getItalicCorr (int c) const;
- bool verticalLayout () const {return false;}
- UInt32 getChecksum () const {return _checksum;}
- UInt16 firstChar () const {return _firstChar;}
- UInt16 lastChar () const {return _lastChar;}
-
- protected:
- TFM () : _checksum(0), _firstChar(0), _lastChar(0), _designSize(0) {}
- void readHeader (StreamReader &sr);
- void readTables (StreamReader &sr, int nw, int nh, int nd, int ni);
- virtual int charIndex (int c) const;
- void setCharRange (int firstchar, int lastchar) {_firstChar=firstchar; _lastChar=lastchar;}
-
- private:
- UInt32 _checksum;
- UInt16 _firstChar, _lastChar;
- FixWord _designSize; ///< design size of the font in TeX points (7227 pt = 254 cm)
- std::vector<UInt32> _charInfoTable;
- std::vector<FixWord> _widthTable; ///< character widths in design size units
- std::vector<FixWord> _heightTable; ///< character height in design size units
- std::vector<FixWord> _depthTable; ///< character depth in design size units
- std::vector<FixWord> _italicTable; ///< italic corrections in design size units
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.cpp
deleted file mode 100644
index e95111d196b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-/*************************************************************************
-** Terminal.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "Terminal.h"
-
-#ifdef HAVE_TERMIOS_H
-#include <termios.h>
-#endif
-
-#ifdef GWINSZ_IN_SYS_IOCTL
-#include <sys/ioctl.h>
-#endif
-
-#ifdef __WIN32__
-#include <windows.h>
-#endif
-
-#include <cstdio>
-
-
-using namespace std;
-
-
-const int Terminal::RED = 1;
-const int Terminal::GREEN = 2;
-const int Terminal::BLUE = 4;
-
-const int Terminal::CYAN = GREEN|BLUE;
-const int Terminal::YELLOW = RED|GREEN;
-const int Terminal::MAGENTA = RED|BLUE;
-const int Terminal::WHITE = RED|GREEN|BLUE;
-const int Terminal::DEFAULT = -1;
-const int Terminal::BLACK = 0;
-
-#ifdef __WIN32__
-int Terminal::_defaultColor;
-int Terminal::_cursorHeight;
-#endif
-
-int Terminal::_fgcolor = Terminal::DEFAULT;
-int Terminal::_bgcolor = Terminal::DEFAULT;
-
-
-/** Initializes the terminal. This method should be called before any of the others.
- * @param[in,out] os terminal output stream (currently unused) */
-void Terminal::init (ostream &os) {
-#ifdef __WIN32__
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
- if (h != INVALID_HANDLE_VALUE) {
- CONSOLE_SCREEN_BUFFER_INFO buffer_info;
- GetConsoleScreenBufferInfo(h, &buffer_info);
- _defaultColor = (buffer_info.wAttributes & 0xff);
- CONSOLE_CURSOR_INFO cursor_info;
- GetConsoleCursorInfo(h, &cursor_info);
- _cursorHeight = cursor_info.dwSize;
- }
-#endif
-}
-
-
-/** Finishes the terminal output. Should be called after last terminal action.
- * @param[in,out] os terminal output stream */
-void Terminal::finish (ostream &os) {
- fgcolor(DEFAULT, os);
- bgcolor(DEFAULT, os);
- cursor(true);
-}
-
-
-/** Returns the number of terminal columns (number of characters per row).
- * If it's not possible to retrieve information about the terminal size, 0 is returned. */
-int Terminal::columns () {
-#if defined(TIOCGWINSZ)
- struct winsize ws;
- if (ioctl(fileno(stderr), TIOCGWINSZ, &ws) < 0)
- return 0;
- return ws.ws_col;
-#elif defined(__WIN32__)
- CONSOLE_SCREEN_BUFFER_INFO info;
- if (!GetConsoleScreenBufferInfo(GetStdHandle(STD_ERROR_HANDLE), &info))
- return 0;
- return info.dwSize.X;
-#else
- return 0;
-#endif
-}
-
-
-/** Returns the number of terminal rows.
- * If it's not possible to retrieve information about the terminal size, 0 is returned. */
-int Terminal::rows () {
-#if defined(TIOCGWINSZ)
- struct winsize ws;
- if (ioctl(fileno(stderr), TIOCGWINSZ, &ws) < 0)
- return 0;
- return ws.ws_row;
-#elif defined(__WIN32__)
- CONSOLE_SCREEN_BUFFER_INFO info;
- if (!GetConsoleScreenBufferInfo(GetStdHandle(STD_ERROR_HANDLE), &info))
- return 0;
- return info.dwSize.Y;
-#else
- return 0;
-#endif
-}
-
-
-/** Sets the foreground color.
- * @param[in] color color code
- * @param[in] os terminal output stream */
-void Terminal::fgcolor (int color, ostream &os) {
- _fgcolor = color;
-
-#ifdef __WIN32__
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
- if (h != INVALID_HANDLE_VALUE) {
- CONSOLE_SCREEN_BUFFER_INFO info;
- GetConsoleScreenBufferInfo(h, &info);
- if (_fgcolor == DEFAULT)
- color = _defaultColor & 0x0f;
- else {
- // swap red and blue bits
- color = (color & 0x0a) | ((color & 1) << 2) | ((color & 4) >> 2);
- }
- color = (info.wAttributes & 0xf0) | (color & 0x0f);
- SetConsoleTextAttribute(h, (DWORD)color);
- }
-#else
- bool light = false;
- if (color != DEFAULT && color > 7) {
- light = true;
- color %= 8;
- }
- if (color == DEFAULT) {
- os << "\x1B[0m";
- if (_bgcolor != DEFAULT)
- bgcolor(_bgcolor, os);
- }
- else
- os << "\x1B[" << (light ? '1': '0') << ';' << (30+(color & 0x07)) << 'm';
-#endif
-}
-
-
-/** Sets the background color.
- * @param[in] color color code
- * @param[in] os terminal output stream */
-void Terminal::bgcolor (int color, ostream &os) {
- _bgcolor = color;
-#ifdef __WIN32__
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
- if (h != INVALID_HANDLE_VALUE) {
- CONSOLE_SCREEN_BUFFER_INFO info;
- GetConsoleScreenBufferInfo(h, &info);
- if (_bgcolor == DEFAULT)
- color = (_defaultColor & 0xf0) >> 4;
- else {
- // swap red and blue bits
- color = (color & 0x0a) | ((color & 1) << 2) | ((color & 4) >> 2);
- }
- color = (info.wAttributes & 0x0f) | ((color & 0x0f) << 4);
- SetConsoleTextAttribute(h, (DWORD)color);
- }
-#else
- if (color != DEFAULT && color > 7)
- color %= 8;
- if (color == DEFAULT) {
- os << "\x1B[0m";
- if (_fgcolor != DEFAULT)
- fgcolor(_fgcolor, os);
- }
- else
- os << "\x1B[" << (40+(color & 0x07)) << 'm';
-#endif
-}
-
-
-/** Disables or enables the console cursor
- * @param[in] visible if false, the cursor is disabled, and enabled otherwise */
-void Terminal::cursor (bool visible) {
-#ifdef __WIN32__
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
- if (h != INVALID_HANDLE_VALUE) {
- CONSOLE_CURSOR_INFO cursor_info;
- cursor_info.bVisible = visible;
- cursor_info.dwSize = _cursorHeight;
- SetConsoleCursorInfo(h, &cursor_info);
- }
-#endif
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.h
deleted file mode 100644
index 08ac7e6300a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/Terminal.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*************************************************************************
-** Terminal.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_TERMINAL_H
-#define DVISVGM_TERMINAL_H
-
-#include <ostream>
-
-class Terminal
-{
- public:
- static const int DEFAULT;
- static const int BLACK;
- static const int RED;
- static const int GREEN;
- static const int BLUE;
- static const int CYAN;
- static const int YELLOW;
- static const int MAGENTA;
- static const int WHITE;
-
- public:
- static void init (std::ostream &os);
- static void finish (std::ostream &os);
- static int columns ();
- static int rows ();
- static void fgcolor (int color, std::ostream &os);
- static void bgcolor (int color, std::ostream &os);
- static void cursor (bool visible);
-
- private:
- static int _fgcolor; ///< current foreground color
- static int _bgcolor; ///< current background color
-
-#ifdef __WIN32__
- static int _defaultColor;
- static int _cursorHeight; ///< current height of the cursor in percent
-#endif
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.cpp
deleted file mode 100644
index b9412f3a74d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.cpp
+++ /dev/null
@@ -1,327 +0,0 @@
-/*************************************************************************
-** TpicSpecialHandler.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <cstring>
-#include <sstream>
-#include "Color.h"
-#include "InputBuffer.h"
-#include "InputReader.h"
-#include "SpecialActions.h"
-#include "TpicSpecialHandler.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-#include "types.h"
-
-using namespace std;
-
-
-TpicSpecialHandler::TpicSpecialHandler () {
- reset();
-}
-
-
-void TpicSpecialHandler::dviEndPage (unsigned pageno) {
- reset();
-}
-
-
-void TpicSpecialHandler::reset () {
- _points.clear();
- _penwidth = 1.0;
- _fill = -1.0; // no fill
-}
-
-
-/** Creates SVG elements that draw lines through the recorded points.
- * @param[in] stroke if true, the (out)line is drawn (in black)
- * @param[in] fill if true, enclosed area is filled with current color
- * @param[in] ddist dash/dot distance of line in PS point units
- * (0:solid line, >0:dashed line, <0:dotted line)
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-void TpicSpecialHandler::drawLines (bool stroke, bool fill, double ddist, SpecialActions *actions) {
- if (actions && !_points.empty()) {
- XMLElementNode *elem=0;
- if (_points.size() == 1) {
- const DPair &p = _points.back();
- elem = new XMLElementNode("circle");
- elem->addAttribute("cx", p.x()+actions->getX());
- elem->addAttribute("cy", p.y()+actions->getY());
- elem->addAttribute("r", _penwidth/2.0);
- actions->embed(p, _penwidth/2.0);
- }
- else {
- if (_points.size() == 2 || (!fill && _points.front() != _points.back())) {
- elem = new XMLElementNode("polyline");
- elem->addAttribute("fill", "none");
- elem->addAttribute("stroke-linecap", "round");
- }
- else {
- if (_points.front() == _points.back())
- _points.pop_back();
- if (_fill < 0)
- _fill = 1;
- Color color = actions->getColor();
- color *= _fill;
- elem = new XMLElementNode("polygon");
- elem->addAttribute("fill", fill ? color.rgbString() : "none");
- }
- ostringstream oss;
- FORALL(_points, vector<DPair>::iterator, it) {
- if (it != _points.begin())
- oss << ' ';
- double x = it->x()+actions->getX();
- double y = it->y()+actions->getY();
- oss << XMLString(x) << ',' << XMLString(y);
- actions->embed(DPair(x, y));
- }
- elem->addAttribute("points", oss.str());
- if (stroke) { // draw outline?
- elem->addAttribute("stroke", "black");
- elem->addAttribute("stroke-width", XMLString(_penwidth));
- }
- }
- if (ddist > 0)
- elem->addAttribute("stroke-dasharray", XMLString(ddist));
- else if (ddist < 0)
- elem->addAttribute("stroke-dasharray", XMLString(_penwidth) + ' ' + XMLString(-ddist));
- actions->appendToPage(elem);
- }
- reset();
-}
-
-
-/** Stroke a quadratic spline through the midpoints of the lines defined by
- * the previously recorded points. The spline starts with a straight line
- * from the first point to the mid-point of the first line. The spline ends
- * with a straight line from the mid-point of the last line to the last point.
- * If ddist=0, the spline is stroked solid. Otherwise ddist denotes the length
- * of the dashes and the gaps inbetween.
- * @param[in] ddist length of dashes and gaps
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-void TpicSpecialHandler::drawSplines (double ddist, SpecialActions *actions) {
- if (actions && !_points.empty()) {
- const size_t size = _points.size();
- if (size < 3)
- drawLines(true, false, ddist, actions);
- else {
- double x = actions->getX();
- double y = actions->getY();
- DPair p(x,y);
- ostringstream oss;
- oss << 'M' << XMLString(x+_points[0].x()) << ',' << XMLString(y+_points[0].y());
- DPair mid = p+_points[0]+(_points[1]-_points[0])/2.0;
- oss << 'L' << XMLString(mid.x()) << ',' << XMLString(mid.y());
- actions->embed(p+_points[0]);
- for (size_t i=1; i < size-1; i++) {
- const DPair p0 = p+_points[i-1];
- const DPair p1 = p+_points[i];
- const DPair p2 = p+_points[i+1];
- mid = p1+(p2-p1)/2.0;
- oss << 'Q' << XMLString(p1.x()) << ',' << XMLString(p1.y())
- << ' ' << XMLString(mid.x()) << ',' << XMLString(mid.y());
- actions->embed(mid);
- actions->embed((p0+p1*6.0+p2)/8.0, _penwidth);
- }
- if (_points[0] == _points[size-1]) // closed path?
- oss << 'Z';
- else {
- oss << 'L' << XMLString(x+_points[size-1].x()) << ',' << XMLString(y+_points[size-1].y());
- actions->embed(p+_points[size-1]);
- }
-
- Color color = actions->getColor();
- color *= _fill;
- XMLElementNode *path = new XMLElementNode("path");
- if (_fill >= 0) {
- if (_points[0] != _points[size-1])
- oss << 'Z';
- path->addAttribute("fill", color.rgbString());
- }
- else
- path->addAttribute("fill", "none");
-
- path->addAttribute("d", oss.str());
- path->addAttribute("stroke", actions->getColor().rgbString());
- path->addAttribute("stroke-width", XMLString(_penwidth));
- if (ddist > 0)
- path->addAttribute("stroke-dasharray", XMLString(ddist));
- else if (ddist < 0)
- path->addAttribute("stroke-dasharray", XMLString(_penwidth) + ' ' + XMLString(-ddist));
- actions->appendToPage(path);
- }
- }
- reset();
-}
-
-
-/** Draws an elliptical arc.
- * @param[in] cx x-coordinate of arc center
- * @param[in] cy y-coordinate of arc center
- * @param[in] rx length of horizonal semi-axis
- * @param[in] ry length of vertical semi-axis
- * @param[in] angle1 starting angle (clockwise) relative to x-axis
- * @param[in] angle2 ending angle (clockwise) relative to x-axis
- * @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-void TpicSpecialHandler::drawArc (double cx, double cy, double rx, double ry, double angle1, double angle2, SpecialActions *actions) {
- if (actions) {
- const double PI2 = 4*asin(1.0);
- angle1 *= -1;
- angle2 *= -1;
- if (fabs(angle1) > PI2) {
- int n = (int)(angle1/PI2);
- angle1 = angle1 - n*PI2;
- angle2 = angle2 - n*PI2;
- }
-
- double x = cx + actions->getX();
- double y = cy + actions->getY();
- XMLElementNode *elem=0;
- if (fabs(angle1-angle2) >= PI2) { // closed ellipse?
- elem = new XMLElementNode("ellipse");
- elem->addAttribute("cx", XMLString(x));
- elem->addAttribute("cy", XMLString(y));
- elem->addAttribute("rx", XMLString(rx));
- elem->addAttribute("ry", XMLString(ry));
- }
- else {
- if (angle1 < 0)
- angle1 = PI2+angle1;
- if (angle2 < 0)
- angle2 = PI2+angle2;
- elem = new XMLElementNode("path");
- int large_arg = fabs(angle1-angle2) > PI2/2 ? 0 : 1;
- int sweep_flag = angle1 > angle2 ? 0 : 1;
- if (angle1 > angle2) {
- large_arg = 1-large_arg;
- sweep_flag = 1-sweep_flag;
- }
- ostringstream oss;
- oss << 'M' << XMLString(x+rx*cos(angle1)) << ',' << XMLString(y+ry*sin(-angle1))
- << 'A' << XMLString(rx) << ',' << XMLString(ry)
- << " 0 "
- << large_arg << ' ' << sweep_flag << ' '
- << XMLString(x+rx*cos(angle2)) << ',' << XMLString(y-ry*sin(angle2));
- if (_fill >= 0)
- oss << 'Z';
- elem->addAttribute("d", oss.str());
- }
- elem->addAttribute("stroke-width", _penwidth);
- elem->addAttribute("stroke", actions->getColor().rgbString());
- elem->addAttribute("stroke-linecap", "round");
- elem->addAttribute("fill", "none");
- if (_fill >= 0) {
- Color color=actions->getColor();
- color *= _fill;
- elem->addAttribute("fill", color.rgbString());
- }
- else
- elem->addAttribute("fill", "none");
- actions->appendToPage(elem);
- actions->embed(BoundingBox(cx-rx, cy-ry, cx+rx, cy+ry));
- }
- reset();
-}
-
-
-#define cmd_id(c1,c2) ((c1 << 8) | c2)
-
-bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialActions *actions) {
- if (!prefix || strlen(prefix) != 2)
- return false;
-
- const double mi2bp=0.072; // factor for milli-inch to PS points
- StreamInputBuffer ib(is);
- BufferInputReader in(ib);
- switch (cmd_id(prefix[0], prefix[1])) {
- case cmd_id('p','n'): // set pen width in milli-inches
- _penwidth = in.getDouble()*mi2bp;
- break;
- case cmd_id('b','k'): // set fill color to black
- _fill = 0;
- break;
- case cmd_id('w','h'): // set fill color to white
- _fill = 1;
- break;
- case cmd_id('s','h'): // set fill color to given gray level
- in.skipSpace();
- _fill = in.eof() ? 0.5 : max(0.0, min(1.0, in.getDouble()));
- break;
- case cmd_id('t','x'): // set fill pattern
- break;
- case cmd_id('p','a'): { // add point to path
- double x = in.getDouble()*mi2bp;
- double y = in.getDouble()*mi2bp;
- _points.push_back(DPair(x,y));
- break;
- }
- case cmd_id('f','p'): // draw solid lines through recorded points; close and fill path if fill color was defined
- drawLines(true, _fill >= 0, 0, actions);
- break;
- case cmd_id('i','p'): // don't draw outlines but close the recorded path and fill the resulting polygon
- drawLines(false, true, 0, actions);
- break;
- case cmd_id('d','a'): // as fp but draw dashed lines
- drawLines(true, _fill >= 0, in.getDouble()*72, actions);
- break;
- case cmd_id('d','t'): // as fp but draw dotted lines
- drawLines(true, _fill >= 0, -in.getDouble()*72, actions);
- break;
- case cmd_id('s','p'): { // draw quadratic splines through recorded points
- double ddist = in.getDouble();
- drawSplines(ddist, actions);
- break;
- }
- case cmd_id('a','r'): { // draw elliptical arc
- double cx = in.getDouble()*mi2bp;
- double cy = in.getDouble()*mi2bp;
- double rx = in.getDouble()*mi2bp;
- double ry = in.getDouble()*mi2bp;
- double a1 = in.getDouble();
- double a2 = in.getDouble();
- drawArc(cx, cy, rx, ry, a1, a2, actions);
- break;
- }
- case cmd_id('i','a'): { // fill elliptical arc
- double cx = in.getDouble()*mi2bp;
- double cy = in.getDouble()*mi2bp;
- double rx = in.getDouble()*mi2bp;
- double ry = in.getDouble()*mi2bp;
- double a1 = in.getDouble();
- double a2 = in.getDouble();
- if (_fill < 0)
- _fill = 1;
- drawArc(cx, cy, rx, ry, a1, a2, actions);
- if (_fill < 0)
- _fill = -1;
- break;
- }
- default:
- return false;
- }
- return true;
-}
-
-
-const char** TpicSpecialHandler::prefixes () const {
- static const char *pfx[] = {"ar", "bk", "da", "dt", "fp", "ia", "ip", "pa", "pn", "sh", "sp", "tx", "wh", 0};
- return pfx;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.h
deleted file mode 100644
index 9afdf9a31fc..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/TpicSpecialHandler.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*************************************************************************
-** TpicSpecialHandler.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_TPICSPECIALHANDLER_H
-#define DVISVGM_TPICSPECIALHANDLER_H
-
-#include <list>
-#include "Pair.h"
-#include "SpecialHandler.h"
-
-class TpicSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
- public:
- TpicSpecialHandler ();
- const char* info () const {return "TPIC specials";}
- const char* name () const {return "tpic";}
- const char** prefixes () const;
- bool process (const char *prefix, std::istream &is, SpecialActions *actions);
-
- protected:
- void dviEndPage (unsigned pageno);
- void reset ();
- void drawLines (bool stroke, bool fill, double ddist, SpecialActions *actions);
- void drawSplines (double ddist, SpecialActions *actions);
- void drawArc (double cx, double cy, double rx, double ry, double angle1, double angle2, SpecialActions *actions);
-
- private:
- double _penwidth; ///< pen width in PS point units
- double _fill; ///< fill intensity [0,1]; if < 0, we don't fill anything
- std::vector<DPair> _points;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFActions.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFActions.h
deleted file mode 100644
index a8e86831fe9..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFActions.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*************************************************************************
-** VFActions.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_VFACTIONS_H
-#define DVISVGM_VFACTIONS_H
-
-#include <string>
-#include <vector>
-#include "types.h"
-
-
-struct VFActions
-{
- virtual ~VFActions () {}
- virtual void preamble (std::string comment, UInt32 checksum, double dsize) {}
- virtual void postamble () {}
- virtual void defineVFFont (UInt32 fontnum, std::string path, std::string name, UInt32 checksum, double dsize, double ssize) {}
- virtual void defineVFChar (UInt32 c, std::vector<UInt8> *dvi) {}
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.cpp
deleted file mode 100644
index eb9ed4d22ee..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*************************************************************************
-** VFReader.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <sstream>
-#include "Font.h"
-#include "VFActions.h"
-#include "VFReader.h"
-#include "macros.h"
-
-using namespace std;
-
-
-/** Converts a TFM fix point value to double (PS point units). */
-inline static double fix2double (FixWord fix) {
- const double pt2bp = 72/72.27;
- return double(fix)/(1 << 20)*pt2bp;
-}
-
-
-VFReader::VFReader (istream &is)
- : StreamReader(is), _actions(0), _designSize(0) {
-}
-
-
-VFReader::~VFReader () {
-}
-
-
-VFActions* VFReader::replaceActions (VFActions *a) {
- VFActions *ret = _actions;
- _actions = a;
- return ret;
-}
-
-
-/** Reads a single VF command from the current position of the input stream and calls the
- * corresponding cmdFOO method. The execution can be influenced by a function of type ApproveOpcode.
- * It takes an opcode and returns true if the command is supposed to be executed.
- * @param[in] approve function to approve invocation of the action assigned to command
- * @return opcode of the executed command */
-int VFReader::executeCommand (ApproveAction approve) {
- int opcode = in().get();
- if (!in() || opcode < 0) // at end of file
- throw VFException("invalid file");
-
- bool approved = !approve || approve(opcode);
- VFActions *actions = _actions;
- if (!approved)
- replaceActions(0); // disable actions
-
- if (opcode <= 241) // short character definition?
- cmdShortChar(opcode);
- else if (opcode >= 243 && opcode <= 246) // font definition?
- cmdFontDef(opcode-243+1);
- else {
- switch (opcode) {
- case 242: cmdLongChar(); break; // long character definition
- case 247: cmdPre(); break; // preamble
- case 248: cmdPost(); break; // postamble
- default : { // invalid opcode
- replaceActions(actions); // reenable actions
- ostringstream oss;
- oss << "undefined VF command (opcode " << opcode << ')';
- throw VFException(oss.str());
- }
- }
- }
- replaceActions(actions); // reenable actions
- return opcode;
-}
-
-
-bool VFReader::executeAll () {
- in().clear(); // reset all status bits
- if (!in())
- return false;
- in().seekg(0); // move file pointer to first byte of the input stream
- while (!in().eof() && executeCommand() != 248); // stop reading after post (248)
- return true;
-}
-
-
-/// Returns true if op indicates the preamble or a font definition
-static bool is_pre_or_fontdef (int op) {return op > 242;}
-static bool is_chardef (int op) {return op < 243;}
-
-
-bool VFReader::executePreambleAndFontDefs () {
- in().clear();
- if (!in())
- return false;
- in().seekg(0); // move file pointer to first byte of the input stream
- while (!in().eof() && executeCommand(is_pre_or_fontdef) > 242); // stop reading after last font definition
- return true;
-}
-
-
-bool VFReader::executeCharDefs () {
- in().clear();
- if (!in())
- return false;
- in().seekg(0);
- while (!in().eof() && executeCommand(is_chardef) < 243); // stop reading after last char definition
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-/** Reads and executes DVI preamble command. */
-void VFReader::cmdPre () {
- UInt32 i = readUnsigned(1); // identification number (should be 2)
- UInt32 k = readUnsigned(1); // length of following comment
- string cmt = readString(k); // comment
- UInt32 cs = readUnsigned(4); // check sum to be compared with TFM cecksum
- UInt32 ds = readUnsigned(4); // design size (same as TFM design size) (fix_word)
- _designSize = fix2double(ds);
- if (i != 202)
- throw VFException("invalid identification value in preamble");
- if (_actions)
- _actions->preamble(cmt, cs, ds);
-}
-
-
-void VFReader::cmdPost () {
- while ((readUnsigned(1)) == 248); // skip fill bytes
- if (_actions)
- _actions->postamble();
-}
-
-
-void VFReader::cmdLongChar () {
- UInt32 pl = readUnsigned(4); // packet length (length of DVI subroutine)
- if (_actions) {
- UInt32 cc = readUnsigned(4); // character code
- readUnsigned(4); // character width from corresponding TFM file
- vector<UInt8> *dvi = new vector<UInt8>(pl); // DVI subroutine
- readBytes(pl, *dvi);
- _actions->defineVFChar(cc, dvi); // call template method for user actions
- }
- else
- in().seekg(8+pl, ios::cur); // skip remaining char definition bytes
-}
-
-
-/** Reads and executes short_char_x command.
- * @param[in] pl packet length (length of DVI subroutine) */
-void VFReader::cmdShortChar (int pl) {
- if (_actions) {
- UInt32 cc = readUnsigned(1); // character code
- readUnsigned(3); // character width from corresponding TFM file
- vector<UInt8> *dvi = new vector<UInt8>(pl); // DVI subroutine
- readBytes(pl, *dvi);
- _actions->defineVFChar(cc, dvi); // call template method for user actions
- }
- else
- in().seekg(4+pl, ios::cur); // skip char definition bytes
-}
-
-
-void VFReader::cmdFontDef (int len) {
- UInt32 fontnum = readUnsigned(len); // font number
- UInt32 checksum = readUnsigned(4); // font checksum (to be compared with corresponding TFM checksum)
- UInt32 ssize = readUnsigned(4); // scaled size of font relative to design size (fix_word)
- UInt32 dsize = readUnsigned(4); // design size of font (same as TFM design size) (fix_word)
- UInt32 pathlen = readUnsigned(1); // length of font path
- UInt32 namelen = readUnsigned(1); // length of font name
- string fontpath = readString(pathlen);
- string fontname = readString(namelen);
- if (_actions) {
- double ss = fix2double(ssize);
- double ds = fix2double(dsize);
- _actions->defineVFFont(fontnum, fontpath, fontname, checksum, ds, ss*_designSize);
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.h
deleted file mode 100644
index f6d9474ccbe..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VFReader.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** VFReader.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_VFREADER_H
-#define DVISVGM_VFREADER_H
-
-#include "MessageException.h"
-#include "StreamReader.h"
-#include "types.h"
-
-
-struct VFException : public MessageException
-{
- VFException (const std::string &msg) : MessageException(msg) {}
-};
-
-
-struct VFActions;
-
-
-class VFReader : public StreamReader
-{
- typedef bool (*ApproveAction)(int);
- public:
- VFReader (std::istream &is);
- virtual ~VFReader ();
- VFActions* replaceActions (VFActions *a);
- bool executeAll ();
- bool executePreambleAndFontDefs ();
- bool executeCharDefs ();
-
- protected:
- int executeCommand (ApproveAction approve=0);
-
- // the following methods represent the VF commands
- // they are called by executeCommand and should not be used directly
- void cmdPre ();
- void cmdPost ();
- void cmdShortChar (int pl);
- void cmdLongChar ();
- void cmdFontDef (int len);
-
- private:
- VFActions *_actions; ///< actions to execute when reading a VF command
- double _designSize; ///< design size of currently read VF
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VectorStream.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VectorStream.h
deleted file mode 100644
index 345b319c7b3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/VectorStream.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************
-** VectorStream.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_VECTORSTREAM_H
-#define DVISVGM_VECTORSTREAM_H
-
-#include <istream>
-#include <vector>
-
-
-template <typename T>
-struct VectorStreamBuffer : public std::streambuf
-{
- VectorStreamBuffer (std::vector<T> &source) {
- setg((char*)&source[0], (char*)&source[0], (char*)&source[0]+source.size());
- }
-};
-
-
-template <typename T>
-class VectorInputStream : public std::istream
-{
- public:
- VectorInputStream (std::vector<T> &source) : std::istream(&_buf), _buf(source) {}
- private:
- VectorStreamBuffer<T> _buf;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.cpp
deleted file mode 100644
index caee2ec7439..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*************************************************************************
-** XMLDocument.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "macros.h"
-#include "XMLDocument.h"
-
-using namespace std;
-
-XMLDocument::XMLDocument (XMLElementNode *root)
- : _rootElement(root), _emitted(false)
-{
-}
-
-
-XMLDocument::~XMLDocument () {
- clear();
-}
-
-
-void XMLDocument::clear () {
- delete _rootElement;
- _rootElement = 0;
- FORALL(_nodes, list<XMLNode*>::iterator, i)
- delete *i;
- _nodes.clear();
-}
-
-
-void XMLDocument::append (XMLNode *node) {
- if (!node)
- return;
- XMLElementNode *newRoot = dynamic_cast<XMLElementNode*>(node);
- if (newRoot) { // there can only be one root element node in the document
- delete _rootElement; // so if there is already one...
- _rootElement = newRoot; // ...we replace it
- }
- else
- _nodes.push_back(node);
-}
-
-
-void XMLDocument::setRootNode (XMLElementNode *root) {
- delete _rootElement;
- _rootElement = root;
-}
-
-
-ostream& XMLDocument::write (ostream &os) const {
- if (_rootElement) { // no root element => no output
- os << "<?xml version='1.0'?>\n";
- FORALL(_nodes, list<XMLNode*>::const_iterator, i)
- (*i)->write(os);
- _rootElement->write(os);
- }
- return os;
-}
-
-/** Writes a part of the XML document to the given output stream and removes
- * the completely written nodes. The output stops when a stop node is reached
- * (this node won't be printed at all). If a node was only partly emitted, i.e.
- * its child was the stop node, a further call of emit will continue the output.
- * @param[in] os stream to which the output is written
- * @param[in] stopNode node where emitting stops (if 0 the whole tree will be emitted)
- * @return true if node was completely emitted */
-bool XMLDocument::emit (ostream& os, XMLNode *stopNode) {
- if (_rootElement) { // no root element => no output
- if (!_emitted) {
- os << "<?xml version='1.0' encoding='ISO-8859-1'?>\n";
- _emitted = true;
- }
- FORALL(_nodes, list<XMLNode*>::iterator, i) {
- if ((*i)->emit(os, stopNode)) {
- list<XMLNode*>::iterator it = i++; // prevent i from being invalidated...
- _nodes.erase(it); // ... by erase
- --i; // @@ what happens if i points to first child?
- }
- else
- return false;
- }
- return _rootElement->emit(os, stopNode);
- }
- return true;
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.h
deleted file mode 100644
index c3d6b928ee7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLDocument.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
-** XMLDocument.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_XMLDOCUMENT_H
-#define DVISVGM_XMLDOCUMENT_H
-
-#include "XMLNode.h"
-
-class XMLDocument
-{
- public:
- XMLDocument (XMLElementNode *root=0);
- ~XMLDocument ();
- void clear ();
- void append (XMLNode *node);
- void setRootNode (XMLElementNode *root);
- const XMLElementNode* getRootElement () const {return _rootElement;}
- std::ostream& write (std::ostream &os) const;
- bool emit (std::ostream& os, XMLNode *stopNode);
-
- private:
- std::list<XMLNode*> _nodes;
- XMLElementNode *_rootElement;
- bool _emitted;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.cpp
deleted file mode 100644
index 82b85b52ffd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/*************************************************************************
-** XMLNode.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include "macros.h"
-#include "XMLNode.h"
-#include "XMLString.h"
-
-using namespace std;
-
-bool XMLNode::emit (ostream &os, XMLNode *stopNode) {
- if (this == stopNode)
- return false;
- write(os);
- return true;
-}
-
-
-XMLElementNode::XMLElementNode (const string &n) : _name(n), _emitted(false) {
-}
-
-
-XMLElementNode::XMLElementNode (const XMLElementNode &node)
- : _name(node._name), _attributes(node._attributes), _emitted(false)
-{
- FORALL(node._children, ChildList::const_iterator, it)
- _children.push_back((*it)->clone());
-}
-
-
-XMLElementNode::~XMLElementNode () {
- FORALL(_children, ChildList::iterator, i)
- delete *i;
-}
-
-
-void XMLElementNode::addAttribute (const string &name, const string &value) {
- _attributes[name] = value;
-}
-
-
-void XMLElementNode::addAttribute (const string &name, double value) {
- _attributes[name] = XMLString(value);
-}
-
-
-void XMLElementNode::append (XMLNode *child) {
- if (!child)
- return;
- XMLTextNode *textNode1 = dynamic_cast<XMLTextNode*>(child);
- if (!textNode1 || _children.empty())
- _children.push_back(child);
- else {
- if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.back()))
- textNode2->append(textNode1); // merge two consecutive text nodes
- else
- _children.push_back(child);
- }
-}
-
-
-void XMLElementNode::append (const string &str) {
- if (_children.empty() || !dynamic_cast<XMLTextNode*>(_children.back()))
- _children.push_back(new XMLTextNode(str));
- else
- static_cast<XMLTextNode*>(_children.back())->append(str);
-}
-
-
-void XMLElementNode::prepend (XMLNode *child) {
- if (!child)
- return;
- XMLTextNode *textNode1 = dynamic_cast<XMLTextNode*>(child);
- if (!textNode1 || _children.empty())
- _children.push_front(child);
- else {
- if (XMLTextNode *textNode2 = dynamic_cast<XMLTextNode*>(_children.back()))
- textNode2->prepend(textNode1); // merge two consecutive text nodes
- else
- _children.push_front(child);
- }
-}
-
-
-/** Inserts a new child node before a given child node already present. The latter
- * will be the following sibling of the node to be inserted. If there's no such
- * node present, nothing is inserted.
- * @param[in] child node to be inserted
- * @param[in] sibling following sibling of 'child'
- * @return true on success */
-bool XMLElementNode::insertBefore (XMLNode *child, XMLNode *sibling) {
- ChildList::iterator it = _children.begin();
- while (it != _children.end() && *it != sibling)
- ++it;
- if (it != _children.end()) {
- _children.insert(it, child);
- return true;
- }
- return false;
-}
-
-
-/** Inserts a new child node after a given child node already present. The latter
- * will be the preceding sibling of the node to be inserted. If there's no such
- * node present, nothing is inserted.
- * @param[in] child node to be inserted
- * @param[in] sibling preceding sibling of 'child'
- * @return true on success */
-bool XMLElementNode::insertAfter (XMLNode *child, XMLNode *sibling) {
- ChildList::iterator it = _children.begin();
- while (it != _children.end() && *it != sibling)
- ++it;
- if (it != _children.end()) {
- _children.insert(++it, child);
- return true;
- }
- return false;
-}
-
-
-/** Finds all descendant elements of a given name and given attribute.
- * @param[in] name name of elements to find
- * @param[in] attr_name name of attribute to find
- * @param[out] descendants all elements found
- * @return true if at least one element was found */
-bool XMLElementNode::findDescendants (const char *name, const char *attr_name, vector<XMLElementNode*> &descendants) {
- FORALL(_children, ChildList::iterator, it) {
- if (XMLElementNode *elem = dynamic_cast<XMLElementNode*>(*it)) {
- if ((!name || elem->getName() == name) && (!attr_name || elem->hasAttribute(attr_name)))
- descendants.push_back(elem);
- elem->findDescendants(name, attr_name, descendants);
- }
- }
- return !descendants.empty();
-}
-
-
-ostream& XMLElementNode::write (ostream &os) const {
- os << '<' << _name;
- FORALL(_attributes, AttribMap::const_iterator, i)
- os << ' ' << i->first << "='" << i->second << '\'';
- if (_children.empty())
- os << "/>\n";
- else {
- os << '>';
- if (dynamic_cast<XMLElementNode*>(_children.front()))
- os << '\n';
- FORALL(_children, ChildList::const_iterator, i)
- (*i)->write(os);
- os << "</" << _name << ">\n";
- }
- return os;
-}
-
-
-/** Writes a part of the XML tree to the given output stream and removes
- * the completely written nodes. The output stops when a stop node is reached
- * (this node won't be printed at all). If a node was only partly emitted, i.e.
- * its child was the stop node, a further call of emit will continue the output.
- * @param[in] os stream to which the output is sent to
- * @param[in] stopNode node where emitting stops (if 0 the whole tree will be emitted)
- * @return true if node was emitted completely */
-bool XMLElementNode::emit (ostream &os, XMLNode *stopNode) {
- if (this == stopNode)
- return false;
-
- if (!_emitted) {
- os << '<' << _name;
- FORALL(_attributes, AttribMap::iterator, i)
- os << ' ' << i->first << "='" << i->second << '\'';
- if (_children.empty())
- os << "/>\n";
- else {
- os << '>';
- if (dynamic_cast<XMLElementNode*>(_children.front()))
- os << '\n';
- }
-
- _emitted = true;
- }
- if (!_children.empty()) {
- FORALL(_children, ChildList::iterator, i) {
- if ((*i)->emit(os, stopNode)) {
- ChildList::iterator it = i++; // prevent i from being invalidated...
- _children.erase(it); // ... by erase
- --i; // @@ what happens if i points to first child?
- }
- else
- return false;
- }
- os << "</" << _name << ">\n";
- }
- return true;
-}
-
-
-/** Returns true if this element has an attribute of given name. */
-bool XMLElementNode::hasAttribute (const string &name) const {
- return _attributes.find(name) != _attributes.end();
-}
-
-
-/** Returns the value of an attribute.
- * @param[in] name name of attribute
- * @return attribute value or 0 if attribute doesn't exist */
-const char* XMLElementNode::getAttributeValue(const std::string& name) const {
- AttribMap::const_iterator it = _attributes.find(name);
- if (it != _attributes.end())
- return it->second.c_str();
- return 0;
-}
-
-
-//////////////////////
-
-void XMLTextNode::append (XMLNode *node) {
- if (XMLTextNode *tn = dynamic_cast<XMLTextNode*>(node))
- append(tn);
- else
- delete node;
-}
-
-
-void XMLTextNode::append (XMLTextNode *node) {
- if (node)
- _text += node->_text;
- delete node;
-}
-
-
-void XMLTextNode::append (const string &str) {
- _text += str;
-}
-
-
-void XMLTextNode::prepend (XMLNode *node) {
- if (XMLTextNode *tn = dynamic_cast<XMLTextNode*>(node))
- prepend(tn);
- else
- delete node;
-}
-
-
-//////////////////////
-
-XMLDeclarationNode::XMLDeclarationNode (const string &n, const string &p)
- : _name(n), _params(p), _emitted(false)
-{
-}
-
-
-XMLDeclarationNode::XMLDeclarationNode (const XMLDeclarationNode &node)
- : _name(node._name), _params(node._params), _emitted(false)
-{
- FORALL(node._children, list<XMLDeclarationNode*>::const_iterator, it)
- _children.push_back(new XMLDeclarationNode(**it));
-}
-
-
-XMLDeclarationNode::~XMLDeclarationNode () {
- FORALL(_children, list<XMLDeclarationNode*>::iterator, i)
- delete *i;
-}
-
-
-/** Appends another declaration node to this one.
- * @param[in] child child to append, must be of type XMLDeclarationNode */
-void XMLDeclarationNode::append (XMLNode *child) {
- if (XMLDeclarationNode *decl_node = dynamic_cast<XMLDeclarationNode*>(child))
- _children.push_back(decl_node);
- else
- delete child;
-}
-
-
-ostream& XMLDeclarationNode::write (ostream &os) const {
- os << "<!" << _name << ' ' << _params;
- if (_children.empty())
- os << ">\n";
- else {
- os << "[\n";
- FORALL(_children, list<XMLDeclarationNode*>::const_iterator, i)
- (*i)->write(os);
- os << "]>\n";
- }
- return os;
-}
-
-
-bool XMLDeclarationNode::emit (ostream &os, XMLNode *stopNode) {
- if (this == stopNode)
- return false;
-
- if (!_emitted) {
- os << "<!" << _name << ' ' << _params;
- if (_children.empty())
- os << ">\n";
- else
- os << "[\n";
- _emitted = true;
- }
- if (!_children.empty()) {
- FORALL(_children, list<XMLDeclarationNode*>::iterator, i) {
- if ((*i)->emit(os, stopNode)) {
- list<XMLDeclarationNode*>::iterator it = i++; // prevent i from being invalidated...
- _children.erase(it); // ... by erase
- --i; // @@ what happens if i points to first child?
- }
- else
- return false;
- }
- os << "]>\n";
- }
- return true;
-
-}
-
-//////////////////////
-
-ostream& XMLCDataNode::write (ostream &os) const {
- os << "<![CDATA[\n"
- << _data
- << "]]>\n";
- return os;
-}
-
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.h
deleted file mode 100644
index cd878701db9..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLNode.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************
-** XMLNode.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_XMLNODE_H
-#define DVISVGM_XMLNODE_H
-
-#include <list>
-#include <map>
-#include <ostream>
-#include <string>
-
-#include "SpecialActions.h"
-
-
-struct XMLNode
-{
- virtual ~XMLNode () {}
- virtual XMLNode* clone () const =0;
- virtual std::ostream& write (std::ostream &os) const =0;
- virtual bool emit (std::ostream &os, XMLNode *stopElement);
- virtual void append (XMLNode *child) {}
- virtual void prepend (XMLNode *child) {}
-};
-
-
-class XMLElementNode : public XMLNode
-{
- typedef std::map<std::string,std::string> AttribMap;
- typedef std::list<XMLNode*> ChildList;
- public:
- XMLElementNode (const std::string &name);
- XMLElementNode (const XMLElementNode &node);
- ~XMLElementNode ();
- XMLNode* clone () const {return new XMLElementNode(*this);}
- void addAttribute (const std::string &name, const std::string &value);
- void addAttribute (const std::string &name, double value);
- void append (XMLNode *child);
- void append (const std::string &str);
- void prepend (XMLNode *child);
- bool insertAfter (XMLNode *child, XMLNode *sibling);
- bool insertBefore (XMLNode *child, XMLNode *sibling);
- bool hasAttribute (const std::string &name) const;
- const char* getAttributeValue (const std::string &name) const;
- bool findDescendants (const char *name, const char *attr_name, std::vector<XMLElementNode*> &descendants);
- std::ostream& write (std::ostream &os) const;
- bool emit (std::ostream &os, XMLNode *stopElement);
- bool empty () const {return _children.empty();}
- const std::list<XMLNode*>& children () const {return _children;}
- const std::string& getName () const {return _name;}
-
- private:
- std::string _name; // element name (<name a1="v1" .. an="vn">...</name>)
- AttribMap _attributes;
- ChildList _children; // child nodes
- bool _emitted; // true if node has been (partly) emitted
-};
-
-
-class XMLTextNode : public XMLNode
-{
- public:
- XMLTextNode (const std::string &str) : _text(str) {}
- XMLNode* clone () const {return new XMLTextNode(*this);}
- void append (XMLNode *node);
- void append (XMLTextNode *node);
- void append (const std::string &str);
- void prepend (XMLNode *child);
- std::ostream& write (std::ostream &os) const {return os << _text;}
-
- private:
- std::string _text;
-};
-
-
-class XMLCommentNode : public XMLNode
-{
- public:
- XMLCommentNode (const std::string &str) : _text(str) {}
- XMLNode* clone () const {return new XMLCommentNode(*this);}
- std::ostream& write (std::ostream &os) const {return os << "<!--" << _text << "-->\n";}
-
- private:
- std::string _text;
-};
-
-
-class XMLDeclarationNode : public XMLNode
-{
- public:
- XMLDeclarationNode (const std::string &n, const std::string &p);
- XMLDeclarationNode (const XMLDeclarationNode &node);
- ~XMLDeclarationNode ();
- XMLNode* clone () const {return new XMLDeclarationNode(*this);}
- void append (XMLNode *child);
- std::ostream& write (std::ostream &os) const;
- bool emit (std::ostream &os, XMLNode *stopElement);
-
- private:
- std::string _name;
- std::string _params;
- std::list<XMLDeclarationNode*> _children;
- bool _emitted;
-};
-
-
-class XMLCDataNode : public XMLNode
-{
- public:
- XMLCDataNode (const std::string &d) : _data(d) {}
- XMLNode* clone () const {return new XMLCDataNode(*this);}
- std::ostream& write (std::ostream &os) const;
-
- private:
- std::string _data;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.cpp
deleted file mode 100644
index ea4487f45bc..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*************************************************************************
-** XMLString.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <cstdlib>
-#include <iomanip>
-#include <sstream>
-#include "macros.h"
-#include "types.h"
-#include "XMLString.h"
-
-using namespace std;
-
-int XMLString::DECIMAL_PLACES = 0;
-
-
-/** Converts a unicode value to a UTF-8 byte sequence.
- * @param[in] c character code
- * @return utf8 seqence consisting of 1-4 bytes */
-static string to_utf8 (Int32 c) {
- string utf8;
- if (c >= 0) {
- if (c < 0x80)
- utf8 += c;
- else if (c < 0x800) {
- utf8 += 0xC0 + (c >> 6);
- utf8 += 0x80 + (c & 0x3F);
- }
- else if (c == 0xFFFE || c == 0xFFFF)
- utf8 += (c & 0xFF);
- else if (c < 0x10000) {
- utf8 += 0xE0 + (c >> 12);
- utf8 += 0x80 + ((c >> 6) & 0x3F);
- utf8 += 0x80 + (c & 0x3F);
- }
- else if (c < 0x110000) {
- utf8 += 0xF0 + (c >> 18);
- utf8 += 0x80 + ((c >> 12) & 0x3F);
- utf8 += 0x80 + ((c >> 6) & 0x3F);
- utf8 += 0x80 + (c & 0x3F);
- }
- }
- return utf8;
-}
-
-
-static string translate (UInt32 c) {
- switch (c) {
- case '<' : return "&lt;";
- case '&' : return "&amp;";
- case '"' : return "&quot;";
- case '\'': return "&apos;";
- }
- return to_utf8(c);
-}
-
-
-/** Rounds a floating point value to a given number of decimal places.
- * @param[in] x number to round
- * @param[in] n number of decimal places (must be between 1 and 6)
- * @return rounded value */
-static inline double round (double x, long n) {
- const long pow10[] = {10L, 100L, 1000L, 10000L, 100000L, 1000000L};
- n--;
- return floor(x*pow10[n]+0.5)/pow10[n];
-}
-
-
-XMLString::XMLString (const string &str, bool plain) {
- if (plain)
- *this = str;
- else {
- FORALL(str, string::const_iterator, i)
- *this += translate(*i);
- }
-}
-
-
-XMLString::XMLString (const char *str, bool plain) {
- if (str) {
- if (plain)
- *this = str;
- else {
- while (*str)
- *this += translate(*str++);
- }
- }
-}
-
-
-XMLString::XMLString (int n, bool cast) {
- if (cast) {
- stringstream ss;
- ss << n;
- ss >> *this;
- }
- else
- *this += translate(n);
-}
-
-
-XMLString::XMLString (double x) {
- stringstream ss;
- if (DECIMAL_PLACES > 0)
- x = round(x, DECIMAL_PLACES);
- else if (fabs(x) < 1e-8)
- x = 0;
- ss << x;
- ss >> *this;
-}
-
-
-/*
-ostream& XMLString::write (ostream &os) const {
- const string *self = static_cast<const string*>(this);
- FORALL(*self, string::const_iterator, i) {
- unsigned char c = *i;
- switch (c) {
- case '<' : os << "&lt;"; break;
- case '&' : os << "&amp;"; break;
- case '"' : os << "&quot;"; break;
- case '\'': os << "&apos;"; break;
- default :
- if (c >= 32 && c <= 126)
- os << c;
- else
- os << "&#" << int(c) << ';';
- }
- }
- return os;
-}
-*/
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.h
deleted file mode 100644
index ae27053a856..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/XMLString.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************
-** XMLString.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_XMLSTRING_H
-#define DVISVGM_XMLSTRING_H
-
-#include <string>
-
-
-class XMLString : public std::string
-{
- public:
- XMLString () : std::string() {}
- XMLString (const char *str, bool plain=false);
- XMLString (const std::string &str, bool plain=false);
- XMLString (int n, bool cast=true);
- XMLString (double x);
-
- static int DECIMAL_PLACES; ///< number of decimal places applied to floating point values (0-6)
-};
-
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/dvisvgm.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/dvisvgm.cpp
deleted file mode 100644
index aafd843ecd1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/dvisvgm.cpp
+++ /dev/null
@@ -1,436 +0,0 @@
-/*************************************************************************
-** dvisvgm.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <config.h>
-#include <cmath>
-#include <fstream>
-#include <iomanip>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include "gzstream.h"
-#include "CommandLine.h"
-#include "DVIToSVG.h"
-#include "DVIToSVGActions.h"
-#include "EPSToSVG.h"
-#include "FileFinder.h"
-#include "FilePath.h"
-#include "FileSystem.h"
-#include "Font.h"
-#include "FontCache.h"
-#include "FontEngine.h"
-#include "FontMap.h"
-#include "Ghostscript.h"
-#include "HtmlSpecialHandler.h"
-#include "InputReader.h"
-#include "Message.h"
-#include "PageSize.h"
-#include "PSInterpreter.h"
-#include "SignalHandler.h"
-#include "SpecialManager.h"
-#include "SVGOutputBase.h"
-#include "System.h"
-
-#ifdef __MSVC__
-#include <potracelib.h>
-#else
-extern "C" {
-#include <potracelib.h>
-}
-#endif
-
-using namespace std;
-
-class SVGOutput : public SVGOutputBase
-{
- public:
- SVGOutput (const char *base=0, string pattern="", int zip_level=0)
- : _path(base ? base : ""),
- _pattern(pattern),
- _stdout(base == 0),
- _zipLevel(zip_level),
- _page(-1),
- _os(0) {}
-
-
- ~SVGOutput () {
- delete _os;
- }
-
-
- /** Returns an output stream for the given page.
- * @param[in] page number of current page
- * @param[in] numPages total number of pages in the DVI file
- * @return output stream for the given page */
- ostream& getPageStream (int page, int numPages) const {
- string fname = filename(page, numPages);
- if (fname.empty()) {
- delete _os;
- _os = 0;
- return cout;
- }
- if (page == _page)
- return *_os;
-
- _page = page;
- delete _os;
-
- if (_zipLevel > 0)
- _os = new ogzstream(fname.c_str(), _zipLevel);
- else
- _os = new ofstream(fname.c_str());
- if (!_os || !*_os) {
- delete _os;
- _os = 0;
- throw MessageException("can't open file "+fname+" for writing");
- }
- return *_os;
- }
-
-
- /** Returns the name of the SVG file containing the given page.
- * @param[in] page number of current page
- * @param[in] numPages total number of pages */
- string filename (int page, int numPages) const {
- if (_stdout)
- return "";
- string fname = _pattern;
- if (fname.empty())
- fname = numPages > 1 ? "%f-%p" : "%f";
- else if (numPages > 1 && fname.find("%p") == string::npos)
- fname += FileSystem::isDirectory(fname.c_str()) ? "/%f-%p" : "-%p";
-
- // replace pattern variables by their actual values
- // %f: basename of the DVI file
- // %p: current page number
- ostringstream oss;
- oss << setfill('0') << setw(max(2, int(1+log10((double)numPages)))) << page;
- size_t pos=0;
- while ((pos = fname.find('%', pos)) != string::npos && pos < fname.length()-1) {
- switch (fname[pos+1]) {
- case 'f': fname.replace(pos, 2, _path.basename()); pos += _path.basename().length(); break;
- case 'p': fname.replace(pos, 2, oss.str()); pos += oss.str().length(); break;
- default : ++pos;
- }
- }
- FilePath outpath(fname, true);
- if (outpath.suffix().empty())
- outpath.suffix(_zipLevel > 0 ? "svgz" : "svg");
- string apath = outpath.absolute();
- string rpath = outpath.relative();
- return apath.length() < rpath.length() ? apath : rpath;
- }
-
- private:
- FilePath _path;
- string _pattern;
- bool _stdout;
- int _zipLevel;
- mutable int _page; // number of current page being written
- mutable ostream *_os;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-static void show_help (const CommandLine &cmd) {
- cout << PACKAGE_STRING "\n\n";
- cmd.help(cmd.help_arg());
- cout << "\nCopyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> \n\n";
-}
-
-
-static string remove_path (string fname) {
- fname = FileSystem::adaptPathSeperators(fname);
- size_t slashpos = fname.rfind('/');
- if (slashpos == string::npos)
- return fname;
- return fname.substr(slashpos+1);
-}
-
-
-static string ensure_suffix (string fname, bool eps) {
- size_t dotpos = remove_path(fname).rfind('.');
- if (dotpos == string::npos)
- fname += (eps ? ".eps" : ".dvi");
- return fname;
-}
-
-
-static string get_transformation_string (const CommandLine &args) {
- ostringstream oss;
- if (args.rotate_given())
- oss << 'R' << args.rotate_arg() << ",w/2,h/2";
- if (args.translate_given())
- oss << 'T' << args.translate_arg();
- if (args.scale_given())
- oss << 'S' << args.scale_arg();
- if (args.transform_given())
- oss << args.transform_arg();
- return oss.str();
-}
-
-
-static void set_libgs (CommandLine &args) {
-#if !defined(DISABLE_GS) && !defined(HAVE_LIBGS)
- if (args.libgs_given())
- Ghostscript::LIBGS_NAME = args.libgs_arg();
- else if (getenv("LIBGS"))
- Ghostscript::LIBGS_NAME = getenv("LIBGS");
-#endif
-}
-
-
-static bool set_cache_dir (const CommandLine &args) {
- if (args.cache_given() && !args.cache_arg().empty()) {
- if (args.cache_arg() == "none")
- PhysicalFont::CACHE_PATH = 0;
- else if (FileSystem::exists(args.cache_arg().c_str()))
- PhysicalFont::CACHE_PATH = args.cache_arg().c_str();
- else
- Message::wstream(true) << "cache directory '" << args.cache_arg() << "' does not exist (caching disabled)\n";
- }
- else {
- if (const char *userdir = FileSystem::userdir()) {
- static string path = userdir;
- path += "/.dvisvgm";
- path = FileSystem::adaptPathSeperators(path);
- const string cachepath = path+"/cache";
- if (!FileSystem::exists(cachepath.c_str())) {
- if (!FileSystem::exists(path.c_str()))
- FileSystem::mkdir(cachepath.c_str());
- else {
- FileSystem::mkdir(cachepath.c_str());
- // move existing cache files from former location to new one
- vector<string> files;
- FileSystem::collect(path.c_str(), files);
- FORALL(files, vector<string>::iterator, it) {
- if (it->at(0) == 'f' && it->length() > 4 && it->substr(it->length()-4, 4) == ".fgd") {
- const char *fname = it->c_str()+1;
- FileSystem::copy(path+"/"+fname, cachepath+"/"+fname, true);
- }
- }
- }
- }
- path = cachepath;
- PhysicalFont::CACHE_PATH = path.c_str();
- }
- if (args.cache_given() && args.cache_arg().empty()) {
- cout << "cache directory: " << (PhysicalFont::CACHE_PATH ? PhysicalFont::CACHE_PATH : "(none)") << '\n';
- FontCache::fontinfo(PhysicalFont::CACHE_PATH, cout, true);
- return false;
- }
- }
- return true;
-}
-
-
-static bool check_bbox (const string &bboxstr) {
- const char *formats[] = {"none", "min", "dvi", 0};
- for (const char **p=formats; *p; ++p)
- if (bboxstr == *p)
- return true;
- if (isalpha(bboxstr[0])) {
- try {
- PageSize size(bboxstr);
- return true;
- }
- catch (const PageSizeException &e) {
- Message::estream(true) << "invalid bounding box format '" << bboxstr << "'\n";
- return false;
- }
- }
- try {
- BoundingBox bbox;
- bbox.set(bboxstr);
- return true;
- }
- catch (const MessageException &e) {
- Message::estream(true) << e.what() << '\n';
- return false;
- }
-}
-
-
-static void print_version (bool extended) {
- ostringstream oss;
- oss << PACKAGE_STRING;
- if (extended) {
- if (strlen(TARGET_SYSTEM) > 0)
- oss << " (" TARGET_SYSTEM ")";
- int len = oss.str().length();
- oss << "\n" << string(len, '-') << "\n"
- "freetype: " << FontEngine::version() << "\n";
-
- Ghostscript gs;
- string gsver = gs.revision(true);
- if (!gsver.empty())
- oss << "Ghostscript: " << gsver + "\n";
- oss <<
-#ifdef MIKTEX
- "MiKTeX: " << FileFinder::version() << "\n"
-#else
- "kpathsea: " << FileFinder::version() << "\n"
-#endif
- "potrace: " << (strchr(potrace_version(), ' ') ? strchr(potrace_version(), ' ')+1 : "unknown") << "\n"
- "zlib: " << zlibVersion();
- }
- cout << oss.str() << endl;
-}
-
-
-static void init_fontmap (const CommandLine &args) {
- const char *mapseq = args.fontmap_given() ? args.fontmap_arg().c_str() : 0;
- bool additional = mapseq && strchr("+-=", *mapseq);
- if (!mapseq || additional) {
- const char *mapfiles[] = {"ps2pk.map", "dvipdfm.map", "psfonts.map", 0};
- bool found = false;
- for (const char **p=mapfiles; *p && !found; p++)
- found = FontMap::instance().read(*p);
- if (!found)
- Message::wstream(true) << "none of the default map files could be found";
- }
- if (mapseq)
- FontMap::instance().read(mapseq);
-}
-
-
-int main (int argc, char *argv[]) {
- CommandLine args;
- args.parse(argc, argv);
- if (args.error())
- return 1;
-
- Message::COLORIZE = args.color_given();
-
- try {
- FileFinder::init(argv[0], "dvisvgm", !args.no_mktexmf_given());
- }
- catch (MessageException &e) {
- Message::estream(true) << e.what() << '\n';
- return 0;
- }
-
- set_libgs(args);
- if (args.version_given()) {
- print_version(args.version_arg());
- return 0;
- }
- if (args.list_specials_given()) {
- SVGOutput out;
- DVIToSVG dvisvg(cin, out);
- if (const SpecialManager *sm = dvisvg.setProcessSpecials())
- sm->writeHandlerInfo(cout);
- return 0;
- }
-
- if (!set_cache_dir(args))
- return 0;
-
- if (argc == 1 || args.help_given()) {
- show_help(args);
- return 0;
- }
-
- if (argc > 1 && args.numFiles() < 1) {
- Message::estream(true) << "no input file given\n";
- return 1;
- }
-
- if (args.stdout_given() && args.zip_given()) {
- Message::estream(true) << "writing SVGZ files to stdout is not supported\n";
- return 1;
- }
-
- if (!check_bbox(args.bbox_arg()))
- return 1;
-
- if (args.progress_given()) {
- DVIReader::COMPUTE_PAGE_LENGTH = args.progress_given();
- DVIToSVGActions::PROGRESSBAR_DELAY = args.progress_arg();
- }
- SVGTree::CREATE_STYLE = !args.no_styles_given();
- SVGTree::USE_FONTS = !args.no_fonts_given();
- SVGTree::CREATE_USE_ELEMENTS = args.no_fonts_arg() < 1;
- SVGTree::ZOOM_FACTOR = args.zoom_arg();
- DVIToSVG::TRACE_MODE = args.trace_all_given() ? (args.trace_all_arg() ? 'a' : 'm') : 0;
- Message::LEVEL = args.verbosity_arg();
- PhysicalFont::EXACT_BBOX = args.exact_given();
- PhysicalFont::KEEP_TEMP_FILES = args.keep_given();
- PhysicalFont::METAFONT_MAG = args.mag_arg();
- XMLString::DECIMAL_PLACES = max(0, min(6, args.precision_arg()));
- if (!HtmlSpecialHandler::setLinkMarker(args.linkmark_arg()))
- Message::wstream(true) << "invalid argument '"+args.linkmark_arg()+"' supplied for option --linkmark\n";
- double start_time = System::time();
- bool eps_given=false;
-#if defined(HAVE_LIBGS) || !defined(DISABLE_GS)
- eps_given = args.eps_given();
-#endif
- string inputfile = ensure_suffix(args.file(0), eps_given);
- ifstream ifs(inputfile.c_str(), ios_base::binary|ios_base::in);
- if (!ifs) {
- Message::estream(true) << "can't open file '" << inputfile << "' for reading\n";
- return 0;
- }
- try {
- SVGOutput out(args.stdout_given() ? 0 : inputfile.c_str(), args.output_arg(), args.zip_given() ? args.zip_arg() : 0);
- SignalHandler::instance().start();
-#if defined(HAVE_LIBGS) || !defined(DISABLE_GS)
- if (args.eps_given()) {
- EPSToSVG eps2svg(inputfile, out);
- eps2svg.convert();
- Message::mstream().indent(0);
- Message::mstream(false, Message::MC_PAGE_NUMBER)
- << "file converted in " << (System::time()-start_time) << " seconds\n";
- }
- else
-#endif
- {
- DVIToSVG dvi2svg(ifs, out);
- const char *ignore_specials = args.no_specials_given() ? (args.no_specials_arg().empty() ? "*" : args.no_specials_arg().c_str()) : 0;
- dvi2svg.setProcessSpecials(ignore_specials, true);
- dvi2svg.setPageTransformation(get_transformation_string(args));
- dvi2svg.setPageSize(args.bbox_arg());
-
- init_fontmap(args);
- pair<int,int> pageinfo;
- dvi2svg.convert(args.page_arg(), &pageinfo);
- Message::mstream().indent(0);
- Message::mstream(false, Message::MC_PAGE_NUMBER) << "\n" << pageinfo.first << " of " << pageinfo.second << " page";
- if (pageinfo.second > 1)
- Message::mstream(false, Message::MC_PAGE_NUMBER) << 's';
- Message::mstream(false, Message::MC_PAGE_NUMBER) << " converted in " << (System::time()-start_time) << " seconds\n";
- }
- }
- catch (DVIException &e) {
- Message::estream() << "\nDVI error: " << e.what() << '\n';
- }
- catch (PSException &e) {
- Message::estream() << "\nPostScript error: " << e.what() << '\n';
- }
- catch (SignalException &e) {
- Message::wstream(true) << "execution interrupted by user\n";
- }
- catch (MessageException &e) {
- Message::estream(true) << e.what() << '\n';
- }
- FileFinder::finish();
- return 0;
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.cpp
deleted file mode 100644
index 2893c299891..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-// ============================================================================
-// gzstream, C++ iostream classes wrapping the zlib compression library.
-// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// ============================================================================
-//
-// File : gzstream.C
-// Revision : $Revision: 1.3 $
-// Revision_date : $Date: 2006/01/05 16:22:35 $
-// Author(s) : Deepak Bandyopadhyay, Lutz Kettner
-//
-// Standard streambuf implementation following Nicolai Josuttis, "The
-// Standard C++ Library".
-// ============================================================================
-
-#include "gzstream.h"
-#include <iostream>
-#include <string.h> // for memcpy
-
-#ifdef GZSTREAM_NAMESPACE
-namespace GZSTREAM_NAMESPACE {
-#endif
-
-const int gzstreambuf::bufferSize = 47+256; // size of data buff
-
-// ----------------------------------------------------------------------------
-// Internal classes to implement gzstream. See header file for user classes.
-// ----------------------------------------------------------------------------
-
-// --------------------------------------
-// class gzstreambuf:
-// --------------------------------------
-
-gzstreambuf* gzstreambuf::open(const char* name, int compression_level, int open_mode) {
- if ( is_open())
- return (gzstreambuf*)0;
- mode = open_mode;
- // no append nor read/write mode
- if ((mode & std::ios::ate) || (mode & std::ios::app)
- || ((mode & std::ios::in) && (mode & std::ios::out)))
- return (gzstreambuf*)0;
- if (compression_level < 1)
- compression_level = 1;
- else if (compression_level > 9)
- compression_level = 9;
- char fmode[10];
- char* fmodeptr = fmode;
- if ( mode & std::ios::in)
- *fmodeptr++ = 'r';
- else if ( mode & std::ios::out)
- *fmodeptr++ = 'w';
- *fmodeptr++ = 'b';
- *fmodeptr++ = '0'+compression_level;
- *fmodeptr = '\0';
- file = gzopen( name, fmode);
- if (file == 0)
- return (gzstreambuf*)0;
- opened = 1;
- return this;
-}
-
-gzstreambuf * gzstreambuf::close() {
- if ( is_open()) {
- sync();
- opened = 0;
- if ( gzclose( file) == Z_OK)
- return this;
- }
- return (gzstreambuf*)0;
-}
-
-int gzstreambuf::underflow() { // used for input buffer only
- if ( gptr() && ( gptr() < egptr()))
- return * reinterpret_cast<unsigned char *>( gptr());
-
- if ( ! (mode & std::ios::in) || ! opened)
- return EOF;
- // Josuttis' implementation of inbuf
- int n_putback = gptr() - eback();
- if ( n_putback > 4)
- n_putback = 4;
- memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback);
-
- int num = gzread( file, buffer+4, bufferSize-4);
- if (num <= 0) // ERROR or EOF
- return EOF;
-
- // reset buffer pointers
- setg( buffer + (4 - n_putback), // beginning of putback area
- buffer + 4, // read position
- buffer + 4 + num); // end of buffer
-
- // return next character
- return * reinterpret_cast<unsigned char *>( gptr());
-}
-
-int gzstreambuf::flush_buffer() {
- // Separate the writing of the buffer from overflow() and
- // sync() operation.
- int w = pptr() - pbase();
- if ( gzwrite( file, pbase(), w) != w)
- return EOF;
- pbump( -w);
- return w;
-}
-
-int gzstreambuf::overflow( int c) { // used for output buffer only
- if ( ! ( mode & std::ios::out) || ! opened)
- return EOF;
- if (c != EOF) {
- *pptr() = c;
- pbump(1);
- }
- if ( flush_buffer() == EOF)
- return EOF;
- return c;
-}
-
-int gzstreambuf::sync() {
- // Changed to use flush_buffer() instead of overflow( EOF)
- // which caused improper behavior with std::endl and flush(),
- // bug reported by Vincent Ricard.
- if ( pptr() && pptr() > pbase()) {
- if ( flush_buffer() == EOF)
- return -1;
- }
- return 0;
-}
-
-// --------------------------------------
-// class gzstreambase:
-// --------------------------------------
-
-gzstreambase::gzstreambase( const char* name, int compression_level, int mode) {
- init( &buf);
- open( name, compression_level, mode);
-}
-
-gzstreambase::~gzstreambase() {
- buf.close();
-}
-
-void gzstreambase::open( const char* name, int compression_level, int open_mode) {
- if ( ! buf.open( name, compression_level, open_mode))
- clear( rdstate() | std::ios::badbit);
-}
-
-void gzstreambase::close() {
- if ( buf.is_open())
- if ( ! buf.close())
- clear( rdstate() | std::ios::badbit);
-}
-
-#ifdef GZSTREAM_NAMESPACE
-} // namespace GZSTREAM_NAMESPACE
-#endif
-
-// ============================================================================
-// EOF //
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.h
deleted file mode 100644
index 60f38c4fac7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/gzstream.h
+++ /dev/null
@@ -1,121 +0,0 @@
-// ============================================================================
-// gzstream, C++ iostream classes wrapping the zlib compression library.
-// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-// ============================================================================
-//
-// File : gzstream.h
-// Revision : $Revision: 1.3 $
-// Revision_date : $Date: 2006/01/05 16:22:35 $
-// Author(s) : Deepak Bandyopadhyay, Lutz Kettner
-//
-// Standard streambuf implementation following Nicolai Josuttis, "The
-// Standard C++ Library".
-// ============================================================================
-
-#ifndef GZSTREAM_H
-#define GZSTREAM_H 1
-
-// standard C++ with new header file names and std:: namespace
-#include <iostream>
-#include <fstream>
-#include <zlib.h>
-
-#ifdef GZSTREAM_NAMESPACE
-namespace GZSTREAM_NAMESPACE {
-#endif
-
-// ----------------------------------------------------------------------------
-// Internal classes to implement gzstream. See below for user classes.
-// ----------------------------------------------------------------------------
-
-class gzstreambuf : public std::streambuf {
-private:
- static const int bufferSize; // size of data buff
- // totals 512 bytes under g++ for igzstream at the end.
-
- gzFile file; // file handle for compressed file
- char buffer[47+256]; // data buffer
- char opened; // open/close state of stream
- int mode; // I/O mode
-
- int flush_buffer();
-public:
- gzstreambuf() : opened(0) {
- setp( buffer, buffer + (bufferSize-1));
- setg( buffer + 4, // beginning of putback area
- buffer + 4, // read position
- buffer + 4); // end position
- // ASSERT: both input & output capabilities will not be used together
- }
- int is_open() { return opened; }
- gzstreambuf* open(const char* name, int compression_level, int open_mode);
- gzstreambuf* close();
- ~gzstreambuf() { close(); }
-
- virtual int overflow( int c = EOF);
- virtual int underflow();
- virtual int sync();
-};
-
-class gzstreambase : virtual public std::ios {
-protected:
- gzstreambuf buf;
-public:
- gzstreambase() { init(&buf); }
- gzstreambase( const char* name, int compression_level, int open_mode);
- ~gzstreambase();
- void open( const char* name, int compression_level, int open_mode);
- void close();
- gzstreambuf* rdbuf() { return &buf; }
-};
-
-// ----------------------------------------------------------------------------
-// User classes. Use igzstream and ogzstream analogously to ifstream and
-// ofstream respectively. They read and write files based on the gz*
-// function interface of the zlib. Files are compatible with gzip compression.
-// ----------------------------------------------------------------------------
-
-class igzstream : public gzstreambase, public std::istream {
-public:
- igzstream() : std::istream( &buf) {}
- igzstream( const char* name, int compression_level, int open_mode = std::ios::in)
- : gzstreambase(name, compression_level, open_mode), std::istream( &buf) {}
- gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
- void open( const char* name, int compression_level, int open_mode = std::ios::in) {
- gzstreambase::open( name, compression_level, open_mode);
- }
-};
-
-class ogzstream : public gzstreambase, public std::ostream {
-public:
- ogzstream() : std::ostream( &buf) {}
- ogzstream( const char* name, int compression_level, int mode = std::ios::out)
- : gzstreambase(name, compression_level, mode), std::ostream( &buf) {}
- gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
- void open( const char* name, int compression_level, int open_mode = std::ios::out) {
- gzstreambase::open(name, compression_level, open_mode);
- }
-};
-
-#ifdef GZSTREAM_NAMESPACE
-} // namespace GZSTREAM_NAMESPACE
-#endif
-
-#endif // GZSTREAM_H
-// ============================================================================
-// EOF //
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/iapi.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/iapi.h
deleted file mode 100644
index 8e29d938d03..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/iapi.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/* Copyright (C) 2001-2006 Artifex Software, Inc.
- All Rights Reserved.
-
- This software is provided AS-IS with no warranty, either express or
- implied.
-
- This software is distributed under license and may not be copied, modified
- or distributed except as expressly authorized under the terms of that
- license. Refer to licensing information at http://www.artifex.com/
- or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
- San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
-*/
-
-/* $Id: iapi.h 9043 2008-08-28 22:48:19Z giles $ */
-
-/*
- * Public API for Ghostscript interpreter
- * for use both as DLL and for static linking.
- *
- * Should work for Windows, OS/2, Linux, Mac.
- *
- * DLL exported functions should be as similar as possible to imain.c
- * You will need to include "ierrors.h".
- *
- * Current problems:
- * 1. Ghostscript does not support multiple instances.
- * 2. Global variables in gs_main_instance_default()
- * and gsapi_instance_counter
- */
-
-/* Exported functions may need different prefix
- * GSDLLEXPORT marks functions as exported
- * GSDLLAPI is the calling convention used on functions exported
- * by Ghostscript
- * GSDLLCALL is used on callback functions called by Ghostscript
- * When you include this header file in the caller, you may
- * need to change the definitions by defining these
- * before including this header file.
- * Make sure you get the calling convention correct, otherwise your
- * program will crash either during callbacks or soon after returning
- * due to stack corruption.
- */
-
-#ifndef iapi_INCLUDED
-# define iapi_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(_WINDOWS_) || defined(__WINDOWS__)
-# ifndef _Windows
-# define _Windows
-# endif
-#endif
-
-#ifdef _Windows
-# ifndef GSDLLEXPORT
-# define GSDLLEXPORT __declspec(dllexport)
-# endif
-# ifndef GSDLLAPI
-# define GSDLLAPI __stdcall
-# endif
-# ifndef GSDLLCALL
-# define GSDLLCALL __stdcall
-# endif
-#endif /* _Windows */
-
-#if defined(OS2) && defined(__IBMC__)
-# ifndef GSDLLAPI
-# define GSDLLAPI _System
-# endif
-# ifndef GSDLLCALL
-# define GSDLLCALL _System
-# endif
-#endif /* OS2 && __IBMC */
-
-#ifdef __MACOS__
-# pragma export on
-#endif
-
-#ifndef GSDLLEXPORT
-# define GSDLLEXPORT
-#endif
-#ifndef GSDLLAPI
-# define GSDLLAPI
-#endif
-#ifndef GSDLLCALL
-# define GSDLLCALL
-#endif
-
-#if defined(__IBMC__)
-# define GSDLLAPIPTR * GSDLLAPI
-# define GSDLLCALLPTR * GSDLLCALL
-#else
-# define GSDLLAPIPTR GSDLLAPI *
-# define GSDLLCALLPTR GSDLLCALL *
-#endif
-
-#ifndef display_callback_DEFINED
-# define display_callback_DEFINED
-typedef struct display_callback_s display_callback;
-#endif
-
-typedef struct gsapi_revision_s {
- const char *product;
- const char *copyright;
- long revision;
- long revisiondate;
-} gsapi_revision_t;
-
-
-/* Get version numbers and strings.
- * This is safe to call at any time.
- * You should call this first to make sure that the correct version
- * of the Ghostscript is being used.
- * pr is a pointer to a revision structure.
- * len is the size of this structure in bytes.
- * Returns 0 if OK, or if len too small (additional parameters
- * have been added to the structure) it will return the required
- * size of the structure.
- */
-GSDLLEXPORT int GSDLLAPI
-gsapi_revision(gsapi_revision_t *pr, int len);
-
-/*
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- * Ghostscript supports only one instance.
- * The current implementation uses a global static instance
- * counter to make sure that only a single instance is used.
- * If you try to create two instances, the second attempt
- * will return < 0 and set pinstance to NULL.
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-/* Create a new instance of Ghostscript.
- * This instance is passed to most other API functions.
- * The caller_handle will be provided to callback functions.
- */
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_new_instance(void **pinstance, void *caller_handle);
-
-/*
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- * Ghostscript supports only one instance.
- * The current implementation uses a global static instance
- * counter to make sure that only a single instance is used.
- * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
- */
-/* Destroy an instance of Ghostscript
- * Before you call this, Ghostscript must have finished.
- * If Ghostscript has been initialised, you must call gsapi_exit()
- * before gsapi_delete_instance.
- */
-GSDLLEXPORT void GSDLLAPI
-gsapi_delete_instance(void *instance);
-
-/* Set the callback functions for stdio
- * The stdin callback function should return the number of
- * characters read, 0 for EOF, or -1 for error.
- * The stdout and stderr callback functions should return
- * the number of characters written.
- * If a callback address is NULL, the real stdio will be used.
- */
-GSDLLEXPORT int GSDLLAPI
-gsapi_set_stdio(void *instance,
- int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len),
- int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len),
- int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len));
-
-/* Set the callback function for polling.
- * This is used for handling window events or cooperative
- * multitasking. This function will only be called if
- * Ghostscript was compiled with CHECK_INTERRUPTS
- * as described in gpcheck.h.
- * The polling function should return 0 if all is well,
- * and negative if it wants ghostscript to abort.
- * The polling function must be fast.
- */
-GSDLLEXPORT int GSDLLAPI gsapi_set_poll(void *instance,
- int (GSDLLCALLPTR poll_fn)(void *caller_handle));
-
-/* Set the display device callback structure.
- * If the display device is used, this must be called
- * after gsapi_new_instance() and before gsapi_init_with_args().
- * See gdevdisp.h for more details.
- */
-GSDLLEXPORT int GSDLLAPI gsapi_set_display_callback(
- void *instance, display_callback *callback);
-
-
-/* Initialise the interpreter.
- * This calls gs_main_init_with_args() in imainarg.c
- * 1. If quit or EOF occur during gsapi_init_with_args(),
- * the return value will be e_Quit. This is not an error.
- * You must call gsapi_exit() and must not call any other
- * gsapi_XXX functions.
- * 2. If usage info should be displayed, the return value will be e_Info
- * which is not an error. Do not call gsapi_exit().
- * 3. Under normal conditions this returns 0. You would then
- * call one or more gsapi_run_*() functions and then finish
- * with gsapi_exit().
- */
-GSDLLEXPORT int GSDLLAPI gsapi_init_with_args(void *instance,
- int argc, char **argv);
-
-/*
- * The gsapi_run_* functions are like gs_main_run_* except
- * that the error_object is omitted.
- * If these functions return <= -100, either quit or a fatal
- * error has occured. You then call gsapi_exit() next.
- * The only exception is gsapi_run_string_continue()
- * which will return e_NeedInput if all is well.
- */
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_string_begin(void *instance,
- int user_errors, int *pexit_code);
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_string_continue(void *instance,
- const char *str, unsigned int length, int user_errors, int *pexit_code);
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_string_end(void *instance,
- int user_errors, int *pexit_code);
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_string_with_length(void *instance,
- const char *str, unsigned int length, int user_errors, int *pexit_code);
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_string(void *instance,
- const char *str, int user_errors, int *pexit_code);
-
-GSDLLEXPORT int GSDLLAPI
-gsapi_run_file(void *instance,
- const char *file_name, int user_errors, int *pexit_code);
-
-
-/* Exit the interpreter.
- * This must be called on shutdown if gsapi_init_with_args()
- * has been called, and just before gsapi_delete_instance().
- */
-GSDLLEXPORT int GSDLLAPI
-gsapi_exit(void *instance);
-
-/* Visual Tracer */
-/* This function is only for debug purpose clients */
-struct vd_trace_interface_s;
-GSDLLEXPORT void GSDLLAPI
-gsapi_set_visual_tracer(struct vd_trace_interface_s *I);
-
-
-/* function prototypes */
-typedef int (GSDLLAPIPTR PFN_gsapi_revision)(
- gsapi_revision_t *pr, int len);
-typedef int (GSDLLAPIPTR PFN_gsapi_new_instance)(
- void **pinstance, void *caller_handle);
-typedef void (GSDLLAPIPTR PFN_gsapi_delete_instance)(
- void *instance);
-typedef int (GSDLLAPIPTR PFN_gsapi_set_stdio)(void *instance,
- int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len),
- int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len),
- int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len));
-typedef int (GSDLLAPIPTR PFN_gsapi_set_poll)(void *instance,
- int(GSDLLCALLPTR poll_fn)(void *caller_handle));
-typedef int (GSDLLAPIPTR PFN_gsapi_set_display_callback)(
- void *instance, display_callback *callback);
-typedef int (GSDLLAPIPTR PFN_gsapi_init_with_args)(
- void *instance, int argc, char **argv);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_string_begin)(
- void *instance, int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_string_continue)(
- void *instance, const char *str, unsigned int length,
- int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_string_end)(
- void *instance, int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_string_with_length)(
- void *instance, const char *str, unsigned int length,
- int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_string)(
- void *instance, const char *str,
- int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_run_file)(void *instance,
- const char *file_name, int user_errors, int *pexit_code);
-typedef int (GSDLLAPIPTR PFN_gsapi_exit)(void *instance);
-typedef void (GSDLLAPIPTR PFN_gsapi_set_visual_tracer)
- (struct vd_trace_interface_s *I);
-
-
-#ifdef __MACOS__
-#pragma export off
-#endif
-
-#ifdef __cplusplus
-} /* extern 'C' protection */
-#endif
-
-#endif /* iapi_INCLUDED */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ierrors.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ierrors.h
deleted file mode 100644
index 3184341177e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/ierrors.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright (C) 2001-2006 Artifex Software, Inc.
- All Rights Reserved.
-
- This software is provided AS-IS with no warranty, either express or
- implied.
-
- This software is distributed under license and may not be copied, modified
- or distributed except as expressly authorized under the terms of that
- license. Refer to licensing information at http://www.artifex.com/
- or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
- San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
-*/
-
-/* $Id: ierrors.h 8022 2007-06-05 22:23:38Z giles $ */
-/* Definition of error codes */
-
-#ifndef ierrors_INCLUDED
-# define ierrors_INCLUDED
-
-/*
- * DO NOT USE THIS FILE IN THE GRAPHICS LIBRARY.
- * THIS FILE IS PART OF THE POSTSCRIPT INTERPRETER.
- * USE gserrors.h IN THE LIBRARY.
- */
-
-/*
- * A procedure that may return an error always returns
- * a non-negative value (zero, unless otherwise noted) for success,
- * or negative for failure.
- * We use ints rather than an enum to avoid a lot of casting.
- */
-
-/* Define the error name table */
-extern const char *const gs_error_names[];
-
- /* ------ PostScript Level 1 errors ------ */
-
-#define e_unknownerror (-1) /* unknown error */
-#define e_dictfull (-2)
-#define e_dictstackoverflow (-3)
-#define e_dictstackunderflow (-4)
-#define e_execstackoverflow (-5)
-#define e_interrupt (-6)
-#define e_invalidaccess (-7)
-#define e_invalidexit (-8)
-#define e_invalidfileaccess (-9)
-#define e_invalidfont (-10)
-#define e_invalidrestore (-11)
-#define e_ioerror (-12)
-#define e_limitcheck (-13)
-#define e_nocurrentpoint (-14)
-#define e_rangecheck (-15)
-#define e_stackoverflow (-16)
-#define e_stackunderflow (-17)
-#define e_syntaxerror (-18)
-#define e_timeout (-19)
-#define e_typecheck (-20)
-#define e_undefined (-21)
-#define e_undefinedfilename (-22)
-#define e_undefinedresult (-23)
-#define e_unmatchedmark (-24)
-#define e_VMerror (-25) /* must be the last Level 1 error */
-
-#define LEVEL1_ERROR_NAMES\
- "unknownerror", "dictfull", "dictstackoverflow", "dictstackunderflow",\
- "execstackoverflow", "interrupt", "invalidaccess", "invalidexit",\
- "invalidfileaccess", "invalidfont", "invalidrestore", "ioerror",\
- "limitcheck", "nocurrentpoint", "rangecheck", "stackoverflow",\
- "stackunderflow", "syntaxerror", "timeout", "typecheck", "undefined",\
- "undefinedfilename", "undefinedresult", "unmatchedmark", "VMerror"
-
- /* ------ Additional Level 2 errors (also in DPS) ------ */
-
-#define e_configurationerror (-26)
-#define e_undefinedresource (-27)
-#define e_unregistered (-28)
-
-#define LEVEL2_ERROR_NAMES\
- "configurationerror", "undefinedresource", "unregistered"
-
- /* ------ Additional DPS errors ------ */
-
-#define e_invalidcontext (-29)
-/* invalidid is for the NeXT DPS extension. */
-#define e_invalidid (-30)
-
-#define DPS_ERROR_NAMES\
- "invalidcontext", "invalidid"
-
-#define ERROR_NAMES\
- LEVEL1_ERROR_NAMES, LEVEL2_ERROR_NAMES, DPS_ERROR_NAMES
-
- /* ------ Pseudo-errors used internally ------ */
-
-/*
- * Internal code for a fatal error.
- * gs_interpret also returns this for a .quit with a positive exit code.
- */
-#define e_Fatal (-100)
-
-/*
- * Internal code for the .quit operator.
- * The real quit code is an integer on the operand stack.
- * gs_interpret returns this only for a .quit with a zero exit code.
- */
-#define e_Quit (-101)
-
-/*
- * Internal code for a normal exit from the interpreter.
- * Do not use outside of interp.c.
- */
-#define e_InterpreterExit (-102)
-
-/*
- * Internal code that indicates that a procedure has been stored in the
- * remap_proc of the graphics state, and should be called before retrying
- * the current token. This is used for color remapping involving a call
- * back into the interpreter -- inelegant, but effective.
- */
-#define e_RemapColor (-103)
-
-/*
- * Internal code to indicate we have underflowed the top block
- * of the e-stack.
- */
-#define e_ExecStackUnderflow (-104)
-
-/*
- * Internal code for the vmreclaim operator with a positive operand.
- * We need to handle this as an error because otherwise the interpreter
- * won't reload enough of its state when the operator returns.
- */
-#define e_VMreclaim (-105)
-
-/*
- * Internal code for requesting more input from run_string.
- */
-#define e_NeedInput (-106)
-
-/*
- * Internal code for a normal exit when usage info is displayed.
- * This allows Window versions of Ghostscript to pause until
- * the message can be read.
- */
-#define e_Info (-110)
-
-/*
- * Define which error codes require re-executing the current object.
- */
-#define ERROR_IS_INTERRUPT(ecode)\
- ((ecode) == e_interrupt || (ecode) == e_timeout)
-
-#endif /* ierrors_INCLUDED */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/macros.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/macros.h
deleted file mode 100644
index 73217c763e0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/macros.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*************************************************************************
-** macros.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_MACROS_H
-#define DVISVGM_MACROS_H
-
-#define FORALL(container, itertype, itervar) \
- for (itertype itervar=(container).begin(); itervar != (container).end(); ++itervar)
-
-#define IMPLEMENT_ARITHMETIC_OPERATOR(class, op) \
- inline class operator op (class a, const class &b) { \
- return a op##= b; \
- }
-
-#define IMPLEMENT_ARITHMETIC_OPERATOR2(class, scalar, op) \
- inline class operator op (class a, scalar b) { \
- return a op##= b; \
- }
-
-#define IMPLEMENT_OUTPUT_OPERATOR(class) \
- inline std::ostream& operator << (std::ostream &os, class obj) { \
- return obj.write(os); \
- }
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/options.xml b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/options.xml
deleted file mode 100644
index 33ce8bd44f9..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/options.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0"?>
-<!-- *********************************************************************
-** options.xml **
-** **
-** This file is part of dvisvgm - the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-***********************************************************************-->
-<!DOCTYPE cmdline SYSTEM "options.dtd">
-
-<cmdline class="CommandLine">
- <program>
- <name>dvisvgm</name>
- <usage>[options] dvifile</usage>
- <usage>-E [options] epsfile</usage>
- <description>This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.</description>
- </program>
- <options>
- <section title="Input options">
- <option long="page" short="p">
- <arg type="string" name="ranges" default="1"/>
- <description>choose pages to convert</description>
- </option>
- <option long="fontmap" short="m">
- <arg type="string" name="filenames"/>
- <description>evaluate (additional) font map files</description>
- </option>
- <option long="eps" short="E" if="!defined(DISABLE_GS)">
- <description>convert an EPS file to SVG</description>
- </option>
- </section>
- <section title="SVG output options">
- <option long="bbox" short="b">
- <arg type="string" name="size" default="min"/>
- <description>set size of bounding box</description>
- </option>
- <option long="linkmark" short="L">
- <arg type="string" name="type" default="box"/>
- <description>select how to mark hyperlinked areas</description>
- </option>
- <option long="output" short="o">
- <arg type="string" name="pattern"/>
- <description>set name pattern of output files</description>
- </option>
- <option long="precision" short="d">
- <arg type="int" name="number" default="0"/>
- <description>set number of decimal points (0-6)</description>
- </option>
- <option long="stdout" short="s">
- <description>write SVG output to stdout</description>
- </option>
- <option long="no-fonts" short="n">
- <arg type="int" name="variant" default="0" optional="yes"/>
- <description>draw glyphs by using path elements</description>
- </option>
- <option long="no-styles">
- <description>don't use styles to reference fonts</description>
- </option>
- <option long="zip" short="z">
- <arg type="int" name="level" default="9" optional="yes"/>
- <description>create compressed .svgz file</description>
- </option>
- </section>
- <section title="SVG transformations">
- <option long="rotate" short="r">
- <arg type="double" name="angle"/>
- <description>rotate page content clockwise</description>
- </option>
- <option long="scale" short="c">
- <arg type="string" name="sx[,sy]"/>
- <description>scale page content</description>
- </option>
- <option long="translate" short="t">
- <arg type="string" name="tx[,ty]"/>
- <description>shift page content</description>
- </option>
- <option long="transform" short="T">
- <arg type="string" name="commands"/>
- <description>transform page content</description>
- </option>
- <option long="zoom" short="Z">
- <arg type="double" name="factor" default="1.0"/>
- <description>zoom page content</description>
- </option>
- </section>
- <section title="Processing options">
- <option long="cache" short="C">
- <arg type="string" name="dir" optional="yes"/>
- <description>set/print path of cache directory</description>
- </option>
- <option long="exact" short="e">
- <description>compute exact glyph boxes</description>
- </option>
- <option long="keep">
- <description>keep temporary files</description>
- </option>
- <option long="libgs" if="!defined(HAVE_LIBGS) &amp;&amp; !defined(DISABLE_GS)">
- <arg name="filename" type="string"/>
- <description>set name of Ghostscript shared library</description>
- </option>
- <option long="mag" short="M">
- <arg type="double" name="factor" default="4"/>
- <description>magnification of Metafont output</description>
- </option>
- <option long="no-mktexmf">
- <description>don't try to create missing fonts</description>
- </option>
- <option long="no-specials" short="S">
- <arg type="string" name="prefixes" optional="yes"/>
- <description>don't process [selected] specials</description>
- </option>
- <option long="trace-all" short="a">
- <arg name="retrace" type="bool" optional="yes" default="no"/>
- <description>trace all glyphs of bitmap fonts</description>
- </option>
- </section>
- <section title="Message options">
- <option long="color">
- <description>colorize messages</description>
- </option>
- <option long="help" short="h">
- <arg name="mode" type="int" optional="yes" default="0"/>
- <description>print this summary of options and exit</description>
- </option>
- <option long="list-specials" short="l">
- <description>print supported special sets and exit</description>
- </option>
- <option long="progress" short="P">
- <arg name="delay" type="double" optional="yes" default="0.5"/>
- <description>enable progess indicator</description>
- </option>
- <option long="verbosity" short="v">
- <arg type="unsigned" name="level" default="7"/>
- <description>set verbosity level (0-7)</description>
- </option>
- <option long="version" short="V">
- <arg type="bool" name="extended" optional="yes" default="no"/>
- <description>print version and exit</description>
- </option>
- </section>
- </options>
-</cmdline>
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/psdefs.cpp b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/psdefs.cpp
deleted file mode 100644
index 4edce3af1d8..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/psdefs.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*************************************************************************
-** psdefs.cpp **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include "PSInterpreter.h"
-
-const char *PSInterpreter::PSDEFS =
-"3 dict dup begin/Install{matrix setmatrix}def/HWResolution[72 72]def/PageSize[10"
-"000 10000]def end setpagedevice/@dodraw true store/@patcnt 0 store/@SD systemdic"
-"t def/@UD userdict def true setglobal @SD/:save @SD/save get put @SD/:restore @S"
-"D/restore get put @SD/:gsave @SD/gsave get put @SD/:grestore @SD/grestore get pu"
-"t @SD/:grestoreall @SD/grestoreall get put @SD/:stroke @SD/stroke get put @SD/:f"
-"ill @SD/fill get put @SD/:eofill @SD/eofill get put @SD/:clip @SD/clip get put @"
-"SD/:eoclip @SD/eoclip get put @SD/:charpath @SD/charpath get put @SD/:show @SD/s"
-"how get put @SD/.setopacityalpha known not{@SD/.setopacityalpha{pop}put}if @SD/p"
-"rseq{-1 1{-1 roll =only( )print}for(\\n)print}put @SD/prcmd{( )exch(\\ndvi.)3{pr"
-"int}repeat prseq}put @SD/cvxall{{cvx}forall}put @SD/defpr{[exch[/copy @SD]cvxall"
-" 5 -1 roll dup 6 1 roll[/get/exec]cvxall 6 -1 roll dup 7 1 roll 4 -1 roll dup 5 "
-"1 roll dup length string cvs/prcmd cvx]cvx def}put @SD/querypos{{currentpoint}st"
-"opped{$error/newerror false put}{2(querypos)prcmd}ifelse}put @SD/applyscalevals{"
-"1 0 transform 0 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt "
-"0 1 transform 0 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt "
-"1 0 transform dup mul exch dup dup mul 3 -1 roll add sqrt div 3(applyscalevals)p"
-"rcmd}put @SD/prpath{{2(moveto)prcmd}{2(lineto)prcmd}{6(curveto)prcmd}{0(closepat"
-"h)prcmd}pathforall}put @SD/charpath{/@dodraw false store :charpath/@dodraw true "
-"store}put @SD/show{@dodraw{dup :gsave currentpoint newpath moveto true charpath "
-"eofill :grestore :show}if}put @SD/stroke{@dodraw{0(newpath)prcmd prpath 0(stroke"
-")prcmd newpath}{:stroke}ifelse}put @SD/fill{@dodraw{0(newpath)prcmd prpath 0(fil"
-"l)prcmd newpath}{:fill}ifelse}put @SD/eofill{@dodraw{0(newpath)prcmd prpath 0(eo"
-"fill)prcmd newpath}{:eofill}ifelse}put @SD/clip{:clip 0(newpath)prcmd prpath 0(c"
-"lip)prcmd}put @SD/eoclip{:eoclip 0(newpath)prcmd prpath 0(eoclip)prcmd}put @SD/b"
-"op{pop pop}put/@rect{4 -2 roll moveto exch dup 0 rlineto exch 0 exch rlineto neg"
-" 0 rlineto closepath}bind def/@rectcc{4 -2 roll moveto 2 copy 0 lt exch 0 lt xor"
-"{dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto}{exch dup 0 rlineto exch 0"
-" exch rlineto neg 0 rlineto}ifelse closepath}bind def @SD/rectclip{newpath dup t"
-"ype/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectcc}ifelse clip newpath"
-"}put @SD/rectfill{gsave newpath dup type/arraytype eq{aload length 4 idiv{@rectc"
-"c}repeat}{@rectcc}ifelse fill grestore}put @SD/rectstroke{gsave newpath dup type"
-"/arraytype eq{aload length 4 idiv{@rect}repeat}{@rect}ifelse stroke grestore}put"
-" false setglobal @SD readonly pop/initclip 0 defpr/sysexec{@SD exch get exec}def"
-"/adddot{dup length 1 add string dup 0 46 put dup 3 -1 roll 1 exch putinterval}de"
-"f/setlinewidth{dup/setlinewidth sysexec applyscalevals 1(setlinewidth)prcmd}def/"
-"setlinecap 1 defpr/setlinejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 ro"
-"ll 2 copy/setdash sysexec applyscalevals exch aload length 1 add -1 roll countto"
-"mark(setdash)prcmd pop}def/setgstate{currentlinewidth 1(setlinewidth)prcmd curre"
-"ntlinecap 1(setlinecap)prcmd currentlinejoin 1(setlinejoin)prcmd currentmiterlim"
-"it 1(setmiterlimit)prcmd currentrgbcolor 3(setrgbcolor)prcmd 6 array currentmatr"
-"ix aload pop 6(setmatrix)prcmd currentdash mark 3 1 roll exch aload length 1 add"
-" -1 roll counttomark(setdash)prcmd pop}def/save{@UD begin/@saveID vmstatus pop p"
-"op def end :save @saveID 1(save)prcmd}def/restore{:restore setgstate @UD/@saveID"
-" known{@UD begin @saveID end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestor"
-"e{:grestore setgstate 0(grestore)prcmd}def/grestoreall{:grestoreall setstate 0(g"
-"restoreall)prcmd}def/rotate{dup type/arraytype ne{dup 1(rotate)prcmd}if/rotate s"
-"ysexec}def/scale{dup type/arraytype ne{2 copy 2(scale)prcmd}if/scale sysexec}def"
-"/translate{dup type/arraytype ne{2 copy 2(translate)prcmd}if/translate sysexec}d"
-"ef/setmatrix{dup/setmatrix sysexec aload pop 6(setmatrix)prcmd}def/initmatrix{ma"
-"trix setmatrix}def/concat{matrix currentmatrix matrix concatmatrix setmatrix}def"
-"/makepattern{gsave <</mx 3 -1 roll >> begin dup/XUID[1000000 @patcnt]put mx/make"
-"pattern sysexec dup dup begin PatternType @patcnt BBox aload pop XStep YStep Pai"
-"ntType mx aload pop 15(makepattern)prcmd newpath matrix setmatrix PaintProc 0 1("
-"makepattern)prcmd end/@patcnt @patcnt 1 add store end grestore}def/setpattern{be"
-"gin PatternType 1 eq{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[currentcol"
-"orspace aload length -1 roll pop]setcolorspace/setcolor sysexec XUID aload pop e"
-"xch pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd}{/setpattern sysexec"
-"}ifelse end}def/setcolor{dup type/dicttype eq{setpattern}{/setcolor sysexec}ifel"
-"se}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3 de"
-"fpr/.setopacityalpha{dup/.setopacityalpha sysexec 1(setopacityalpha)prcmd}def ";
diff --git a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/types.h b/Build/source/texk/dvisvgm/dvisvgm-1.6/src/types.h
deleted file mode 100644
index 306a0ab4e26..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-1.6/src/types.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** types.h **
-** **
-** This file is part of dvisvgm -- the DVI to SVG converter **
-** Copyright (C) 2005-2014 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef DVISVGM_TYPES_H
-#define DVISVGM_TYPES_H
-
-namespace internal {
- template<unsigned BYTES>
- class ERROR_inttype_not_available
- {
- ERROR_inttype_not_available();
- };
-
- template<bool FIRST, typename A, typename B>
- struct select
- {
- typedef A T;
- };
-
- template<typename A, typename B>
- struct select<false, A, B>
- {
- typedef B T;
- };
-}
-
-
-// Retrieves a signed integer type with sizeof(T) == BYTES
-template<unsigned BYTES, bool SIGNED>
-struct int_t
-{
- typedef typename internal::select<sizeof(signed char) == BYTES, signed char,
- typename internal::select<sizeof(signed short) == BYTES, signed short,
- typename internal::select<sizeof(signed int) == BYTES, signed int,
- typename internal::select<sizeof(signed long) == BYTES, signed long,
- typename internal::select<sizeof(signed long long) == BYTES, signed long long,
- internal::ERROR_inttype_not_available<BYTES> >::T>::T>::T>::T>::T T;
-};
-
-
-// Retrieves an unsigned integer type with sizeof(T) == BYTES
-template<unsigned BYTES>
-struct int_t<BYTES, false>
-{
- typedef typename internal::select<sizeof(unsigned char) == BYTES, unsigned char,
- typename internal::select<sizeof(unsigned short) == BYTES, unsigned short,
- typename internal::select<sizeof(unsigned int) == BYTES, unsigned int,
- typename internal::select<sizeof(unsigned long) == BYTES, unsigned long,
- typename internal::select<sizeof(unsigned long long) == BYTES, unsigned long long,
- internal::ERROR_inttype_not_available<BYTES> >::T>::T>::T>::T>::T T;
-};
-
-
-// Machine independent definition of sized integer types
-typedef int_t<1, true>::T Int8;
-typedef int_t<2, true>::T Int16;
-typedef int_t<4, true>::T Int32;
-typedef int_t<8, true>::T Int64;
-typedef int_t<1, false>::T UInt8;
-typedef int_t<2, false>::T UInt16;
-typedef int_t<4, false>::T UInt32;
-typedef int_t<8, false>::T UInt64;
-
-typedef Int32 FixWord;
-typedef UInt32 ScaledInt;
-
-#endif