diff options
author | Karl Berry <karl@freefriends.org> | 2018-03-16 17:01:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-03-16 17:01:01 +0000 |
commit | 6bdf7e89f698c2bcf5c3d17bc130869b0637ad35 (patch) | |
tree | 5161ebbe8cf2cebc8a32715758be0e32d5ecf3a8 /Build/source/texk/dvisvgm | |
parent | e69e90912037ff24c42325a1b87022ceef0066cf (diff) |
dvisvgm 2.3.4
git-svn-id: svn://tug.org/texlive/trunk@46983 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvisvgm')
87 files changed, 3828 insertions, 2811 deletions
diff --git a/Build/source/texk/dvisvgm/ChangeLog b/Build/source/texk/dvisvgm/ChangeLog index 6d8d759b6ce..ec0339c4873 100644 --- a/Build/source/texk/dvisvgm/ChangeLog +++ b/Build/source/texk/dvisvgm/ChangeLog @@ -1,3 +1,7 @@ +2018-03-16 Karl Berry <karl@freefriends.org> + + * Import 2.3.4. + 2018-03-11 Karl Berry <karl@tug.org> * configure.ac (HAVE_LIBGS): find libgs for non-native-tl builds. diff --git a/Build/source/texk/dvisvgm/TLpatches/TL-Changes b/Build/source/texk/dvisvgm/TLpatches/TL-Changes index ce481d6e4f3..f06d9a687c1 100644 --- a/Build/source/texk/dvisvgm/TLpatches/TL-Changes +++ b/Build/source/texk/dvisvgm/TLpatches/TL-Changes @@ -26,7 +26,8 @@ svn rm `!!` svn status | sed -n 's/^\!//p' # rerun, should be empty now cd .. -# patch to integrate into TL build: +# patch to integrate into TL build (may well need adjusting): patch -d dvisvgm-src -p1 <TLpatches/patch-08-makefiles +# remake autostuff. autoreconf diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure index f09f39c0d54..b6969bae08a 100755 --- a/Build/source/texk/dvisvgm/configure +++ b/Build/source/texk/dvisvgm/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.3. +# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.4. # # Report bugs to <tex-k@tug.org>. # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dvisvgm (TeX Live)' PACKAGE_TARNAME='dvisvgm--tex-live-' -PACKAGE_VERSION='2.3.3' -PACKAGE_STRING='dvisvgm (TeX Live) 2.3.3' +PACKAGE_VERSION='2.3.4' +PACKAGE_STRING='dvisvgm (TeX Live) 2.3.4' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1375,7 +1375,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dvisvgm (TeX Live) 2.3.3 to adapt to many kinds of systems. +\`configure' configures dvisvgm (TeX Live) 2.3.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1446,7 +1446,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.3:";; + short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.4:";; esac cat <<\_ACEOF @@ -1581,7 +1581,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dvisvgm (TeX Live) configure 2.3.3 +dvisvgm (TeX Live) configure 2.3.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2449,7 +2449,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dvisvgm (TeX Live) $as_me 2.3.3, which was +It was created by dvisvgm (TeX Live) $as_me 2.3.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -8188,7 +8188,7 @@ fi # Define the identity of the package. PACKAGE='dvisvgm--tex-live-' - VERSION='2.3.3' + VERSION='2.3.4' cat >>confdefs.h <<_ACEOF @@ -20189,7 +20189,7 @@ Usage: $0 [OPTIONS] Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ -dvisvgm (TeX Live) config.lt 2.3.3 +dvisvgm (TeX Live) config.lt 2.3.4 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -23585,7 +23585,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dvisvgm (TeX Live) $as_me 2.3.3, which was +This file was extended by dvisvgm (TeX Live) $as_me 2.3.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23651,7 +23651,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dvisvgm (TeX Live) config.status 2.3.3 +dvisvgm (TeX Live) config.status 2.3.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog index e87fb4b7185..def2eca2b78 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog +++ b/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog @@ -1,11 +1,64 @@ -2018-01-12 Martin Gieseking <martin.gieseking@uos.de> +2018-02-20 Martin Gieseking <martin.gieseking@uos.de> + + * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, + src/version.hpp: + set version to 2.3.3 + + * NEWS: + updated NEWS + +2018-02-19 Martin Gieseking <martin.gieseking@uos.de> + + * src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.hpp: + don't remove fontmap definitions before processing pdf:mapXXX specials + + * src/FontEngine.cpp: + prevent creating string from nullptr + +2018-02-08 Martin Gieseking <martin.gieseking@uos.de> + + * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, + src/version.hpp: + set version to 2.3.2 + + * src/TpicSpecialHandler.cpp: + prevent potential division by 0 + + * src/dvisvgm.cpp: + prevent dereferencing nullptr (CACHE_PATH) * NEWS: updated NEWS +2018-02-05 Martin Gieseking <martin.gieseking@uos.de> + + * src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.hpp, + src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.cpp, + src/DVIToSVGActions.hpp: + don't update the SVG position after DVIActions::setChar() +Otherwise, all + characters get an explicit x position assigned even if it's +already + reached by applying the character's advance width. + +2018-01-15 Martin Gieseking <martin.gieseking@uos.de> + + * configure.ac, src/Ghostscript.cpp: + prevent build error if GS development files are missing + +2018-01-14 Martin Gieseking <martin.gieseking@uos.de> + + * src/RangeMap.cpp, src/RangeMap.hpp: + added iterator and some getters to RangeMap + +2018-01-12 Martin Gieseking <martin.gieseking@uos.de> + * .appveyor.yml: AppVeyor: fixed download link of ttfautohint-dll + * NEWS: + updated NEWS + 2018-01-11 Martin Gieseking <martin.gieseking@uos.de> * doc/dvisvgm.txt.in: @@ -34,12 +87,6 @@ 2018-01-02 Martin Gieseking <martin.gieseking@uos.de> - * src/Font.cpp: - fixed char width of fonts slanted by style option (closes #82) - - * src/dvisvgm.cpp: - avoid potential dangling string pointer to --fontmap argument - * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, doc/dvisvgm.txt.in, doc/tweak-db-article.xsl, doc/tweak-db-refentry.xsl, @@ -151,26 +198,32 @@ tests/normalize.xsl, tests/testmain.cpp, update-copyright-year.sh: updated year in copyright statements to 2018 -2017-12-31 Martin Gieseking <martin.gieseking@uos.de> + * src/dvisvgm.cpp: + avoid potential dangling string pointer to --fontmap argument - * src/FontWriter.cpp: - keep unhinted TTF if autohinting failed + * src/Font.cpp: + fixed char width of fonts slanted by style option (closes #82) + +2017-12-31 Martin Gieseking <martin.gieseking@uos.de> * src/TTFAutohint.hpp: don't declare member variables of TTFAutohint if ttfautohint is not available + * src/FontWriter.cpp: + keep unhinted TTF if autohinting failed + 2017-12-28 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README, README.md: - updated README and NEWS + * .appveyor.yml: + AppVeyor: download and install ttfautohint headers * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.3 - * .appveyor.yml: - AppVeyor: download and install ttfautohint headers + * NEWS, README, README.md: + updated README and NEWS 2017-12-27 Martin Gieseking <martin.gieseking@uos.de> @@ -212,14 +265,14 @@ 2017-12-19 Martin Gieseking <martin.gieseking@uos.de> + * configure.ac: + configure: dropped check of outdated Ghostscript version + * configure.ac, src/Makefile.am: configure: added --with-kpathsea to set the path of the kpathsea devel files closes #71 - * configure.ac: - configure: dropped check of outdated Ghostscript version - 2017-12-18 Martin Gieseking <martin.gieseking@uos.de> * src/psdefs.cpp: @@ -227,11 +280,6 @@ closes #71 2017-12-17 Martin Gieseking <martin.gieseking@uos.de> - * CMakeLists.txt, cmake-config.h, cmake/FindTTFAutohint.cmake, - configure.ac, src/CMakeLists.txt, src/FontWriter.cpp, src/Makefile.am, - src/dvisvgm.cpp, tests/CMakeLists.txt: - added optional support for ttfautohint - * libs/woff2/Makefile.am, libs/woff2/include/woff2/file.h, src/CMakeLists.txt, src/FontWriter.cpp, src/FontWriter.hpp, src/Makefile.am, src/StreamReader.hpp, src/StreamWriter.cpp, @@ -239,6 +287,11 @@ closes #71 src/ffwrapper.c, src/ffwrapper.h, src/utility.cpp, src/utility.hpp: replaced ff_sfd_to_woff() with TrueTypeFont::writeWOFF() + * CMakeLists.txt, cmake-config.h, cmake/FindTTFAutohint.cmake, + configure.ac, src/CMakeLists.txt, src/FontWriter.cpp, src/Makefile.am, + src/dvisvgm.cpp, tests/CMakeLists.txt: + added optional support for ttfautohint + 2017-12-14 Martin Gieseking <martin.gieseking@uos.de> * configure.ac, libs/CMakeLists.txt, libs/Makefile.am, @@ -338,9 +391,6 @@ closes #71 2017-12-12 Martin Gieseking <martin.gieseking@uos.de> - * tests/CMakeLists.txt: - ctest: colorize test results and keep gtest colors - * libs/variant/include/mpark/config.hpp, libs/variant/include/mpark/lib.hpp, libs/variant/include/mpark/variant.hpp: @@ -349,15 +399,18 @@ closes #71 fixes a build error introduced with MSVC 19.12 -2017-12-11 Martin Gieseking <martin.gieseking@uos.de> + * tests/CMakeLists.txt: + ctest: colorize test results and keep gtest colors - * NEWS: - updated NEWS +2017-12-11 Martin Gieseking <martin.gieseking@uos.de> * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.2.3 + * NEWS: + updated NEWS + 2017-11-29 Martin Gieseking <martin.gieseking@uos.de> * libs/woff2/brotli/common/dictionary.h, @@ -371,36 +424,35 @@ fixes a build error 2017-11-24 Martin Gieseking <martin.gieseking@uos.de> - * src/DependencyGraph.hpp: - simplified DependencyGraph::GraphNode - * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp, src/BoundingBox.hpp, src/Color.cpp, src/PathClipper.cpp, src/SVGTree.cpp, tests/BoundingBoxTest.cpp: minor code cleanup and improvements -2017-11-23 Martin Gieseking <martin.gieseking@uos.de> + * src/DependencyGraph.hpp: + simplified DependencyGraph::GraphNode - * src/Makefile.am, tests/Makefile.am, tests/create-makefile: - suppress warnings regarding 'mismatched tags' - (class/struct) -https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_and_class_.28-Wmismatched-tags.29_.3F +2017-11-23 Martin Gieseking <martin.gieseking@uos.de> - * src/DependencyGraph.hpp: - fixed dangling pointer issue in DependencyGraph + * tests/TpicSpecialTest.cpp: + added missing initializers in TpicSpecialTest * tests/EmSpecialTest.cpp: added missing initializers in EmSpecialTest - * tests/TpicSpecialTest.cpp: - added missing initializers in TpicSpecialTest + * src/DependencyGraph.hpp: + fixed dangling pointer issue in DependencyGraph + + * src/Makefile.am, tests/Makefile.am, tests/create-makefile: + suppress warnings regarding 'mismatched tags' + (class/struct) +https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_and_class_.28-Wmismatched-tags.29_.3F 2017-11-22 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIReader.hpp, tests/CMakeLists.txt, tests/DVIReaderTest.cpp, - tests/Makefile.am, tests/data/Makefile.am, tests/data/cmr10.pfb, - tests/data/sample_v2.dvi, tests/data/sample_v3.dvi: - added test for DVIReader + * src/PSPattern.cpp, src/SVGCharHandler.cpp, src/SVGTree.cpp, + src/TpicSpecialHandler.cpp: + removed redundant calls of std::move() * src/Subfont.cpp, src/Subfont.hpp, tests/CMakeLists.txt, tests/CMapManagerTest.cpp, tests/FileFinderTest.cpp, @@ -409,9 +461,10 @@ https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_a tests/testutil.hpp: tests: moved common initializations to testmain.cpp - * src/PSPattern.cpp, src/SVGCharHandler.cpp, src/SVGTree.cpp, - src/TpicSpecialHandler.cpp: - removed redundant calls of std::move() + * src/DVIReader.hpp, tests/CMakeLists.txt, tests/DVIReaderTest.cpp, + tests/Makefile.am, tests/data/Makefile.am, tests/data/cmr10.pfb, + tests/data/sample_v2.dvi, tests/data/sample_v3.dvi: + added test for DVIReader 2017-11-21 Martin Gieseking <martin.gieseking@uos.de> @@ -420,35 +473,35 @@ https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_a 2017-11-20 Martin Gieseking <martin.gieseking@uos.de> - * README.md: - added donation badge to readme - * tests/CMapTest.cpp, tests/GFReaderTest.cpp, tests/JFMReaderTest.cpp, tests/RangeMapTest.cpp, tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp, tests/ToUnicodeMapTest.cpp, tests/VectorStreamTest.cpp: tests: few code improvements + * README.md: + added donation badge to readme + 2017-11-17 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * src/Font.cpp, src/Font.hpp: + prevent dangling pointers to font map entries (closes #79) - * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, - src/version.hpp: - set version to 2.2.2 + * src/CMapManager.cpp, src/FileFinder.cpp, src/Font.cpp, src/Font.hpp, + src/FontEngine.cpp, src/FontManager.cpp, src/FontMap.cpp, + src/FontMap.hpp, src/Ghostscript.cpp, src/MiKTeXCom.cpp, src/XMLNode.cpp: + replaced null pointer constants with 'nullptr' * src/XMLString.cpp, tests/TensorProductPatchTest.cpp, tests/XMLStringTest.cpp: avoid scientific notation when printing floats/doubles - * src/CMapManager.cpp, src/FileFinder.cpp, src/Font.cpp, src/Font.hpp, - src/FontEngine.cpp, src/FontManager.cpp, src/FontMap.cpp, - src/FontMap.hpp, src/Ghostscript.cpp, src/MiKTeXCom.cpp, src/XMLNode.cpp: - replaced null pointer constants with 'nullptr' + * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, + src/version.hpp: + set version to 2.2.2 - * src/Font.cpp, src/Font.hpp: - prevent dangling pointers to font map entries (closes #79) + * NEWS: + updated NEWS 2017-11-16 Martin Gieseking <martin.gieseking@uos.de> @@ -457,19 +510,19 @@ https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_a 2017-11-13 Martin Gieseking <martin.gieseking@uos.de> + * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, + src/version.hpp: + set version to 2.2.1 + + * NEWS, README.md: + updated NEWS and README + * libs/variant/include/mpark/lib.hpp, libs/variant/include/mpark/variant.hpp: updated mpark::variant to commit ea542a0 https://github.com/mpark/variant/commit/ea542a0fef86fb8c1696238b95bdaddb8ff2337c - * NEWS, README.md: - updated NEWS and README - - * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, - src/version.hpp: - set version to 2.2.1 - 2017-11-10 Martin Gieseking <martin.gieseking@uos.de> * README, README.md, doc/dvisvgm.txt.in: @@ -487,18 +540,15 @@ https://github.com/mpark/variant/commit/ea542a0fef86fb8c1696238b95bdaddb8ff2337c 2017-10-30 Martin Gieseking <martin.gieseking@uos.de> - * src/PsSpecialHandler.hpp, src/psdefs.cpp, src/psdefs.ps, - tests/PSInterpreterTest.cpp: - call applyscalevals on every change of the CTM - * src/CMakeLists.txt, src/PsSpecialHandler.hpp, src/psdefs.cpp, src/psdefs.ps, tests/PSInterpreterTest.cpp: properly apply CTM to linewidth (closes #77) -2017-10-27 Martin Gieseking <martin.gieseking@uos.de> + * src/PsSpecialHandler.hpp, src/psdefs.cpp, src/psdefs.ps, + tests/PSInterpreterTest.cpp: + call applyscalevals on every change of the CTM - * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: - manage heap memory in DependencyGraph with unique_ptrs +2017-10-27 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.hpp, src/DvisvgmSpecialHandler.cpp, src/EPSToSVG.cpp, src/EPSToSVG.hpp, @@ -515,6 +565,9 @@ https://github.com/mpark/variant/commit/ea542a0fef86fb8c1696238b95bdaddb8ff2337c which helps to ensure proper ownership and simplifies deleting the corresponding objects + * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: + manage heap memory in DependencyGraph with unique_ptrs + 2017-10-21 Martin Gieseking <martin.gieseking@uos.de> * libs/ff-woff/fontforge/macbinary.c: @@ -527,19 +580,6 @@ which helps to ensure 2017-10-17 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README, README.md: - updated NEWS and README - - * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, - src/version.hpp: - set version to 2.2 - - * src/Length.hpp, src/PageSize.cpp: - added user-defined literals for some length units - - * src/dvisvgm.cpp: - fixed output of option --version - * src/CMapManager.cpp, src/CMapReader.cpp, src/CMapReader.hpp, src/DVIActions.hpp, src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.hpp, src/FileFinder.cpp, src/Font.cpp, src/Font.hpp, @@ -554,16 +594,29 @@ which helps to ensure tests/ShadingPatchTest.cpp: replaced several bare new/delete statements with unique pointers + * src/dvisvgm.cpp: + fixed output of option --version + + * src/Length.hpp, src/PageSize.cpp: + added user-defined literals for some length units + + * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, + src/version.hpp: + set version to 2.2 + + * NEWS, README, README.md: + updated NEWS and README + 2017-10-16 Martin Gieseking <martin.gieseking@uos.de> - * src/Subfont.cpp: - don't access unique_ptr after it has been moved + * src/FontWriter.cpp: + added missing #include of config.h * src/Message.cpp: check for '\0' at end of DVISVGM_COLORS - * src/FontWriter.cpp: - added missing #include of config.h + * src/Subfont.cpp: + don't access unique_ptr after it has been moved 2017-10-15 Martin Gieseking <martin.gieseking@uos.de> @@ -572,9 +625,6 @@ which helps to ensure 2017-10-13 Martin Gieseking <martin.gieseking@uos.de> - * .travis.yml: - Travis: use gcc 4.9 rather than 4.8 to compile mpark::variant correctly - * AUTHORS, configure.ac, doc/dvisvgm.txt.in, libs/CMakeLists.txt, libs/Makefile.am, libs/variant/CMakeLists.txt, libs/variant/LICENSE.md, libs/variant/Makefile.am, libs/variant/include/mpark/config.hpp, @@ -588,6 +638,9 @@ which helps to ensure tests/SpecialManagerTest.cpp, tests/create-makefile: added evaluation of PDF hyperlink specials (closes #74) + * .travis.yml: + Travis: use gcc 4.9 rather than 4.8 to compile mpark::variant correctly + 2017-10-11 Martin Gieseking <martin.gieseking@uos.de> * src/CMakeLists.txt, src/HtmlSpecialHandler.cpp, @@ -624,14 +677,14 @@ which helps to ensure 2017-10-06 Martin Gieseking <martin.gieseking@uos.de> - * src/Subfont.cpp, src/Subfont.hpp, src/utility.hpp: - removed stream-based constructor of SubfontException + * src/CRC32.hpp, src/SpecialManager.hpp, src/Subfont.hpp, src/XMLNode.hpp: + use delete/default to remove/implement constructors * src/XMLNode.cpp, src/XMLNode.hpp: added move constructor to XMLElementNode - * src/CRC32.hpp, src/SpecialManager.hpp, src/Subfont.hpp, src/XMLNode.hpp: - use delete/default to remove/implement constructors + * src/Subfont.cpp, src/Subfont.hpp, src/utility.hpp: + removed stream-based constructor of SubfontException 2017-09-29 Martin Gieseking <martin.gieseking@uos.de> @@ -643,17 +696,25 @@ which helps to ensure 2017-09-28 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVG.cpp, src/Length.hpp, src/PageSize.cpp, src/PageSize.hpp, + src/utility.hpp, tests/PageSizeTest.cpp: + use class Length in PageSize rather than plain numbers + * src/BoundingBox.cpp, src/BoundingBox.hpp, src/DVIToSVG.cpp, src/utility.cpp, src/utility.hpp, tests/BoundingBoxTest.cpp, tests/UtilityTest.cpp: rewrite of BoundingBox::extractLengths() - * src/DVIToSVG.cpp, src/Length.hpp, src/PageSize.cpp, src/PageSize.hpp, - src/utility.hpp, tests/PageSizeTest.cpp: - use class Length in PageSize rather than plain numbers - 2017-09-21 Martin Gieseking <martin.gieseking@uos.de> + * src/TpicSpecialHandler.cpp: + use isxdigit() to check hex digits + + * src/InputReader.cpp, src/InputReader.hpp, tests/CMakeLists.txt, + tests/Makefile.am, tests/SplittedCharInputBufferTest.cpp, + tests/StreamInputBufferTest.cpp, tests/StringMatcherTest.cpp: + use Knuth-Morris-Pratt algorithm to find a string in a stream + * libs/woff2/brotli/common/constants.h, libs/woff2/brotli/common/dictionary.c, libs/woff2/brotli/common/dictionary.h, @@ -682,14 +743,6 @@ which helps to ensure libs/woff2/brotli/include/brotli/encode.h: updated Brotli to version 1.0.1 - * src/InputReader.cpp, src/InputReader.hpp, tests/CMakeLists.txt, - tests/Makefile.am, tests/SplittedCharInputBufferTest.cpp, - tests/StreamInputBufferTest.cpp, tests/StringMatcherTest.cpp: - use Knuth-Morris-Pratt algorithm to find a string in a stream - - * src/TpicSpecialHandler.cpp: - use isxdigit() to check hex digits - 2017-09-19 Martin Gieseking <martin.gieseking@uos.de> * transfer-cs: @@ -702,6 +755,11 @@ which helps to ensure 2017-09-15 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVG.cpp, src/SpecialManager.cpp, src/SpecialManager.hpp, + src/utility.hpp, tests/CMakeLists.txt, tests/Makefile.am, + tests/SpecialManagerTest.cpp: + use smart pointers to allocate/deallocate SpecialHandlers + * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.hpp, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.hpp, src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.hpp, @@ -716,19 +774,14 @@ which helps to ensure tests/ColorSpecialTest.cpp, tests/PapersizeSpecialTest.cpp: changed return value of SpecialHandler::prefixes() to std::vector - * src/DVIToSVG.cpp, src/SpecialManager.cpp, src/SpecialManager.hpp, - src/utility.hpp, tests/CMakeLists.txt, tests/Makefile.am, - tests/SpecialManagerTest.cpp: - use smart pointers to allocate/deallocate SpecialHandlers - 2017-09-13 Martin Gieseking <martin.gieseking@uos.de> - * tests/CMakeLists.txt: - make name of Python script part of custom command - * tests/FileSystemTest.cpp: close streams before removing crresponding files + * tests/CMakeLists.txt: + make name of Python script part of custom command + 2017-09-12 Martin Gieseking <martin.gieseking@uos.de> * tests/CMakeLists.txt: @@ -741,13 +794,11 @@ which helps to ensure 2017-09-08 Martin Gieseking <martin.gieseking@uos.de> - * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c: - updated xxhash to version 0.6.3 + * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: + DependencyGraph::getKeys(): return result, don't use reference parameter - * src/FileFinder.cpp, src/FileFinder.hpp, tests/CMapManagerTest.cpp, - tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, - tests/MapLineTest.cpp, tests/SubfontTest.cpp: - init libkpathsea correctly in tests to prevent assertion failures + * src/FileFinder.cpp, src/Makefile.am: + added missing #include; added windows.hpp to Makefile.am * tests/CMakeLists.txt, tests/Makefile.am, tests/create-makefile, tests/gtest/CMakeLists.txt, tests/testmain.cpp: @@ -755,48 +806,30 @@ which helps to ensure tests this is required to initialize kpathsea properly, for example - * src/FileFinder.cpp, src/Makefile.am: - added missing #include; added windows.hpp to Makefile.am + * src/FileFinder.cpp, src/FileFinder.hpp, tests/CMapManagerTest.cpp, + tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, + tests/MapLineTest.cpp, tests/SubfontTest.cpp: + init libkpathsea correctly in tests to prevent assertion failures - * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: - DependencyGraph::getKeys(): return result, don't use reference parameter + * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c: + updated xxhash to version 0.6.3 2017-09-07 Martin Gieseking <martin.gieseking@uos.de> - * doc/dvisvgm.txt.in, src/dvisvgm.cpp: - added pdftex.map to default mapfiles - - * src/MapLine.cpp, tests/MapLineTest.cpp: - treat prefix "<<" in a mapline as "<[" (skip second char) - - * src/GFReader.cpp: - fixed incorrect integer type in GFReader; insert CharInfos with emplace - * tests/CMakeLists.txt, tests/FontCacheTest.cpp, tests/Makefile.am, tests/create-makefile: fixed path issue in FontCacheTest -2017-09-06 Martin Gieseking <martin.gieseking@uos.de> + * src/GFReader.cpp: + fixed incorrect integer type in GFReader; insert CharInfos with emplace - * src/CLCommandLine.cpp, src/CMapManager.cpp, src/CMapManager.hpp, - src/Calculator.cpp, src/Calculator.hpp, src/DVIToSVG.cpp, - src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, - src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.hpp, - src/EmSpecialHandler.cpp, src/EmSpecialHandler.hpp, src/FileFinder.cpp, - src/Font.cpp, src/Font.hpp, src/FontCache.hpp, src/FontEncoding.cpp, - src/FontManager.cpp, src/FontManager.hpp, src/FontMap.hpp, - src/GFReader.hpp, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.hpp, - src/InputReader.cpp, src/InputReader.hpp, src/Message.cpp, - src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/SVGTree.cpp, - src/SVGTree.hpp, src/SpecialManager.hpp, src/Subfont.cpp, - src/Subfont.hpp, tests/StreamInputBufferTest.cpp: - replaced std::map with std::unordered_map where possible to increase - performance + * src/MapLine.cpp, tests/MapLineTest.cpp: + treat prefix "<<" in a mapline as "<[" (skip second char) - * src/DLLoader.hpp, src/Directory.cpp, src/Directory.hpp, - src/FileSystem.cpp, src/MiKTeXCom.hpp, src/Process.cpp, src/Terminal.cpp, - src/windows.hpp: - disable macros min/max defined in windows.h + * doc/dvisvgm.txt.in, src/dvisvgm.cpp: + added pdftex.map to default mapfiles + +2017-09-06 Martin Gieseking <martin.gieseking@uos.de> * src/BasicDVIReader.cpp, src/BgColorSpecialHandler.cpp, src/Bitmap.cpp, src/BoundingBox.cpp, src/CMap.cpp, src/CMapReader.cpp, src/CRC32.cpp, @@ -817,25 +850,45 @@ this is required to initialize kpathsea properly, for example src/XMLString.cpp, src/dvisvgm.cpp: removed redundant #includes of config.h + * src/DLLoader.hpp, src/Directory.cpp, src/Directory.hpp, + src/FileSystem.cpp, src/MiKTeXCom.hpp, src/Process.cpp, src/Terminal.cpp, + src/windows.hpp: + disable macros min/max defined in windows.h + + * src/CLCommandLine.cpp, src/CMapManager.cpp, src/CMapManager.hpp, + src/Calculator.cpp, src/Calculator.hpp, src/DVIToSVG.cpp, + src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, + src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.hpp, + src/EmSpecialHandler.cpp, src/EmSpecialHandler.hpp, src/FileFinder.cpp, + src/Font.cpp, src/Font.hpp, src/FontCache.hpp, src/FontEncoding.cpp, + src/FontManager.cpp, src/FontManager.hpp, src/FontMap.hpp, + src/GFReader.hpp, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.hpp, + src/InputReader.cpp, src/InputReader.hpp, src/Message.cpp, + src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/SVGTree.cpp, + src/SVGTree.hpp, src/SpecialManager.hpp, src/Subfont.cpp, + src/Subfont.hpp, tests/StreamInputBufferTest.cpp: + replaced std::map with std::unordered_map where possible to increase + performance + 2017-09-05 Martin Gieseking <martin.gieseking@uos.de> + * tests/DvisvgmSpecialTest.cpp: + replaced constexpr with const to make clang happy + * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, tests/DvisvgmSpecialTest.cpp: allow all common length units in dvisvgm specials - * tests/DvisvgmSpecialTest.cpp: - replaced constexpr with const to make clang happy - 2017-08-27 Martin Gieseking <martin.gieseking@uos.de> - * tests/MapLineTest.cpp: - added braces to prevent compiler warnings - * src/AGLTable.hpp, src/CMakeLists.txt, src/CMapReader.cpp, src/Color.cpp, src/CommandLine.hpp, src/FontWriter.cpp, src/genhashmap.py, tests/genhashcheck.py: use list initialization on constant std::arrays + * tests/MapLineTest.cpp: + added braces to prevent compiler warnings + 2017-08-25 Martin Gieseking <martin.gieseking@uos.de> * src/CMapManager.cpp, src/DvisvgmSpecialHandler.cpp, src/Font.cpp, @@ -892,6 +945,11 @@ this is required to initialize kpathsea properly, for example 2017-05-30 Martin Gieseking <martin.gieseking@uos.de> + * src/GraphicsPath.hpp: + replaced vector with deque in class GraphicsPath +due to cheaper front + insertions/deletions + * src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp: manage memory of ClippingStack with shared pointers - automatically @@ -899,22 +957,17 @@ this is required to initialize kpathsea properly, for example - avoids keeping popped (and no longer required) paths in the pool vector - * src/GraphicsPath.hpp: - replaced vector with deque in class GraphicsPath -due to cheaper front - insertions/deletions - 2017-05-26 Martin Gieseking <martin.gieseking@uos.de> - * src/FileFinder.cpp, src/PsSpecialHandler.cpp: - lookup psfile in texmf tree if it's not present in cwd (fixes #69) + * src/Pair.hpp, tests/PairTest.cpp: + added abs() and negation operator to class Pair * src/Matrix.hpp, src/PsSpecialHandler.cpp: respect transformation of PS state in computation of psfile position (fixes #70) - * src/Pair.hpp, tests/PairTest.cpp: - added abs() and negation operator to class Pair + * src/FileFinder.cpp, src/PsSpecialHandler.cpp: + lookup psfile in texmf tree if it's not present in cwd (fixes #69) 2017-05-16 Martin Gieseking <martin.gieseking@uos.de> @@ -925,9 +978,6 @@ $srcdir/data may be 2017-05-15 Martin Gieseking <martin.gieseking@uos.de> - * .appveyor.yml: - updated FreeType to version 2.8 - * libs/woff2/CMakeLists.txt, libs/woff2/brotli/LICENSE, libs/woff2/brotli/Makefile.am, libs/woff2/brotli/common/constants.h, libs/woff2/brotli/common/dictionary.c, @@ -962,6 +1012,9 @@ $srcdir/data may be libs/woff2/brotli/include/brotli/types.h: updated brotli to version 0.6.0 + * .appveyor.yml: + updated FreeType to version 2.8 + 2017-05-11 Martin Gieseking <martin.gieseking@uos.de> * src/Process.cpp: @@ -969,6 +1022,10 @@ $srcdir/data may be 2017-05-08 Martin Gieseking <martin.gieseking@uos.de> + * CMakeLists.txt, cmake-config.h, configure.ac, src/SignalHandler.cpp, + src/SignalHandler.hpp: + use sigaction() rather than signal() if possible + * src/Process.cpp, src/Process.hpp: refactored Process class - use separate class to encapsulate @@ -978,10 +1035,6 @@ $srcdir/data may be - prevent blocking if subprocess doesn't write anything to stdout/stderr - * CMakeLists.txt, cmake-config.h, configure.ac, src/SignalHandler.cpp, - src/SignalHandler.hpp: - use sigaction() rather than signal() if possible - 2017-04-28 Martin Gieseking <martin.gieseking@uos.de> * src/Process.cpp: @@ -994,16 +1047,16 @@ $srcdir/data may be 2017-04-24 Martin Gieseking <martin.gieseking@uos.de> - * src/TpicSpecialHandler.cpp, tests/TpicSpecialTest.cpp: - added evaluation of TPIC's 'tx' special command + * src/Color.cpp, src/Color.hpp, src/PSPattern.cpp, + tests/ColorSpecialTest.cpp: + avoid implicit conversion of Color object to RGB integer * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.hpp, tests/CMakeLists.txt, tests/Makefile.am, tests/TpicSpecialTest.cpp: improved the TPIC special handler and added tests for it - * src/Color.cpp, src/Color.hpp, src/PSPattern.cpp, - tests/ColorSpecialTest.cpp: - avoid implicit conversion of Color object to RGB integer + * src/TpicSpecialHandler.cpp, tests/TpicSpecialTest.cpp: + added evaluation of TPIC's 'tx' special command 2017-04-18 Martin Gieseking <martin.gieseking@uos.de> @@ -1012,14 +1065,14 @@ $srcdir/data may be 2017-04-14 Martin Gieseking <martin.gieseking@uos.de> - * src/Ghostscript.cpp: - try to load libgs.X.dylib on Mac systems (closes #66) + * src/DLLoader.cpp, src/DLLoader.hpp: + added DLLoader::loadLibrary() to assign a different library * src/DLLoader.cpp, src/DLLoader.hpp, src/Ghostscript.cpp: replaced c-string parameter of DLLoader() and loadLibrary() with string - * src/DLLoader.cpp, src/DLLoader.hpp: - added DLLoader::loadLibrary() to assign a different library + * src/Ghostscript.cpp: + try to load libgs.X.dylib on Mac systems (closes #66) 2017-03-22 Martin Gieseking <martin.gieseking@uos.de> @@ -1028,33 +1081,33 @@ $srcdir/data may be 2017-03-03 Martin Gieseking <martin.gieseking@uos.de> - * tests/FilePathTest.cpp, tests/FontCacheTest.cpp, - tests/SVGOutputTest.cpp: - tests: minor path improvements + * src/FileFinder.cpp, tests/FileFinderTest.cpp: + fixed handling of absolute additional directories in FileFinder * .gitignore, CMakeLists.txt, libs/ff-woff/CMakeLists.txt, src/CMakeLists.txt, tests/CMakeLists.txt: cmake: fixed build issues when using a separate build directory - * src/FileFinder.cpp, tests/FileFinderTest.cpp: - fixed handling of absolute additional directories in FileFinder + * tests/FilePathTest.cpp, tests/FontCacheTest.cpp, + tests/SVGOutputTest.cpp: + tests: minor path improvements 2017-03-02 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.cpp, src/FilePath.cpp, src/FontWriter.cpp, src/PageSize.cpp, - src/dvisvgm.cpp, src/utility.cpp, src/utility.hpp, tests/UtilityTest.cpp: - util::tolower() no longer modifies its string parameter + * libs/woff2/src/normalize.cc, libs/woff2/src/woff2_enc.cc: + woff2: removed unused variables * libs/woff2/CMakeLists.txt, src/Makefile.am, src/dvisvgm.cpp: improved generation of list showing the library versions - * libs/woff2/src/normalize.cc, libs/woff2/src/woff2_enc.cc: - woff2: removed unused variables + * src/Color.cpp, src/FilePath.cpp, src/FontWriter.cpp, src/PageSize.cpp, + src/dvisvgm.cpp, src/utility.cpp, src/utility.hpp, tests/UtilityTest.cpp: + util::tolower() no longer modifies its string parameter 2017-03-01 Martin Gieseking <martin.gieseking@uos.de> - * libs/woff2/CMakeLists.txt: - adapted Makefiles to updated libwoff2 + * libs/ff-woff/fontforge/nowakowskittfinstr.c: + ff-woff: removed redundant variables * libs/woff2/Makefile.am, libs/woff2/brotli/Makefile.am, libs/woff2/brotli/common/constants.h, @@ -1124,8 +1177,8 @@ $srcdir/data may be libs/woff2/src/woff2_enc.cc, src/Makefile.am: updated woff2 to https://github.com/google/woff2/commit/68e9ab5 - * libs/ff-woff/fontforge/nowakowskittfinstr.c: - ff-woff: removed redundant variables + * libs/woff2/CMakeLists.txt: + adapted Makefiles to updated libwoff2 2017-02-23 Martin Gieseking <martin.gieseking@uos.de> @@ -1145,6 +1198,10 @@ $srcdir/data may be 2017-02-22 Martin Gieseking <martin.gieseking@uos.de> + * libs/woff2/brotli/tools/bro.cc, libs/woff2/brotli/tools/rfc-format.py, + libs/woff2/brotli/tools/version.h: + removed redundant files + * CMakeLists.txt, cmake-config.h, cmake/CodeCoverage.cmake, cmake/GetTriple.cmake, libs/CMakeLists.txt, libs/clipper/CMakeLists.txt, libs/ff-woff/CMakeLists.txt, libs/woff2/CMakeLists.txt, @@ -1152,31 +1209,27 @@ $srcdir/data may be tests/CMakeLists.txt, tests/gtest/CMakeLists.txt: improved cmake build environment (works with ninja) - * libs/woff2/brotli/tools/bro.cc, libs/woff2/brotli/tools/rfc-format.py, - libs/woff2/brotli/tools/version.h: - removed redundant files - 2017-02-20 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * .appveyor.yml, .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.1.3 + * NEWS: + updated NEWS + 2017-02-18 Martin Gieseking <martin.gieseking@uos.de> - * tests/BezierTest.cpp, tests/CRC32Test.cpp, tests/ToUnicodeMapTest.cpp, - tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, - tests/XMLNodeTest.cpp: - minor additions to some tests + * libs/ff-woff/inc/ffintl.h: + ff-woff: removed redundant defines and prototypes to fix build failure + on Solaris * tests/genhashcheck.py: reformatted genhashcheck - * libs/ff-woff/inc/ffintl.h: - ff-woff: removed redundant defines and prototypes to fix build failure - on Solaris + * tests/BezierTest.cpp, tests/CRC32Test.cpp, tests/ToUnicodeMapTest.cpp, + tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, + tests/XMLNodeTest.cpp: + minor additions to some tests 2017-02-15 Martin Gieseking <martin.gieseking@uos.de> @@ -1188,23 +1241,23 @@ $srcdir/data may be 2017-02-14 Martin Gieseking <martin.gieseking@uos.de> - * tests/genhashcheck.py: - made genhashcheck.py compatible with Python 3 (plus few minor changes) - * README, README.md: added information on required C++11 compiler to README + * tests/genhashcheck.py: + made genhashcheck.py compatible with Python 3 (plus few minor changes) + 2017-02-13 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.cpp, src/Matrix.cpp, src/utility.hpp: - replaced local copies of deg2rad with global function + * src/MapLine.hpp: + removed 'expicit' keyword from default constructor to make gcc 4.8 happy * src/Color.cpp, src/Matrix.cpp, src/TpicSpecialHandler.cpp, src/utility.hpp: replaced non-standard constant M_PI with own definition - * src/MapLine.hpp: - removed 'expicit' keyword from default constructor to make gcc 4.8 happy + * src/Color.cpp, src/Matrix.cpp, src/utility.hpp: + replaced local copies of deg2rad with global function 2017-02-11 Martin Gieseking <martin.gieseking@uos.de> @@ -1213,32 +1266,19 @@ $srcdir/data may be 2017-02-10 Martin Gieseking <martin.gieseking@uos.de> - * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: - set version to 2.1.2 - - * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h: - removed 'restrict' keyword from xxHash - - * tests/StreamReaderTest.cpp: - clear istream flags to prevent failure of StreamReaderTest - * src/Calculator.cpp: fixed number parsing in Calculator class (failed on Mac) -2017-02-09 Martin Gieseking <martin.gieseking@uos.de> - - * src/CLCommandLine.cpp: - reset status flags before changing the sstream source + * tests/StreamReaderTest.cpp: + clear istream flags to prevent failure of StreamReaderTest - * src/GFReader.cpp, src/StreamReader.cpp, tests/GFReaderTest.cpp, - tests/StreamReaderTest.cpp: - improved implementation of getString() + * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h: + removed 'restrict' keyword from xxHash - * src/VectorStream.hpp: - don't access first vector component if the vector is empty + * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: + set version to 2.1.2 - * src/Directory.cpp, tests/DirectoryTest.cpp: - prevent calling closedir() with null pointer argument +2017-02-09 Martin Gieseking <martin.gieseking@uos.de> * .gitignore, .travis.yml, Makefile.am, configure.ac, tests/Makefile.am, tests/create-makefile, tests/gtest/LICENSE, @@ -1273,38 +1313,51 @@ $srcdir/data may be tests/gtest/src/gtest.cc, tests/gtest/src/gtest_main.cc: bundle gtest with the sources to simplify building and running the tests + * src/Directory.cpp, tests/DirectoryTest.cpp: + prevent calling closedir() with null pointer argument + + * src/VectorStream.hpp: + don't access first vector component if the vector is empty + + * src/GFReader.cpp, src/StreamReader.cpp, tests/GFReaderTest.cpp, + tests/StreamReaderTest.cpp: + improved implementation of getString() + + * src/CLCommandLine.cpp: + reset status flags before changing the sstream source + 2017-02-08 Martin Gieseking <martin.gieseking@uos.de> - * src/XMLNode.cpp: - fixed memory leak in class XMLElementNode + * tests/CommandLineTest.cpp: + removed redundant function - * src/Subfont.cpp: - fixed memory leak in Subfont class + * src/XMLString.cpp, tests/EmSpecialTest.cpp, tests/GFGlyphTracerTest.cpp: + avoid negative zeros (-0) in SVG output - * tests/CMapReaderTest.cpp: - fixed memory leak in CMapReaderTest + * src/BoundingBox.cpp: + fixed memory issue in BoundingBox class * src/CMapReader.cpp, src/InputReader.cpp, src/InputReader.hpp, tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp: fixed potential number overflow issue - * src/BoundingBox.cpp: - fixed memory issue in BoundingBox class + * tests/CMapReaderTest.cpp: + fixed memory leak in CMapReaderTest - * src/XMLString.cpp, tests/EmSpecialTest.cpp, tests/GFGlyphTracerTest.cpp: - avoid negative zeros (-0) in SVG output + * src/Subfont.cpp: + fixed memory leak in Subfont class - * tests/CommandLineTest.cpp: - removed redundant function + * src/XMLNode.cpp: + fixed memory leak in class XMLElementNode 2017-02-07 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * configure.ac: replaced deprecated AC_CONFIG_HEADER + * NEWS: + updated NEWS + 2017-02-06 Martin Gieseking <martin.gieseking@uos.de> * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: @@ -1317,23 +1370,23 @@ $srcdir/data may be 2017-02-03 Martin Gieseking <martin.gieseking@uos.de> - * configure.ac, libs/ff-woff/fontforge/splinefont.h: - include xlocale.h in ff-woff if available (fixes #65) - * src/Color.cpp, src/Color.hpp, src/VectorIterator.hpp, tests/ColorTest.cpp, tests/VectorIteratorTest.cpp: increased coverage of ColorTest + * configure.ac, libs/ff-woff/fontforge/splinefont.h: + include xlocale.h in ff-woff if available (fixes #65) + 2017-02-02 Martin Gieseking <martin.gieseking@uos.de> - * src/Font.cpp, src/Font.hpp: - report Metafont failures only once for each font + * src/Makefile.am: + removed spurious colon from src/Makefile.am * configure.ac: allow C++11 language extensions if necessary - * src/Makefile.am: - removed spurious colon from src/Makefile.am + * src/Font.cpp, src/Font.hpp: + report Metafont failures only once for each font 2017-01-31 Martin Gieseking <martin.gieseking@uos.de> @@ -1358,15 +1411,9 @@ $srcdir/data may be 2017-01-25 Martin Gieseking <martin.gieseking@uos.de> - * m4/ax_code_coverage.m4, m4/ax_cxx_compile_stdcxx.m4: - updated m4 scripts to latest versions - - * tests/Makefile.am, tests/create-makefile: - removed redundant linker flag from tests - - * src/FontCache.cpp, src/FontCache.hpp, tests/FontCacheTest.cpp, - tests/Makefile.am: - added FontCacheTest + * src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, + tests/Makefile.am, tests/PapersizeSpecialTest.cpp, tests/create-makefile: + added PapersizeSpecialTest * tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, @@ -1375,9 +1422,15 @@ $srcdir/data may be tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp: added 'override' specifier to gtest methods - * src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, - tests/Makefile.am, tests/PapersizeSpecialTest.cpp, tests/create-makefile: - added PapersizeSpecialTest + * src/FontCache.cpp, src/FontCache.hpp, tests/FontCacheTest.cpp, + tests/Makefile.am: + added FontCacheTest + + * tests/Makefile.am, tests/create-makefile: + removed redundant linker flag from tests + + * m4/ax_code_coverage.m4, m4/ax_cxx_compile_stdcxx.m4: + updated m4 scripts to latest versions 2017-01-23 Martin Gieseking <martin.gieseking@uos.de> @@ -1386,14 +1439,14 @@ $srcdir/data may be 2017-01-22 Martin Gieseking <martin.gieseking@uos.de> + * src/options.xml: + get name of options.xml from command-line; fixed indentation + * src/genhashmap.cpp, src/genhashmap.py, src/glyphlist/Makefile, src/glyphlist/glyphlist.dtd, src/glyphlist/glyphlist.xsl, src/glyphlist/xmlify.py: improved generation of AGLTable.hpp - * src/options.xml: - get name of options.xml from command-line; fixed indentation - 2017-01-20 Martin Gieseking <martin.gieseking@uos.de> * libs/ff-woff/Makefile.am, libs/ff-woff/fontforge/fontforge.h, @@ -1409,16 +1462,6 @@ exit() 2017-01-18 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - - * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: - set version to 2.1 - - * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: - get program name and version from version.hpp, avoid using macros from - config.h - * src/BoundingBox.cpp, src/Color.cpp, src/DVIToSVGActions.cpp, src/FilePath.cpp, src/FileSystem.cpp, src/FontWriter.cpp, src/Makefile.am, src/PageSize.cpp, src/SVGOutput.cpp, src/utility.cpp, @@ -1426,14 +1469,17 @@ exit() moved common utility functions to separate compilation unit and namespace -2017-01-17 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: + get program name and version from version.hpp, avoid using macros from + config.h - * src/FontWriter.cpp, src/FontWriter.hpp: - print error message if FontWriter can't write temporary files + * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: + set version to 2.1 - * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp, - src/options.xml: - added option --tmpdir to select a different temp folder + * NEWS: + updated NEWS + +2017-01-17 Martin Gieseking <martin.gieseking@uos.de> * libs/ff-woff/fontforge/utils.c, src/FileSystem.cpp, src/FileSystem.hpp, src/Font.cpp, src/FontWriter.cpp, src/GlyphTracerMessages.hpp, @@ -1442,18 +1488,25 @@ exit() create temp files in the system's temp folder rather than in cwd (closes #63) -2017-01-12 Martin Gieseking <martin.gieseking@uos.de> + * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp, + src/options.xml: + added option --tmpdir to select a different temp folder - * tests/GhostscriptTest.cpp: - disable GS banner in GhostscriptTest + * src/FontWriter.cpp, src/FontWriter.hpp: + print error message if FontWriter can't write temporary files - * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/SVGTree.hpp: - print warning message if output file could not be written +2017-01-12 Martin Gieseking <martin.gieseking@uos.de> * src/FilePath.cpp, src/FilePath.hpp, tests/FilePathTest.cpp, tests/SVGOutputTest.cpp: retain letter case of filenames (Windows) + * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/SVGTree.hpp: + print warning message if output file could not be written + + * tests/GhostscriptTest.cpp: + disable GS banner in GhostscriptTest + 2017-01-10 Martin Gieseking <martin.gieseking@uos.de> * src/PsSpecialHandler.cpp, src/dvisvgm.cpp: @@ -1578,19 +1631,19 @@ exit() 2016-12-16 Martin Gieseking <martin.gieseking@uos.de> - * doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl: - manpage: use mixed case titles in pdf output - - * doc/db2html.xsl: - manpage: replace icon of Author section + * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, + doc/tweak-dblatex-pdf.xsl: + added missing email address to copyright headers * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl: indent with tabs rather than spaces - * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, - doc/tweak-dblatex-pdf.xsl: - added missing email address to copyright headers + * doc/db2html.xsl: + manpage: replace icon of Author section + + * doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl: + manpage: use mixed case titles in pdf output 2016-12-15 Martin Gieseking <martin.gieseking@uos.de> @@ -1609,14 +1662,8 @@ exit() 2016-11-12 Martin Gieseking <martin.gieseking@uos.de> - * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: - set version to 2.0.4 - - * configure.ac, libs/Makefile.am, libs/clipper/Makefile.am, - libs/ff-woff/Makefile.am, libs/woff2/Makefile.am, - libs/woff2/brotli/Makefile.am, libs/woff2/brotli/enc/Makefile.am, - libs/woff2/src/Makefile.am, src/Makefile.am: - added license files of bundled libraries; relocated Makefiles + * doc/dvisvgm.txt.in: + minor changes in manpage * README, README.md, configure.ac, libs/Makefile.am, libs/ff-woff/LICENSE, libs/ff-woff/Makefile.am, libs/ff-woff/README.md, @@ -1666,18 +1713,24 @@ exit() libs/ff-woff/inc/ustring.h, libs/ff-woff/inc/utype.h, src/Makefile.am: bundle reduced fontforge library (ff-woff) - * doc/dvisvgm.txt.in: - minor changes in manpage + * configure.ac, libs/Makefile.am, libs/clipper/Makefile.am, + libs/ff-woff/Makefile.am, libs/woff2/Makefile.am, + libs/woff2/brotli/Makefile.am, libs/woff2/brotli/enc/Makefile.am, + libs/woff2/src/Makefile.am, src/Makefile.am: + added license files of bundled libraries; relocated Makefiles + + * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: + set version to 2.0.4 2016-11-07 Martin Gieseking <martin.gieseking@uos.de> + * src/CommandLine.hpp, src/options.xml: + fixed a typo in the --help output + * src/BasicDVIReader.cpp, src/BasicDVIReader.hpp, src/DVIReader.cpp, src/DVIReader.hpp: use const variables for DVI opcodes rather than the values directly - * src/CommandLine.hpp, src/options.xml: - fixed a typo in the --help output - 2016-11-01 Martin Gieseking <martin.gieseking@uos.de> * src/FontWriter.cpp: @@ -1685,21 +1738,21 @@ exit() 2016-09-27 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README, README.md: - updated NEWS and README - * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.0.3 -2016-09-23 Martin Gieseking <martin.gieseking@uos.de> + * NEWS, README, README.md: + updated NEWS and README - * src/DVIReader.cpp: - fixed positioning of rules +2016-09-23 Martin Gieseking <martin.gieseking@uos.de> * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp, src/DVIToSVG.hpp: dropped tracking of previous DVI state from DVIReader + * src/DVIReader.cpp: + fixed positioning of rules + 2016-09-22 Martin Gieseking <martin.gieseking@uos.de> * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp: @@ -1707,35 +1760,35 @@ exit() 2016-09-18 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README.md: - updated NEWS and README - - * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: - set version to 2.0.2 + * src/DVIReader.cpp: + fixed type regression in computation of DVI positions (closes #61) * src/RangeMap.cpp: don't decrement iterator if it points to begin() - * src/DVIReader.cpp: - fixed type regression in computation of DVI positions (closes #61) - -2016-09-03 Martin Gieseking <martin.gieseking@uos.de> + * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: + set version to 2.0.2 - * NEWS, README, README.md: + * NEWS, README.md: updated NEWS and README +2016-09-03 Martin Gieseking <martin.gieseking@uos.de> + * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.0.1 + * NEWS, README, README.md: + updated NEWS and README + 2016-08-31 Martin Gieseking <martin.gieseking@uos.de> + * README, README.md: + added link to reduced FF library to README + * doc/dvisvgm.txt.in, src/FontWriter.cpp, src/FontWriter.hpp, src/SVGTree.cpp, src/SVGTree.hpp, src/ffwrapper.c: added option to autohint fonts created by the FontForge library - * README, README.md: - added link to reduced FF library to README - 2016-08-30 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVGActions.hpp, src/FontManager.hpp, src/MetafontWrapper.hpp: @@ -1743,20 +1796,20 @@ exit() 2016-08-28 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * src/FileFinder.cpp, src/FileFinder.hpp: + removed unused variable - * README, README.md: - updated README files + * src/CLCommandLine.cpp: + added missing cast to avoid compiler warning * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: set version to 2.0 - * src/CLCommandLine.cpp: - added missing cast to avoid compiler warning + * README, README.md: + updated README files - * src/FileFinder.cpp, src/FileFinder.hpp: - removed unused variable + * NEWS: + updated NEWS 2016-08-27 Martin Gieseking <martin.gieseking@uos.de> @@ -1766,6 +1819,17 @@ exit() 2016-08-25 Martin Gieseking <martin.gieseking@uos.de> + * Makefile.am, clipper/License.txt, clipper/Makefile.am, + clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, libs/Makefile.am, + libs/clipper/License.txt, libs/clipper/Makefile.am, + libs/clipper/clipper.cpp, libs/clipper/clipper.hpp, libs/xxHash/LICENSE, + libs/xxHash/Makefile.am, libs/xxHash/xxhash-fileno.patch, + libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c, + src/Makefile.am, tests/Makefile.am, tests/create-makefile, + xxHash/LICENSE, xxHash/Makefile.am, xxHash/xxhash-fileno.patch, + xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: + moved bundled libraries (clipper, xxHash) to subfolder 'libs' + * configure.ac, doc/dvisvgm.txt.in, libs/Makefile.am, libs/woff2/LICENSE, libs/woff2/brotli/LICENSE, libs/woff2/brotli/enc/Makefile.am, libs/woff2/brotli/enc/backward_references.cc, @@ -1818,17 +1882,6 @@ exit() src/FontWriter.cpp, src/FontWriter.hpp, src/Makefile.am: added support for embedding WOFF2 fonts - * Makefile.am, clipper/License.txt, clipper/Makefile.am, - clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, libs/Makefile.am, - libs/clipper/License.txt, libs/clipper/Makefile.am, - libs/clipper/clipper.cpp, libs/clipper/clipper.hpp, libs/xxHash/LICENSE, - libs/xxHash/Makefile.am, libs/xxHash/xxhash-fileno.patch, - libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c, - src/Makefile.am, tests/Makefile.am, tests/create-makefile, - xxHash/LICENSE, xxHash/Makefile.am, xxHash/xxhash-fileno.patch, - xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: - moved bundled libraries (clipper, xxHash) to subfolder 'libs' - 2016-08-24 Martin Gieseking <martin.gieseking@uos.de> * src/XMLNode.hpp: @@ -1836,6 +1889,9 @@ exit() 2016-08-23 Martin Gieseking <martin.gieseking@uos.de> + * src/FontEngine.cpp: + fixed sign of the font descender + * configure.ac, doc/dvisvgm.txt.in, src/CommandLine.hpp, src/FontWriter.cpp, src/FontWriter.hpp, src/GraphicsPath.hpp, src/Makefile.am, src/SVGTree.cpp, src/SVGTree.hpp, src/XMLNode.cpp, @@ -1843,9 +1899,6 @@ exit() src/options.xml: added option --font-format to select the file format used to embed fonts - * src/FontEngine.cpp: - fixed sign of the font descender - 2016-08-22 Martin Gieseking <martin.gieseking@uos.de> * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: @@ -1859,12 +1912,12 @@ exit() 2016-08-14 Martin Gieseking <martin.gieseking@uos.de> - * src/PathClipper.cpp: - added missing initializers - * src/Ghostscript.hpp: removed copy constructor of class Ghostscript + * src/PathClipper.cpp: + added missing initializers + 2016-08-13 Martin Gieseking <martin.gieseking@uos.de> * CMakeLists.txt, configure.ac, src/CLCommandLine.cpp, @@ -1881,12 +1934,6 @@ exit() 2016-08-08 Martin Gieseking <martin.gieseking@uos.de> - * src/Ghostscript.cpp, src/MiKTeXCom.cpp: - replaced __WIN64__ with pre-defined _WIN64 - - * src/System.cpp, src/dvisvgm.cpp: - minor refactorings of dvisvgm.cpp - * src/DVIReader.cpp, src/DVIReader.hpp, src/Directory.cpp, src/Directory.hpp, src/FilePath.cpp, src/FilePath.hpp, src/Font.cpp, src/Font.hpp, src/FontManager.cpp, src/FontManager.hpp, src/GFReader.hpp, @@ -1895,8 +1942,21 @@ exit() src/VFActions.hpp, src/VFReader.cpp: pass string parameters by reference if possible + * src/System.cpp, src/dvisvgm.cpp: + minor refactorings of dvisvgm.cpp + + * src/Ghostscript.cpp, src/MiKTeXCom.cpp: + replaced __WIN64__ with pre-defined _WIN64 + 2016-08-02 Martin Gieseking <martin.gieseking@uos.de> + * CMakeLists.txt, src/CLCommandLine.cpp, src/CLCommandLine.hpp, + src/CLOption.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.hpp, + src/CommandLine.cpp, src/CommandLine.hpp, src/Makefile.am, + src/dvisvgm.cpp, src/options.dtd, src/options.xml, + tests/CommandLineTest.cpp: + reimplemented the CommandLine parser class + * src/CMap.cpp, src/CMapManager.cpp, src/CMapReader.cpp, src/EncFile.cpp, src/FileFinder.cpp, src/FileFinder.hpp, src/Font.cpp, src/FontEncoding.cpp, src/FontManager.cpp, src/FontMap.cpp, @@ -1906,13 +1966,6 @@ exit() tests/MapLineTest.cpp, tests/SubfontTest.cpp: made FileFinder a singleton again - * CMakeLists.txt, src/CLCommandLine.cpp, src/CLCommandLine.hpp, - src/CLOption.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.hpp, - src/CommandLine.cpp, src/CommandLine.hpp, src/Makefile.am, - src/dvisvgm.cpp, src/options.dtd, src/options.xml, - tests/CommandLineTest.cpp: - reimplemented the CommandLine parser class - 2016-07-27 Martin Gieseking <martin.gieseking@uos.de> * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp, @@ -1926,21 +1979,21 @@ exit() 2016-07-23 Martin Gieseking <martin.gieseking@uos.de> - * src/CMapReader.cpp: - minor refactoring of class CMapReader - * src/PathClipper.cpp: some minor refactorings of class PathClipper + * src/CMapReader.cpp: + minor refactoring of class CMapReader + 2016-07-22 Martin Gieseking <martin.gieseking@uos.de> + * src/FontMap.cpp, src/FontMap.hpp: + some syntactic refactorings of class FontMap + * src/FontManager.cpp, src/FontManager.hpp: use unique_ptr to automatically release Font objects in class FontManager - * src/FontMap.cpp, src/FontMap.hpp: - some syntactic refactorings of class FontMap - 2016-07-21 Martin Gieseking <martin.gieseking@uos.de> * src/AGLTable.h, src/AGLTable.hpp, src/BasicDVIReader.cpp, @@ -2069,16 +2122,16 @@ exit() 2016-07-20 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: - create BoxMap object directly, avoid new/delete + * src/genhashmap.cpp, src/glyphlist.txt: + added genhashmap (generates AGLTable.h from glyphlist.txt) * src/CMapManager.cpp, src/CMapManager.h, src/FileFinder.cpp, src/Font.cpp, src/Font.h, src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, tests/XMLNodeTest.cpp: use smart pointers to release heap memory - * src/genhashmap.cpp, src/glyphlist.txt: - added genhashmap (generates AGLTable.h from glyphlist.txt) + * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: + create BoxMap object directly, avoid new/delete 2016-07-19 Martin Gieseking <martin.gieseking@uos.de> @@ -2098,35 +2151,38 @@ exit() 2016-07-04 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README.md: - updated NEWS and README - - * .travis.yml, configure.ac, src/Doxyfile: - set version to 1.16 + * src/TFM.cpp: + added missing initializers * src/dvisvgm.cpp: catch exception in set_cache_dir() - * src/TFM.cpp: - added missing initializers + * .travis.yml, configure.ac, src/Doxyfile: + set version to 1.16 + + * NEWS, README.md: + updated NEWS and README 2016-07-03 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, - src/FontManager.cpp, src/FontManager.h, src/VFActions.h, + * configure.ac, m4/ax_cxx_compile_stdcxx.m4: + switch from C++03 to C++11 + + * src/NumericRanges.h, src/PapersizeSpecialHandler.cpp, src/Unicode.cpp, src/VFReader.cpp: - transfer DVI snippet of a VF char by move semantics rather than by heap - pointer + replaced static callback functions with lambdas - * AUTHORS, LGPL-2.1.txt, Makefile.am, 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, - src/Makefile.am, src/SVGOutput.cpp, src/SVGOutput.h, - src/ZLibOutputStream.h, src/dvisvgm.cpp, src/gzstream.cpp, - src/gzstream.h, tests/Makefile.am, tests/SVGOutputTest.cpp, - tests/create-makefile: - replaced old gzstream classes + * src/CMapReader.cpp, src/CMapReader.h, src/CmdLineParserBase.cpp, + src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, src/CommandLine.cpp, + src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, + src/EmSpecialHandler.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp, + src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.h, + src/Length.cpp, src/Length.h, src/PathClipper.cpp, + src/PsSpecialHandler.cpp, src/SVGTree.cpp, src/ShadingPatch.cpp, + src/TensorProductPatch.h, tests/BoundingBoxTest.cpp, + tests/LengthTest.cpp, tests/ShadingPatchTest.cpp, + tests/TensorProductPatchTest.cpp, tests/TriangularPatchTest.cpp: + replaced some enums with enum classes * clipper/clipper.hpp, src/AGLTable.h, src/BasicDVIReader.cpp, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.h, src/CMap.cpp, @@ -2161,39 +2217,37 @@ exit() tests/UnicodeTest.cpp: replaced own fixed-sized integer types with types from cstdint - * src/CMapReader.cpp, src/CMapReader.h, src/CmdLineParserBase.cpp, - src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, src/CommandLine.cpp, - src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, - src/EmSpecialHandler.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp, - src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.h, - src/Length.cpp, src/Length.h, src/PathClipper.cpp, - src/PsSpecialHandler.cpp, src/SVGTree.cpp, src/ShadingPatch.cpp, - src/TensorProductPatch.h, tests/BoundingBoxTest.cpp, - tests/LengthTest.cpp, tests/ShadingPatchTest.cpp, - tests/TensorProductPatchTest.cpp, tests/TriangularPatchTest.cpp: - replaced some enums with enum classes + * AUTHORS, LGPL-2.1.txt, Makefile.am, 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, + src/Makefile.am, src/SVGOutput.cpp, src/SVGOutput.h, + src/ZLibOutputStream.h, src/dvisvgm.cpp, src/gzstream.cpp, + src/gzstream.h, tests/Makefile.am, tests/SVGOutputTest.cpp, + tests/create-makefile: + replaced old gzstream classes - * src/NumericRanges.h, src/PapersizeSpecialHandler.cpp, src/Unicode.cpp, + * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, + src/FontManager.cpp, src/FontManager.h, src/VFActions.h, src/VFReader.cpp: - replaced static callback functions with lambdas - - * configure.ac, m4/ax_cxx_compile_stdcxx.m4: - switch from C++03 to C++11 + transfer DVI snippet of a VF char by move semantics rather than by heap + pointer 2016-07-02 Martin Gieseking <martin.gieseking@uos.de> - * src/BasicDVIReader.h, src/Bitmap.h, src/CMap.h, src/CmdLineParserBase.h, - src/DVIActions.h, src/Font.h, src/FontEncoding.h, src/FontMetrics.h, - src/GFGlyphTracer.h, src/GFReader.h, src/GFTracer.h, src/GraphicsPath.h, - src/InputBuffer.h, src/InputReader.h, src/MessageException.h, - src/PSFilter.h, src/PSInterpreter.h, src/PSPattern.h, - src/SVGCharHandler.h, src/SVGOutput.h, src/ShadingPatch.h, - src/SpecialActions.h, src/SpecialHandler.h, src/StreamReader.h, - src/StreamWriter.h, src/Subfont.h, src/VFActions.h, src/XMLNode.h: - replaced empty virtual destructors with default ones - - * src/PsSpecialHandler.cpp: - use unique_ptr rather than deprecated auto_ptr + * src/Bitmap.cpp, src/BoundingBox.h, src/CMapManager.cpp, + src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, + src/DVIToSVGActions.h, src/DependencyGraph.h, + src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, + src/FileFinder.cpp, src/FilePath.cpp, src/FilePath.h, src/Font.cpp, + src/FontCache.cpp, src/FontEncoding.cpp, src/FontManager.cpp, + src/FontMap.cpp, src/FontMap.h, src/GFReader.cpp, src/GFReader.h, + src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/NumericRanges.h, + src/PSPattern.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp, + src/SVGTree.h, src/SpecialManager.cpp, src/SpecialManager.h, + src/Subfont.cpp, src/Subfont.h, src/TpicSpecialHandler.cpp, + src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/macros.h: + use range-based 'for' loop to iterate over containers; drop FORALL macro * clipper/clipper.hpp, src/BgColorSpecialHandler.h, src/Bitmap.cpp, src/CMap.h, src/CmdLineParserBase.h, src/ColorSpecialHandler.h, @@ -2214,19 +2268,18 @@ exit() src/TriangularPatch.h, src/VectorStream.h, src/XMLNode.h: mark overridden methods with 'override' keyword - * src/Bitmap.cpp, src/BoundingBox.h, src/CMapManager.cpp, - src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, - src/DVIToSVGActions.h, src/DependencyGraph.h, - src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, - src/FileFinder.cpp, src/FilePath.cpp, src/FilePath.h, src/Font.cpp, - src/FontCache.cpp, src/FontEncoding.cpp, src/FontManager.cpp, - src/FontMap.cpp, src/FontMap.h, src/GFReader.cpp, src/GFReader.h, - src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/NumericRanges.h, - src/PSPattern.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp, - src/SVGTree.h, src/SpecialManager.cpp, src/SpecialManager.h, - src/Subfont.cpp, src/Subfont.h, src/TpicSpecialHandler.cpp, - src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/macros.h: - use range-based 'for' loop to iterate over containers; drop FORALL macro + * src/PsSpecialHandler.cpp: + use unique_ptr rather than deprecated auto_ptr + + * src/BasicDVIReader.h, src/Bitmap.h, src/CMap.h, src/CmdLineParserBase.h, + src/DVIActions.h, src/Font.h, src/FontEncoding.h, src/FontMetrics.h, + src/GFGlyphTracer.h, src/GFReader.h, src/GFTracer.h, src/GraphicsPath.h, + src/InputBuffer.h, src/InputReader.h, src/MessageException.h, + src/PSFilter.h, src/PSInterpreter.h, src/PSPattern.h, + src/SVGCharHandler.h, src/SVGOutput.h, src/ShadingPatch.h, + src/SpecialActions.h, src/SpecialHandler.h, src/StreamReader.h, + src/StreamWriter.h, src/Subfont.h, src/VFActions.h, src/XMLNode.h: + replaced empty virtual destructors with default ones 2016-07-01 Martin Gieseking <martin.gieseking@uos.de> @@ -2242,13 +2295,13 @@ exit() 2016-06-29 Martin Gieseking <martin.gieseking@uos.de> - * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: - updated xxHash to version 0.6.1 - * src/BoundingBox.cpp, src/BoundingBox.h, src/DVIToSVG.cpp, src/dvisvgm.cpp: fixed computation of bounding boxes modified by relative --bbox argument + * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: + updated xxHash to version 0.6.1 + 2016-06-17 Martin Gieseking <martin.gieseking@uos.de> * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: @@ -2256,26 +2309,26 @@ exit() 2016-06-16 Martin Gieseking <martin.gieseking@uos.de> - * src/GFReader.cpp: - ensure validity of postpost command in GFReader::executePostamble() - * src/DVIReader.cpp, src/VectorStream.h, tests/VectorStreamTest.cpp: refactored VectorStreamBuffer to keep constness of assigned vector + * src/GFReader.cpp: + ensure validity of postpost command in GFReader::executePostamble() + 2016-06-14 Martin Gieseking <martin.gieseking@uos.de> - * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: - fixed unit conversion in BoundingBox class + * src/DvisvgmSpecialHandler.cpp, src/TFM.cpp, src/VFReader.cpp: + replaced local definitions of pt2bp with Length::pt2bp + + * src/XMLNode.h: + added ouput operators for the XML node objects * src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, tests/EmSpecialTest.cpp, tests/Makefile.am: improved the emTeX special handler; added EmSpecialTest - * src/XMLNode.h: - added ouput operators for the XML node objects - - * src/DvisvgmSpecialHandler.cpp, src/TFM.cpp, src/VFReader.cpp: - replaced local definitions of pt2bp with Length::pt2bp + * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: + fixed unit conversion in BoundingBox class 2016-06-13 Martin Gieseking <martin.gieseking@uos.de> @@ -2284,8 +2337,8 @@ exit() 2016-06-12 Martin Gieseking <martin.gieseking@uos.de> - * xxHash/xxhash-fileno.patch, xxHash/xxhsum.c: - added xxHash test utility 'xxhsum' + * xxHash/xxhash.c, xxHash/xxhash.h: + updated xxHash to version 0.6.0 * src/DLLoader.cpp, src/DLLoader.h, src/Directory.cpp, src/Directory.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/GFTracer.cpp, @@ -2294,21 +2347,18 @@ exit() src/Terminal.h, src/dvisvgm.cpp: cleaned up Windows-related #defines - * xxHash/xxhash.c, xxHash/xxhash.h: - updated xxHash to version 0.6.0 + * xxHash/xxhash-fileno.patch, xxHash/xxhsum.c: + added xxHash test utility 'xxhsum' 2016-06-10 Martin Gieseking <martin.gieseking@uos.de> - * src/Length.cpp, src/Length.h, tests/LengthTest.cpp: - added functions to convert between Length::Unit and std::string - * src/CommandLine.cpp: removed redundant #includes -2016-06-07 Martin Gieseking <martin.gieseking@uos.de> + * src/Length.cpp, src/Length.h, tests/LengthTest.cpp: + added functions to convert between Length::Unit and std::string - * src/SVGCharHandler.h: - added missing initializer to class SVGCharHandler +2016-06-07 Martin Gieseking <martin.gieseking@uos.de> * src/CMapManager.cpp, src/CMapManager.h, src/DVIActions.h, src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.h, src/Font.h, @@ -2322,20 +2372,10 @@ exit() changed some structs to classes and replaced #includes with forward declarations -2016-06-03 Martin Gieseking <martin.gieseking@uos.de> - - * CMakeLists.txt: - updated CMakeLists.txt - - * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/Makefile.am, - src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h, - src/PsSpecialHandler.cpp, src/dvisvgm.cpp: - added evaluation of PS special 'papersize=' + * src/SVGCharHandler.h: + added missing initializer to class SVGCharHandler - * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, - src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SVGTree.cpp, - src/SVGTree.h: - refactored processing of end-of-page (eop) commands +2016-06-03 Martin Gieseking <martin.gieseking@uos.de> * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, @@ -2351,6 +2391,19 @@ exit() tests/DvisvgmSpecialTest.cpp: refactored handling of SpecialAction objects + * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, + src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SVGTree.cpp, + src/SVGTree.h: + refactored processing of end-of-page (eop) commands + + * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/Makefile.am, + src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h, + src/PsSpecialHandler.cpp, src/dvisvgm.cpp: + added evaluation of PS special 'papersize=' + + * CMakeLists.txt: + updated CMakeLists.txt + 2016-06-02 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVG.cpp: @@ -2363,10 +2416,6 @@ exit() 2016-05-30 Martin Gieseking <martin.gieseking@uos.de> - * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bezier.h, - src/TensorProductPatch.h, src/TriangularPatch.h: - replaced leading spaces with tabs - * src/DVIToSVGActions.cpp, src/Font.cpp, src/Makefile.am, src/SVGCharHandler.cpp, src/SVGCharHandler.h, src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h, @@ -2376,6 +2425,10 @@ exit() src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp: replaced static SVG text backend by specialized handler classes + * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bezier.h, + src/TensorProductPatch.h, src/TriangularPatch.h: + replaced leading spaces with tabs + 2016-05-29 Martin Gieseking <martin.gieseking@uos.de> * src/BasicDVIReader.cpp, src/DVIReader.cpp: @@ -2400,14 +2453,14 @@ exit() 2016-05-24 Martin Gieseking <martin.gieseking@uos.de> - * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: - fixed calculation of character dimensions in TFM class + * src/JFM.cpp, src/JFM.h, src/TFM.cpp, src/TFM.h: + TFM: store design size in bp units rather than as fixword * src/FontMetrics.h, src/JFM.cpp, src/TFM.cpp, src/TFM.h: added methods to query space-related parameters from TFM/JFM files - * src/JFM.cpp, src/JFM.h, src/TFM.cpp, src/TFM.h: - TFM: store design size in bp units rather than as fixword + * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: + fixed calculation of character dimensions in TFM class 2016-04-22 Martin Gieseking <martin.gieseking@uos.de> @@ -2422,23 +2475,23 @@ exit() 2016-04-19 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README, README.md: - updated NEWS and README - * .travis.yml, configure.ac, src/Doxyfile: set version to 1.15.1 + * NEWS, README, README.md: + updated NEWS and README + 2016-04-18 Martin Gieseking <martin.gieseking@uos.de> - * tests/CMapReaderTest.cpp: - improved CMapReaderTest + * src/Calculator.cpp, src/Matrix.cpp: + use std::ws to skip whitespace in istreams * src/Matrix.cpp: avoid adding trailing EOF characters when parsing parameters of transformation commands - * src/Calculator.cpp, src/Matrix.cpp: - use std::ws to skip whitespace in istreams + * tests/CMapReaderTest.cpp: + improved CMapReaderTest 2016-04-11 Martin Gieseking <martin.gieseking@uos.de> @@ -2448,12 +2501,12 @@ exit() 2016-04-07 Martin Gieseking <martin.gieseking@uos.de> - * src/Unicode.cpp, tests/UnicodeTest.cpp: - added support for the AGL character names 'uniFOO' and 'uFOO' - * src/XMLDocument.cpp: explicitly specify UTF-8 encoding in XML declaration (closes #54) + * src/Unicode.cpp, tests/UnicodeTest.cpp: + added support for the AGL character names 'uniFOO' and 'uFOO' + 2016-03-17 Martin Gieseking <martin.gieseking@uos.de> * src/GraphicsPath.h: @@ -2461,19 +2514,19 @@ exit() 2016-03-14 Martin Gieseking <martin.gieseking@uos.de> - * src/SVGTree.cpp, src/SVGTree.h: - split text and path section of SVGTree::appendChar() into seperate - methods + * transfer-cs: + remove patch files after they've been transferred + + * doc/db2html.xsl: + adapted db2html to insert anchors for each option entry * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SVGTree.cpp, src/SVGTree.h: changed font parameter of setFont() methods from pointer to reference - * doc/db2html.xsl: - adapted db2html to insert anchors for each option entry - - * transfer-cs: - remove patch files after they've been transferred + * src/SVGTree.cpp, src/SVGTree.h: + split text and path section of SVGTree::appendChar() into seperate + methods 2016-02-27 Martin Gieseking <martin.gieseking@uos.de> @@ -2482,24 +2535,30 @@ exit() 2016-02-26 Martin Gieseking <martin.gieseking@uos.de> - * .travis.yml, configure.ac, src/Doxyfile: - set version to 1.15 - - * src/FileFinder.cpp, src/FilePath.cpp, src/FileSystem.cpp, - src/FileSystem.h, src/Font.cpp, src/MetafontWrapper.cpp, src/dvisvgm.cpp: - changed string parameters of FileSystem functions to type std::string - - * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: - renamed Unicode::psNameToCodepoint() to Unicode::aglNameToCodepoint - * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, src/Font.cpp, src/Font.h, src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp, src/options.xml: added option --comments (adds comments with additional information to the SVG file + * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: + renamed Unicode::psNameToCodepoint() to Unicode::aglNameToCodepoint + + * src/FileFinder.cpp, src/FilePath.cpp, src/FileSystem.cpp, + src/FileSystem.h, src/Font.cpp, src/MetafontWrapper.cpp, src/dvisvgm.cpp: + changed string parameters of FileSystem functions to type std::string + + * .travis.yml, configure.ac, src/Doxyfile: + set version to 1.15 + 2016-02-23 Martin Gieseking <martin.gieseking@uos.de> + * src/FontEngine.cpp: + reworded error messages of class FontEngine + + * src/MetafontWrapper.cpp, src/Process.cpp: + avoid reading Metafont logfiles to extract the GF filename + * configure.ac, src/FileFinder.cpp, src/FileFinder.h, tests/FileFinderTest.cpp, tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp, tests/JFMReaderTest.cpp, tests/Makefile.am, @@ -2516,23 +2575,17 @@ exit() tests/sample.sfd: moved test data files to subfolder - * src/MetafontWrapper.cpp, src/Process.cpp: - avoid reading Metafont logfiles to extract the GF filename - - * src/FontEngine.cpp: - reworded error messages of class FontEngine - 2016-02-22 Martin Gieseking <martin.gieseking@uos.de> - * src/FontEngine.cpp, src/FontEngine.h: - removed redundant code from class FontEngine + * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, + tests/CommandLineTest.cpp: + minor improvements of class CommandLineTest * src/XMLNode.cpp, tests/DvisvgmSpecialTest.cpp: improved DvisvgmSpecialTest - * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, - tests/CommandLineTest.cpp: - minor improvements of class CommandLineTest + * src/FontEngine.cpp, src/FontEngine.h: + removed redundant code from class FontEngine 2016-02-05 Martin Gieseking <martin.gieseking@uos.de> @@ -2559,36 +2612,36 @@ exit() 2016-01-21 Martin Gieseking <martin.gieseking@uos.de> + * m4/ax_code_coverage.m4: + updated m4 code coverage script to latest version + * src/JFM.h, tests/JFMReaderTest.cpp, tests/Makefile.am, tests/TFMReaderTest.cpp, tests/cidjmgr0-h.tfm, tests/cmr10.tfm, tests/create-makefile: added tests for the TFM and JFM classes - * m4/ax_code_coverage.m4: - updated m4 code coverage script to latest version - 2016-01-19 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README.md: - updated NEWS + * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: + fixed access of invalid iterator * .travis.yml, configure.ac, src/Doxyfile: set version to 1.14.2 - * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: - fixed access of invalid iterator + * NEWS, README.md: + updated NEWS 2016-01-18 Martin Gieseking <martin.gieseking@uos.de> - * tests/Makefile.am, tests/create-makefile, tests/genhashcheck.py: - added test to check the validity of the char name hashes used in - Unicode.cpp + * doc/db2html.xsl: + updated links to Bootstrap and Font Awesome in stylesheet db2html.xsl * src/dvisvgm.cpp, xxHash/xxhash.c, xxHash/xxhash.h: updated xxHash to version 0.5.0 - * doc/db2html.xsl: - updated links to Bootstrap and Font Awesome in stylesheet db2html.xsl + * tests/Makefile.am, tests/create-makefile, tests/genhashcheck.py: + added test to check the validity of the char name hashes used in + Unicode.cpp 2016-01-15 Martin Gieseking <martin.gieseking@uos.de> @@ -2598,30 +2651,24 @@ exit() 2016-01-13 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIReader.h, src/FontStyle.h, src/SVGTree.cpp, + src/TriangularPatch.cpp: + updated/fixed some comments + * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: corrected handling of background color special across DVI pages - * src/DVIReader.h, src/FontStyle.h, src/SVGTree.cpp, - src/TriangularPatch.cpp: - updated/fixed some comments - 2016-01-05 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * src/GFReader.cpp, src/GFReader.h: added checks for misplaced GF commands -2016-01-04 Martin Gieseking <martin.gieseking@uos.de> - - * .travis.yml: - force Travis to use legacy builds due to an issue with clang and gtest + * NEWS: + updated NEWS - * .travis.yml, configure.ac, src/Doxyfile: - set version to 1.14.1 +2016-01-04 Martin Gieseking <martin.gieseking@uos.de> * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, @@ -2706,6 +2753,12 @@ exit() tests/normalize.xsl: updated year in copyright statements to 2016 + * .travis.yml, configure.ac, src/Doxyfile: + set version to 1.14.1 + + * .travis.yml: + force Travis to use legacy builds due to an issue with clang and gtest + 2015-12-31 Martin Gieseking <martin.gieseking@uos.de> * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: @@ -2713,12 +2766,12 @@ exit() 2015-12-28 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * .travis.yml, configure.ac, src/Doxyfile: set version to 1.14 + * NEWS: + updated NEWS + 2015-12-27 Martin Gieseking <martin.gieseking@uos.de> * src/PsSpecialHandler.cpp: @@ -2726,13 +2779,13 @@ exit() 2015-12-26 Martin Gieseking <martin.gieseking@uos.de> - * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: - fixed memory issue in class GraphicsPath<T> - * src/FileFinder.cpp: lookup files in the current working directory before searching the texmf tree + * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: + fixed memory issue in class GraphicsPath<T> + 2015-12-17 Martin Gieseking <martin.gieseking@uos.de> * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/DVIToSVG.h, @@ -2743,23 +2796,23 @@ exit() 2015-12-09 Martin Gieseking <martin.gieseking@uos.de> - * tests/GhostscriptTest.cpp: - prevent opening a graphics window when running GhostscriptTest - * src/FileFinder.cpp: return entire kpathsea version string if it doesn't start with 'kpathsea' + * tests/GhostscriptTest.cpp: + prevent opening a graphics window when running GhostscriptTest + 2015-12-08 Martin Gieseking <martin.gieseking@uos.de> - * clipper/clipper.cpp, clipper/clipper.hpp: - replaced DOS line endings of the Clipper sources to Unix ones + * .travis.yml, configure.ac, src/Doxyfile: + set version to 1.13 * NEWS: updated NEWS - * .travis.yml, configure.ac, src/Doxyfile: - set version to 1.13 + * clipper/clipper.cpp, clipper/clipper.hpp: + replaced DOS line endings of the Clipper sources to Unix ones 2015-12-02 Martin Gieseking <martin.gieseking@uos.de> @@ -2775,12 +2828,12 @@ exit() 2015-11-30 Martin Gieseking <martin.gieseking@uos.de> - * src/GraphicPath.h, src/PsSpecialHandler.cpp: - remove redundant moveto commands from graphics paths - * doc/dvisvgm.txt.in: added a couple of links to the manpage + * src/GraphicPath.h, src/PsSpecialHandler.cpp: + remove redundant moveto commands from graphics paths + 2015-11-27 Martin Gieseking <martin.gieseking@uos.de> * .gitignore, CMakeLists.txt, cmake/FindGhostscript.cmake, @@ -2789,48 +2842,48 @@ exit() 2015-11-25 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: - removed redundant methods - * src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: remove progress message before printing a PS error message -2015-11-24 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: + removed redundant methods - * xxHash/xxhash.c: - updated xxHash to version r42 +2015-11-24 Martin Gieseking <martin.gieseking@uos.de> * src/psdefs.cpp, src/psdefs.ps: added evaluation of PS operators ashow, awidthshow, and widthshow (fixes #49) + * xxHash/xxhash.c: + updated xxHash to version r42 + 2015-11-23 Martin Gieseking <martin.gieseking@uos.de> - * src/psdefs.cpp, src/psdefs.ps: - propagate call of PS operator 'setcolor' to the PS handler + * src/PsSpecialHandler.cpp, src/psdefs.cpp, src/psdefs.ps: + minor code cleanup and reordering * src/psdefs.cpp, src/psdefs.ps: reduce rounding errors produced by PS operator 'charpath' - * src/PsSpecialHandler.cpp, src/psdefs.cpp, src/psdefs.ps: - minor code cleanup and reordering + * src/psdefs.cpp, src/psdefs.ps: + propagate call of PS operator 'setcolor' to the PS handler 2015-11-18 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * .travis.yml, configure.ac, src/Doxyfile: set version to 1.12 -2015-11-16 Martin Gieseking <martin.gieseking@uos.de> + * NEWS: + updated NEWS - * src/FontEngine.cpp: - treat character code as character index if no font mapping is set +2015-11-16 Martin Gieseking <martin.gieseking@uos.de> * src/FontManager.cpp: removed redundant #include + * src/FontEngine.cpp: + treat character code as character index if no font mapping is set + 2015-11-12 Martin Gieseking <martin.gieseking@uos.de> * README, README.md: @@ -2838,6 +2891,13 @@ exit() 2015-11-09 Martin Gieseking <martin.gieseking@uos.de> + * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, + src/HtmlSpecialHandler.cpp, tests/ColorTest.cpp: + renamed Color::setName() to Color::setPSName() + + * tests/Makefile.am, tests/ShadingPatch.cpp, tests/ShadingPatchTest.cpp: + renamed ShadingPatchTest + * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/CommandLine.cpp, src/CommandLine.h, src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, @@ -2847,13 +2907,6 @@ exit() added option --colornames to replace RGB color values with SVG color names - * tests/Makefile.am, tests/ShadingPatch.cpp, tests/ShadingPatchTest.cpp: - renamed ShadingPatchTest - - * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, - src/HtmlSpecialHandler.cpp, tests/ColorTest.cpp: - renamed Color::setName() to Color::setPSName() - 2015-10-27 Martin Gieseking <martin.gieseking@uos.de> * src/Process.cpp, src/Process.h: @@ -2871,21 +2924,21 @@ exit() 2015-09-14 Martin Gieseking <martin.gieseking@uos.de> - * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: - renamed Unicode::psName2Codepoint to Unicode::psNameToCodepoint - * src/Font.cpp, src/ToUnicodeMap.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: improved handling of invalid Unicode points -2015-09-10 Martin Gieseking <martin.gieseking@uos.de> + * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: + renamed Unicode::psName2Codepoint to Unicode::psNameToCodepoint - * src/HtmlSpecialHandler.cpp: - quote XML metacharacters in xlink:title attributes +2015-09-10 Martin Gieseking <martin.gieseking@uos.de> * src/Font.cpp: prevent creating 0x00 codepoints if PS character name is unknown + * src/HtmlSpecialHandler.cpp: + quote XML metacharacters in xlink:title attributes + 2015-09-09 Martin Gieseking <martin.gieseking@uos.de> * src/SVGTree.cpp: @@ -2899,14 +2952,14 @@ exit() 2015-07-29 Martin Gieseking <martin.gieseking@uos.de> - * tests/CommandLineTest.cpp, tests/MessageExceptionTest.cpp: - use ASSERT_STREQ in tests + * tests/GhostscriptTest.cpp, tests/Makefile.am: + added GhostscriptTest * tests/UnicodeTest.cpp: improved UnicodeTest - * tests/GhostscriptTest.cpp, tests/Makefile.am: - added GhostscriptTest + * tests/CommandLineTest.cpp, tests/MessageExceptionTest.cpp: + use ASSERT_STREQ in tests 2015-07-22 Martin Gieseking <martin.gieseking@uos.de> @@ -2921,12 +2974,12 @@ exit() 2015-07-14 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - * .travis.yml, configure.ac, src/Doxyfile: set version to 1.10 + * NEWS: + updated NEWS + 2015-07-12 Martin Gieseking <martin.gieseking@uos.de> * README.md, doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, @@ -2941,35 +2994,35 @@ exit() 2015-07-03 Martin Gieseking <martin.gieseking@uos.de> - * src/MiKTeXCom.cpp: - added some comments to MiKTeXCom.cpp - * src/dvisvgm.cpp: check for option --help before initializing the FileFinder + * src/MiKTeXCom.cpp: + added some comments to MiKTeXCom.cpp + 2015-07-02 Martin Gieseking <martin.gieseking@uos.de> - * src/Font.cpp, src/Makefile.am, src/Unicode.cpp, src/Unicode.h, - tests/Makefile.am, tests/create-makefile: - added mapping from character names to unicode for PostScript fonts + * tests/BezierTest.cpp: + removed #include "debug.h" from test * Makefile.am, configure.ac, xxHash/LICENSE, xxHash/Makefile.am, xxHash/xxhash.c, xxHash/xxhash.h: added xxHash library (https://github.com/Cyan4973/xxHash) - * tests/BezierTest.cpp: - removed #include "debug.h" from test + * src/Font.cpp, src/Makefile.am, src/Unicode.cpp, src/Unicode.h, + tests/Makefile.am, tests/create-makefile: + added mapping from character names to unicode for PostScript fonts 2015-04-07 Martin Gieseking <martin.gieseking@uos.de> - * src/SVGTree.cpp: - apply --precision settings to font-size attributes too + * .travis.yml, configure.ac, src/Doxyfile: + set version to 1.9.2 * NEWS, README.md: updated NEWS and README.md - * .travis.yml, configure.ac, src/Doxyfile: - set version to 1.9.2 + * src/SVGTree.cpp: + apply --precision settings to font-size attributes too 2015-04-04 Martin Gieseking <martin.gieseking@uos.de> @@ -2983,30 +3036,30 @@ exit() 2015-03-26 Martin Gieseking <martin.gieseking@uos.de> - * src/GFReader.cpp, src/GFReader.h, tests/GFReaderTest.cpp: - improved GFReaderTest - * src/GlyphTracerMessages.h: always skip tracer message if no glyphs have been traced -2015-03-25 Martin Gieseking <martin.gieseking@uos.de> + * src/GFReader.cpp, src/GFReader.h, tests/GFReaderTest.cpp: + improved GFReaderTest - * src/DVIToSVG.cpp: - avoid retracing of fonts if option --no-fonts is given +2015-03-25 Martin Gieseking <martin.gieseking@uos.de> * src/GFGlyphTracer.cpp, src/GFTracer.h, tests/GFGlyphTracerTest.cpp, tests/Makefile.am: ensure GFGlyphTracer::executeChar() returns the correct status; added GFGlyphtracerTest -2015-03-22 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVG.cpp: + avoid retracing of fonts if option --no-fonts is given - * tests/SVGOutputTest.cpp: - improved SVGOutputTest +2015-03-22 Martin Gieseking <martin.gieseking@uos.de> * tests/StreamWriterTest.cpp: fixed StreamWriterTest + * tests/SVGOutputTest.cpp: + improved SVGOutputTest + 2015-03-19 Martin Gieseking <martin.gieseking@uos.de> * tests/Makefile.am, tests/ShadingPatch.cpp: @@ -3014,8 +3067,10 @@ exit() 2015-03-18 Martin Gieseking <martin.gieseking@uos.de> - * src/TensorProductPatch.h, tests/TensorProductPatchTest.cpp: - improved TensorProductPatchTest + * src/ShadingPatch.h, src/TensorProductPatch.cpp, + src/TensorProductPatch.h, src/TriangularPatch.cpp, src/TriangularPatch.h, + tests/Makefile.am, tests/TriangularPatchTest.cpp: + added test for class TriangularPatch * src/Bezier.cpp, src/Bezier.h, src/TensorProductPatch.cpp, src/TriangularPatch.cpp, src/TriangularPatch.h, @@ -3023,10 +3078,8 @@ exit() renamed method pointAt() of class Bezier and TriangularPatch to valueAt() - * src/ShadingPatch.h, src/TensorProductPatch.cpp, - src/TensorProductPatch.h, src/TriangularPatch.cpp, src/TriangularPatch.h, - tests/Makefile.am, tests/TriangularPatchTest.cpp: - added test for class TriangularPatch + * src/TensorProductPatch.h, tests/TensorProductPatchTest.cpp: + improved TensorProductPatchTest 2015-03-17 Martin Gieseking <martin.gieseking@uos.de> @@ -3035,16 +3088,16 @@ exit() 2015-03-15 Martin Gieseking <martin.gieseking@uos.de> - * tests/Makefile.am, tests/VectorIteratorTest.cpp: - added VectorIteratorTest + * src/XMLNode.cpp, src/XMLNode.h, tests/Makefile.am, + tests/XMLNodeTest.cpp: + fixed a few issues in class XMLElementNode; added XMLNodeTest * Makefile.am, clipper/Makefile.am, configure.ac, m4/ax_code_coverage.m4, src/Makefile.am, tests/Makefile.am, tests/create-makefile: extended build system to generate coverage reports - * src/XMLNode.cpp, src/XMLNode.h, tests/Makefile.am, - tests/XMLNodeTest.cpp: - fixed a few issues in class XMLElementNode; added XMLNodeTest + * tests/Makefile.am, tests/VectorIteratorTest.cpp: + added VectorIteratorTest 2015-03-13 Martin Gieseking <martin.gieseking@uos.de> @@ -3053,12 +3106,12 @@ exit() 2015-03-09 Martin Gieseking <martin.gieseking@uos.de> - * tests/GraphicPathTest.cpp: - extended tests of class GraphicPath - * tests/CRC32Test.cpp: added test for 'compute' methods of class CRC32 + * tests/GraphicPathTest.cpp: + extended tests of class GraphicPath + 2015-03-08 Martin Gieseking <martin.gieseking@uos.de> * tests/StreamReaderTest.cpp: @@ -3066,30 +3119,30 @@ exit() 2015-03-07 Martin Gieseking <martin.gieseking@uos.de> - * .gitignore: - added .gitignore - * src/XMLString.cpp, tests/Makefile.am, tests/XMLStringTest.cpp: fixed conversion from C and C++ strings to XMLString; added XMLStringTest -2015-03-06 Martin Gieseking <martin.gieseking@uos.de> + * .gitignore: + added .gitignore - * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: - improved BoundingBox tests +2015-03-06 Martin Gieseking <martin.gieseking@uos.de> * src/Bitmap.cpp, src/Bitmap.h, tests/BitmapTest.cpp, tests/GFReaderTest.cpp, tests/Makefile.am: small refactorings of class Bitmap; added tests for class Bitmap -2015-03-01 Martin Gieseking <martin.gieseking@uos.de> + * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: + improved BoundingBox tests - * README.md: - added license badge to README.md +2015-03-01 Martin Gieseking <martin.gieseking@uos.de> * .travis.yml: Travis conf: added configuration data for Coverity Scan + * README.md: + added license badge to README.md + 2015-02-28 Martin Gieseking <martin.gieseking@uos.de> * NEWS, README.md: @@ -3112,39 +3165,39 @@ exit() 2015-02-20 Martin Gieseking <martin.gieseking@uos.de> - * doc/Makefile.am, doc/db2html.xsl, doc/dvisvgm.css: - create html manpage with a separate stylesheet matching the new website - theme + * doc/dvisvgm.txt.in, src/SVGOutput.cpp, src/SVGOutput.h, + tests/Makefile.am, tests/SVGOutputTest.cpp, tests/create-makefile: + added width specifiers and exression evaluation to --output patterns + + * doc/dvisvgm.txt.in: + minor additions and formatting changes of the manpage * doc/Makefile.am, doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/dvisvgm.sty, doc/dvisvgm.xpr, doc/tweak-dblatex-pdf.xsl: improved the layout of the pdf manpage - * doc/dvisvgm.txt.in: - minor additions and formatting changes of the manpage - - * doc/dvisvgm.txt.in, src/SVGOutput.cpp, src/SVGOutput.h, - tests/Makefile.am, tests/SVGOutputTest.cpp, tests/create-makefile: - added width specifiers and exression evaluation to --output patterns + * doc/Makefile.am, doc/db2html.xsl, doc/dvisvgm.css: + create html manpage with a separate stylesheet matching the new website + theme 2015-02-19 Martin Gieseking <martin.gieseking@uos.de> * .travis.yml: - Travis conf: build gtest libraries since Ubuntu doesn't provide the - binaries + added configuration file for Travis CI * .travis.yml: - Travis conf: added missing call of 'configure' + added dependency 'python-lxml' to Travis configuration * .travis.yml: added dependency 'libgtest-dev' to Travis configuration; ensure call of 'make check' * .travis.yml: - added dependency 'python-lxml' to Travis configuration + Travis conf: added missing call of 'configure' * .travis.yml: - added configuration file for Travis CI + Travis conf: build gtest libraries since Ubuntu doesn't provide the + binaries 2015-02-18 Martin Gieseking <martin.gieseking@uos.de> @@ -3252,22 +3305,6 @@ exit() 2014-12-28 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - - * configure.ac, src/Doxyfile: - set version to 1.9 - - * src/dvisvgm.cpp: - clear line before printing the message about user interruption to avoid - trailing text fragments - - * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EPSToSVG.cpp, - src/EPSToSVG.h, src/SpecialActions.h, src/SpecialManager.cpp, - src/dvisvgm.cpp: - show PS instruction counter when processing EPS files with option - --progress - * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/ShadingPatch.h, src/TensorProductPatch.cpp, src/TensorProductPatch.h, @@ -3276,6 +3313,22 @@ exit() added command-line options --grad-overlap, --grad-segments, and --grad-simplify + * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EPSToSVG.cpp, + src/EPSToSVG.h, src/SpecialActions.h, src/SpecialManager.cpp, + src/dvisvgm.cpp: + show PS instruction counter when processing EPS files with option + --progress + + * src/dvisvgm.cpp: + clear line before printing the message about user interruption to avoid + trailing text fragments + + * configure.ac, src/Doxyfile: + set version to 1.9 + + * NEWS: + updated NEWS + 2014-12-20 Martin Gieseking <martin.gieseking@uos.de> * src/DVIReader.cpp: @@ -3283,17 +3336,17 @@ exit() 2014-12-18 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.cpp, src/Color.h, src/Makefile.am, src/PsSpecialHandler.cpp, - src/PsSpecialHandler.h, src/VectorIterator.h, src/psdefs.cpp, - src/psdefs.ps: - extended PS operator 'shfill' to support triangular patch meshes + * src/Makefile.am, src/TriangularPatch.cpp, src/TriangularPatch.h: + added class to compute triangular shading patches * src/Makefile.am, src/PsSpecialHandler.cpp, src/ShadingPatch.cpp, src/ShadingPatch.h, src/TensorProductPatch.cpp, src/TensorProductPatch.h: extracted common interface class ShadingPatch from TensorProductPatch - * src/Makefile.am, src/TriangularPatch.cpp, src/TriangularPatch.h: - added class to compute triangular shading patches + * src/Color.cpp, src/Color.h, src/Makefile.am, src/PsSpecialHandler.cpp, + src/PsSpecialHandler.h, src/VectorIterator.h, src/psdefs.cpp, + src/psdefs.ps: + extended PS operator 'shfill' to support triangular patch meshes 2014-12-16 Martin Gieseking <martin.gieseking@uos.de> @@ -3302,13 +3355,13 @@ exit() 2014-12-03 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp: - fixed CMYK to RGB approximation - * src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, src/options.xml: disable option --clipjoin if PS support is disabled + * src/Color.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp: + fixed CMYK to RGB approximation + 2014-11-27 Martin Gieseking <martin.gieseking@uos.de> * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, @@ -3346,39 +3399,39 @@ exit() 2014-10-23 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.cpp, src/Color.h, tests/ColorTest.cpp: - added deltaE and L*a*b* color space methods to class Color - - * src/Color.cpp, src/Color.h: - replaced vectors with valarrays in class Color + * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, + src/PsSpecialHandler.cpp, tests/ColorTest.cpp: + replaced float by double in class Color * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, src/DVIReader.cpp, src/HtmlSpecialHandler.cpp, src/PsSpecialHandler.cpp, tests/ColorTest.cpp: renamed RGB setters/getters of class Color - * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, - src/PsSpecialHandler.cpp, tests/ColorTest.cpp: - replaced float by double in class Color + * src/Color.cpp, src/Color.h: + replaced vectors with valarrays in class Color + + * src/Color.cpp, src/Color.h, tests/ColorTest.cpp: + added deltaE and L*a*b* color space methods to class Color 2014-10-17 Martin Gieseking <martin.gieseking@uos.de> + * clipper/clipper.cpp, clipper/clipper.hpp: + updated clipper library to version 6.2.0 + * src/GraphicPath.h, src/PathClipper.cpp, src/PathClipper.h, src/XMLNode.h: fixed a couple of doxygen comments; removed redundant PathClipperException - * clipper/clipper.cpp, clipper/clipper.hpp: - updated clipper library to version 6.2.0 - 2014-10-08 Martin Gieseking <martin.gieseking@uos.de> - * src/Ghostscript.cpp: - try to lookup the location of the GS DLL in the Windows registry - * src/CommandLine.cpp: updated CommandLine.cpp with description of option --no-merge + * src/Ghostscript.cpp: + try to lookup the location of the GS DLL in the Windows registry + 2014-10-01 Martin Gieseking <martin.gieseking@uos.de> * doc/dvisvgm.txt.in, src/options.xml: @@ -3407,17 +3460,17 @@ opt2cpp XSLT. 2014-08-29 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - - * configure.ac, src/Doxyfile: - set version to 1.8.1 + * src/PsSpecialHandler.cpp: + added missing whitespace boundaries in PS code * src/FontEngine.cpp, tests/PageRagesTest.cpp: removed unused static functions - * src/PsSpecialHandler.cpp: - added missing whitespace boundaries in PS code + * configure.ac, src/Doxyfile: + set version to 1.8.1 + + * NEWS: + updated NEWS 2014-08-20 Khaled Hosny <khaled.hosny@hindawi.com> @@ -3450,10 +3503,7 @@ Makes post processing the SVG 2014-08-10 Khaled Hosny <khaledhosny@eglug.org> * configure.ac, src/Makefile.am: - Don't override CPPFLAGS and LDFLAGS in configure - -For the same reasons - as the previous commit + EXTRA_LIBS is not used anymore * configure.ac, src/Makefile.am: Don't override CXXFLAGS in configure script @@ -3464,7 +3514,10 @@ Breaks standard things make CXXFLAGS="-g -O0 -pg" * configure.ac, src/Makefile.am: - EXTRA_LIBS is not used anymore + Don't override CPPFLAGS and LDFLAGS in configure + +For the same reasons + as the previous commit 2014-08-07 Martin Gieseking <martin.gieseking@uos.de> @@ -3488,15 +3541,15 @@ Breaks standard things 2014-07-28 Martin Gieseking <martin.gieseking@uos.de> - * configure.ac, src/Doxyfile: - set version to 1.8 - * src/GraphicPath.h, src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/psdefs.cpp, src/psdefs.ps, tests/PSInterpreterTest.cpp: added evaluation of PS operator 'clippath' (copies clipping path into graphics path) + * configure.ac, src/Doxyfile: + set version to 1.8 + 2014-07-26 Martin Gieseking <martin.gieseking@uos.de> * src/Font.cpp, src/GFGlyphTracer.cpp, src/GraphicPath.h, @@ -3511,26 +3564,26 @@ Breaks standard things 2014-07-22 Martin Gieseking <martin.gieseking@uos.de> - * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, - src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/dvisvgm.cpp, - src/options.xml: - added option --clippath to compute the intersection of clipping paths - - * README, README.md, src/Bezier.cpp, src/Bezier.h, src/GraphicPath.h, - src/Makefile.am, src/PathClipper.cpp, src/PathClipper.h, src/dvisvgm.cpp: - added class PathClipper to compute intersections of closed curved - graphics paths - - * src/GraphicPath.h: - added field to store the winding rule to class GraphicPath + * src/DVIToSVG.h, src/dvisvgm.cpp: + prevent throwing a DVIException when option -l is present * Makefile.am, clipper/License.txt, clipper/Makefile.am, clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, src/Makefile.am: added slightly modified sources of clipper library (computes boolops on polygons) - * src/DVIToSVG.h, src/dvisvgm.cpp: - prevent throwing a DVIException when option -l is present + * src/GraphicPath.h: + added field to store the winding rule to class GraphicPath + + * README, README.md, src/Bezier.cpp, src/Bezier.h, src/GraphicPath.h, + src/Makefile.am, src/PathClipper.cpp, src/PathClipper.h, src/dvisvgm.cpp: + added class PathClipper to compute intersections of closed curved + graphics paths + + * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, + src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/dvisvgm.cpp, + src/options.xml: + added option --clippath to compute the intersection of clipping paths 2014-07-20 Khaled Hosny <khaledhosny@eglug.org> @@ -3539,15 +3592,15 @@ Breaks standard things 2014-07-18 Martin Gieseking <martin.gieseking@uos.de> - * src/TpicSpecialHandler.cpp: - TPIC handler: use class GraphicPath to create SVG path commands - * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, src/GraphicPath.h, src/PsSpecialHandler.cpp, src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp, src/options.xml, tests/GraphicPathTest.cpp: added option to create relative rather than absolute path commands + * src/TpicSpecialHandler.cpp: + TPIC handler: use class GraphicPath to create SVG path commands + 2014-07-07 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVGActions.h, src/Doxyfile, src/HtmlSpecialHandler.h, @@ -3572,22 +3625,22 @@ Breaks standard things 2014-06-17 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - - * configure.ac, src/Doxyfile: - set version to 1.7 - - * src/InputReader.cpp: - added missing include + * src/SpecialManager.cpp, src/SpecialManager.h: + removed redundant method SpecialManager::leavePSHeaderSection() * doc/dvisvgm.txt.in, src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, tests/DvisvgmSpecialTest.cpp, tests/Makefile.am: added/improved dvisvgm::raw* specials - * src/SpecialManager.cpp, src/SpecialManager.h: - removed redundant method SpecialManager::leavePSHeaderSection() + * src/InputReader.cpp: + added missing include + + * configure.ac, src/Doxyfile: + set version to 1.7 + + * NEWS: + updated NEWS 2014-06-12 Martin Gieseking <martin.gieseking@uos.de> @@ -3596,14 +3649,14 @@ Breaks standard things 2014-06-11 Martin Gieseking <martin.gieseking@uos.de> + * src/InputReader.cpp, src/InputReader.h: + added InputReader::getLine() + * src/DVIToSVG.cpp, src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: added listener to allow SpecialHandlers being notified when pre-processing has finished - * src/InputReader.cpp, src/InputReader.h: - added InputReader::getLine() - 2014-06-10 Martin Gieseking <martin.gieseking@uos.de> * src/SpecialActions.h, tests/ColorSpecialTest.cpp: @@ -3611,15 +3664,49 @@ Breaks standard things 2014-06-09 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVG.h, src/SpecialManager.h: - removed redundant definition of assignment operators - * src/DVIReader.cpp, src/Ghostscript.cpp: removed unused variable; call Ghostscript::exit() with explicitely given object + * src/DVIToSVG.h, src/SpecialManager.h: + removed redundant definition of assignment operators + 2014-06-05 Martin Gieseking <martin.gieseking@uos.de> + * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/DVIReader.cpp, + src/DVIReader.h, src/Makefile.am: + moved basic funtionality of DVIReader to base class BasicDVIReader + + * src/BasicDVIReader.h, src/DVIReader.cpp, src/DVIToSVG.cpp, + src/DVIToSVG.h, src/dvisvgm.cpp: + moved call of executePreamble() and executePostamble() from DVIToSVG to + DVIReader + + * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp, src/DVIToSVG.h, + src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, + src/PreScanDVIReader.cpp, src/PreScanDVIReader.h, + src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h, + src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp, + src/StreamReader.h: + pre-process DVI file to collect required data not present in the page + ranges to be converted + + * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, + src/SpecialManager.cpp, src/SpecialManager.h, src/dvisvgm.cpp: + made class SpecialManager a singleton + + * src/BasicDVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, + src/DVIToSVGActions.h: + allow to replace the DVI reader assigned to an instance of + DVIToSVGActions + + * doc/dvisvgm.txt.in, src/BasicDVIReader.h, src/DVIToSVG.cpp, + src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, + src/EPSToSVG.cpp, src/EPSToSVG.h, src/HtmlSpecialHandler.cpp, + src/HtmlSpecialHandler.h, src/PreScanDVIReader.cpp, + src/PreScanDVIReader.h, src/SpecialActions.h: + process hyperref anchors and links across pages + * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bitmap.h, src/BoundingBox.h, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, src/CMapReader.h, src/CRC32.h, src/Calculator.cpp, src/Calculator.h, @@ -3649,115 +3736,81 @@ Breaks standard things src/XMLString.h, src/dvisvgm.cpp, src/types.h: replaced leading spaces by tabs; removed trailing whitespace - * doc/dvisvgm.txt.in, src/BasicDVIReader.h, src/DVIToSVG.cpp, - src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, - src/EPSToSVG.cpp, src/EPSToSVG.h, src/HtmlSpecialHandler.cpp, - src/HtmlSpecialHandler.h, src/PreScanDVIReader.cpp, - src/PreScanDVIReader.h, src/SpecialActions.h: - process hyperref anchors and links across pages - - * src/BasicDVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, - src/DVIToSVGActions.h: - allow to replace the DVI reader assigned to an instance of - DVIToSVGActions - - * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, - src/SpecialManager.cpp, src/SpecialManager.h, src/dvisvgm.cpp: - made class SpecialManager a singleton - - * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp, src/DVIToSVG.h, - src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, - src/PreScanDVIReader.cpp, src/PreScanDVIReader.h, - src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h, - src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp, - src/StreamReader.h: - pre-process DVI file to collect required data not present in the page - ranges to be converted - - * src/BasicDVIReader.h, src/DVIReader.cpp, src/DVIToSVG.cpp, - src/DVIToSVG.h, src/dvisvgm.cpp: - moved call of executePreamble() and executePostamble() from DVIToSVG to - DVIReader - - * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/DVIReader.cpp, - src/DVIReader.h, src/Makefile.am: - moved basic funtionality of DVIReader to base class BasicDVIReader - 2014-06-03 Martin Gieseking <martin.gieseking@uos.de> - * src/PsSpecialHandler.cpp: - fixed incorrect extent values shown when applying a preview bbox - (bp->pt) + * src/DVIReader.cpp, src/DVIReader.h: + removed redundant variable DVIReader::_prevBop * rpm/Makefile.am: removed outdated project folder 'rpm' - * src/DVIReader.cpp, src/DVIReader.h: - removed redundant variable DVIReader::_prevBop + * src/PsSpecialHandler.cpp: + fixed incorrect extent values shown when applying a preview bbox + (bp->pt) 2014-06-01 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIReader.cpp, src/DVIReader.h: - removed redundant code from DVIReader::evalCommand() - * src/EPSFile.cpp, src/GFReader.cpp: replaced relative variant of seekg() by absolute one where possible + * src/DVIReader.cpp, src/DVIReader.h: + removed redundant code from DVIReader::evalCommand() + 2014-05-31 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIReader.cpp, src/StreamReader.h, src/VFReader.cpp: - renamed some methods of class StreamReader + * src/DVIReader.cpp, src/VFReader.cpp: + few code adjustments * src/DVIReader.cpp, src/StreamReader.cpp, src/StreamReader.h, src/VFReader.cpp: removed StreamReader::in() - * src/DVIReader.cpp, src/VFReader.cpp: - few code adjustments + * src/DVIReader.cpp, src/StreamReader.h, src/VFReader.cpp: + renamed some methods of class StreamReader 2014-05-29 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIReader.cpp, src/DVIReader.h: - simplified DVIReader::executePage; removed DVIReader::executePages - - * src/DVIReader.cpp, src/DVIReader.h, src/dvisvgm.cpp: - simplified computation of progress ratio + * src/DVIReader.cpp, src/DVIReader.h, src/StreamReader.h: + collect all DVI BOP offsets to reach them quickly * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h: removed DVIReader::_totalPages; use number of BOP offsets instead - * src/DVIReader.cpp, src/DVIReader.h, src/StreamReader.h: - collect all DVI BOP offsets to reach them quickly + * src/DVIReader.cpp, src/DVIReader.h, src/dvisvgm.cpp: + simplified computation of progress ratio + + * src/DVIReader.cpp, src/DVIReader.h: + simplified DVIReader::executePage; removed DVIReader::executePages 2014-05-22 Martin Gieseking <martin.gieseking@uos.de> - * src/Makefile.am: - Makefiles: put source files on separate lines + * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/FontEngine.cpp, + src/FontEngine.h: + removed redundant method CharMap::invert() - * src/Makefile.am, src/RangeMap.h, src/ToUnicodeMap.cpp, - src/ToUnicodeMap.h, tests/Makefile.am, tests/ToUnicodeMapTest.cpp: - added class ToUnicodeMap to handle mappings from character indexes to - unicode points + * src/CMap.cpp, src/CMap.h, src/Makefile.am, src/RangeMap.cpp, + src/RangeMap.h, tests/Makefile.am, tests/RangeMapTest.cpp: + extracted class RangeMap previously implemented as part of SegmentedCMap - * src/DVIToSVG.cpp, src/Makefile.am, src/NumericRanges.h, - src/PageRanges.cpp, src/PageRanges.h, tests/PageRagesTest.cpp: - extracted functionality of class PageRanges to separate class - NumericRanges + * src/RangeMap.cpp: + fixed right joins of touching ranges in a RangeMap * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/Font.h, src/FontEngine.cpp, src/FontEngine.h, src/Makefile.am: replaced class CharMap with more generic class RangeMap - * src/RangeMap.cpp: - fixed right joins of touching ranges in a RangeMap + * src/DVIToSVG.cpp, src/Makefile.am, src/NumericRanges.h, + src/PageRanges.cpp, src/PageRanges.h, tests/PageRagesTest.cpp: + extracted functionality of class PageRanges to separate class + NumericRanges - * src/CMap.cpp, src/CMap.h, src/Makefile.am, src/RangeMap.cpp, - src/RangeMap.h, tests/Makefile.am, tests/RangeMapTest.cpp: - extracted class RangeMap previously implemented as part of SegmentedCMap + * src/Makefile.am, src/RangeMap.h, src/ToUnicodeMap.cpp, + src/ToUnicodeMap.h, tests/Makefile.am, tests/ToUnicodeMapTest.cpp: + added class ToUnicodeMap to handle mappings from character indexes to + unicode points - * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/FontEngine.cpp, - src/FontEngine.h: - removed redundant method CharMap::invert() + * src/Makefile.am: + Makefiles: put source files on separate lines 2014-04-30 Martin Gieseking <martin.gieseking@uos.de> @@ -3793,39 +3846,33 @@ Breaks standard things 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/CommandLine.h, src/DVIToSVG.cpp, src/EPSToSVG.cpp: + don't link GS messages unnecessarily if HAVE_LIBGS is defined * 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 + * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/options.xml: + changed default argument of option --linkmark to 'box' 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() + * src/DLLoader.cpp: + prevent calling dlopen() if the length of the string argument is 0 * 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> + * src/Ghostscript.cpp, src/dvisvgm.cpp: + moved lookup of MiKTeX's GS DLL to get_libgs() - * NEWS: - updated NEWS + * 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 - * configure.ac, src/Doxyfile: - set version to 1.5.3 +2014-04-11 Martin Gieseking <martin.gieseking@uos.de> * src/CMap.cpp, src/CmdLineParserBase.cpp, src/ColorSpecialHandler.cpp, src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Doxyfile, @@ -3839,8 +3886,17 @@ Breaks standard things src/XMLNode.cpp, src/dvisvgm.cpp: fixed issues in the doxygen documentation + * configure.ac, src/Doxyfile: + set version to 1.5.3 + + * NEWS: + updated NEWS + 2014-04-09 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVGActions.cpp: + equalize implementations of moveToX and moveToY + * src/BoundingBox.h, src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, @@ -3856,9 +3912,6 @@ Breaks standard things 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: @@ -3877,17 +3930,17 @@ Breaks standard things 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 + catch exceptions thrown by MiKTeXCom object * src/Directory.cpp: initialize Directory member variables (Win only) * src/FileFinder.cpp: - catch exceptions thrown by MiKTeXCom object + return 'unknown' if MiKTeX version can't be retrieved + + * configure.ac, src/Doxyfile: + set version to 1.5.2 2014-01-02 Martin Gieseking <martin.gieseking@uos.de> @@ -3959,38 +4012,38 @@ Breaks standard things 2013-12-29 Martin Gieseking <martin.gieseking@uos.de> - * src/FontCache.cpp: - catch potential StreamReaderException + * src/Font.cpp: + check if units per EM are not 0 to prevent divisions by zero * 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 + * src/FontCache.cpp: + catch potential StreamReaderException 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/BoundingBox.cpp: + explicitely initialize BoundingBox fields - * src/FontCache.cpp, src/SpecialManager.cpp: - restore stream format flags + * src/FontCache.cpp: + avoid accessing strings constructed from temporaries - * src/DvisvgmSpecialHandler.cpp, src/FontCache.cpp: - ensure null pointer checks before dereferencing + * src/Matrix.cpp: + ensure return value of istream::get() is assigned to int vars * 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/DvisvgmSpecialHandler.cpp, src/FontCache.cpp: + ensure null pointer checks before dereferencing - * src/FontCache.cpp: - avoid accessing strings constructed from temporaries + * src/FontCache.cpp, src/SpecialManager.cpp: + restore stream format flags - * src/BoundingBox.cpp: - explicitely initialize BoundingBox fields + * src/DVIReader.cpp, src/Directory.cpp, src/GFReader.cpp: + added missing initializations of member variables 2013-11-16 Martin Gieseking <martin.gieseking@uos.de> @@ -4004,18 +4057,18 @@ Breaks standard things 2013-10-28 Martin Gieseking <martin.gieseking@uos.de> - * configure.ac, src/Doxyfile: - set version to 1.5.1 + * src/Bitmap.cpp, src/Color.cpp, src/JFM.cpp, src/Matrix.cpp: + added missing #includes of header file <algorithm> + + * src/FileSystem.cpp, src/MetafontWrapper.cpp: + added explicit casts from ifstream to bool * 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> + * configure.ac, src/Doxyfile: + set version to 1.5.1 2013-10-27 Martin Gieseking <martin.gieseking@uos.de> @@ -4030,36 +4083,27 @@ Breaks standard things 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 + * src/Color.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: + added 'const' to read-only methods + 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/FontCache.cpp, src/FontCache.h: + renamed FontCache::VERSION to FontCache::FORMAT_VERSION * 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 + * src/DVIToSVG.cpp: + changed warning message that appears if PS support has been disabled + permanently 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, @@ -4085,19 +4129,19 @@ Breaks standard things 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> + * src/DLLoader.h, src/Directory.h: + moved #define NOMINMAX to Windows config.h - * doc/dvisvgm.txt.in: - updated manpage + * configure.ac, src/Doxyfile: + set version to 1.5 - * 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 + * NEWS: + updated NEWS - * 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 +2013-08-30 Martin Gieseking <martin.gieseking@uos.de> + + * src/FontMetrics.h, src/JFM.cpp, src/JFM.h, src/TFM.h: + added retrieval of vertical mode flag to class FontMetrics * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, @@ -4105,8 +4149,17 @@ Breaks standard things 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 + * 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/Font.cpp, src/Font.h, src/XMLString.cpp: + replaced entity references by corresponding UTF-8 characters; use + correct unicode points rather than DVI charcodes + + * doc/dvisvgm.txt.in: + updated manpage 2013-08-29 Martin Gieseking <martin.gieseking@uos.de> @@ -4128,23 +4181,23 @@ Breaks standard things 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/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/dvisvgm.cpp: - fix number of dashes printed by -V1 +2013-08-11 Martin Gieseking <martin.gieseking@uos.de> * configure.ac, src/FileFinder.cpp: check if the kpathsea library is C++-safe (patch by Peter Breitenlohner) + * src/dvisvgm.cpp: + fix number of dashes printed by -V1 + 2013-08-08 Martin Gieseking <martin.gieseking@uos.de> * src/Matrix.cpp, src/Matrix.h: @@ -4152,14 +4205,14 @@ Breaks standard things 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 + * src/Ghostscript.h, src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp: + added missing variable initializations + 2013-08-03 Martin Gieseking <martin.gieseking@uos.de> * src/CMapManager.cpp, src/CMapManager.h, src/FontManager.cpp: @@ -4167,61 +4220,42 @@ Breaks standard things 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/CMap.h, src/CMapManager.cpp: + properly handle 'unicode' encoding entries set in font map - * 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 +2013-08-01 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVG.cpp: - removed redundant #include statements + * src/XMLDocument.cpp, src/XMLString.cpp: + changed encoding of SVG files from ISO-8859-1 to UTF-8 * 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/DVIToSVG.cpp: + removed redundant #include statements - * 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/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/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 + * NEWS: + updated NEWS - * 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 + * configure.ac, src/Doxyfile: + set version to 1.4 - * src/FileFinder.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp: - added support for OTF fonts +2013-07-31 Martin Gieseking <martin.gieseking@uos.de> - * 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.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 * src/CMap.cpp, src/CMap.h, src/CMapManager.h, src/EncFile.cpp, src/EncFile.h, src/FileFinder.cpp, src/Font.cpp, src/Font.h, @@ -4231,23 +4265,35 @@ Breaks standard things 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 + * 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 -2013-07-27 Martin Gieseking <martin.gieseking@uos.de> + * src/FileFinder.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp: + added support for OTF fonts - * 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/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/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp: - added funtion to execute PS code snippets and retrieve their results + * 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/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 + +2013-07-27 Martin Gieseking <martin.gieseking@uos.de> + + * src/JFM.cpp: + fixed retrieval of char indexes if a JFM contains entries of chartype 0 + only * src/BgColorSpecialHandler.h, src/DVIToSVG.cpp, src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, @@ -4255,20 +4301,27 @@ Breaks standard things 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 + * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp: + added funtion to execute PS code snippets and retrieve their results + + * 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 2013-07-23 Martin Gieseking <martin.gieseking@uos.de> - * src/FontMap.cpp: - check for EOF prior to try to parse another mapline + * src/EPSToSVG.cpp: + print warning message if height or width of EPS bbox is 0 * 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 + * src/FontMap.cpp: + check for EOF prior to try to parse another mapline 2013-07-18 Martin Gieseking <martin.gieseking@uos.de> @@ -4277,21 +4330,21 @@ Breaks standard things 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/psdefs.cpp, src/psdefs.ps: + properly store PS operator applyscalevals in systemdict - * src/FileFinder.cpp, src/FileFinder.h: - FileFinder: added lookup of cmap files +2013-07-14 Martin Gieseking <martin.gieseking@uos.de> * src/Process.cpp, src/Process.h: extended Process::run() to grab the output written to stdout + * src/FileFinder.cpp, src/FileFinder.h: + FileFinder: added lookup of cmap files + 2013-07-08 Martin Gieseking <martin.gieseking@uos.de> * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp: @@ -4324,66 +4377,66 @@ Breaks standard things 2013-05-13 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * 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 - * configure.ac, src/Doxyfile: - set version to 1.3 + * 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 - * 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 + * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/dvisvgm.cpp: + try to load the Ghostscript library that comes with MiKTeX * 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 + * 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 - * 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 + * configure.ac, src/Doxyfile: + set version to 1.3 - * 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 + * NEWS: + updated NEWS 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() + * 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 - * 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/SVGTree.cpp, src/SVGTree.h: + added methods to push and pop 'context elements' to a page that wrap + parts of the page contents - * src/HtmlSpecialHandler.h: - dropped old HtmlSpecialHandler.h that should had been removed long time - ago + * src/DVIToSVGActions.h, src/EPSToSVG.h, src/SpecialActions.h: + provide the context push/pop methods of class SVGTree to special + handlers * 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/HtmlSpecialHandler.h: + dropped old HtmlSpecialHandler.h that should had been removed long time + ago - * src/SVGTree.cpp, src/SVGTree.h: - added methods to push and pop 'context elements' to a page that wrap - parts of the page contents + * 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 - * 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 + * 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() 2013-05-01 Martin Gieseking <martin.gieseking@uos.de> @@ -4402,12 +4455,6 @@ Breaks standard things 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, @@ -4415,16 +4462,22 @@ Breaks standard things src/XMLDocument.cpp, src/XMLDocument.h: added missing underscores to private member variables + * configure.ac, src/Doxyfile: + set version to 1.2.2 + + * NEWS: + updated NEWS + 2013-04-23 Martin Gieseking <martin.gieseking@uos.de> + * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/dvisvgm.cpp: + avoid output of empty parentheses if TARGET_SYSTEM is not set + * 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 - * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/dvisvgm.cpp: - avoid output of empty parentheses if TARGET_SYSTEM is not set - 2013-04-20 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVG.cpp, src/Makefile.am, src/NoPsSpecialHandler.cpp, @@ -4438,25 +4491,25 @@ Breaks standard things 2013-04-09 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * tests/Makefile.am, tests/create-makefile: + updated tests/Makefile.am to honor system potracelib if present * 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 + * NEWS: + updated NEWS 2013-04-08 Martin Gieseking <martin.gieseking@uos.de> - * src/PageRanges.h: - dropped unused variable PageRanges::_max + * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp: + allow the background color special to insert white rectancles * 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 + * src/PageRanges.h: + dropped unused variable PageRanges::_max 2013-04-04 Martin Gieseking <martin.gieseking@uos.de> @@ -4488,27 +4541,27 @@ Breaks standard things 2013-02-28 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS - - * configure.ac, src/Doxyfile: - set version to 1.2 + * 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 - * src/psdefs.cpp, src/psdefs.ps: - improved processing of PS operator "show" + * src/Makefile.am, src/PSInterpreter.cpp, src/psdefs.cpp, src/psdefs.ps, + src/psdefs.psc: + make psdefs a separate compilation unit * 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/psdefs.cpp, src/psdefs.ps: + improved processing of PS operator "show" - * 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 + * configure.ac, src/Doxyfile: + set version to 1.2 + + * NEWS: + updated NEWS 2013-02-21 Martin Gieseking <martin.gieseking@uos.de> @@ -4518,13 +4571,13 @@ Breaks standard things 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 + * src/FilePath.cpp: + adapt path separators on Windows systems to get the correct output path + 2013-02-11 Martin Gieseking <martin.gieseking@uos.de> * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp, @@ -4553,28 +4606,28 @@ Breaks standard things 2013-01-21 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, README: - updated NEWS and README + * 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 - * configure.ac, src/Doxyfile: - set version to 1.1 + * src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/MapLine.h: + replaced FontMap entries by pointers; initialize entries with MapLine + objects * 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 + * configure.ac, src/Doxyfile: + set version to 1.1 - * 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 + * NEWS, README: + updated NEWS and README 2013-01-20 Martin Gieseking <martin.gieseking@uos.de> @@ -4583,15 +4636,15 @@ Breaks standard things 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 + * 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 + 2013-01-10 Martin Gieseking <martin.gieseking@uos.de> * src/Font.cpp, src/FontEncoding.cpp: @@ -4661,28 +4714,28 @@ Breaks standard things 2012-12-23 Martin Gieseking <martin.gieseking@uos.de> - * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp: - reduced scope of some variables + * src/FontCache.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp: + check emptiness of containers with empty() instead of size() + + * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/Process.cpp: + avoid creating copies of exception objects * 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() + * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp: + reduced scope of some variables 2012-12-12 Martin Gieseking <martin.gieseking@uos.de> + * src/FontCache.cpp: + replaced 'char' with 'glyph' in font cache listing + * 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: @@ -4690,35 +4743,35 @@ Breaks standard things 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/FilePath.cpp, tests/FilePathTest.cpp: + strip drive letter if it's not set (Windows only) - * src/MiKTeX209-session_i.c: - add additiona files required to build dvisvgm with MinGW + * tests/FileSystemTest.cpp, tests/GFReaderTest.cpp: + ensure that tests work properly on Windows * src/macros.h: removed SHOW() from macros.h - * tests/FileSystemTest.cpp, tests/GFReaderTest.cpp: - ensure that tests work properly on Windows + * src/MiKTeX209-session_i.c: + add additiona files required to build dvisvgm with MinGW - * src/FilePath.cpp, tests/FilePathTest.cpp: - strip drive letter if it's not set (Windows only) + * src/FileFinder.cpp, src/FontEngine.cpp, src/Makefile.am, + src/MiKTeXCom.cpp, src/MiKTeXCom.h: + moved MiKTeX COM code to separate class -2012-11-23 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/PSInterpreter.cpp, src/psdefs.ps, src/psdefs.psc: - print operand stack in case of a PS error +2012-11-23 Martin Gieseking <martin.gieseking@uos.de> * 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 + * src/PSInterpreter.cpp, src/psdefs.ps, src/psdefs.psc: + print operand stack in case of a PS error + 2012-11-22 Martin Gieseking <martin.gieseking@uos.de> * src/Message.cpp: @@ -4731,12 +4784,12 @@ Breaks standard things 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 + * src/Font.cpp, src/Font.h, src/FontManager.cpp: + print warning if font checksums don't match + 2012-11-16 Martin Gieseking <martin.gieseking@uos.de> * src/Directory.h: @@ -4744,35 +4797,35 @@ Breaks standard things 2012-11-15 Martin Gieseking <martin.gieseking@uos.de> - * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, + * src/FileFinder.cpp, src/FileFinder.h, src/FontMap.cpp, src/FontMap.h, tests/FontMapTest.cpp: - adapted code to use new MapLine class; introduced support of map line - modes + made class FontMap a singleton + + * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: + moved initialization of FontMap from FileFinder to dvisvgm.cpp * 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, + * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, tests/FontMapTest.cpp: - made class FontMap a singleton + adapted code to use new MapLine class; introduced support of map line + modes 2012-11-14 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVG.cpp: - prevent compilation error when using a C++11 compiler (patch by Peter + * src/FileFinder.cpp: + initialize Ghostscript when compiled for TeX Live Win32 (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 + * src/DVIToSVG.cpp: + prevent compilation error when using a C++11 compiler (patch by Peter Breitenlohner) 2012-11-11 Martin Gieseking <martin.gieseking@uos.de> @@ -4789,23 +4842,23 @@ Breaks standard things 2012-09-27 Martin Gieseking <martin.gieseking@uos.de> - * doc/Makefile.am: - remove manpage when calling 'make distclean' + * configure.ac, src/Doxyfile: + set version to 1.0.12 * NEWS: updated NEWS - * configure.ac, src/Doxyfile: - set version to 1.0.12 + * doc/Makefile.am: + remove manpage when calling 'make distclean' 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 + * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: + removed Ghostscript info from ps entry in list of special handlers + 2012-06-06 Martin Gieseking <martin.gieseking@uos.de> * src/gfprint.mak: @@ -4840,15 +4893,15 @@ Breaks standard things 2012-03-09 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * src/Ghostscript.cpp, src/Ghostscript.h: + added optional parameter to Ghostscript::revision() to retrieve the + revision number only * 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 + * NEWS: + updated NEWS 2012-03-08 Martin Gieseking <martin.gieseking@uos.de> @@ -4881,13 +4934,13 @@ Breaks standard things 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) + * src/TpicSpecialHandler.cpp: + added some more comments to methods of class TpicSpecialHandler + 2012-01-06 Martin Gieseking <martin.gieseking@uos.de> * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, @@ -4946,25 +4999,25 @@ Breaks standard things 2011-12-18 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - updated NEWS + * tests/Makefile.am, tests/create-makefile: + link tests with -lpthread (required by gtest on Ubuntu) * 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) + * NEWS: + updated NEWS 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 + * doc/dvisvgm.txt.in: + added documentation on environment variable DVISVGM_COLORS to manpage + 2011-11-22 Martin Gieseking <martin.gieseking@uos.de> * src/GraphicPath.h: @@ -4978,63 +5031,39 @@ Breaks standard things 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() + * src/SVGTree.cpp: + avoid possible collisions of glyph IDs + 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/FilePath.cpp: + added some missing comments to methods of class FilePath * 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 + added missing include <signal.h> to Process.cpp * src/Process.cpp: - added missing include <signal.h> to Process.cpp + exclude definition of split_paramstr() from Windows builds as it's not + used there 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, @@ -5045,21 +5074,21 @@ Breaks standard things 2011-06-04 Martin Gieseking <martin.gieseking@uos.de> + * configure.ac, src/Doxyfile: + set version to 1.0.9dev + * 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 + * src/PsSpecialHandler.cpp: + explicitly cast double to int in call of ClippingStack::dup()/pop() + 2011-05-27 Martin Gieseking <martin.gieseking@uos.de> * tests/check-conv, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: @@ -5075,14 +5104,14 @@ Breaks standard things 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 + * src/MetafontWrapper.cpp: + dropped '--halt-on-error' in Metafont call to process buggy mf files + completely + 2011-05-19 Martin Gieseking <martin.gieseking@uos.de> * src/DLLoader.h: @@ -5097,67 +5126,58 @@ Breaks standard things 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 + * configure.ac, src/Doxyfile: + set version to 1.0.8dev * 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 + * src/PsSpecialHandler.cpp: + add definitions in literal PS headers to dictionary TeXDict + + * src/PsSpecialHandler.cpp: + fixed potential segfault caused by invisible zero-length paths 2011-05-06 Martin Gieseking <martin.gieseking@uos.de> + * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.7; updated NEWS and README + * 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/PSInterpreter.cpp, src/PsSpecialHandler.cpp: + separate PS snippets by newline characters to leave preceding comments + + * src/PsSpecialHandler.h: + corrected scaling formula applied to PS line properties * 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 + * doc/dvisvgm.txt.in: + added info about dvips rounding issues to manpage 2011-05-04 Martin Gieseking <martin.gieseking@uos.de> - * src/Length.h: - undefine macro IN + * src/PsSpecialHandler.cpp: + don't call Ghostscript::revision() in initialization of static variable * 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 + * src/Length.h: + undefine macro IN 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, @@ -5166,6 +5186,15 @@ Breaks standard things src/TpicSpecialHandler.h: replaced methods for DVI position alterations with translation semantics + * 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/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: + tpic special 'ip' must not draw the outline of the polygon but only fill + its interior + 2011-05-02 Martin Gieseking <martin.gieseking@uos.de> * src/psdefs.ps, src/psdefs.psc: @@ -5173,14 +5202,14 @@ Breaks standard things 2011-04-30 Martin Gieseking <martin.gieseking@uos.de> - * src/psdefs.ps, src/psdefs.psc: - catch PS error /nocurrentpoint in operator 'setpos' properly + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.7dev * src/SpecialManager.cpp: register special prefix ps:: properly - * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 1.0.7dev + * src/psdefs.ps, src/psdefs.psc: + catch PS error /nocurrentpoint in operator 'setpos' properly 2011-04-16 Martin Gieseking <martin.gieseking@uos.de> @@ -5189,16 +5218,16 @@ Breaks standard things 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() + * 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 + 2011-04-13 Martin Gieseking <martin.gieseking@uos.de> * src/XMLNode.cpp, src/XMLNode.h: @@ -5223,41 +5252,41 @@ Breaks standard things 2011-03-04 Martin Gieseking <martin.gieseking@uos.de> - * src/CRC32.cpp, src/StreamWriter.cpp: - added missing 'const' to type casts (Peter Breitenlohner) + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.6dev * 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 + * src/CRC32.cpp, src/StreamWriter.cpp: + added missing 'const' to type casts (Peter Breitenlohner) 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 + * doc/dvisvgm.txt.in, src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp: + added code to remove outdated and corrupted cache files * 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 + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.5, updated NEWS 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 + * src/SVGTree.cpp: + added missing unit in height/width attribute of svg root element + + * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, + tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: + updated conversion test files + 2011-02-16 Martin Gieseking <martin.gieseking@uos.de> * src/InputBuffer.h: @@ -5265,21 +5294,21 @@ Breaks standard things 2011-02-10 Martin Gieseking <martin.gieseking@uos.de> - * src/FontCache.cpp, src/FontCache.h: - added CRC32 checks to cache files + * src/FileSystem.cpp, src/FileSystem.h, src/dvisvgm.cpp, + tests/FileSystemTest.cpp: + merged FileSystem::move() into FileSystem::copy() + + * src/CRC32.cpp, src/CRC32.h, src/Makefile.am, tests/CRC32Test.cpp, + tests/Makefile.am: + added class CRC32 and corresponding tests * 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() + * src/FontCache.cpp, src/FontCache.h: + added CRC32 checks to cache files 2011-01-31 Martin Gieseking <martin.gieseking@uos.de> @@ -5308,9 +5337,6 @@ Breaks standard things 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, @@ -5360,20 +5386,23 @@ Breaks standard things tests/create-makefile: updated year in copyright info -2010-12-18 Martin Gieseking <martin.gieseking@uos.de> + * tests/Makefile.am, tests/PSInterpreterTest.cpp: + added basic tests for class PSInterpreter - * doc/dvisvgm.txt.in: - minor update to the manpage +2010-12-18 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 1.0.4; updated NEWS + * src/PsSpecialHandler.cpp: + fixed scaling issue in PS positioning * 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 + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.4; updated NEWS + + * doc/dvisvgm.txt.in: + minor update to the manpage 2010-12-16 Martin Gieseking <martin.gieseking@uos.de> @@ -5382,12 +5411,12 @@ Breaks standard things 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) + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.4dev + 2010-08-11 Martin Gieseking <martin.gieseking@uos.de> * tests/Makefile.am, tests/PairTest.cpp: @@ -5395,12 +5424,12 @@ Breaks standard things 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 + * NEWS, doc/dvisvgm.txt.in: + updated manpage and NEWS + 2010-08-04 Martin Gieseking <martin.gieseking@uos.de> * src/BoundingBox.cpp, src/BoundingBox.h, src/Matrix.cpp, src/Matrix.h, @@ -5420,29 +5449,29 @@ Breaks standard things 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 + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.3dev - * src/GraphicPath.h, src/PsSpecialHandler.h: - fixed missing initialization of GraphicPath iterator + * src/InputBuffer.h: + added missing namespace prefix * src/Terminal.cpp: replaced \e with \x1B - * src/InputBuffer.h: - added missing namespace prefix + * src/GraphicPath.h, src/PsSpecialHandler.h: + fixed missing initialization of GraphicPath iterator - * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 1.0.3dev + * src/Directory.cpp, src/Directory.h, src/GFReader.cpp, src/GFReader.h: + added leading underscore to variables of GFReader 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 + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.2 + 2010-06-18 Martin Gieseking <martin.gieseking@uos.de> * src/Bitmap.cpp, tests/DirectoryTest.cpp, tests/GFReaderTest.cpp, @@ -5451,13 +5480,6 @@ Breaks standard things 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, @@ -5466,11 +5488,14 @@ Breaks standard things src/PsSpecialHandler.h, src/TFM.cpp, src/TFM.h: fixed some type conversion warnings -2010-06-16 Martin Gieseking <martin.gieseking@uos.de> + * src/Message.cpp, src/Message.h: + renamed MessageStream::putchar() to MessageStream::putChar() to avoid + name clashes - * 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 + * src/types.h, tests/Makefile.am, tests/TypesTest.cpp: + added TypesTest + +2010-06-16 Martin Gieseking <martin.gieseking@uos.de> * configure.ac, src/CmdLineParserBase.h, src/FileFinder.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, @@ -5478,6 +5503,10 @@ Breaks standard things src/gzstream.cpp: applied latest TL patches from Peter Breitenlohner and Karl Berry + * 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 + 2010-06-14 Martin Gieseking <martin.gieseking@uos.de> * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: @@ -5485,56 +5514,41 @@ Breaks standard things 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> + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0.1 - * src/psdefs.ps, src/psdefs.psc: - fixed recursion issue in PS operator charpath +2010-06-09 Martin Gieseking <martin.gieseking@uos.de> * 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 + * src/psdefs.ps, src/psdefs.psc: + fixed recursion issue in PS operator charpath - * doc/Makefile.am, doc/dvisvgm.txt.in: - documented option --help and --version in manpage +2010-06-08 Martin Gieseking <martin.gieseking@uos.de> - * 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 + * configure.ac, doc/Makefile.am, src/Makefile.am: + cleaned up configuration scripts - * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h: - added method to compute length of DVI command + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0dev - * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, - src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: - evaluate Ghostscript operator .setopacityalpha + * 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 - * src/Font.cpp: - print error message if Metafont failed + * src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, + src/Makefile.am, tests/FilePathTest.cpp, tests/Makefile.am: + added class FilePath - * 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 + * src/InputBuffer.h, tests/ColorSpecialTest.cpp, + tests/StreamInputBufferTest.cpp: + added InputBuffer::invalidate() * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, @@ -5545,25 +5559,40 @@ Breaks standard things tests/StreamCounterTest.cpp: added conversion of multiple pages - * src/InputBuffer.h, tests/ColorSpecialTest.cpp, - tests/StreamInputBufferTest.cpp: - added InputBuffer::invalidate() + * 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 - * src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, - src/Makefile.am, tests/FilePathTest.cpp, tests/Makefile.am: - added class FilePath + * src/Font.cpp: + print error message if Metafont failed - * 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 + * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, + src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: + evaluate Ghostscript operator .setopacityalpha - * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 1.0dev + * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h: + added method to compute length of DVI command - * configure.ac, doc/Makefile.am, src/Makefile.am: - cleaned up configuration scripts + * 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 + + * doc/Makefile.am, doc/dvisvgm.txt.in: + documented option --help and --version in manpage + + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 1.0 + + * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, + src/PsSpecialHandler.h: + fixed PS destructor issue (SF bug #3013392) 2010-05-09 Martin Gieseking <martin.gieseking@uos.de> @@ -5572,33 +5601,33 @@ Breaks standard things 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 + * tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, tests/check-conv: + fixed segfaults in tests + 2010-04-22 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 0.9.1 + * src/CommandLine.cpp, src/options.xml: + output of option --help: replaced '(default: FOO)' by '[FOO]' - * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg: - adapted conversion tests to new output format + * 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/SVGTree.cpp: + fixed broken validity when using SVG fonts * 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 + * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg: + adapted conversion tests to new output format - * src/CommandLine.cpp, src/options.xml: - output of option --help: replaced '(default: FOO)' by '[FOO]' + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 0.9.1 2010-04-20 Martin Gieseking <martin.gieseking@uos.de> @@ -5607,12 +5636,12 @@ Breaks standard things 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 + * src/DVIToSVGActions.cpp: + replaced wrong font pointer that could lead to segfaults + 2010-03-25 Martin Gieseking <martin.gieseking@uos.de> * fedora/dvisvgm.spec: @@ -5620,81 +5649,74 @@ Breaks standard things 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 + * src/Font.cpp, src/Font.h, src/dvisvgm.cpp: + moved some methods from PhysicalFontImpl to PysicalFont - * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 0.9 + * 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/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp: - variable _fontname is now correctly set in class FontCache + * src/FontCache.cpp, src/Makefile.am, src/StreamWriter.cpp, + src/StreamWriter.h, src/TFM.cpp: + replaced local stream IO functions by StreamReader/StreamWriter methods * 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 + * src/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp: + variable _fontname is now correctly set in class FontCache - * 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 + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 0.9 - * src/Font.cpp, src/Font.h, src/dvisvgm.cpp: - moved some methods from PhysicalFontImpl to PysicalFont + * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, + tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: + updated conversion tests + + * transfer-cs: + added extension .patch to exported changesets 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 + * src/DVIToSVG.cpp, src/SVGTree.cpp: + moved creation of SVG 'use' elements from class DVIToSVG to class + SVGTree - * 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/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/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 + * 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/DVIToSVG.cpp, src/SVGTree.cpp: - moved creation of SVG 'use' elements from class DVIToSVG to class - SVGTree + * 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 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/GFReader.cpp, src/GFReader.h: + replaced GFReader messages by exceptions - * 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/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, 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/SVGTree.h: + removed class CharmapTranslator * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/FontManager.cpp, src/FontManager.h, @@ -5703,15 +5725,22 @@ Breaks standard things 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/FontCache.cpp, src/FontCache.h: + added method FontCache::write(const char *dir) that updates the cache + file of the current font + + * 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: - removed class CharmapTranslator + 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/GFReader.cpp, src/GFReader.h: - replaced GFReader messages by exceptions + * src/BoundingBox.cpp, src/Calculator.cpp, src/Matrix.cpp, + src/PSInterpreter.cpp, src/PSInterpreter.h: + fixed a couple of comments 2010-02-26 Martin Gieseking <martin.gieseking@uos.de> @@ -5740,12 +5769,12 @@ Breaks standard things 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 + * fedora/dvisvgm.spec: + updated homepage and spec file + 2010-02-01 Martin Gieseking <martin.gieseking@uos.de> * tests/check-conv: @@ -5753,24 +5782,24 @@ Breaks standard things 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> + * tests/normalize.xsl: + some improvements to normalize.xsl - * src/GraphicPath.h: - fixed scaling bug in computation of glyph paths when using -n +2010-01-29 Martin Gieseking <martin.gieseking@uos.de> * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp, src/CommandLine.h: removed CmdLineParserBase::numOptions() + * src/GraphicPath.h: + fixed scaling bug in computation of glyph paths when using -n + 2010-01-24 Martin Gieseking <martin.gieseking@uos.de> * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, @@ -5784,16 +5813,12 @@ Breaks standard things 2010-01-17 Martin Gieseking <martin.gieseking@uos.de> - * src/Ghostscript.cpp: - fixed typo in variable name - - * NEWS: - updated NEWS + * configure.ac: + updated type of kpathsea_version_string (patch by lomov_vl) - * 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 + * 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. * Makefile.am, README, configure.ac, doc/dvisvgm.txt.in, src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, @@ -5844,12 +5869,16 @@ Breaks standard things 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. + * 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 - * configure.ac: - updated type of kpathsea_version_string (patch by lomov_vl) + * NEWS: + updated NEWS + + * src/Ghostscript.cpp: + fixed typo in variable name 2009-12-16 Martin Gieseking <martin.gieseking@uos.de> @@ -5890,42 +5919,42 @@ Breaks standard things 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> + * src/Ghostscript.cpp, src/Ghostscript.h: + replaced #if HAVE_LIBGS by #if defined(HAVE_LIBGS) - * NEWS: - updated NEWS + * src/DLLoader.cpp, src/DLLoader.h: + fixed line endings - * src/dvisvgm.cpp: - don't use email adress PACKAGE_BUGREPORT for copyright notice +2009-11-17 Martin Gieseking <martin.gieseking@uos.de> - * 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 + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 0.8.8dev - * src/InputReader.cpp: - added missing initialization value (Peter Breitenlohner) + * potracelib/potracelib.c, potracelib/potracelib.h: + replaced outdated string constant type char* by const char* in + potrace_version() * 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() + * src/InputReader.cpp: + added missing initialization value (Peter Breitenlohner) - * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 0.8.8dev + * 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/dvisvgm.cpp: + don't use email adress PACKAGE_BUGREPORT for copyright notice + + * NEWS: + updated NEWS 2009-11-10 Martin Gieseking <martin.gieseking@uos.de> @@ -5934,26 +5963,26 @@ Breaks standard things 2009-11-09 Martin Gieseking <martin.gieseking@uos.de> - * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 0.8.7 + * src/DVIToSVG.cpp, src/dvisvgm.cpp: + added total number of pages to message text * 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 + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 0.8.7 2009-11-06 Martin Gieseking <martin.gieseking@uos.de> - * NEWS, src/PsSpecialHandler.cpp: - fixed path scaling issue in PS handler + * src/GraphicPath.h, src/PsSpecialHandler.cpp: + PS handler: replace zero-length paths by dots * NEWS, doc/dvisvgm.txt.in: updated NEWS and manpage - * src/GraphicPath.h, src/PsSpecialHandler.cpp: - PS handler: replace zero-length paths by dots + * NEWS, src/PsSpecialHandler.cpp: + fixed path scaling issue in PS handler 2009-10-29 Martin Gieseking <martin.gieseking@uos.de> @@ -5967,14 +5996,23 @@ Breaks standard things 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 + * configure.ac, src/Doxyfile: + increased version to 0.8.7dev + 2009-10-13 Martin Gieseking <martin.gieseking@uos.de> + * doc/Makefile.am, doc/dvisvgm.txt.in: + removed outdated post-processing of manpage + + * fedora/dvisvgm.spec: + updated spec file + + * doc/Makefile.am: + added missing dvi suffix in Makefile target dvi-pdf + * README, tests/CalculatorTest.cpp, tests/CalculatorTest.h, tests/ColorSpecialTest.cpp, tests/ColorSpecialTest.h, tests/CommandLineTest.cpp, tests/CommandLineTest.h, @@ -5991,22 +6029,8 @@ Breaks standard things 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, @@ -6041,18 +6065,23 @@ Breaks standard things src/XMLString.cpp, src/XMLString.h, src/macros.h, src/types.h: code cleanup + * 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 + 2009-10-11 Martin Gieseking <martin.gieseking@uos.de> - * NEWS: - NEWS updated + * transfer-cs: + improved transfer-cs * 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 + * NEWS: + NEWS updated 2009-10-10 Martin Gieseking <martin.gieseking@uos.de> @@ -6061,35 +6090,25 @@ Breaks standard things 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 + * src/Bitmap.h: + fixed bit shift overflow in Bitmap class occured on 64-bit systems * autogen.sh, prepare: prepare script replaced by autogen.sh - * src/Bitmap.h: - fixed bit shift overflow in Bitmap class occured on 64-bit systems + * transfer-cs: + added script to transfer changesets to dvisvgm-pub -2009-10-08 Martin Gieseking <martin.gieseking@uos.de> + * doc/dvisvgm.txt.in: + fixed formatting of manual page - * src/dvisvgm.cpp: - fixed uncaught PageSizeException + * src/Length.cpp, src/Length.h, tests/LengthTest.h: + fixed unit conversion bug - * src/MetafontWrapper.cpp: - fixed file permissions + * src/Makefile.am: + fixed Makefile - * NEWS, src/GraphicPath.h, src/PsSpecialHandler.cpp, - src/PsSpecialHandler.h: - PS clipping path sequences and intersections are now handled correctly +2009-10-08 Martin Gieseking <martin.gieseking@uos.de> * NEWS, doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp, src/CommandLine.h, src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp, @@ -6097,20 +6116,27 @@ Breaks standard things cmdline parameter --bbox can now be used to set the absolute bounding box -2009-10-07 Martin Gieseking <martin.gieseking@uos.de> + * NEWS, src/GraphicPath.h, src/PsSpecialHandler.cpp, + src/PsSpecialHandler.h: + PS clipping path sequences and intersections are now handled correctly - * src/BoundingBox.cpp, src/BoundingBox.h, src/Length.cpp, src/Length.h, - src/Makefile.am, tests/LengthTest.h: - class Length provides length unit calculations + * src/MetafontWrapper.cpp: + fixed file permissions + + * src/dvisvgm.cpp: + fixed uncaught PageSizeException + +2009-10-07 Martin Gieseking <martin.gieseking@uos.de> * 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> + * 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, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: - set version to 0.8.6 +2009-10-06 Martin Gieseking <martin.gieseking@uos.de> * src/BoundingBox.cpp, src/BoundingBox.h, src/GraphicPath.h, src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, @@ -6118,14 +6144,17 @@ Breaks standard things fixed some PS bounding box and positioning issues introduced by previous changesets -2009-10-05 Martin Gieseking <martin.gieseking@uos.de> + * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + set version to 0.8.6 - * NEWS, src/PsSpecialHandler.cpp: - fixed another positioning bug reported by John Bowman +2009-10-05 Martin Gieseking <martin.gieseking@uos.de> * src/PsSpecialHandler.cpp: convert PS path coordinated to TeX point units + * NEWS, src/PsSpecialHandler.cpp: + fixed another positioning bug reported by John Bowman + 2009-10-04 Martin Gieseking <martin.gieseking@uos.de> * src/GraphicPath.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: @@ -6144,54 +6173,46 @@ Breaks standard things 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 + * doc/dvisvgm.txt.in: + added dvisvgm:raw example to man page * 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 + * Makefile.am, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + increased version number to 0.8.5 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 + * NEWS: + added cretdit to John Bowman for sending a patch for the already fixed + clipping bug * 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 + * fedora/dvisvgm.spec: + updated spec file and fixed typo on website + + * doc/dvisvgm.txt.in: + minor changes of the documentation 2009-09-11 Martin Gieseking <martin.gieseking@uos.de> - * src/FileSystem.cpp, src/MetafontWrapper.cpp: - Windows: Metafont is now called via CreateProcess() + * NEWS, src/CmdLineParserBase.cpp, src/FontCache.cpp, + src/SVGFontTraceEmitter.cpp: + fixed memory bug in tracer module (issue #21) * 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) + * src/FileSystem.cpp, src/MetafontWrapper.cpp: + Windows: Metafont is now called via CreateProcess() 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, @@ -6201,6 +6222,14 @@ Breaks standard things src/TpicSpecialHandler.h: refactored prefixes methods of the SpecialHandlers (ticket #20) + * 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/FileSystem.cpp, src/FontCache.cpp: + fixed Windows-related bug in FileSystem::collect + 2009-09-06 Martin Gieseking <martin.gieseking@uos.de> * NEWS, README: @@ -6208,21 +6237,21 @@ Breaks standard things 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 + * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: + increased version number to 0.8.4 * 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 + * src/dvisvgm.cpp: + fixed evaluation of option --help + + * 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) 2009-09-01 Martin Gieseking <martin.gieseking@uos.de> @@ -6251,19 +6280,19 @@ Breaks standard things 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 + * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch, + fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec: + updated Fedora files * 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 + * 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 2009-08-24 Martin Gieseking <martin.gieseking@uos.de> @@ -6272,34 +6301,37 @@ Breaks standard things 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/FontMap.cpp: + fixed memory bug in FontMap * 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 + * NEWS, configure.ac, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, + src/Doxyfile: + increased version number to 0.8.2 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/InputReader.cpp, src/InputReader.h: + added method parseUInt() * 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() + * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h: + finished cmdline parser + + * COPYING: + added copy of file COPYING 2009-08-17 Martin Gieseking <martin.gieseking@uos.de> + * tests/Makefile.am: + added include path to fix broken distcheck + * 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, @@ -6346,13 +6378,11 @@ Breaks standard things 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 + * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm.spec, + rpm/dvisvgm.spec: + added spec file and patch for Fedora builds * Makefile.am, configure.ac, src/Makefile.am, src/tests/CalculatorTest.h, src/tests/ColorSpecialTest.h, src/tests/DirectoryTest.h, @@ -6370,9 +6400,8 @@ Breaks standard things 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 + * tests/Makefile.am: + added generated file test-all.cpp to CLEANFILES 2009-08-02 Martin Gieseking <martin.gieseking@uos.de> @@ -6382,13 +6411,13 @@ Breaks standard things 2009-07-30 Martin Gieseking <martin.gieseking@uos.de> + * configure.ac, src/DVIToSVG.cpp: + added target triplet to version string in SVG output + * 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: @@ -6396,33 +6425,33 @@ Breaks standard things 2009-07-28 Martin Gieseking <martin.gieseking@uos.de> - * src/psdefs.psc: - cleaned up VC++ build files; added batch file to generate cmdline.c; - added generated file psdefs.psc for convenience + * src/PsSpecialHandler.cpp: + added evaluation of more psfile parameters; fixed psfile bounding box + bug + + * NEWS, configure.ac, src/Doxyfile: + updated version number to 0.8.1 * 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 + * src/psdefs.psc: + cleaned up VC++ build files; added batch file to generate cmdline.c; + added generated file psdefs.psc for convenience 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 + * src/DLLoader.cpp, src/InputReader.cpp, src/PSInterpreter.cpp: + changes to make VC happy; fixed potential memory bug * 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 + * 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 2009-07-23 Martin Gieseking <martin.gieseking@uos.de> @@ -6431,64 +6460,64 @@ Breaks standard things 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/TpicSpecialHandler.cpp: + fixed reintroduced bug in TPIC handler - * src/PsSpecialHandler.cpp, src/SVGTree.cpp: - fixed bbox bug; added missing file +2009-07-20 Martin Gieseking <martin.gieseking@uos.de> * 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 + * src/PsSpecialHandler.cpp, src/SVGTree.cpp: + fixed bbox bug; added missing file + 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/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am: + transplanted changes to InputBuffer from branch 'pages' - * src/GFTracer.cpp: - transplanted changes to GFTracer from branch 'pages' + * src/Bitmap.cpp, src/Bitmap.h: + transplanted changes to Bitmap from branch 'pages' - * src/VFReader.cpp: - transplanted changes to VFReader from branch 'pages' + * src/DVIReader.cpp, src/DVIReader.h: + transplanted changes to DVIReader 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/VFReader.cpp: + transplanted changes to VFReader from branch 'pages' - * src/Bitmap.cpp, src/Bitmap.h: - transplanted changes to Bitmap from branch 'pages' + * src/GFTracer.cpp: + transplanted changes to GFTracer from branch 'pages' - * src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am: - transplanted changes to InputBuffer from branch 'pages' + * 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' 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 + * src/TpicSpecialHandler.cpp: + fixed TPIC handler bug that could caused unwanted color fills of + ellipses due to a missing call of reset() * 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() + * src/FontCache.h: + increased version of font cache files to ensure their recreation due to + the previously fixed shorthand path command bug 2009-04-02 Martin Gieseking <martin.gieseking@uos.de> @@ -6499,25 +6528,25 @@ Breaks standard things 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 + * src/Doxyfile: + added doxygen files + 2009-03-24 Martin Gieseking <martin.gieseking@uos.de> - * src/FontGlyph.cpp: - fixed memory 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 * 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 + * src/FontGlyph.cpp: + fixed memory bug in Glyph::optimizeCommands() 2009-03-20 Martin Gieseking <martin.gieseking@uos.de> @@ -6526,10 +6555,6 @@ Breaks standard things 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, @@ -6537,29 +6562,33 @@ Breaks standard things added option --trace-all that forces tracing of all glyphs of all currently used bitmap fonts + * 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) + 2009-03-18 Martin Gieseking <martin.gieseking@uos.de> + * src/FontCache.cpp: + fixed bug in read/write functions of FontCache + * 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 + * doc/dvisvgm.txt.in, src/dvisvgm.cpp: + added option variant --cache=? to display the default cache directory + + * src/FontCache.cpp: + reduced size of cache file format by using variable integer sizes + 2009-03-16 Martin Gieseking <martin.gieseking@uos.de> * NEWS, configure.ac, doc/dvisvgm.txt.in, src/DVIToSVG.cpp, @@ -6586,49 +6615,39 @@ Breaks standard things 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/BgColorSpecialHandler.cpp, src/SpecialManager.cpp, + src/TpicSpecialHandler.cpp: + adapted Code to make VC happy * src/types.h: minor changes to homepage and .hgignore - * src/BgColorSpecialHandler.cpp, src/SpecialManager.cpp, - src/TpicSpecialHandler.cpp: - adapted Code to make VC happy + * 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) 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 + * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h: + added missing background color handler + 2009-03-06 Martin Gieseking <martin.gieseking@uos.de> * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: - implemented splines of tpic specials + implemented arc drawing of tpic special set * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: - implemented arc drawing of tpic special set + implemented splines of tpic specials 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, @@ -6638,14 +6657,24 @@ Breaks standard things 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, 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 - * doc/Makefile.am, doc/dvisvgm.txt.in: - improved manpage + * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, + src/DvisvgmSpecialHandler.h: + minor code improvements; comments added + +2009-02-26 Martin Gieseking <martin.gieseking@uos.de> * doc/Makefile.am, doc/dvisvgm.txt, doc/dvisvgm.txt.in: removed generated file, added dvisvgm.txt.in + * doc/Makefile.am, doc/dvisvgm.txt.in: + improved manpage + 2009-02-25 Martin Gieseking <martin.gieseking@uos.de> * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, @@ -6655,15 +6684,6 @@ Breaks standard things 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, @@ -6675,6 +6695,15 @@ Breaks standard things src/tests/ColorSpecialTest.h: improved SpecialHandler is now able to handle unprefixed specials + * 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 + + * NEWS, doc/dvisvgm.1.in, src/TpicSpecialHandler.cpp: + few additions to tpic handler + 2009-02-23 Martin Gieseking <martin.gieseking@uos.de> * NEWS, configure.ac, doc/dvisvgm.1.in, src/DVIBBoxActions.h, @@ -6701,14 +6730,14 @@ Breaks standard things 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 + * NEWS, src/SpecialActions.h, src/tests/ColorSpecialTest.h: + adapted color test to new interface, added emtex info + 2009-02-17 Martin Gieseking <martin.gieseking@uos.de> * src/DVIReader.cpp: @@ -6724,30 +6753,35 @@ Breaks standard things 2009-02-14 Martin Gieseking <martin.gieseking@uos.de> + * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: + finished color support + + * src/dvisvgm.cpp: + fixed incorrect behavior of option -V/--version + * NEWS, configure.ac: - prepared release of version 0.7 + increased version number to 0.6.2, updated NEWS * 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 + prepared release of version 0.7 - * src/dvisvgm.cpp: - fixed incorrect behavior of option -V/--version +2009-02-13 Martin Gieseking <martin.gieseking@uos.de> - * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: - finished color support + * src/types.h: + replaced static definition of sized integers by template program -2009-02-13 Martin Gieseking <martin.gieseking@uos.de> + * Makefile.am, configure.ac, src/tests/DirectoryTest.h: + removed rpm support - * src/ColorSpecialHandler.cpp, src/Makefile.am, - src/tests/ColorSpecialTest.h: - added tests for ColorSpecialHandler + * hgauthors, prepare: + added administrative files - * prepare: - updated administrative files + * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: + reverted to previous version, removed dependency on Color class * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp, @@ -6755,17 +6789,12 @@ Breaks standard things 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 + * prepare: + updated administrative files - * src/types.h: - replaced static definition of sized integers by template program + * src/ColorSpecialHandler.cpp, src/Makefile.am, + src/tests/ColorSpecialTest.h: + added tests for ColorSpecialHandler 2009-02-10 Martin Gieseking <martin.gieseking@uos.de> @@ -6780,69 +6809,69 @@ Breaks standard things 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 + * src/FileFinder.cpp: + changed lookup order of font maps + 2009-02-05 Martin Gieseking <martin.gieseking@uos.de> - * src/DVIToSVGActions.cpp: - replaced special ignore list evaluation algorithm + * src/extract-colors.php: + added php-script that extracts color definitions from color.pro * 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 + * src/DVIToSVGActions.cpp: + replaced special ignore list evaluation algorithm 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/FontMap.cpp: + added output of font encoding in write method - * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: - option -m/--map-file is now evaluated properly +2009-02-03 Martin Gieseking <martin.gieseking@uos.de> * 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 + * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: + option -m/--map-file is now evaluated properly + + * map/cork-lm.map: + removed deprecated map subdirectory + 2009-02-02 Martin Gieseking <martin.gieseking@uos.de> - * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: - some refactorings in color handler + * NEWS, src/FileFinder.cpp: + fixed buggy call of maketfm/makemf in Windows version * 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 + * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: + some refactorings in color handler 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 + * NEWS, src/DVIReader.cpp, src/DVIReader.h: + fixed magnification bug + 2009-01-29 Martin Gieseking <martin.gieseking@uos.de> * src/FileFinder.cpp: @@ -6850,31 +6879,31 @@ Breaks standard things 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/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) - * 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/dvisvgm.cpp: + use new initialisation of FileFinder - * 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/GFReader.h, src/GFTracer.cpp, src/GFTracer.h: + improved GFTracer to support unscaled results * 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/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/dvisvgm.cpp: - use new initialisation of FileFinder + * 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/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) + * NEWS, configure.ac, doc/dvisvgm.1.in: + adapted configuration and documentation to new dvips map file support 2009-01-27 Martin Gieseking <martin.gieseking@uos.de> @@ -6885,17 +6914,20 @@ Breaks standard things 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) + * src/InputBuffer.h: + fixed incompatible types bug + 2009-01-25 Martin Gieseking <martin.gieseking@uos.de> - * src/FontMap.cpp: - basic dvips font map support, not complete yet + * src/InputBuffer.cpp, src/InputBuffer.h: + added missing include + + * src/FontMap.cpp, src/FontMap.h: + started redesign of FontMap, not complete yet * src/CharmapTranslator.cpp, src/DVIToSVG.cpp, src/FileFinder.cpp, src/FileFinder.h, src/Font.cpp, src/FontEncoding.cpp, @@ -6903,11 +6935,8 @@ Breaks standard things 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 + * src/FontMap.cpp: + basic dvips font map support, not complete yet 2009-01-23 Martin Gieseking <martin.gieseking@uos.de> @@ -6916,8 +6945,26 @@ Breaks standard things 2009-01-22 Martin Gieseking <martin.gieseking@uos.de> - * configure.ac: - added test whether dvipdfm.map is available + * src/FontMap.cpp: + forgot to remove address operator + + * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: + added support for MiKTeX' new COM interface + + * src/DVIReader.cpp, src/FontManager.cpp, src/KPSFileFinder.cpp: + memory leak fixed + + * src/KPSFileFinder.cpp: + fixed throwing of COM exception + + * Makefile.am, NEWS, README, configure.ac, potracelib/Makefile.am: + updated version info to 0.6 + + * 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 * doc/dvisvgm.1.in, rpm/dvisvgm.spec.in, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp, @@ -6949,29 +6996,15 @@ Breaks standard things 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 + * configure.ac: + added test whether dvipdfm.map is available 2009-01-21 Martin Gieseking <martin.gieseking@uos.de> + * 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 + * 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, @@ -6980,18 +7013,8 @@ Breaks standard things 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, @@ -6999,12 +7022,13 @@ Breaks standard things src/SVGFontEmitter.cpp, src/SVGFontEmitter.h: first working version with font encoding support -2009-01-19 Martin Gieseking <martin.gieseking@uos.de> + * src/FontEngine.cpp, src/FontEngine.h, src/SVGFontEmitter.cpp: + fixed glyph positioning bug occured in conjunction with font encoding - * 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/SVGFontEmitter.cpp: + fixed memory bug + +2009-01-19 Martin Gieseking <martin.gieseking@uos.de> * src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, src/FontManager.h, @@ -7012,6 +7036,11 @@ Breaks standard things src/KPSFileFinder.h: more encoding implementations, not complete yet + * 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 + 2009-01-16 Martin Gieseking <martin.gieseking@uos.de> * src/TransformationMatrix.cpp: @@ -7024,24 +7053,24 @@ Breaks standard things 2009-01-14 Martin Gieseking <martin.gieseking@uos.de> - * src/KPSFileFinder.cpp: - added enc-file support + * 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 - * src/dvisvgm.cpp: - updated copyright string + * src/FontEncoding.cpp, src/FontEncoding.h, src/InputBuffer.cpp, + src/InputBuffer.h, src/Makefile.am: + added basic skeleton for handling of font encodings * 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 + * src/dvisvgm.cpp: + updated copyright string - * 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 + * src/KPSFileFinder.cpp: + added enc-file support 2009-01-13 Martin Gieseking <martin.gieseking@uos.de> @@ -7060,10 +7089,6 @@ Breaks standard things 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, @@ -7071,10 +7096,11 @@ Breaks standard things src/SVGFontTraceEmitter.h: redesigned DVIActions and CharmapTranslator -2007-03-25 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 - * src/DVIReader.cpp, src/DVIReader.h, src/VFActions.h: - minor fixes +2007-03-25 Martin Gieseking <martin.gieseking@uos.de> * src/DVIActions.cpp, src/DVIActions.h, src/DVIBBoxActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, @@ -7084,6 +7110,9 @@ Breaks standard things src/VectorStream.h: first working version 0.5, release candidate 1 + * src/DVIReader.cpp, src/DVIReader.h, src/VFActions.h: + minor fixes + 2007-03-23 Martin Gieseking <martin.gieseking@uos.de> * src/DVIReader.cpp, src/FontManager.cpp, src/FontManager.h, @@ -7092,10 +7121,6 @@ Breaks standard things 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, @@ -7103,14 +7128,17 @@ Breaks standard things reintegrated font map initialization into KPSFileFinderm adapted some tests -2007-03-21 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 - * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: - implemented options -n and -m +2007-03-21 Martin Gieseking <martin.gieseking@uos.de> - * 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 + * 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 * src/Calculator.cpp, src/DVIReader.cpp, src/Directory.cpp, src/Font.h, src/FontManager.cpp, src/Makefile, src/Makefile.am, src/Makefile.in, @@ -7119,17 +7147,14 @@ Breaks standard things 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 + * 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 -2007-03-20 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/FileSystem.cpp, src/FontMap.cpp, - src/FontMap.h, src/KPSFileFinder.cpp: - more changes for MiKTeX support +2007-03-20 Martin Gieseking <martin.gieseking@uos.de> * NEWS, doc/Makefile, doc/Makefile.in, doc/dvisvgm.1.in, src/DVIReader.cpp, src/DVIToSVG.cpp, src/Font.cpp, src/Font.h, @@ -7138,20 +7163,24 @@ Breaks standard things 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/Directory.cpp, src/Directory.h, src/FileSystem.cpp, src/FontMap.cpp, src/FontMap.h, src/KPSFileFinder.cpp: - made sources comaptible with MikTeX + more changes for MiKTeX support - * src/KPSFileFinder.cpp: - bug fixed, font maps work now +2007-03-19 Martin Gieseking <martin.gieseking@uos.de> * 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 + * src/KPSFileFinder.cpp: + bug fixed, font maps work now + + * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp, + src/FontMap.h, src/KPSFileFinder.cpp: + made sources comaptible with MikTeX + 2007-03-16 Martin Gieseking <martin.gieseking@uos.de> * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp, @@ -7176,18 +7205,13 @@ Breaks standard things 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 + * 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 * COPYING, Makefile, Makefile.am, Makefile.in, Martins_svg_neu.svg, NEWS, aclocal.m4, cmdline.c, config.guess, config.h, config.h.in, @@ -7197,13 +7221,18 @@ Breaks standard things 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 + * doc/dvisvgm.1, src/FontEngine.h, src/Makefile.orig, src/dvisvgm.cpp, + src/tests/FontManagerTest.h: + minor changes + + * src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/Font.cpp, src/Font.h, + src/Makefile.orig, src/StreamCounter.h, src/dvisvgm.cpp: + fixed memory bug + + * 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) 2007-03-07 Martin Gieseking <martin.gieseking@uos.de> @@ -7245,10 +7274,6 @@ Breaks standard things 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, @@ -7291,6 +7316,10 @@ Breaks standard things src/tests/StreamCounterTest.h, src/types.h: moved files to trunk subfolder + * map/cork-lm.map, rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, + rpm/dvisvgm.spec, rpm/dvisvgm.spec.in: + moved files to trunk + 2007-01-05 Martin Gieseking <martin.gieseking@uos.de> * Makefile, Makefile.am, Makefile.in, README, config.status, configure.ac, @@ -7323,8 +7352,8 @@ Breaks standard things 2007-01-03 Martin Gieseking <martin.gieseking@uos.de> - * configure: - removed configure from repository + * NEWS, mkwindist.pl, src/KPSFileFinder.cpp: + updated homepage * Makefile, Makefile.am, Makefile.in, config.h, config.h.in, config.status, configure, configure.ac, doc/Makefile, @@ -7336,30 +7365,27 @@ Breaks standard things potracelib/trace.h, src/Makefile, src/Makefile.am, src/Makefile.in: added potracelib to distribution - * NEWS, mkwindist.pl, src/KPSFileFinder.cpp: - updated homepage + * configure: + removed configure from repository 2006-12-31 Martin Gieseking <martin.gieseking@uos.de> - * src/KPSFileFinder.cpp: - fixed namepsace bug + * 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 * 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 + * src/KPSFileFinder.cpp: + fixed namepsace bug 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, @@ -7367,36 +7393,10 @@ Breaks standard things 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 + * configure.ac: + enabled svn keyword expansion - * 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 +2006-04-12 Martin Gieseking <martin.gieseking@uos.de> * COPYING, INSTALL, Makefile, Makefile.am, Makefile.in, Martins_svg_neu.svg, NEWS, README, aclocal.m4, autom4te.cache/output.0, @@ -7440,3 +7440,32 @@ Breaks standard things stamp-h1, table.txt: initial import + * 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 + + * 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 + diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS index f663135f750..cabef9a1cf0 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS +++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS @@ -1,3 +1,9 @@ +dvisvgm-2.3.4 (2018-03-14) +- fixed error message printed when addding a single '-' on the command-line +- added missing data file that lead to failing tests (GH bug #87) +- updated brotli library to version 1.0.3 +- some code refactorings + dvisvgm-2.3.3 (2018-02-20) - fixed wrong behavior when requiring both default mapfiles and pdf:mapline or pdf:mapfile specials diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac index 61e3ff8dabd..fce8a90baf7 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac +++ b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac @@ -4,8 +4,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([dvisvgm],[2.3.3],[martin.gieseking@uos.de]) -DATE="February 2018" +AC_INIT([dvisvgm],[2.3.4],[martin.gieseking@uos.de]) +DATE="March 2018" AC_CONFIG_SRCDIR(src) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 index 5634ca4713e..c45dd449d6b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 +++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 @@ -2,12 +2,12 @@ .\" Title: dvisvgm .\" Author: Martin Gieseking <martin.gieseking@uos.de> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 02/20/2018 +.\" Date: 03/14/2018 .\" Manual: dvisvgm Manual -.\" Source: dvisvgm 2.3.3 +.\" Source: dvisvgm 2.3.4 .\" Language: English .\" -.TH "DVISVGM" "1" "02/20/2018" "dvisvgm 2\&.3\&.3" "dvisvgm Manual" +.TH "DVISVGM" "1" "03/14/2018" "dvisvgm 2\&.3\&.4" "dvisvgm Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am index 92f337d7edf..bb1abc712a1 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am @@ -1,8 +1,11 @@ noinst_LIBRARIES = libbrotli.a libbrotli_a_SOURCES = \ common/constants.h \ + common/context.h \ common/dictionary.c \ common/dictionary.h \ + common/platform.h \ + common/transform.h \ common/version.h \ enc/backward_references.c \ enc/backward_references.h \ @@ -30,6 +33,8 @@ libbrotli_a_SOURCES = \ enc/dictionary_hash.c \ enc/dictionary_hash.h \ enc/encode.c \ + enc/encoder_dict.c \ + enc/encoder_dict.h \ enc/entropy_encode.c \ enc/entropy_encode.h \ enc/entropy_encode_static.h \ @@ -51,6 +56,7 @@ libbrotli_a_SOURCES = \ enc/metablock.c \ enc/metablock.h \ enc/metablock_inc.h \ + enc/params.h \ enc/port.h \ enc/prefix.h \ enc/quality.h \ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in index 14ac6274d5e..01005633007 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in @@ -128,10 +128,10 @@ am_libbrotli_a_OBJECTS = common/dictionary.$(OBJEXT) \ enc/cluster.$(OBJEXT) enc/compress_fragment.$(OBJEXT) \ enc/compress_fragment_two_pass.$(OBJEXT) \ enc/dictionary_hash.$(OBJEXT) enc/encode.$(OBJEXT) \ - enc/entropy_encode.$(OBJEXT) enc/histogram.$(OBJEXT) \ - enc/literal_cost.$(OBJEXT) enc/memory.$(OBJEXT) \ - enc/metablock.$(OBJEXT) enc/static_dict.$(OBJEXT) \ - enc/utf8_util.$(OBJEXT) + enc/encoder_dict.$(OBJEXT) enc/entropy_encode.$(OBJEXT) \ + enc/histogram.$(OBJEXT) enc/literal_cost.$(OBJEXT) \ + enc/memory.$(OBJEXT) enc/metablock.$(OBJEXT) \ + enc/static_dict.$(OBJEXT) enc/utf8_util.$(OBJEXT) libbrotli_a_OBJECTS = $(am_libbrotli_a_OBJECTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -347,8 +347,11 @@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libbrotli.a libbrotli_a_SOURCES = \ common/constants.h \ + common/context.h \ common/dictionary.c \ common/dictionary.h \ + common/platform.h \ + common/transform.h \ common/version.h \ enc/backward_references.c \ enc/backward_references.h \ @@ -376,6 +379,8 @@ libbrotli_a_SOURCES = \ enc/dictionary_hash.c \ enc/dictionary_hash.h \ enc/encode.c \ + enc/encoder_dict.c \ + enc/encoder_dict.h \ enc/entropy_encode.c \ enc/entropy_encode.h \ enc/entropy_encode_static.h \ @@ -397,6 +402,7 @@ libbrotli_a_SOURCES = \ enc/metablock.c \ enc/metablock.h \ enc/metablock_inc.h \ + enc/params.h \ enc/port.h \ enc/prefix.h \ enc/quality.h \ @@ -485,6 +491,8 @@ enc/dictionary_hash.$(OBJEXT): enc/$(am__dirstamp) \ enc/$(DEPDIR)/$(am__dirstamp) enc/encode.$(OBJEXT): enc/$(am__dirstamp) \ enc/$(DEPDIR)/$(am__dirstamp) +enc/encoder_dict.$(OBJEXT): enc/$(am__dirstamp) \ + enc/$(DEPDIR)/$(am__dirstamp) enc/entropy_encode.$(OBJEXT): enc/$(am__dirstamp) \ enc/$(DEPDIR)/$(am__dirstamp) enc/histogram.$(OBJEXT): enc/$(am__dirstamp) \ @@ -524,6 +532,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/compress_fragment_two_pass.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/dictionary_hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/encode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/encoder_dict.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/entropy_encode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/histogram.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enc/$(DEPDIR)/literal_cost.Po@am__quote@ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h index 416ec5596ee..26edcd59218 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h @@ -28,18 +28,25 @@ /* "code length of 8 is repeated" */ #define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8 +/* "Large Window Brotli" */ +#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U +#define BROTLI_LARGE_MIN_WBITS 10 +#define BROTLI_LARGE_MAX_WBITS 30 + /* Specification: 4. Encoding of distances */ #define BROTLI_NUM_DISTANCE_SHORT_CODES 16 #define BROTLI_MAX_NPOSTFIX 3 #define BROTLI_MAX_NDIRECT 120 #define BROTLI_MAX_DISTANCE_BITS 24U -/* BROTLI_NUM_DISTANCE_SYMBOLS == 520 */ -#define BROTLI_NUM_DISTANCE_SYMBOLS (BROTLI_NUM_DISTANCE_SHORT_CODES + \ - BROTLI_MAX_NDIRECT + \ - (BROTLI_MAX_DISTANCE_BITS << \ - (BROTLI_MAX_NPOSTFIX + 1))) -/* Distance that is guaranteed to be representable in any stream. */ +#define BROTLI_DISTANCE_ALPHABET_SIZE(NDIRECT, NPOSTFIX, MAXNBITS) ( \ + BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) + \ + ((MAXNBITS) << ((NPOSTFIX) + 1))) +/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */ +#define BROTLI_NUM_DISTANCE_SYMBOLS \ + BROTLI_DISTANCE_ALPHABET_SIZE( \ + BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS) #define BROTLI_MAX_DISTANCE 0x3FFFFFC +#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC /* 7.1. Context modes and context ID lookup for literals */ /* "context IDs for literals are in the range of 0..63" */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h new file mode 100644 index 00000000000..24b3eb48f53 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h @@ -0,0 +1,261 @@ +/* Copyright 2013 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +/* Lookup table to map the previous two bytes to a context id. + + There are four different context modeling modes defined here: + CONTEXT_LSB6: context id is the least significant 6 bits of the last byte, + CONTEXT_MSB6: context id is the most significant 6 bits of the last byte, + CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text, + CONTEXT_SIGNED: second-order context model tuned for signed integers. + + If |p1| and |p2| are the previous two bytes, and |mode| is current context + mode, we calculate the context as: + + context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256]. + + For CONTEXT_UTF8 mode, if the previous two bytes are ASCII characters + (i.e. < 128), this will be equivalent to + + context = 4 * context1(p1) + context2(p2), + + where context1 is based on the previous byte in the following way: + + 0 : non-ASCII control + 1 : \t, \n, \r + 2 : space + 3 : other punctuation + 4 : " ' + 5 : % + 6 : ( < [ { + 7 : ) > ] } + 8 : , ; : + 9 : . + 10 : = + 11 : number + 12 : upper-case vowel + 13 : upper-case consonant + 14 : lower-case vowel + 15 : lower-case consonant + + and context2 is based on the second last byte: + + 0 : control, space + 1 : punctuation + 2 : upper-case letter, number + 3 : lower-case letter + + If the last byte is ASCII, and the second last byte is not (in a valid UTF8 + stream it will be a continuation byte, value between 128 and 191), the + context is the same as if the second last byte was an ASCII control or space. + + If the last byte is a UTF8 lead byte (value >= 192), then the next byte will + be a continuation byte and the context id is 2 or 3 depending on the LSB of + the last byte and to a lesser extent on the second last byte if it is ASCII. + + If the last byte is a UTF8 continuation byte, the second last byte can be: + - continuation byte: the next byte is probably ASCII or lead byte (assuming + 4-byte UTF8 characters are rare) and the context id is 0 or 1. + - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1 + - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3 + + The possible value combinations of the previous two bytes, the range of + context ids and the type of the next byte is summarized in the table below: + + |--------\-----------------------------------------------------------------| + | \ Last byte | + | Second \---------------------------------------------------------------| + | last byte \ ASCII | cont. byte | lead byte | + | \ (0-127) | (128-191) | (192-) | + |=============|===================|=====================|==================| + | ASCII | next: ASCII/lead | not valid | next: cont. | + | (0-127) | context: 4 - 63 | | context: 2 - 3 | + |-------------|-------------------|---------------------|------------------| + | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. | + | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 | + |-------------|-------------------|---------------------|------------------| + | lead byte | not valid | next: ASCII/lead | not valid | + | (192-207) | | context: 0 - 1 | | + |-------------|-------------------|---------------------|------------------| + | lead byte | not valid | next: cont. | not valid | + | (208-) | | context: 2 - 3 | | + |-------------|-------------------|---------------------|------------------| +*/ + +#ifndef BROTLI_COMMON_CONTEXT_H_ +#define BROTLI_COMMON_CONTEXT_H_ + +#include <brotli/types.h> + +typedef enum ContextType { + CONTEXT_LSB6 = 0, + CONTEXT_MSB6 = 1, + CONTEXT_UTF8 = 2, + CONTEXT_SIGNED = 3 +} ContextType; + +/* Common context lookup table for all context modes. */ +static const uint8_t kContextLookup[2048] = { + /* CONTEXT_LSB6, last byte. */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + + /* CONTEXT_LSB6, second last byte, */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + /* CONTEXT_MSB6, last byte. */ + 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, + 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, + 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, + 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, + 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, + 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, + 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, + 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, + 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, + 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, + 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, + 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, + 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, + 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, + 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, + 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, + + /* CONTEXT_MSB6, second last byte, */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + /* CONTEXT_UTF8, last byte. */ + /* ASCII range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, + 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, + 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, + 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, + 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, + /* UTF8 continuation byte range. */ + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + /* UTF8 lead byte range. */ + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + + /* CONTEXT_UTF8 second last byte. */ + /* ASCII range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, + /* UTF8 continuation byte range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* UTF8 lead byte range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */ + 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, + + /* CONTEXT_SIGNED, second last byte. */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, +}; + +typedef const uint8_t* ContextLut; + +/* typeof(MODE) == ContextType; returns ContextLut */ +#define BROTLI_CONTEXT_LUT(MODE) (&kContextLookup[(MODE) << 9]) + +/* typeof(LUT) == ContextLut */ +#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2]) + +#endif /* BROTLI_COMMON_CONTEXT_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h index 3fa33916d93..b1c6f7f580e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h @@ -41,7 +41,7 @@ typedef struct BrotliDictionary { const uint8_t* data; } BrotliDictionary; -BROTLI_COMMON_API extern const BrotliDictionary* BrotliGetDictionary(void); +BROTLI_COMMON_API const BrotliDictionary* BrotliGetDictionary(void); /** * Sets dictionary data. diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h new file mode 100644 index 00000000000..d6fd3ee90e9 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h @@ -0,0 +1,436 @@ +/* Copyright 2016 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +/* Macros for compiler / platform specific features and build options. */ + +#ifndef BROTLI_COMMON_PLATFORM_H_ +#define BROTLI_COMMON_PLATFORM_H_ + +#include <string.h> /* memcpy */ +#include <stdlib.h> /* malloc, free */ + +#include <brotli/port.h> +#include <brotli/types.h> + +#if defined OS_LINUX || defined OS_CYGWIN +#include <endian.h> +#elif defined OS_FREEBSD +#include <machine/endian.h> +#elif defined OS_MACOSX +#include <machine/endian.h> +/* Let's try and follow the Linux convention */ +#define BROTLI_X_BYTE_ORDER BYTE_ORDER +#define BROTLI_X_LITTLE_ENDIAN LITTLE_ENDIAN +#define BROTLI_X_BIG_ENDIAN BIG_ENDIAN +#endif + +#if defined(BROTLI_ENABLE_LOG) || defined(BROTLI_DEBUG) +#include <assert.h> +#include <stdio.h> +#endif + +/* Macros for compiler / platform specific features and build options. + + Build options are: + * BROTLI_BUILD_32_BIT disables 64-bit optimizations + * BROTLI_BUILD_64_BIT forces to use 64-bit optimizations + * BROTLI_BUILD_BIG_ENDIAN forces to use big-endian optimizations + * BROTLI_BUILD_ENDIAN_NEUTRAL disables endian-aware optimizations + * BROTLI_BUILD_LITTLE_ENDIAN forces to use little-endian optimizations + * BROTLI_BUILD_PORTABLE disables dangerous optimizations, like unaligned + read and overlapping memcpy; this reduces decompression speed by 5% + * BROTLI_BUILD_NO_RBIT disables "rbit" optimization for ARM CPUs + * BROTLI_DEBUG dumps file name and line number when decoder detects stream + or memory error + * BROTLI_ENABLE_LOG enables asserts and dumps various state information +*/ + +#if BROTLI_MODERN_COMPILER || __has_attribute(always_inline) +#define BROTLI_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline)) +#else +#define BROTLI_ATTRIBUTE_ALWAYS_INLINE +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) +#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN +#elif BROTLI_MODERN_COMPILER || __has_attribute(visibility) +#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN \ + __attribute__ ((visibility ("hidden"))) +#else +#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN +#endif + +#ifndef BROTLI_INTERNAL +#define BROTLI_INTERNAL BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN +#endif + +#ifndef _MSC_VER +#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) +#define BROTLI_INLINE inline BROTLI_ATTRIBUTE_ALWAYS_INLINE +#else +#define BROTLI_INLINE +#endif +#else /* _MSC_VER */ +#define BROTLI_INLINE __forceinline +#endif /* _MSC_VER */ + +#if BROTLI_MODERN_COMPILER || __has_attribute(unused) +#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE __attribute__ ((unused)) +#else +#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE +#endif + +#if !defined(__cplusplus) && !defined(c_plusplus) && \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) +#define BROTLI_RESTRICT restrict +#elif BROTLI_GCC_VERSION > 295 || defined(__llvm__) +#define BROTLI_RESTRICT __restrict +#else +#define BROTLI_RESTRICT +#endif + +#if BROTLI_MODERN_COMPILER || __has_attribute(noinline) +#define BROTLI_NOINLINE __attribute__((noinline)) +#else +#define BROTLI_NOINLINE +#endif + +#if defined(__arm__) || defined(__thumb__) || \ + defined(_M_ARM) || defined(_M_ARMT) || defined(__ARM64_ARCH_8__) +#define BROTLI_TARGET_ARM +#if (defined(__ARM_ARCH) && (__ARM_ARCH == 7)) || \ + (defined(M_ARM) && (M_ARM == 7)) +#define BROTLI_TARGET_ARMV7 +#endif /* ARMv7 */ +#if defined(__aarch64__) || defined(__ARM64_ARCH_8__) +#define BROTLI_TARGET_ARMV8 +#endif /* ARMv8 */ +#endif /* ARM */ + +#if defined(__i386) || defined(_M_IX86) +#define BROTLI_TARGET_X86 +#endif + +#if defined(__x86_64__) || defined(_M_X64) +#define BROTLI_TARGET_X64 +#endif + +#if defined(__PPC64__) +#define BROTLI_TARGET_POWERPC64 +#endif + +#if defined(BROTLI_BUILD_64_BIT) +#define BROTLI_64_BITS 1 +#elif defined(BROTLI_BUILD_32_BIT) +#define BROTLI_64_BITS 0 +#elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8) || \ + defined(BROTLI_TARGET_POWERPC64) +#define BROTLI_64_BITS 1 +#else +#define BROTLI_64_BITS 0 +#endif + +#if (BROTLI_64_BITS) +#define brotli_reg_t uint64_t +#else +#define brotli_reg_t uint32_t +#endif + +#if defined(BROTLI_BUILD_BIG_ENDIAN) +#define BROTLI_BIG_ENDIAN 1 +#elif defined(BROTLI_BUILD_LITTLE_ENDIAN) +#define BROTLI_LITTLE_ENDIAN 1 +#elif defined(BROTLI_BUILD_ENDIAN_NEUTRAL) +/* Just break elif chain. */ +#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define BROTLI_LITTLE_ENDIAN 1 +#elif defined(_WIN32) || defined(BROTLI_TARGET_X64) +/* Win32 & x64 can currently always be assumed to be little endian */ +#define BROTLI_LITTLE_ENDIAN 1 +#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define BROTLI_BIG_ENDIAN 1 +#elif defined(BROTLI_X_BYTE_ORDER) +#if BROTLI_X_BYTE_ORDER == BROTLI_X_LITTLE_ENDIAN +#define BROTLI_LITTLE_ENDIAN 1 +#elif BROTLI_X_BYTE_ORDER == BROTLI_X_BIG_ENDIAN +#define BROTLI_BIG_ENDIAN 1 +#endif +#endif /* BROTLI_X_BYTE_ORDER */ + +#if !defined(BROTLI_LITTLE_ENDIAN) +#define BROTLI_LITTLE_ENDIAN 0 +#endif + +#if !defined(BROTLI_BIG_ENDIAN) +#define BROTLI_BIG_ENDIAN 0 +#endif + +#ifdef BROTLI_X_BYTE_ORDER +#undef BROTLI_X_BYTE_ORDER +#undef BROTLI_X_LITTLE_ENDIAN +#undef BROTLI_X_BIG_ENDIAN +#endif + +#ifdef BROTLI_BUILD_PORTABLE +#define BROTLI_ALIGNED_READ (!!1) +#elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \ + defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8) +/* Allow unaligned read only for white-listed CPUs. */ +#define BROTLI_ALIGNED_READ (!!0) +#else +#define BROTLI_ALIGNED_READ (!!1) +#endif + +#if BROTLI_ALIGNED_READ +/* Portable unaligned memory access: read / write values via memcpy. */ +static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { + uint16_t t; + memcpy(&t, p, sizeof t); + return t; +} +static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) { + uint32_t t; + memcpy(&t, p, sizeof t); + return t; +} +static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { + uint64_t t; + memcpy(&t, p, sizeof t); + return t; +} +static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { + memcpy(p, &v, sizeof v); +} +#else /* BROTLI_ALIGNED_READ */ +/* Unaligned memory access is allowed: just cast pointer to requested type. */ +static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { + return *(const uint16_t*)p; +} +static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) { + return *(const uint32_t*)p; +} +static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { + return *(const uint64_t*)p; +} +static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { + *(uint64_t*)p = v; +} +#endif /* BROTLI_ALIGNED_READ */ + +#if BROTLI_LITTLE_ENDIAN +/* Straight endianness. Just read / write values. */ +#define BROTLI_UNALIGNED_LOAD16LE BrotliUnalignedRead16 +#define BROTLI_UNALIGNED_LOAD32LE BrotliUnalignedRead32 +#define BROTLI_UNALIGNED_LOAD64LE BrotliUnalignedRead64 +#define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64 +#elif BROTLI_BIG_ENDIAN /* BROTLI_LITTLE_ENDIAN */ +/* Explain compiler to byte-swap values. */ +#define BROTLI_BSWAP16_(V) ((uint16_t)( \ + (((V) & 0xFFU) << 8) | \ + (((V) >> 8) & 0xFFU))) +static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) { + uint16_t value = BrotliUnalignedRead16(p); + return BROTLI_BSWAP16_(value); +} +#define BROTLI_BSWAP32_(V) ( \ + (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \ + (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU)) +static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) { + uint32_t value = BrotliUnalignedRead32(p); + return BROTLI_BSWAP32_(value); +} +#define BROTLI_BSWAP64_(V) ( \ + (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \ + (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \ + (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \ + (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU)) +static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) { + uint64_t value = BrotliUnalignedRead64(p); + return BROTLI_BSWAP64_(value); +} +static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) { + uint64_t value = BROTLI_BSWAP64_(v); + BrotliUnalignedWrite64(p, value); +} +#else /* BROTLI_LITTLE_ENDIAN */ +/* Read / store values byte-wise; hopefully compiler will understand. */ +static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) { + const uint8_t* in = (const uint8_t*)p; + return (uint16_t)(in[0] | (in[1] << 8)); +} +static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) { + const uint8_t* in = (const uint8_t*)p; + uint32_t value = (uint32_t)(in[0]); + value |= (uint32_t)(in[1]) << 8; + value |= (uint32_t)(in[2]) << 16; + value |= (uint32_t)(in[3]) << 24; + return value; +} +static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) { + const uint8_t* in = (const uint8_t*)p; + uint64_t value = (uint64_t)(in[0]); + value |= (uint64_t)(in[1]) << 8; + value |= (uint64_t)(in[2]) << 16; + value |= (uint64_t)(in[3]) << 24; + value |= (uint64_t)(in[4]) << 32; + value |= (uint64_t)(in[5]) << 40; + value |= (uint64_t)(in[6]) << 48; + value |= (uint64_t)(in[7]) << 56; + return value; +} +static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) { + uint8_t* out = (uint8_t*)p; + out[0] = (uint8_t)v; + out[1] = (uint8_t)(v >> 8); + out[2] = (uint8_t)(v >> 16); + out[3] = (uint8_t)(v >> 24); + out[4] = (uint8_t)(v >> 32); + out[5] = (uint8_t)(v >> 40); + out[6] = (uint8_t)(v >> 48); + out[7] = (uint8_t)(v >> 56); +} +#endif /* BROTLI_LITTLE_ENDIAN */ + +/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable + compilers. + +To apply compiler hint, enclose the branching condition into macros, like this: + + if (BROTLI_PREDICT_TRUE(zero == 0)) { + // main execution path + } else { + // compiler should place this code outside of main execution path + } + +OR: + + if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) { + // compiler should place this code outside of main execution path + } + +*/ +#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_expect) +#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0)) +#else +#define BROTLI_PREDICT_FALSE(x) (x) +#define BROTLI_PREDICT_TRUE(x) (x) +#endif + +/* BROTLI_IS_CONSTANT macros returns true for compile-time constants. */ +#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_constant_p) +#define BROTLI_IS_CONSTANT(x) (!!__builtin_constant_p(x)) +#else +#define BROTLI_IS_CONSTANT(x) (!!0) +#endif + +#if defined(BROTLI_TARGET_ARM) +#define BROTLI_HAS_UBFX (!!1) +#else +#define BROTLI_HAS_UBFX (!!0) +#endif + +#ifdef BROTLI_ENABLE_LOG +#define BROTLI_DCHECK(x) assert(x) +#define BROTLI_LOG(x) printf x +#else +#define BROTLI_DCHECK(x) +#define BROTLI_LOG(x) +#endif + +#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG) +static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) { + fprintf(stderr, "%s:%d (%s)\n", f, l, fn); + fflush(stderr); +} +#define BROTLI_DUMP() BrotliDump(__FILE__, __LINE__, __FUNCTION__) +#else +#define BROTLI_DUMP() (void)(0) +#endif + +#if (BROTLI_MODERN_COMPILER || defined(__llvm__)) && \ + !defined(BROTLI_BUILD_NO_RBIT) +#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8) +/* TODO: detect ARMv6T2 and enable this code for it. */ +static BROTLI_INLINE brotli_reg_t BrotliRBit(brotli_reg_t input) { + brotli_reg_t output; + __asm__("rbit %0, %1\n" : "=r"(output) : "r"(input)); + return output; +} +#define BROTLI_RBIT(x) BrotliRBit(x) +#endif /* armv7 */ +#endif /* gcc || clang */ +#if !defined(BROTLI_RBIT) +static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if used. */ } +#endif /* BROTLI_RBIT */ + +#define BROTLI_REPEAT(N, X) { \ + if ((N & 1) != 0) {X;} \ + if ((N & 2) != 0) {X; X;} \ + if ((N & 4) != 0) {X; X; X; X;} \ +} + +#define BROTLI_UNUSED(X) (void)(X) + +#define BROTLI_MIN_MAX(T) \ + static BROTLI_INLINE T brotli_min_ ## T (T a, T b) { return a < b ? a : b; } \ + static BROTLI_INLINE T brotli_max_ ## T (T a, T b) { return a > b ? a : b; } +BROTLI_MIN_MAX(double) BROTLI_MIN_MAX(float) BROTLI_MIN_MAX(int) +BROTLI_MIN_MAX(size_t) BROTLI_MIN_MAX(uint32_t) BROTLI_MIN_MAX(uint8_t) +#undef BROTLI_MIN_MAX +#define BROTLI_MIN(T, A, B) (brotli_min_ ## T((A), (B))) +#define BROTLI_MAX(T, A, B) (brotli_max_ ## T((A), (B))) + +#define BROTLI_SWAP(T, A, I, J) { \ + T __brotli_swap_tmp = (A)[(I)]; \ + (A)[(I)] = (A)[(J)]; \ + (A)[(J)] = __brotli_swap_tmp; \ +} + +/* Default brotli_alloc_func */ +static void* BrotliDefaultAllocFunc(void* opaque, size_t size) { + BROTLI_UNUSED(opaque); + return malloc(size); +} + +/* Default brotli_free_func */ +static void BrotliDefaultFreeFunc(void* opaque, void* address) { + BROTLI_UNUSED(opaque); + free(address); +} + +BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) { + BROTLI_UNUSED(BrotliSuppressUnusedFunctions); + BROTLI_UNUSED(BrotliUnalignedRead16); + BROTLI_UNUSED(BrotliUnalignedRead32); + BROTLI_UNUSED(BrotliUnalignedRead64); + BROTLI_UNUSED(BrotliUnalignedWrite64); + BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD16LE); + BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD32LE); + BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD64LE); + BROTLI_UNUSED(BROTLI_UNALIGNED_STORE64LE); + BROTLI_UNUSED(BrotliRBit); + BROTLI_UNUSED(brotli_min_double); + BROTLI_UNUSED(brotli_max_double); + BROTLI_UNUSED(brotli_min_float); + BROTLI_UNUSED(brotli_max_float); + BROTLI_UNUSED(brotli_min_int); + BROTLI_UNUSED(brotli_max_int); + BROTLI_UNUSED(brotli_min_size_t); + BROTLI_UNUSED(brotli_max_size_t); + BROTLI_UNUSED(brotli_min_uint32_t); + BROTLI_UNUSED(brotli_max_uint32_t); + BROTLI_UNUSED(brotli_min_uint8_t); + BROTLI_UNUSED(brotli_max_uint8_t); + BROTLI_UNUSED(BrotliDefaultAllocFunc); + BROTLI_UNUSED(BrotliDefaultFreeFunc); +#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG) + BROTLI_UNUSED(BrotliDump); +#endif +} + +#endif /* BROTLI_COMMON_PLATFORM_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h new file mode 100644 index 00000000000..456c12db9b2 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h @@ -0,0 +1,80 @@ +/* transforms is a part of ABI, but not API. + + It means that there are some functions that are supposed to be in "common" + library, but header itself is not placed into include/brotli. This way, + aforementioned functions will be available only to brotli internals. + */ + +#ifndef BROTLI_COMMON_TRANSFORM_H_ +#define BROTLI_COMMON_TRANSFORM_H_ + +#include <brotli/port.h> +#include <brotli/types.h> + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +enum BrotliWordTransformType { + BROTLI_TRANSFORM_IDENTITY = 0, + BROTLI_TRANSFORM_OMIT_LAST_1 = 1, + BROTLI_TRANSFORM_OMIT_LAST_2 = 2, + BROTLI_TRANSFORM_OMIT_LAST_3 = 3, + BROTLI_TRANSFORM_OMIT_LAST_4 = 4, + BROTLI_TRANSFORM_OMIT_LAST_5 = 5, + BROTLI_TRANSFORM_OMIT_LAST_6 = 6, + BROTLI_TRANSFORM_OMIT_LAST_7 = 7, + BROTLI_TRANSFORM_OMIT_LAST_8 = 8, + BROTLI_TRANSFORM_OMIT_LAST_9 = 9, + BROTLI_TRANSFORM_UPPERCASE_FIRST = 10, + BROTLI_TRANSFORM_UPPERCASE_ALL = 11, + BROTLI_TRANSFORM_OMIT_FIRST_1 = 12, + BROTLI_TRANSFORM_OMIT_FIRST_2 = 13, + BROTLI_TRANSFORM_OMIT_FIRST_3 = 14, + BROTLI_TRANSFORM_OMIT_FIRST_4 = 15, + BROTLI_TRANSFORM_OMIT_FIRST_5 = 16, + BROTLI_TRANSFORM_OMIT_FIRST_6 = 17, + BROTLI_TRANSFORM_OMIT_FIRST_7 = 18, + BROTLI_TRANSFORM_OMIT_FIRST_8 = 19, + BROTLI_TRANSFORM_OMIT_FIRST_9 = 20, + BROTLI_NUM_TRANSFORM_TYPES /* Counts transforms, not a transform itself. */ +}; + +#define BROTLI_TRANSFORMS_MAX_CUT_OFF BROTLI_TRANSFORM_OMIT_LAST_9 + +typedef struct BrotliTransforms { + uint16_t prefix_suffix_size; + /* Last character must be null, so prefix_suffix_size must be at least 1. */ + const uint8_t* prefix_suffix; + const uint16_t* prefix_suffix_map; + uint32_t num_transforms; + /* Each entry is a [prefix_id, transform, suffix_id] triplet. */ + const uint8_t* transforms; + /* Indices of transforms like ["", BROTLI_TRANSFORM_OMIT_LAST_#, ""]. + 0-th element corresponds to ["", BROTLI_TRANSFORM_IDENTITY, ""]. + -1, if cut-off transform does not exist. */ + int16_t cutOffTransforms[BROTLI_TRANSFORMS_MAX_CUT_OFF + 1]; +} BrotliTransforms; + +/* T is BrotliTransforms*; result is uint8_t. */ +#define BROTLI_TRANSFORM_PREFIX_ID(T, I) ((T)->transforms[((I) * 3) + 0]) +#define BROTLI_TRANSFORM_TYPE(T, I) ((T)->transforms[((I) * 3) + 1]) +#define BROTLI_TRANSFORM_SUFFIX_ID(T, I) ((T)->transforms[((I) * 3) + 2]) + +/* T is BrotliTransforms*; result is const uint8_t*. */ +#define BROTLI_TRANSFORM_PREFIX(T, I) (&(T)->prefix_suffix[ \ + (T)->prefix_suffix_map[BROTLI_TRANSFORM_PREFIX_ID(T, I)]]) +#define BROTLI_TRANSFORM_SUFFIX(T, I) (&(T)->prefix_suffix[ \ + (T)->prefix_suffix_map[BROTLI_TRANSFORM_SUFFIX_ID(T, I)]]) + +BROTLI_COMMON_API const BrotliTransforms* BrotliGetTransforms(void); + +BROTLI_COMMON_API int BrotliTransformDictionaryWord( + uint8_t* dst, const uint8_t* word, int len, + const BrotliTransforms* transforms, int transform_idx); + +#if defined(__cplusplus) || defined(c_plusplus) +} /* extern "C" */ +#endif + +#endif /* BROTLI_COMMON_TRANSFORM_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h index 38946e6147b..435371c2d8d 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h @@ -14,13 +14,13 @@ BrotliEncoderVersion methods. */ /* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */ -#define BROTLI_VERSION 0x1000002 +#define BROTLI_VERSION 0x1000003 /* This macro is used by build system to produce Libtool-friendly soname. See https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html */ /* ABI version, calculated as (CURRENT << 24) | (REVISION << 12) | AGE */ -#define BROTLI_ABI_VERSION 0x1002000 +#define BROTLI_ABI_VERSION 0x1003000 #endif /* BROTLI_COMMON_VERSION_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c index 3ac7f2f36a5..62ecea75dfb 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c @@ -10,11 +10,11 @@ #include "../common/constants.h" #include "../common/dictionary.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" #include "./dictionary_hash.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -102,23 +102,16 @@ static BROTLI_INLINE size_t ComputeDistanceCode(size_t distance, #undef CAT #undef EXPAND_CAT -void BrotliCreateBackwardReferences(const BrotliDictionary* dictionary, - size_t num_bytes, - size_t position, - const uint8_t* ringbuffer, - size_t ringbuffer_mask, - const BrotliEncoderParams* params, - HasherHandle hasher, - int* dist_cache, - size_t* last_insert_len, - Command* commands, - size_t* num_commands, - size_t* num_literals) { +void BrotliCreateBackwardReferences( + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals) { switch (params->hasher.type) { #define CASE_(N) \ case N: \ - CreateBackwardReferencesNH ## N(dictionary, \ - kStaticDictionaryHash, num_bytes, position, ringbuffer, \ + CreateBackwardReferencesNH ## N( \ + num_bytes, position, ringbuffer, \ ringbuffer_mask, params, hasher, dist_cache, \ last_insert_len, commands, num_commands, num_literals); \ return; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h index 7ad98813254..3a4146647c4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h @@ -11,10 +11,10 @@ #include "../common/constants.h" #include "../common/dictionary.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" #include "./hash.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -26,11 +26,10 @@ extern "C" { CreateBackwardReferences calls, and must be incremented by the amount written by this call. */ BROTLI_INTERNAL void BrotliCreateBackwardReferences( - const BrotliDictionary* dictionary, size_t num_bytes, size_t position, - const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, - size_t* last_insert_len, Command* commands, size_t* num_commands, - size_t* num_literals); + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals); #if defined(__cplusplus) || defined(c_plusplus) } /* extern "C" */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c index 92ce8fbad70..62c6ba24a7b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c @@ -11,13 +11,14 @@ #include <string.h> /* memcpy, memset */ #include "../common/constants.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" #include "./fast_log.h" #include "./find_match_length.h" #include "./literal_cost.h" #include "./memory.h" -#include "./port.h" +#include "./params.h" #include "./prefix.h" #include "./quality.h" @@ -25,6 +26,8 @@ extern "C" { #endif +#define BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE 544 + static const float kInfinity = 1.7e38f; /* ~= 2 ^ 127 */ static const uint32_t kDistanceCacheIndex[] = { @@ -39,40 +42,41 @@ void BrotliInitZopfliNodes(ZopfliNode* array, size_t length) { size_t i; stub.length = 1; stub.distance = 0; - stub.insert_length = 0; + stub.dcode_insert_length = 0; stub.u.cost = kInfinity; for (i = 0; i < length; ++i) array[i] = stub; } static BROTLI_INLINE uint32_t ZopfliNodeCopyLength(const ZopfliNode* self) { - return self->length & 0xffffff; + return self->length & 0x1FFFFFF; } static BROTLI_INLINE uint32_t ZopfliNodeLengthCode(const ZopfliNode* self) { - const uint32_t modifier = self->length >> 24; + const uint32_t modifier = self->length >> 25; return ZopfliNodeCopyLength(self) + 9u - modifier; } static BROTLI_INLINE uint32_t ZopfliNodeCopyDistance(const ZopfliNode* self) { - return self->distance & 0x7ffffff; + return self->distance; } static BROTLI_INLINE uint32_t ZopfliNodeDistanceCode(const ZopfliNode* self) { - const uint32_t short_code = self->distance >> 27; + const uint32_t short_code = self->dcode_insert_length >> 27; return short_code == 0 ? ZopfliNodeCopyDistance(self) + BROTLI_NUM_DISTANCE_SHORT_CODES - 1 : short_code - 1; } static BROTLI_INLINE uint32_t ZopfliNodeCommandLength(const ZopfliNode* self) { - return ZopfliNodeCopyLength(self) + self->insert_length; + return ZopfliNodeCopyLength(self) + (self->dcode_insert_length & 0x7FFFFFF); } /* Histogram based cost model for zopflification. */ typedef struct ZopfliCostModel { /* The insert and copy length symbols. */ float cost_cmd_[BROTLI_NUM_COMMAND_SYMBOLS]; - float cost_dist_[BROTLI_NUM_DISTANCE_SYMBOLS]; + float* cost_dist_; + uint32_t distance_alphabet_size; /* Cumulative costs of literals per position in the stream. */ float* literal_costs_; float min_cost_cmd_; @@ -80,28 +84,41 @@ typedef struct ZopfliCostModel { } ZopfliCostModel; static void InitZopfliCostModel( - MemoryManager* m, ZopfliCostModel* self, size_t num_bytes) { + MemoryManager* m, ZopfliCostModel* self, const BrotliDistanceParams* dist, + size_t num_bytes) { self->num_bytes_ = num_bytes; self->literal_costs_ = BROTLI_ALLOC(m, float, num_bytes + 2); + self->cost_dist_ = BROTLI_ALLOC(m, float, dist->alphabet_size); + self->distance_alphabet_size = dist->alphabet_size; if (BROTLI_IS_OOM(m)) return; } static void CleanupZopfliCostModel(MemoryManager* m, ZopfliCostModel* self) { BROTLI_FREE(m, self->literal_costs_); + BROTLI_FREE(m, self->cost_dist_); } static void SetCost(const uint32_t* histogram, size_t histogram_size, - float* cost) { + BROTLI_BOOL literal_histogram, float* cost) { size_t sum = 0; + size_t missing_symbol_sum; float log2sum; + float missing_symbol_cost; size_t i; for (i = 0; i < histogram_size; i++) { sum += histogram[i]; } log2sum = (float)FastLog2(sum); + missing_symbol_sum = sum; + if (!literal_histogram) { + for (i = 0; i < histogram_size; i++) { + if (histogram[i] == 0) missing_symbol_sum++; + } + } + missing_symbol_cost = (float)FastLog2(missing_symbol_sum) + 2; for (i = 0; i < histogram_size; i++) { if (histogram[i] == 0) { - cost[i] = log2sum + 2; + cost[i] = missing_symbol_cost; continue; } @@ -122,7 +139,7 @@ static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self, size_t last_insert_len) { uint32_t histogram_literal[BROTLI_NUM_LITERAL_SYMBOLS]; uint32_t histogram_cmd[BROTLI_NUM_COMMAND_SYMBOLS]; - uint32_t histogram_dist[BROTLI_NUM_DISTANCE_SYMBOLS]; + uint32_t histogram_dist[BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE]; float cost_literal[BROTLI_NUM_LITERAL_SYMBOLS]; size_t pos = position - last_insert_len; float min_cost_cmd = kInfinity; @@ -136,7 +153,7 @@ static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self, for (i = 0; i < num_commands; i++) { size_t inslength = commands[i].insert_len_; size_t copylength = CommandCopyLen(&commands[i]); - size_t distcode = commands[i].dist_prefix_; + size_t distcode = commands[i].dist_prefix_ & 0x3FF; size_t cmdcode = commands[i].cmd_prefix_; size_t j; @@ -150,9 +167,12 @@ static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self, pos += inslength + copylength; } - SetCost(histogram_literal, BROTLI_NUM_LITERAL_SYMBOLS, cost_literal); - SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, cost_cmd); - SetCost(histogram_dist, BROTLI_NUM_DISTANCE_SYMBOLS, self->cost_dist_); + SetCost(histogram_literal, BROTLI_NUM_LITERAL_SYMBOLS, BROTLI_TRUE, + cost_literal); + SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_FALSE, + cost_cmd); + SetCost(histogram_dist, self->distance_alphabet_size, BROTLI_FALSE, + self->cost_dist_); for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) { min_cost_cmd = BROTLI_MIN(float, min_cost_cmd, cost_cmd[i]); @@ -161,11 +181,14 @@ static void ZopfliCostModelSetFromCommands(ZopfliCostModel* self, { float* literal_costs = self->literal_costs_; + float literal_carry = 0.0; size_t num_bytes = self->num_bytes_; literal_costs[0] = 0.0; for (i = 0; i < num_bytes; ++i) { - literal_costs[i + 1] = literal_costs[i] + + literal_carry += cost_literal[ringbuffer[(position + i) & ringbuffer_mask]]; + literal_costs[i + 1] = literal_costs[i] + literal_carry; + literal_carry -= literal_costs[i + 1] - literal_costs[i]; } } } @@ -175,6 +198,7 @@ static void ZopfliCostModelSetFromLiteralCosts(ZopfliCostModel* self, const uint8_t* ringbuffer, size_t ringbuffer_mask) { float* literal_costs = self->literal_costs_; + float literal_carry = 0.0; float* cost_dist = self->cost_dist_; float* cost_cmd = self->cost_cmd_; size_t num_bytes = self->num_bytes_; @@ -183,12 +207,14 @@ static void ZopfliCostModelSetFromLiteralCosts(ZopfliCostModel* self, ringbuffer, &literal_costs[1]); literal_costs[0] = 0.0; for (i = 0; i < num_bytes; ++i) { - literal_costs[i + 1] += literal_costs[i]; + literal_carry += literal_costs[i + 1]; + literal_costs[i + 1] = literal_costs[i] + literal_carry; + literal_carry -= literal_costs[i + 1] - literal_costs[i]; } for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) { cost_cmd[i] = (float)FastLog2(11 + (uint32_t)i); } - for (i = 0; i < BROTLI_NUM_DISTANCE_SYMBOLS; ++i) { + for (i = 0; i < self->distance_alphabet_size; ++i) { cost_dist[i] = (float)FastLog2(20 + (uint32_t)i); } self->min_cost_cmd_ = (float)FastLog2(11); @@ -221,9 +247,10 @@ static BROTLI_INLINE void UpdateZopfliNode(ZopfliNode* nodes, size_t pos, size_t start_pos, size_t len, size_t len_code, size_t dist, size_t short_code, float cost) { ZopfliNode* next = &nodes[pos + len]; - next->length = (uint32_t)(len | ((len + 9u - len_code) << 24)); - next->distance = (uint32_t)(dist | (short_code << 27)); - next->insert_length = (uint32_t)(pos - start_pos); + next->length = (uint32_t)(len | ((len + 9u - len_code) << 25)); + next->distance = (uint32_t)dist; + next->dcode_insert_length = (uint32_t)( + (short_code << 27) | (pos - start_pos)); next->u.cost = cost; } @@ -303,7 +330,7 @@ static uint32_t ComputeDistanceShortcut(const size_t block_start, const size_t gap, const ZopfliNode* nodes) { const size_t clen = ZopfliNodeCopyLength(&nodes[pos]); - const size_t ilen = nodes[pos].insert_length; + const size_t ilen = nodes[pos].dcode_insert_length & 0x7FFFFFF; const size_t dist = ZopfliNodeCopyDistance(&nodes[pos]); /* Since |block_start + pos| is the end position of the command, the copy part starts from |block_start + pos - clen|. Distances that are greater than @@ -335,7 +362,7 @@ static void ComputeDistanceCache(const size_t pos, int idx = 0; size_t p = nodes[pos].u.shortcut; while (idx < 4 && p > 0) { - const size_t ilen = nodes[p].insert_length; + const size_t ilen = nodes[p].dcode_insert_length & 0x7FFFFFF; const size_t clen = ZopfliNodeCopyLength(&nodes[p]); const size_t dist = ZopfliNodeCopyDistance(&nodes[p]); dist_cache[idx++] = (int)dist; @@ -482,10 +509,12 @@ static size_t UpdateNodes( uint32_t distnumextra; float dist_cost; size_t max_match_len; - PrefixEncodeCopyDistance(dist_code, 0, 0, &dist_symbol, &distextra); - distnumextra = distextra >> 24; + PrefixEncodeCopyDistance( + dist_code, params->dist.num_direct_distance_codes, + params->dist.distance_postfix_bits, &dist_symbol, &distextra); + distnumextra = dist_symbol >> 10; dist_cost = base_cost + (float)distnumextra + - ZopfliCostModelGetDistanceCost(model, dist_symbol); + ZopfliCostModelGetDistanceCost(model, dist_symbol & 0x3FF); /* Try all copy lengths up until the maximum copy length corresponding to this distance. If the distance refers to the static dictionary, or @@ -517,7 +546,8 @@ static size_t ComputeShortestPathFromNodes(size_t num_bytes, ZopfliNode* nodes) { size_t index = num_bytes; size_t num_commands = 0; - while (nodes[index].insert_length == 0 && nodes[index].length == 1) --index; + while ((nodes[index].dcode_insert_length & 0x7FFFFFF) == 0 && + nodes[index].length == 1) --index; nodes[index].u.next = BROTLI_UINT32_MAX; while (index != 0) { size_t len = ZopfliNodeCommandLength(&nodes[index]); @@ -542,11 +572,10 @@ void BrotliZopfliCreateCommands(const size_t num_bytes, uint32_t offset = nodes[0].u.next; size_t i; size_t gap = 0; - BROTLI_UNUSED(params); for (i = 0; offset != BROTLI_UINT32_MAX; i++) { const ZopfliNode* next = &nodes[pos + offset]; size_t copy_length = ZopfliNodeCopyLength(next); - size_t insert_length = next->insert_length; + size_t insert_length = next->dcode_insert_length & 0x7FFFFFF; pos += insert_length; offset = next->u.next; if (i == 0) { @@ -560,7 +589,7 @@ void BrotliZopfliCreateCommands(const size_t num_bytes, BROTLI_MIN(size_t, block_start + pos, max_backward_limit); BROTLI_BOOL is_dictionary = TO_BROTLI_BOOL(distance > max_distance + gap); size_t dist_code = ZopfliNodeDistanceCode(next); - InitCommand(&commands[i], insert_length, + InitCommand(&commands[i], ¶ms->dist, insert_length, copy_length, (int)len_code - (int)copy_length, dist_code); if (!is_dictionary && dist_code > 0) { @@ -624,16 +653,10 @@ static size_t ZopfliIterate(size_t num_bytes, /* REQUIRES: nodes != NULL and len(nodes) >= num_bytes + 1 */ size_t BrotliZopfliComputeShortestPath(MemoryManager* m, - const BrotliDictionary* dictionary, - size_t num_bytes, - size_t position, - const uint8_t* ringbuffer, - size_t ringbuffer_mask, - const BrotliEncoderParams* params, - const size_t max_backward_limit, - const int* dist_cache, - HasherHandle hasher, - ZopfliNode* nodes) { + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher, + ZopfliNode* nodes) { const size_t max_zopfli_len = MaxZopfliLen(params); ZopfliCostModel model; StartPosQueue queue; @@ -645,7 +668,7 @@ size_t BrotliZopfliComputeShortestPath(MemoryManager* m, size_t lz_matches_offset = 0; nodes[0].length = 0; nodes[0].u.cost = 0; - InitZopfliCostModel(m, &model, num_bytes); + InitZopfliCostModel(m, &model, ¶ms->dist, num_bytes); if (BROTLI_IS_OOM(m)) return 0; ZopfliCostModelSetFromLiteralCosts( &model, position, ringbuffer, ringbuffer_mask); @@ -653,10 +676,10 @@ size_t BrotliZopfliComputeShortestPath(MemoryManager* m, for (i = 0; i + HashTypeLengthH10() - 1 < num_bytes; i++) { const size_t pos = position + i; const size_t max_distance = BROTLI_MIN(size_t, pos, max_backward_limit); - size_t num_matches = FindAllMatchesH10(hasher, dictionary, ringbuffer, - ringbuffer_mask, pos, num_bytes - i, max_distance, gap, params, - &matches[lz_matches_offset]); size_t skip; + size_t num_matches = FindAllMatchesH10(hasher, ¶ms->dictionary, + ringbuffer, ringbuffer_mask, pos, num_bytes - i, max_distance, gap, + params, &matches[lz_matches_offset]); if (num_matches > 0 && BackwardMatchLength(&matches[num_matches - 1]) > max_zopfli_len) { matches[0] = matches[num_matches - 1]; @@ -687,32 +710,30 @@ size_t BrotliZopfliComputeShortestPath(MemoryManager* m, return ComputeShortestPathFromNodes(num_bytes, nodes); } -void BrotliCreateZopfliBackwardReferences( - MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes, - size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, - size_t* last_insert_len, Command* commands, size_t* num_commands, - size_t* num_literals) { +void BrotliCreateZopfliBackwardReferences(MemoryManager* m, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals) { const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin); ZopfliNode* nodes; nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1); if (BROTLI_IS_OOM(m)) return; BrotliInitZopfliNodes(nodes, num_bytes + 1); - *num_commands += BrotliZopfliComputeShortestPath(m, dictionary, num_bytes, - position, ringbuffer, ringbuffer_mask, params, max_backward_limit, - dist_cache, hasher, nodes); + *num_commands += BrotliZopfliComputeShortestPath(m, + num_bytes, position, ringbuffer, ringbuffer_mask, + params, max_backward_limit, dist_cache, hasher, nodes); if (BROTLI_IS_OOM(m)) return; BrotliZopfliCreateCommands(num_bytes, position, max_backward_limit, nodes, dist_cache, last_insert_len, params, commands, num_literals); BROTLI_FREE(m, nodes); } -void BrotliCreateHqZopfliBackwardReferences( - MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes, - size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, - size_t* last_insert_len, Command* commands, size_t* num_commands, - size_t* num_literals) { +void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals) { const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin); uint32_t* num_matches = BROTLI_ALLOC(m, uint32_t, num_bytes); size_t matches_size = 4 * num_bytes; @@ -741,12 +762,12 @@ void BrotliCreateHqZopfliBackwardReferences( BROTLI_ENSURE_CAPACITY(m, BackwardMatch, matches, matches_size, cur_match_pos + MAX_NUM_MATCHES_H10 + shadow_matches); if (BROTLI_IS_OOM(m)) return; - num_found_matches = FindAllMatchesH10(hasher, dictionary, ringbuffer, - ringbuffer_mask, pos, max_length, max_distance, gap, params, - &matches[cur_match_pos + shadow_matches]); + num_found_matches = FindAllMatchesH10(hasher, + ¶ms->dictionary, ringbuffer, ringbuffer_mask, pos, max_length, + max_distance, gap, params, &matches[cur_match_pos + shadow_matches]); cur_match_end = cur_match_pos + num_found_matches; for (j = cur_match_pos; j + 1 < cur_match_end; ++j) { - assert(BackwardMatchLength(&matches[j]) <= + BROTLI_DCHECK(BackwardMatchLength(&matches[j]) <= BackwardMatchLength(&matches[j + 1])); } num_matches[i] = (uint32_t)num_found_matches; @@ -772,7 +793,7 @@ void BrotliCreateHqZopfliBackwardReferences( orig_num_commands = *num_commands; nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1); if (BROTLI_IS_OOM(m)) return; - InitZopfliCostModel(m, &model, num_bytes); + InitZopfliCostModel(m, &model, ¶ms->dist, num_bytes); if (BROTLI_IS_OOM(m)) return; for (i = 0; i < 2; i++) { BrotliInitZopfliNodes(nodes, num_bytes + 1); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h index 02bb2783db1..7c38bd61ad8 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h @@ -11,41 +11,38 @@ #include "../common/constants.h" #include "../common/dictionary.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" #include "./hash.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif -BROTLI_INTERNAL void BrotliCreateZopfliBackwardReferences( - MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes, - size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, - size_t* last_insert_len, Command* commands, size_t* num_commands, - size_t* num_literals); +BROTLI_INTERNAL void BrotliCreateZopfliBackwardReferences(MemoryManager* m, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals); -BROTLI_INTERNAL void BrotliCreateHqZopfliBackwardReferences( - MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes, - size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, - size_t* last_insert_len, Command* commands, size_t* num_commands, - size_t* num_literals); +BROTLI_INTERNAL void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + HasherHandle hasher, int* dist_cache, size_t* last_insert_len, + Command* commands, size_t* num_commands, size_t* num_literals); typedef struct ZopfliNode { - /* best length to get up to this byte (not including this byte itself) - highest 8 bit is used to reconstruct the length code */ + /* Best length to get up to this byte (not including this byte itself) + highest 7 bit is used to reconstruct the length code. */ uint32_t length; - /* distance associated with the length; highest 5 bits contain distance - short code + 1 (or zero if no short code); this way only distances shorter - than 128MiB are allowed here */ + /* Distance associated with the length. */ uint32_t distance; - /* number of literal inserts before this copy */ - uint32_t insert_length; + /* Number of literal inserts before this copy; highest 5 bits contain + distance short code + 1 (or zero if no short code). */ + uint32_t dcode_insert_length; /* This union holds information used by dynamic-programming. During forward pass |cost| it used to store the goal function. When node is processed its @@ -77,11 +74,11 @@ BROTLI_INTERNAL void BrotliInitZopfliNodes(ZopfliNode* array, size_t length); (1) nodes[i].copy_length() >= 2 (2) nodes[i].command_length() <= i and (3) nodes[i - nodes[i].command_length()].cost < kInfinity */ -BROTLI_INTERNAL size_t BrotliZopfliComputeShortestPath( - MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes, - size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, - const BrotliEncoderParams* params, const size_t max_backward_limit, - const int* dist_cache, HasherHandle hasher, ZopfliNode* nodes); +BROTLI_INTERNAL size_t BrotliZopfliComputeShortestPath(MemoryManager* m, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, + size_t ringbuffer_mask, const BrotliEncoderParams* params, + const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher, + ZopfliNode* nodes); BROTLI_INTERNAL void BrotliZopfliCreateCommands( const size_t num_bytes, const size_t block_start, diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h index 81c783c00b6..38a48d39900 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h @@ -8,8 +8,7 @@ /* template parameters: EXPORT_FN, FN */ static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)( - const BrotliDictionary* dictionary, - const uint16_t* dictionary_hash, size_t num_bytes, size_t position, + size_t num_bytes, size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask, const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache, size_t* last_insert_len, Command* commands, size_t* num_commands, @@ -42,9 +41,10 @@ static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)( sr.len_code_delta = 0; sr.distance = 0; sr.score = kMinScore; - FN(FindLongestMatch)(hasher, dictionary, dictionary_hash, ringbuffer, - ringbuffer_mask, dist_cache, position, - max_length, max_distance, gap, &sr); + FN(FindLongestMatch)(hasher, ¶ms->dictionary, + ringbuffer, ringbuffer_mask, dist_cache, position, + max_length, max_distance, gap, + params->dist.max_distance, &sr); if (sr.score > kMinScore) { /* Found a match. Let's look for something even better ahead. */ int delayed_backward_references_in_row = 0; @@ -58,9 +58,9 @@ static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)( sr2.distance = 0; sr2.score = kMinScore; max_distance = BROTLI_MIN(size_t, position + 1, max_backward_limit); - FN(FindLongestMatch)(hasher, dictionary, dictionary_hash, ringbuffer, - ringbuffer_mask, dist_cache, position + 1, - max_length, max_distance, gap, &sr2); + FN(FindLongestMatch)(hasher, ¶ms->dictionary, + ringbuffer, ringbuffer_mask, dist_cache, position + 1, max_length, + max_distance, gap, params->dist.max_distance, &sr2); if (sr2.score >= sr.score + cost_diff_lazy) { /* Ok, let's just write one byte for now and start a match from the next byte. */ @@ -89,8 +89,8 @@ static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)( dist_cache[0] = (int)sr.distance; FN(PrepareDistanceCache)(hasher, dist_cache); } - InitCommand(commands++, insert_length, sr.len, sr.len_code_delta, - distance_code); + InitCommand(commands++, ¶ms->dist, insert_length, + sr.len, sr.len_code_delta, distance_code); } *num_literals += insert_length; insert_length = 0; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c index 01e30f6d5ff..1f3f7ad5c90 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c @@ -9,10 +9,10 @@ #include "./bit_cost.h" #include "../common/constants.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./fast_log.h" #include "./histogram.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h index e69ee04a187..6586469e62f 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h @@ -9,20 +9,20 @@ #ifndef BROTLI_ENC_BIT_COST_H_ #define BROTLI_ENC_BIT_COST_H_ +#include "../common/platform.h" #include <brotli/types.h> #include "./fast_log.h" #include "./histogram.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif -static BROTLI_INLINE double ShannonEntropy(const uint32_t *population, - size_t size, size_t *total) { +static BROTLI_INLINE double ShannonEntropy( + const uint32_t* population, size_t size, size_t* total) { size_t sum = 0; double retval = 0; - const uint32_t *population_end = population + size; + const uint32_t* population_end = population + size; size_t p; if (size & 1) { goto odd_number_of_elements_left; @@ -42,7 +42,7 @@ static BROTLI_INLINE double ShannonEntropy(const uint32_t *population, } static BROTLI_INLINE double BitsEntropy( - const uint32_t *population, size_t size) { + const uint32_t* population, size_t size) { size_t sum; double retval = ShannonEntropy(population, size, &sum); if (retval < sum) { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h index 2a08f904fd6..8cbd5eac67b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h @@ -13,9 +13,9 @@ stream. */ static void FN(BuildAndStoreEntropyCodes)(MemoryManager* m, BlockEncoder* self, const HistogramType* histograms, const size_t histograms_size, - HuffmanTree* tree, size_t* storage_ix, uint8_t* storage) { - const size_t alphabet_size = self->alphabet_size_; - const size_t table_size = histograms_size * alphabet_size; + const size_t alphabet_size, HuffmanTree* tree, + size_t* storage_ix, uint8_t* storage) { + const size_t table_size = histograms_size * self->histogram_length_; self->depths_ = BROTLI_ALLOC(m, uint8_t, table_size); self->bits_ = BROTLI_ALLOC(m, uint16_t, table_size); if (BROTLI_IS_OOM(m)) return; @@ -23,9 +23,10 @@ static void FN(BuildAndStoreEntropyCodes)(MemoryManager* m, BlockEncoder* self, { size_t i; for (i = 0; i < histograms_size; ++i) { - size_t ix = i * alphabet_size; - BuildAndStoreHuffmanTree(&histograms[i].data_[0], alphabet_size, tree, - &self->depths_[ix], &self->bits_[ix], storage_ix, storage); + size_t ix = i * self->histogram_length_; + BuildAndStoreHuffmanTree(&histograms[i].data_[0], self->histogram_length_, + alphabet_size, tree, &self->depths_[ix], &self->bits_[ix], + storage_ix, storage); } } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c index 0331146cf58..d308eca59d3 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c @@ -8,16 +8,15 @@ #include "./block_splitter.h" -#include <assert.h> #include <string.h> /* memcpy, memset */ +#include "../common/platform.h" #include "./bit_cost.h" #include "./cluster.h" #include "./command.h" #include "./fast_log.h" #include "./histogram.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -175,7 +174,7 @@ void BrotliSplitBlock(MemoryManager* m, for (i = 0; i < num_commands; ++i) { const Command* cmd = &cmds[i]; if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) { - distance_prefixes[j++] = cmd->dist_prefix_; + distance_prefixes[j++] = cmd->dist_prefix_ & 0x3FF; } } /* Create the block split on the array of distance prefixes. */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h index 6abac08d295..a5e006c4b30 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h @@ -9,10 +9,10 @@ #ifndef BROTLI_ENC_BLOCK_SPLITTER_H_ #define BROTLI_ENC_BLOCK_SPLITTER_H_ +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h index 48844787878..023712b84d3 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h @@ -70,13 +70,13 @@ static size_t FN(FindBlocks)(const DataType* data, const size_t length, double* insert_cost, double* cost, uint8_t* switch_signal, - uint8_t *block_id) { + uint8_t* block_id) { const size_t data_size = FN(HistogramDataSize)(); const size_t bitmaplen = (num_histograms + 7) >> 3; size_t num_blocks = 1; size_t i; size_t j; - assert(num_histograms <= 256); + BROTLI_DCHECK(num_histograms <= 256); if (num_histograms <= 1) { for (i = 0; i < length; ++i) { block_id[i] = 0; @@ -126,7 +126,7 @@ static size_t FN(FindBlocks)(const DataType* data, const size_t length, if (cost[k] >= block_switch_cost) { const uint8_t mask = (uint8_t)(1u << (k & 7)); cost[k] = block_switch_cost; - assert((k >> 3) < bitmaplen); + BROTLI_DCHECK((k >> 3) < bitmaplen); switch_signal[ix + (k >> 3)] |= mask; } } @@ -137,7 +137,7 @@ static size_t FN(FindBlocks)(const DataType* data, const size_t length, uint8_t cur_id = block_id[byte_ix]; while (byte_ix > 0) { const uint8_t mask = (uint8_t)(1u << (cur_id & 7)); - assert(((size_t)cur_id >> 3) < bitmaplen); + BROTLI_DCHECK(((size_t)cur_id >> 3) < bitmaplen); --byte_ix; ix -= bitmaplen; if (switch_signal[ix + (cur_id >> 3)] & mask) { @@ -161,16 +161,16 @@ static size_t FN(RemapBlockIds)(uint8_t* block_ids, const size_t length, new_id[i] = kInvalidId; } for (i = 0; i < length; ++i) { - assert(block_ids[i] < num_histograms); + BROTLI_DCHECK(block_ids[i] < num_histograms); if (new_id[block_ids[i]] == kInvalidId) { new_id[block_ids[i]] = next_id++; } } for (i = 0; i < length; ++i) { block_ids[i] = (uint8_t)new_id[block_ids[i]]; - assert(block_ids[i] < num_histograms); + BROTLI_DCHECK(block_ids[i] < num_histograms); } - assert(next_id <= num_histograms); + BROTLI_DCHECK(next_id <= num_histograms); return next_id; } @@ -226,13 +226,13 @@ static void FN(ClusterBlocks)(MemoryManager* m, { size_t block_idx = 0; for (i = 0; i < length; ++i) { - assert(block_idx < num_blocks); + BROTLI_DCHECK(block_idx < num_blocks); ++block_lengths[block_idx]; if (i + 1 == length || block_ids[i] != block_ids[i + 1]) { ++block_idx; } } - assert(block_idx == num_blocks); + BROTLI_DCHECK(block_idx == num_blocks); } for (i = 0; i < num_blocks; i += HISTOGRAMS_PER_BATCH) { @@ -268,8 +268,8 @@ static void FN(ClusterBlocks)(MemoryManager* m, histogram_symbols[i + j] = (uint32_t)num_clusters + remap[symbols[j]]; } num_clusters += num_new_clusters; - assert(num_clusters == cluster_size_size); - assert(num_clusters == all_histograms_size); + BROTLI_DCHECK(num_clusters == cluster_size_size); + BROTLI_DCHECK(num_clusters == all_histograms_size); } BROTLI_FREE(m, histograms); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c index 2907510b714..aaf2dad7dbd 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c @@ -13,13 +13,14 @@ #include <string.h> /* memcpy, memset */ #include "../common/constants.h" +#include "../common/context.h" +#include "../common/platform.h" #include <brotli/types.h> -#include "./context.h" #include "./entropy_encode.h" #include "./entropy_encode_static.h" #include "./fast_log.h" +#include "./histogram.h" #include "./memory.h" -#include "./port.h" #include "./write_bits.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -27,12 +28,11 @@ extern "C" { #endif #define MAX_HUFFMAN_TREE_SIZE (2 * BROTLI_NUM_COMMAND_SYMBOLS + 1) -/* The size of Huffman dictionary for distances assuming that NPOSTFIX = 0 and - NDIRECT = 0. */ -#define SIMPLE_DISTANCE_ALPHABET_SIZE (BROTLI_NUM_DISTANCE_SHORT_CODES + \ - (2 * BROTLI_MAX_DISTANCE_BITS)) -/* SIMPLE_DISTANCE_ALPHABET_SIZE == 64 */ -#define SIMPLE_DISTANCE_ALPHABET_BITS 6 +/* The maximum size of Huffman dictionary for distances assuming that + NPOSTFIX = 0 and NDIRECT = 0. */ +#define MAX_SIMPLE_DISTANCE_ALPHABET_SIZE \ + BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_LARGE_MAX_DISTANCE_BITS) +/* MAX_SIMPLE_DISTANCE_ALPHABET_SIZE == 140 */ /* Represents the range of values belonging to a prefix code: [offset, offset + 2^nbits) */ @@ -89,9 +89,9 @@ static void BrotliEncodeMlen(size_t length, uint64_t* bits, size_t* numbits, uint64_t* nibblesbits) { size_t lg = (length == 1) ? 1 : Log2FloorNonZero((uint32_t)(length - 1)) + 1; size_t mnibbles = (lg < 16 ? 16 : (lg + 3)) / 4; - assert(length > 0); - assert(length <= (1 << 24)); - assert(lg <= 24); + BROTLI_DCHECK(length > 0); + BROTLI_DCHECK(length <= (1 << 24)); + BROTLI_DCHECK(lg <= 24); *nibblesbits = mnibbles - 4; *numbits = mnibbles * 4; *bits = length - 1; @@ -258,7 +258,7 @@ static void StoreSimpleHuffmanTree(const uint8_t* depths, size_t symbols[4], size_t num_symbols, size_t max_bits, - size_t *storage_ix, uint8_t *storage) { + size_t* storage_ix, uint8_t* storage) { /* value of 1 indicates a simple Huffman code */ BrotliWriteBits(2, 1, storage_ix, storage); BrotliWriteBits(2, num_symbols - 1, storage_ix, storage); /* NSYM - 1 */ @@ -297,7 +297,7 @@ static void StoreSimpleHuffmanTree(const uint8_t* depths, depths = symbol depths */ void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num, HuffmanTree* tree, - size_t *storage_ix, uint8_t *storage) { + size_t* storage_ix, uint8_t* storage) { /* Write the Huffman tree into the brotli-representation. The command alphabet is the largest, so this allocation will fit all alphabets. */ @@ -311,7 +311,7 @@ void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num, int num_codes = 0; size_t code = 0; - assert(num <= BROTLI_NUM_COMMAND_SYMBOLS); + BROTLI_DCHECK(num <= BROTLI_NUM_COMMAND_SYMBOLS); BrotliWriteHuffmanTree(depths, num, &huffman_tree_size, huffman_tree, huffman_tree_extra_bits); @@ -360,8 +360,9 @@ void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num, /* Builds a Huffman tree from histogram[0:length] into depth[0:length] and bits[0:length] and stores the encoded tree to the bit stream. */ -static void BuildAndStoreHuffmanTree(const uint32_t *histogram, - const size_t length, +static void BuildAndStoreHuffmanTree(const uint32_t* histogram, + const size_t histogram_length, + const size_t alphabet_size, HuffmanTree* tree, uint8_t* depth, uint16_t* bits, @@ -371,7 +372,7 @@ static void BuildAndStoreHuffmanTree(const uint32_t *histogram, size_t s4[4] = { 0 }; size_t i; size_t max_bits = 0; - for (i = 0; i < length; i++) { + for (i = 0; i < histogram_length; i++) { if (histogram[i]) { if (count < 4) { s4[count] = i; @@ -383,7 +384,7 @@ static void BuildAndStoreHuffmanTree(const uint32_t *histogram, } { - size_t max_bits_counter = length - 1; + size_t max_bits_counter = alphabet_size - 1; while (max_bits_counter) { max_bits_counter >>= 1; ++max_bits; @@ -398,14 +399,14 @@ static void BuildAndStoreHuffmanTree(const uint32_t *histogram, return; } - memset(depth, 0, length * sizeof(depth[0])); - BrotliCreateHuffmanTree(histogram, length, 15, tree, depth); - BrotliConvertBitDepthsToSymbols(depth, length, bits); + memset(depth, 0, histogram_length * sizeof(depth[0])); + BrotliCreateHuffmanTree(histogram, histogram_length, 15, tree, depth); + BrotliConvertBitDepthsToSymbols(depth, histogram_length, bits); if (count <= 4) { StoreSimpleHuffmanTree(depth, s4, count, max_bits, storage_ix, storage); } else { - BrotliStoreHuffmanTree(depth, length, tree, storage_ix, storage); + BrotliStoreHuffmanTree(depth, histogram_length, tree, storage_ix, storage); } } @@ -619,7 +620,7 @@ static void MoveToFrontTransform(const uint32_t* BROTLI_RESTRICT v_in, for (i = 1; i < v_size; ++i) { if (v_in[i] > max_value) max_value = v_in[i]; } - assert(max_value < 256u); + BROTLI_DCHECK(max_value < 256u); for (i = 0; i <= max_value; ++i) { mtf[i] = (uint8_t)i; } @@ -627,7 +628,7 @@ static void MoveToFrontTransform(const uint32_t* BROTLI_RESTRICT v_in, size_t mtf_size = max_value + 1; for (i = 0; i < v_size; ++i) { size_t index = IndexOf(mtf, mtf_size, (uint8_t)v_in[i]); - assert(index < mtf_size); + BROTLI_DCHECK(index < mtf_size); v_out[i] = (uint32_t)index; MoveToFront(mtf, index); } @@ -659,7 +660,7 @@ static void RunLengthCodeZeros(const size_t in_size, *max_run_length_prefix = max_prefix; *out_size = 0; for (i = 0; i < in_size;) { - assert(*out_size <= i); + BROTLI_DCHECK(*out_size <= i); if (v[i] != 0) { v[*out_size] = v[i] + *max_run_length_prefix; ++i; @@ -729,6 +730,7 @@ static void EncodeContextMap(MemoryManager* m, } } BuildAndStoreHuffmanTree(histogram, num_clusters + max_run_length_prefix, + num_clusters + max_run_length_prefix, tree, depths, bits, storage_ix, storage); for (i = 0; i < num_rle_symbols; ++i) { const uint32_t rle_symbol = rle_symbols[i] & kSymbolMask; @@ -788,10 +790,11 @@ static void BuildAndStoreBlockSplitCode(const uint8_t* types, } StoreVarLenUint8(num_types - 1, storage_ix, storage); if (num_types > 1) { /* TODO: else? could StoreBlockSwitch occur? */ - BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, tree, + BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, num_types + 2, tree, &code->type_depths[0], &code->type_bits[0], storage_ix, storage); BuildAndStoreHuffmanTree(&length_histo[0], BROTLI_NUM_BLOCK_LEN_SYMBOLS, + BROTLI_NUM_BLOCK_LEN_SYMBOLS, tree, &code->length_depths[0], &code->length_bits[0], storage_ix, storage); StoreBlockSwitch(code, lengths[0], types[0], 1, storage_ix, storage); @@ -822,8 +825,8 @@ static void StoreTrivialContextMap(size_t num_types, for (i = context_bits; i < alphabet_size; ++i) { histogram[i] = 1; } - BuildAndStoreHuffmanTree(histogram, alphabet_size, tree, - depths, bits, storage_ix, storage); + BuildAndStoreHuffmanTree(histogram, alphabet_size, alphabet_size, + tree, depths, bits, storage_ix, storage); for (i = 0; i < num_types; ++i) { size_t code = (i == 0 ? 0 : i + context_bits - 1); BrotliWriteBits(depths[code], bits[code], storage_ix, storage); @@ -838,7 +841,7 @@ static void StoreTrivialContextMap(size_t num_types, /* Manages the encoding of one block category (literal, command or distance). */ typedef struct BlockEncoder { - size_t alphabet_size_; + size_t histogram_length_; size_t num_block_types_; const uint8_t* block_types_; /* Not owned. */ const uint32_t* block_lengths_; /* Not owned. */ @@ -851,10 +854,10 @@ typedef struct BlockEncoder { uint16_t* bits_; } BlockEncoder; -static void InitBlockEncoder(BlockEncoder* self, size_t alphabet_size, +static void InitBlockEncoder(BlockEncoder* self, size_t histogram_length, size_t num_block_types, const uint8_t* block_types, const uint32_t* block_lengths, const size_t num_blocks) { - self->alphabet_size_ = alphabet_size; + self->histogram_length_ = histogram_length; self->num_block_types_ = num_block_types; self->block_types_ = block_types; self->block_lengths_ = block_lengths; @@ -890,7 +893,7 @@ static void StoreSymbol(BlockEncoder* self, size_t symbol, size_t* storage_ix, uint32_t block_len = self->block_lengths_[block_ix]; uint8_t block_type = self->block_types_[block_ix]; self->block_len_ = block_len; - self->entropy_ix_ = block_type * self->alphabet_size_; + self->entropy_ix_ = block_type * self->histogram_length_; StoreBlockSwitch(&self->block_split_code_, block_len, block_type, 0, storage_ix, storage); } @@ -919,7 +922,7 @@ static void StoreSymbolWithContext(BlockEncoder* self, size_t symbol, --self->block_len_; { size_t histo_ix = context_map[self->entropy_ix_ + context]; - size_t ix = histo_ix * self->alphabet_size_ + symbol; + size_t ix = histo_ix * self->histogram_length_ + symbol; BrotliWriteBits(self->depths_[ix], self->bits_[ix], storage_ix, storage); } } @@ -945,42 +948,38 @@ static void JumpToByteBoundary(size_t* storage_ix, uint8_t* storage) { } void BrotliStoreMetaBlock(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - uint8_t prev_byte, - uint8_t prev_byte2, - BROTLI_BOOL is_last, - uint32_t num_direct_distance_codes, - uint32_t distance_postfix_bits, - ContextType literal_context_mode, - const Command *commands, - size_t n_commands, - const MetaBlockSplit* mb, - size_t *storage_ix, - uint8_t *storage) { + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last, + const BrotliEncoderParams* params, ContextType literal_context_mode, + const Command* commands, size_t n_commands, const MetaBlockSplit* mb, + size_t* storage_ix, uint8_t* storage) { + size_t pos = start_pos; size_t i; - size_t num_distance_codes = - BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_distance_codes + - (48u << distance_postfix_bits); + uint32_t num_distance_symbols = params->dist.alphabet_size; + uint32_t num_effective_distance_symbols = num_distance_symbols; HuffmanTree* tree; + ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode); BlockEncoder literal_enc; BlockEncoder command_enc; BlockEncoder distance_enc; + const BrotliDistanceParams* dist = ¶ms->dist; + if (params->large_window && + num_effective_distance_symbols > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) { + num_effective_distance_symbols = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS; + } StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE); if (BROTLI_IS_OOM(m)) return; - InitBlockEncoder(&literal_enc, 256, mb->literal_split.num_types, - mb->literal_split.types, mb->literal_split.lengths, - mb->literal_split.num_blocks); + InitBlockEncoder(&literal_enc, BROTLI_NUM_LITERAL_SYMBOLS, + mb->literal_split.num_types, mb->literal_split.types, + mb->literal_split.lengths, mb->literal_split.num_blocks); InitBlockEncoder(&command_enc, BROTLI_NUM_COMMAND_SYMBOLS, mb->command_split.num_types, mb->command_split.types, mb->command_split.lengths, mb->command_split.num_blocks); - InitBlockEncoder(&distance_enc, num_distance_codes, + InitBlockEncoder(&distance_enc, num_effective_distance_symbols, mb->distance_split.num_types, mb->distance_split.types, mb->distance_split.lengths, mb->distance_split.num_blocks); @@ -989,9 +988,10 @@ void BrotliStoreMetaBlock(MemoryManager* m, BuildAndStoreBlockSwitchEntropyCodes( &distance_enc, tree, storage_ix, storage); - BrotliWriteBits(2, distance_postfix_bits, storage_ix, storage); - BrotliWriteBits(4, num_direct_distance_codes >> distance_postfix_bits, - storage_ix, storage); + BrotliWriteBits(2, dist->distance_postfix_bits, storage_ix, storage); + BrotliWriteBits( + 4, dist->num_direct_distance_codes >> dist->distance_postfix_bits, + storage_ix, storage); for (i = 0; i < mb->literal_split.num_types; ++i) { BrotliWriteBits(2, literal_context_mode, storage_ix, storage); } @@ -1017,13 +1017,16 @@ void BrotliStoreMetaBlock(MemoryManager* m, } BuildAndStoreEntropyCodesLiteral(m, &literal_enc, mb->literal_histograms, - mb->literal_histograms_size, tree, storage_ix, storage); + mb->literal_histograms_size, BROTLI_NUM_LITERAL_SYMBOLS, tree, + storage_ix, storage); if (BROTLI_IS_OOM(m)) return; BuildAndStoreEntropyCodesCommand(m, &command_enc, mb->command_histograms, - mb->command_histograms_size, tree, storage_ix, storage); + mb->command_histograms_size, BROTLI_NUM_COMMAND_SYMBOLS, tree, + storage_ix, storage); if (BROTLI_IS_OOM(m)) return; BuildAndStoreEntropyCodesDistance(m, &distance_enc, mb->distance_histograms, - mb->distance_histograms_size, tree, storage_ix, storage); + mb->distance_histograms_size, num_distance_symbols, tree, + storage_ix, storage); if (BROTLI_IS_OOM(m)) return; BROTLI_FREE(m, tree); @@ -1041,7 +1044,8 @@ void BrotliStoreMetaBlock(MemoryManager* m, } else { size_t j; for (j = cmd.insert_len_; j != 0; --j) { - size_t context = Context(prev_byte, prev_byte2, literal_context_mode); + size_t context = + BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut); uint8_t literal = input[pos & mask]; StoreSymbolWithContext(&literal_enc, literal, context, mb->literal_context_map, storage_ix, storage, @@ -1056,9 +1060,9 @@ void BrotliStoreMetaBlock(MemoryManager* m, prev_byte2 = input[(pos - 2) & mask]; prev_byte = input[(pos - 1) & mask]; if (cmd.cmd_prefix_ >= 128) { - size_t dist_code = cmd.dist_prefix_; - uint32_t distnumextra = cmd.dist_extra_ >> 24; - uint64_t distextra = cmd.dist_extra_ & 0xffffff; + size_t dist_code = cmd.dist_prefix_ & 0x3FF; + uint32_t distnumextra = cmd.dist_prefix_ >> 10; + uint64_t distextra = cmd.dist_extra_; if (mb->distance_context_map_size == 0) { StoreSymbol(&distance_enc, dist_code, storage_ix, storage); } else { @@ -1082,7 +1086,7 @@ void BrotliStoreMetaBlock(MemoryManager* m, static void BuildHistograms(const uint8_t* input, size_t start_pos, size_t mask, - const Command *commands, + const Command* commands, size_t n_commands, HistogramLiteral* lit_histo, HistogramCommand* cmd_histo, @@ -1099,7 +1103,7 @@ static void BuildHistograms(const uint8_t* input, } pos += CommandCopyLen(&cmd); if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) { - HistogramAddDistance(dist_histo, cmd.dist_prefix_); + HistogramAddDistance(dist_histo, cmd.dist_prefix_ & 0x3FF); } } } @@ -1107,7 +1111,7 @@ static void BuildHistograms(const uint8_t* input, static void StoreDataWithHuffmanCodes(const uint8_t* input, size_t start_pos, size_t mask, - const Command *commands, + const Command* commands, size_t n_commands, const uint8_t* lit_depth, const uint16_t* lit_bits, @@ -1134,9 +1138,9 @@ static void StoreDataWithHuffmanCodes(const uint8_t* input, } pos += CommandCopyLen(&cmd); if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) { - const size_t dist_code = cmd.dist_prefix_; - const uint32_t distnumextra = cmd.dist_extra_ >> 24; - const uint32_t distextra = cmd.dist_extra_ & 0xffffff; + const size_t dist_code = cmd.dist_prefix_ & 0x3FF; + const uint32_t distnumextra = cmd.dist_prefix_ >> 10; + const uint32_t distextra = cmd.dist_extra_; BrotliWriteBits(dist_depth[dist_code], dist_bits[dist_code], storage_ix, storage); BrotliWriteBits(distnumextra, distextra, storage_ix, storage); @@ -1145,15 +1149,10 @@ static void StoreDataWithHuffmanCodes(const uint8_t* input, } void BrotliStoreMetaBlockTrivial(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - BROTLI_BOOL is_last, - const Command *commands, - size_t n_commands, - size_t *storage_ix, - uint8_t *storage) { + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + BROTLI_BOOL is_last, const BrotliEncoderParams* params, + const Command* commands, size_t n_commands, + size_t* storage_ix, uint8_t* storage) { HistogramLiteral lit_histo; HistogramCommand cmd_histo; HistogramDistance dist_histo; @@ -1161,9 +1160,10 @@ void BrotliStoreMetaBlockTrivial(MemoryManager* m, uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS]; uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS]; uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS]; - uint8_t dist_depth[SIMPLE_DISTANCE_ALPHABET_SIZE]; - uint16_t dist_bits[SIMPLE_DISTANCE_ALPHABET_SIZE]; + uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; + uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; HuffmanTree* tree; + uint32_t num_distance_symbols = params->dist.alphabet_size; StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); @@ -1178,14 +1178,16 @@ void BrotliStoreMetaBlockTrivial(MemoryManager* m, tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE); if (BROTLI_IS_OOM(m)) return; - BuildAndStoreHuffmanTree(lit_histo.data_, BROTLI_NUM_LITERAL_SYMBOLS, tree, + BuildAndStoreHuffmanTree(lit_histo.data_, BROTLI_NUM_LITERAL_SYMBOLS, + BROTLI_NUM_LITERAL_SYMBOLS, tree, lit_depth, lit_bits, storage_ix, storage); - BuildAndStoreHuffmanTree(cmd_histo.data_, BROTLI_NUM_COMMAND_SYMBOLS, tree, + BuildAndStoreHuffmanTree(cmd_histo.data_, BROTLI_NUM_COMMAND_SYMBOLS, + BROTLI_NUM_COMMAND_SYMBOLS, tree, cmd_depth, cmd_bits, storage_ix, storage); - BuildAndStoreHuffmanTree(dist_histo.data_, SIMPLE_DISTANCE_ALPHABET_SIZE, - tree, + BuildAndStoreHuffmanTree(dist_histo.data_, MAX_SIMPLE_DISTANCE_ALPHABET_SIZE, + num_distance_symbols, tree, dist_depth, dist_bits, storage_ix, storage); BROTLI_FREE(m, tree); @@ -1200,15 +1202,14 @@ void BrotliStoreMetaBlockTrivial(MemoryManager* m, } void BrotliStoreMetaBlockFast(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - BROTLI_BOOL is_last, - const Command *commands, - size_t n_commands, - size_t *storage_ix, - uint8_t *storage) { + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + BROTLI_BOOL is_last, const BrotliEncoderParams* params, + const Command* commands, size_t n_commands, + size_t* storage_ix, uint8_t* storage) { + uint32_t num_distance_symbols = params->dist.alphabet_size; + uint32_t distance_alphabet_bits = + Log2FloorNonZero(num_distance_symbols - 1) + 1; + StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); BrotliWriteBits(13, 0, storage_ix, storage); @@ -1252,8 +1253,8 @@ void BrotliStoreMetaBlockFast(MemoryManager* m, uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS]; uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS]; uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS]; - uint8_t dist_depth[SIMPLE_DISTANCE_ALPHABET_SIZE]; - uint16_t dist_bits[SIMPLE_DISTANCE_ALPHABET_SIZE]; + uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; + uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; HistogramClearLiteral(&lit_histo); HistogramClearCommand(&cmd_histo); HistogramClearDistance(&dist_histo); @@ -1274,7 +1275,7 @@ void BrotliStoreMetaBlockFast(MemoryManager* m, BrotliBuildAndStoreHuffmanTreeFast(m, dist_histo.data_, dist_histo.total_count_, /* max_bits = */ - SIMPLE_DISTANCE_ALPHABET_BITS, + distance_alphabet_bits, dist_depth, dist_bits, storage_ix, storage); if (BROTLI_IS_OOM(m)) return; @@ -1293,11 +1294,11 @@ void BrotliStoreMetaBlockFast(MemoryManager* m, /* This is for storing uncompressed blocks (simple raw storage of bytes-as-bytes). */ void BrotliStoreUncompressedMetaBlock(BROTLI_BOOL is_final_block, - const uint8_t * BROTLI_RESTRICT input, + const uint8_t* BROTLI_RESTRICT input, size_t position, size_t mask, size_t len, - size_t * BROTLI_RESTRICT storage_ix, - uint8_t * BROTLI_RESTRICT storage) { + size_t* BROTLI_RESTRICT storage_ix, + uint8_t* BROTLI_RESTRICT storage) { size_t masked_pos = position & mask; BrotliStoreUncompressedMetaBlockHeader(len, storage_ix, storage); JumpToByteBoundary(storage_ix, storage); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h index 2c8bfedc777..9089b1dbafe 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h @@ -16,13 +16,13 @@ #ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_ #define BROTLI_ENC_BROTLI_BIT_STREAM_H_ +#include "../common/context.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./command.h" -#include "./context.h" #include "./entropy_encode.h" #include "./memory.h" #include "./metablock.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -32,7 +32,7 @@ extern "C" { position for the current storage. */ BROTLI_INTERNAL void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num, - HuffmanTree* tree, size_t *storage_ix, uint8_t *storage); + HuffmanTree* tree, size_t* storage_ix, uint8_t* storage); BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast( MemoryManager* m, const uint32_t* histogram, const size_t histogram_total, @@ -42,51 +42,31 @@ BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast( /* REQUIRES: length > 0 */ /* REQUIRES: length <= (1 << 24) */ BROTLI_INTERNAL void BrotliStoreMetaBlock(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - uint8_t prev_byte, - uint8_t prev_byte2, - BROTLI_BOOL is_final_block, - uint32_t num_direct_distance_codes, - uint32_t distance_postfix_bits, - ContextType literal_context_mode, - const Command* commands, - size_t n_commands, - const MetaBlockSplit* mb, - size_t* storage_ix, - uint8_t* storage); + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last, + const BrotliEncoderParams* params, ContextType literal_context_mode, + const Command* commands, size_t n_commands, const MetaBlockSplit* mb, + size_t* storage_ix, uint8_t* storage); /* Stores the meta-block without doing any block splitting, just collects one histogram per block category and uses that for entropy coding. REQUIRES: length > 0 REQUIRES: length <= (1 << 24) */ BROTLI_INTERNAL void BrotliStoreMetaBlockTrivial(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - BROTLI_BOOL is_last, - const Command *commands, - size_t n_commands, - size_t* storage_ix, - uint8_t* storage); + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + BROTLI_BOOL is_last, const BrotliEncoderParams* params, + const Command* commands, size_t n_commands, + size_t* storage_ix, uint8_t* storage); /* Same as above, but uses static prefix codes for histograms with a only a few symbols, and uses static code length prefix codes for all other histograms. REQUIRES: length > 0 REQUIRES: length <= (1 << 24) */ BROTLI_INTERNAL void BrotliStoreMetaBlockFast(MemoryManager* m, - const uint8_t* input, - size_t start_pos, - size_t length, - size_t mask, - BROTLI_BOOL is_last, - const Command *commands, - size_t n_commands, - size_t* storage_ix, - uint8_t* storage); + const uint8_t* input, size_t start_pos, size_t length, size_t mask, + BROTLI_BOOL is_last, const BrotliEncoderParams* params, + const Command* commands, size_t n_commands, + size_t* storage_ix, uint8_t* storage); /* This is for storing uncompressed blocks (simple raw storage of bytes-as-bytes). diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c index bb663278470..a20dfd385ff 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c @@ -8,12 +8,12 @@ #include "./cluster.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./bit_cost.h" /* BrotliPopulationCost */ #include "./fast_log.h" #include "./histogram.h" #include "./memory.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h index be58614b7ac..bb26124d24d 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h @@ -9,10 +9,10 @@ #ifndef BROTLI_ENC_CLUSTER_H_ #define BROTLI_ENC_CLUSTER_H_ +#include "../common/platform.h" #include <brotli/types.h> #include "./histogram.h" #include "./memory.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h index 632318e8451..6075dfe5b18 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h @@ -10,9 +10,10 @@ #define BROTLI_ENC_COMMAND_H_ #include "../common/constants.h" -#include <brotli/port.h> +#include "../common/platform.h" #include <brotli/types.h> #include "./fast_log.h" +#include "./params.h" #include "./prefix.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -105,53 +106,61 @@ static BROTLI_INLINE uint32_t GetCopyExtra(uint16_t copycode) { typedef struct Command { uint32_t insert_len_; - /* Stores copy_len in low 24 bits and copy_len XOR copy_code in high 8 bit. */ + /* Stores copy_len in low 25 bits and copy_code - copy_len in high 7 bit. */ uint32_t copy_len_; + /* Stores distance extra bits. */ uint32_t dist_extra_; uint16_t cmd_prefix_; + /* Stores distance code in low 10 bits + and number of extra bits in high 6 bits. */ uint16_t dist_prefix_; } Command; /* distance_code is e.g. 0 for same-as-last short code, or 16 for offset 1. */ -static BROTLI_INLINE void InitCommand(Command* self, size_t insertlen, +static BROTLI_INLINE void InitCommand(Command* self, + const BrotliDistanceParams* dist, size_t insertlen, size_t copylen, int copylen_code_delta, size_t distance_code) { /* Don't rely on signed int representation, use honest casts. */ uint32_t delta = (uint8_t)((int8_t)copylen_code_delta); self->insert_len_ = (uint32_t)insertlen; - self->copy_len_ = (uint32_t)(copylen | (delta << 24)); + self->copy_len_ = (uint32_t)(copylen | (delta << 25)); /* The distance prefix and extra bits are stored in this Command as if npostfix and ndirect were 0, they are only recomputed later after the clustering if needed. */ PrefixEncodeCopyDistance( - distance_code, 0, 0, &self->dist_prefix_, &self->dist_extra_); + distance_code, dist->num_direct_distance_codes, + dist->distance_postfix_bits, &self->dist_prefix_, &self->dist_extra_); GetLengthCode( insertlen, (size_t)((int)copylen + copylen_code_delta), - TO_BROTLI_BOOL(self->dist_prefix_ == 0), &self->cmd_prefix_); + TO_BROTLI_BOOL((self->dist_prefix_ & 0x3FF) == 0), &self->cmd_prefix_); } static BROTLI_INLINE void InitInsertCommand(Command* self, size_t insertlen) { self->insert_len_ = (uint32_t)insertlen; - self->copy_len_ = 4 << 24; + self->copy_len_ = 4 << 25; self->dist_extra_ = 0; self->dist_prefix_ = BROTLI_NUM_DISTANCE_SHORT_CODES; GetLengthCode(insertlen, 4, BROTLI_FALSE, &self->cmd_prefix_); } -static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(const Command* self) { - if (self->dist_prefix_ < BROTLI_NUM_DISTANCE_SHORT_CODES) { - return self->dist_prefix_; +static BROTLI_INLINE uint32_t CommandRestoreDistanceCode( + const Command* self, const BrotliDistanceParams* dist) { + if ((self->dist_prefix_ & 0x3FF) < + BROTLI_NUM_DISTANCE_SHORT_CODES + dist->num_direct_distance_codes) { + return self->dist_prefix_ & 0x3FF; } else { - uint32_t nbits = self->dist_extra_ >> 24; - uint32_t extra = self->dist_extra_ & 0xffffff; - /* It is assumed that the distance was first encoded with NPOSTFIX = 0 and - NDIRECT = 0, so the code itself is of this form: - BROTLI_NUM_DISTANCE_SHORT_CODES + 2 * (nbits - 1) + prefix_bit - Therefore, the following expression results in (2 + prefix_bit). */ - uint32_t prefix = - self->dist_prefix_ + 4u - BROTLI_NUM_DISTANCE_SHORT_CODES - 2u * nbits; - /* Subtract 4 for offset (Chapter 4.) and - increase by BROTLI_NUM_DISTANCE_SHORT_CODES - 1 */ - return (prefix << nbits) + extra + BROTLI_NUM_DISTANCE_SHORT_CODES - 4u; + uint32_t dcode = self->dist_prefix_ & 0x3FF; + uint32_t nbits = self->dist_prefix_ >> 10; + uint32_t extra = self->dist_extra_; + uint32_t postfix_mask = (1U << dist->distance_postfix_bits) - 1U; + uint32_t hcode = (dcode - dist->num_direct_distance_codes - + BROTLI_NUM_DISTANCE_SHORT_CODES) >> + dist->distance_postfix_bits; + uint32_t lcode = (dcode - dist->num_direct_distance_codes - + BROTLI_NUM_DISTANCE_SHORT_CODES) & postfix_mask; + uint32_t offset = ((2U + (hcode & 1U)) << nbits) - 4U; + return ((offset + extra) << dist->distance_postfix_bits) + lcode + + dist->num_direct_distance_codes + BROTLI_NUM_DISTANCE_SHORT_CODES; } } @@ -165,12 +174,13 @@ static BROTLI_INLINE uint32_t CommandDistanceContext(const Command* self) { } static BROTLI_INLINE uint32_t CommandCopyLen(const Command* self) { - return self->copy_len_ & 0xFFFFFF; + return self->copy_len_ & 0x1FFFFFF; } static BROTLI_INLINE uint32_t CommandCopyLenCode(const Command* self) { - int32_t delta = (int8_t)((uint8_t)(self->copy_len_ >> 24)); - return (uint32_t)((int32_t)(self->copy_len_ & 0xFFFFFF) + delta); + uint32_t modifier = self->copy_len_ >> 25; + int32_t delta = (int8_t)((uint8_t)(modifier | ((modifier & 0x40) << 1))); + return (uint32_t)((int32_t)(self->copy_len_ & 0x1FFFFFF) + delta); } #if defined(__cplusplus) || defined(c_plusplus) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c index b4ca81017a3..f75069bf3f5 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c @@ -17,16 +17,15 @@ #include <string.h> /* memcmp, memcpy, memset */ #include "../common/constants.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./brotli_bit_stream.h" #include "./entropy_encode.h" #include "./fast_log.h" #include "./find_match_length.h" #include "./memory.h" -#include "./port.h" #include "./write_bits.h" - #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -39,7 +38,7 @@ extern "C" { * There is no effort to ensure that it is a prime, the oddity is enough for this use. * The number has been tuned heuristically against compression benchmarks. */ -static const uint32_t kHashMul32 = 0x1e35a7bd; +static const uint32_t kHashMul32 = 0x1E35A7BD; static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) { const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(p) << 24) * kHashMul32; @@ -48,8 +47,8 @@ static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) { static BROTLI_INLINE uint32_t HashBytesAtOffset( uint64_t v, int offset, size_t shift) { - assert(offset >= 0); - assert(offset <= 3); + BROTLI_DCHECK(offset >= 0); + BROTLI_DCHECK(offset <= 3); { const uint64_t h = ((v >> (8 * offset)) << 24) * kHashMul32; return (uint32_t)(h >> shift); @@ -58,7 +57,7 @@ static BROTLI_INLINE uint32_t HashBytesAtOffset( static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2) { return TO_BROTLI_BOOL( - BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) && + BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2) && p1[4] == p2[4]); } @@ -344,7 +343,7 @@ static void BrotliStoreMetaBlockHeader( } static void UpdateBits(size_t n_bits, uint32_t bits, size_t pos, - uint8_t *array) { + uint8_t* array) { while (n_bits > 0) { size_t byte_pos = pos >> 3; size_t n_unchanged_bits = pos & 7; @@ -522,12 +521,12 @@ static BROTLI_INLINE void BrotliCompressFragmentFastImpl( const uint8_t* next_ip = ip; const uint8_t* candidate; - assert(next_emit < ip); + BROTLI_DCHECK(next_emit < ip); trawl: do { uint32_t hash = next_hash; uint32_t bytes_between_hash_lookups = skip++ >> 5; - assert(hash == Hash(next_ip, shift)); + BROTLI_DCHECK(hash == Hash(next_ip, shift)); ip = next_ip; next_ip = ip + bytes_between_hash_lookups; if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) { @@ -542,8 +541,8 @@ trawl: } } candidate = base_ip + table[hash]; - assert(candidate >= base_ip); - assert(candidate < ip); + BROTLI_DCHECK(candidate >= base_ip); + BROTLI_DCHECK(candidate < ip); table[hash] = (int)(ip - base_ip); } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate))); @@ -566,7 +565,7 @@ trawl: int distance = (int)(base - candidate); /* > 0 */ size_t insert = (size_t)(base - next_emit); ip += matched; - assert(0 == memcmp(base, candidate, matched)); + BROTLI_DCHECK(0 == memcmp(base, candidate, matched)); if (BROTLI_PREDICT_TRUE(insert < 6210)) { EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo, storage_ix, storage); @@ -626,7 +625,7 @@ trawl: if (ip - candidate > MAX_DISTANCE) break; ip += matched; last_distance = (int)(base - candidate); /* > 0 */ - assert(0 == memcmp(base, candidate, matched)); + BROTLI_DCHECK(0 == memcmp(base, candidate, matched)); EmitCopyLen(matched, cmd_depth, cmd_bits, cmd_histo, storage_ix, storage); EmitDistance((size_t)last_distance, cmd_depth, cmd_bits, @@ -659,7 +658,7 @@ trawl: } emit_remainder: - assert(next_emit <= ip_end); + BROTLI_DCHECK(next_emit <= ip_end); input += block_size; input_size -= block_size; block_size = BROTLI_MIN(size_t, input_size, kMergeBlockSize); @@ -669,7 +668,7 @@ trawl: if (input_size > 0 && total_block_size + block_size <= (1 << 20) && ShouldMergeBlock(input, block_size, lit_depth)) { - assert(total_block_size > (1 << 16)); + BROTLI_DCHECK(total_block_size > (1 << 16)); /* Update the size of the current meta-block and continue emitting commands. We can do this because the current size and the new size both have 5 nibbles. */ @@ -752,7 +751,7 @@ void BrotliCompressFragmentFast( const size_t table_bits = Log2FloorNonZero(table_size); if (input_size == 0) { - assert(is_last); + BROTLI_DCHECK(is_last); BrotliWriteBits(1, 1, storage_ix, storage); /* islast */ BrotliWriteBits(1, 1, storage_ix, storage); /* isempty */ *storage_ix = (*storage_ix + 7u) & ~7u; @@ -768,7 +767,7 @@ void BrotliCompressFragmentFast( break; FOR_TABLE_BITS_(CASE_) #undef CASE_ - default: assert(0); break; + default: BROTLI_DCHECK(0); break; } /* If output is larger than single uncompressed block, rewrite it. */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h index d221266515a..80007f5dcad 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h @@ -12,9 +12,9 @@ #ifndef BROTLI_ENC_COMPRESS_FRAGMENT_H_ #define BROTLI_ENC_COMPRESS_FRAGMENT_H_ +#include "../common/platform.h" #include <brotli/types.h> #include "./memory.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c index e6611a00c54..b8bd6e838e9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c @@ -15,6 +15,7 @@ #include <string.h> /* memcmp, memcpy, memset */ #include "../common/constants.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./bit_cost.h" #include "./brotli_bit_stream.h" @@ -22,10 +23,8 @@ #include "./fast_log.h" #include "./find_match_length.h" #include "./memory.h" -#include "./port.h" #include "./write_bits.h" - #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -38,7 +37,7 @@ extern "C" { * There is no effort to ensure that it is a prime, the oddity is enough for this use. * The number has been tuned heuristically against compression benchmarks. */ -static const uint32_t kHashMul32 = 0x1e35a7bd; +static const uint32_t kHashMul32 = 0x1E35A7BD; static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) { const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(p) << 16) * kHashMul32; @@ -47,8 +46,8 @@ static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) { static BROTLI_INLINE uint32_t HashBytesAtOffset( uint64_t v, int offset, size_t shift) { - assert(offset >= 0); - assert(offset <= 2); + BROTLI_DCHECK(offset >= 0); + BROTLI_DCHECK(offset <= 2); { const uint64_t h = ((v >> (8 * offset)) << 16) * kHashMul32; return (uint32_t)(h >> shift); @@ -57,7 +56,7 @@ static BROTLI_INLINE uint32_t HashBytesAtOffset( static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2) { return TO_BROTLI_BOOL( - BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) && + BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2) && p1[4] == p2[4] && p1[5] == p2[5]); } @@ -281,13 +280,13 @@ static BROTLI_INLINE void CreateCommands(const uint8_t* input, const uint8_t* next_ip = ip; const uint8_t* candidate; - assert(next_emit < ip); + BROTLI_DCHECK(next_emit < ip); trawl: do { uint32_t hash = next_hash; uint32_t bytes_between_hash_lookups = skip++ >> 5; ip = next_ip; - assert(hash == Hash(ip, shift)); + BROTLI_DCHECK(hash == Hash(ip, shift)); next_ip = ip + bytes_between_hash_lookups; if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) { goto emit_remainder; @@ -301,8 +300,8 @@ trawl: } } candidate = base_ip + table[hash]; - assert(candidate >= base_ip); - assert(candidate < ip); + BROTLI_DCHECK(candidate >= base_ip); + BROTLI_DCHECK(candidate < ip); table[hash] = (int)(ip - base_ip); } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate))); @@ -325,7 +324,7 @@ trawl: int distance = (int)(base - candidate); /* > 0 */ int insert = (int)(base - next_emit); ip += matched; - assert(0 == memcmp(base, candidate, matched)); + BROTLI_DCHECK(0 == memcmp(base, candidate, matched)); EmitInsertLen((uint32_t)insert, commands); memcpy(*literals, next_emit, (size_t)insert); *literals += insert; @@ -374,7 +373,7 @@ trawl: candidate + 6, ip + 6, (size_t)(ip_end - ip) - 6); ip += matched; last_distance = (int)(base - candidate); /* > 0 */ - assert(0 == memcmp(base, candidate, matched)); + BROTLI_DCHECK(0 == memcmp(base, candidate, matched)); EmitCopyLen(matched, commands); EmitDistance((uint32_t)last_distance, commands); @@ -411,7 +410,7 @@ trawl: } emit_remainder: - assert(next_emit <= ip_end); + BROTLI_DCHECK(next_emit <= ip_end); /* Emit the remaining bytes as literals. */ if (next_emit < ip_end) { const uint32_t insert = (uint32_t)(ip_end - next_emit); @@ -457,7 +456,7 @@ static void StoreCommands(MemoryManager* m, for (i = 0; i < num_commands; ++i) { const uint32_t code = commands[i] & 0xFF; - assert(code < 128); + BROTLI_DCHECK(code < 128); ++cmd_histo[code]; } cmd_histo[1] += 1; @@ -471,7 +470,7 @@ static void StoreCommands(MemoryManager* m, const uint32_t cmd = commands[i]; const uint32_t code = cmd & 0xFF; const uint32_t extra = cmd >> 8; - assert(code < 128); + BROTLI_DCHECK(code < 128); BrotliWriteBits(cmd_depths[code], cmd_bits[code], storage_ix, storage); BrotliWriteBits(kNumExtraBits[code], extra, storage_ix, storage); if (code < 24) { @@ -589,7 +588,7 @@ void BrotliCompressFragmentTwoPass( break; FOR_TABLE_BITS_(CASE_) #undef CASE_ - default: assert(0); break; + default: BROTLI_DCHECK(0); break; } /* If output is larger than single uncompressed block, rewrite it. */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h index ed91942fd2a..928677df426 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h @@ -13,9 +13,9 @@ #ifndef BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_ #define BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_ +#include "../common/platform.h" #include <brotli/types.h> #include "./memory.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c index 40187840c65..3677d7ddb4e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c @@ -6,7 +6,7 @@ /* Hash table on the 4-byte prefixes of static dictionary words. */ -#include <brotli/port.h> +#include "../common/platform.h" #include "./dictionary_hash.h" #if defined(__cplusplus) || defined(c_plusplus) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c index 069521014ec..563c8270a61 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c @@ -11,6 +11,9 @@ #include <stdlib.h> /* free, malloc */ #include <string.h> /* memcpy, memset */ +#include "../common/constants.h" +#include "../common/context.h" +#include "../common/platform.h" #include "../common/version.h" #include "./backward_references.h" #include "./backward_references_hq.h" @@ -18,14 +21,13 @@ #include "./brotli_bit_stream.h" #include "./compress_fragment.h" #include "./compress_fragment_two_pass.h" -#include "./context.h" +#include "./encoder_dict.h" #include "./entropy_encode.h" #include "./fast_log.h" #include "./hash.h" #include "./histogram.h" #include "./memory.h" #include "./metablock.h" -#include "./port.h" #include "./prefix.h" #include "./quality.h" #include "./ringbuffer.h" @@ -69,8 +71,8 @@ typedef struct BrotliEncoderStateStruct { uint64_t last_processed_pos_; int dist_cache_[BROTLI_NUM_DISTANCE_SHORT_CODES]; int saved_dist_cache_[4]; - uint8_t last_byte_; - uint8_t last_byte_bits_; + uint16_t last_bytes_; + uint8_t last_bytes_bits_; uint8_t prev_byte_; uint8_t prev_byte2_; size_t storage_size_; @@ -161,27 +163,11 @@ BROTLI_BOOL BrotliEncoderSetParameter( state->params.size_hint = value; return BROTLI_TRUE; - default: return BROTLI_FALSE; - } -} + case BROTLI_PARAM_LARGE_WINDOW: + state->params.large_window = TO_BROTLI_BOOL(!!value); + return BROTLI_TRUE; -static void RecomputeDistancePrefixes(Command* cmds, - size_t num_commands, - uint32_t num_direct_distance_codes, - uint32_t distance_postfix_bits) { - size_t i; - if (num_direct_distance_codes == 0 && distance_postfix_bits == 0) { - return; - } - for (i = 0; i < num_commands; ++i) { - Command* cmd = &cmds[i]; - if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) { - PrefixEncodeCopyDistance(CommandRestoreDistanceCode(cmd), - num_direct_distance_codes, - distance_postfix_bits, - &cmd->dist_prefix_, - &cmd->dist_extra_); - } + default: return BROTLI_FALSE; } } @@ -226,7 +212,7 @@ static int* GetHashTable(BrotliEncoderState* s, int quality, const size_t max_table_size = MaxHashTableSize(quality); size_t htsize = HashTableSize(max_table_size, input_size); int* table; - assert(max_table_size >= 256); + BROTLI_DCHECK(max_table_size >= 256); if (quality == FAST_ONE_PASS_COMPRESSION_QUALITY) { /* Only odd shifts are supported by fast-one-pass. */ if ((htsize & 0xAAAAA) == 0) { @@ -251,20 +237,25 @@ static int* GetHashTable(BrotliEncoderState* s, int quality, return table; } -static void EncodeWindowBits(int lgwin, uint8_t* last_byte, - uint8_t* last_byte_bits) { - if (lgwin == 16) { - *last_byte = 0; - *last_byte_bits = 1; - } else if (lgwin == 17) { - *last_byte = 1; - *last_byte_bits = 7; - } else if (lgwin > 17) { - *last_byte = (uint8_t)(((lgwin - 17) << 1) | 1); - *last_byte_bits = 4; +static void EncodeWindowBits(int lgwin, BROTLI_BOOL large_window, + uint16_t* last_bytes, uint8_t* last_bytes_bits) { + if (large_window) { + *last_bytes = (uint16_t)(((lgwin & 0x3F) << 8) | 0x11); + *last_bytes_bits = 14; } else { - *last_byte = (uint8_t)(((lgwin - 8) << 4) | 1); - *last_byte_bits = 7; + if (lgwin == 16) { + *last_bytes = 0; + *last_bytes_bits = 1; + } else if (lgwin == 17) { + *last_bytes = 1; + *last_bytes_bits = 7; + } else if (lgwin > 17) { + *last_bytes = (uint16_t)(((lgwin - 17) << 1) | 0x01); + *last_bytes_bits = 4; + } else { + *last_bytes = (uint16_t)(((lgwin - 8) << 4) | 0x01); + *last_bytes_bits = 7; + } } } @@ -357,7 +348,7 @@ static void ChooseContextMap(int quality, } total = monogram_histo[0] + monogram_histo[1] + monogram_histo[2]; - assert(total != 0); + BROTLI_DCHECK(total != 0); entropy[0] = 1.0 / (double)total; entropy[1] *= entropy[0]; entropy[2] *= entropy[0]; @@ -420,6 +411,7 @@ static BROTLI_BOOL ShouldUseComplexStaticContextMap(const uint8_t* input, double entropy[3]; size_t dummy; size_t i; + ContextLut utf8_lut = BROTLI_CONTEXT_LUT(CONTEXT_UTF8); for (; start_pos + 64 <= end_pos; start_pos += 4096) { const size_t stride_end_pos = start_pos + 64; uint8_t prev2 = input[start_pos & mask]; @@ -430,7 +422,7 @@ static BROTLI_BOOL ShouldUseComplexStaticContextMap(const uint8_t* input, for (pos = start_pos + 2; pos < stride_end_pos; ++pos) { const uint8_t literal = input[pos & mask]; const uint8_t context = (uint8_t)kStaticContextMapComplexUTF8[ - Context(prev1, prev2, CONTEXT_UTF8)]; + BROTLI_CONTEXT(prev1, prev2, utf8_lut)]; ++total; ++combined_histo[literal >> 3]; ++context_histo[context][literal >> 3]; @@ -519,12 +511,26 @@ static BROTLI_BOOL ShouldCompress( return BROTLI_TRUE; } +/* Chooses the literal context mode for a metablock */ +static ContextType ChooseContextMode(const BrotliEncoderParams* params, + const uint8_t* data, const size_t pos, const size_t mask, + const size_t length) { + /* We only do the computation for the option of something else than + CONTEXT_UTF8 for the highest qualities */ + if (params->quality >= MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING && + !BrotliIsMostlyUTF8(data, pos, mask, length, kMinUTF8Ratio)) { + return CONTEXT_SIGNED; + } + return CONTEXT_UTF8; +} + static void WriteMetaBlockInternal(MemoryManager* m, const uint8_t* data, const size_t mask, const uint64_t last_flush_pos, const size_t bytes, const BROTLI_BOOL is_last, + ContextType literal_context_mode, const BrotliEncoderParams* params, const uint8_t prev_byte, const uint8_t prev_byte2, @@ -536,10 +542,9 @@ static void WriteMetaBlockInternal(MemoryManager* m, size_t* storage_ix, uint8_t* storage) { const uint32_t wrapped_last_flush_pos = WrapPosition(last_flush_pos); - uint8_t last_byte; - uint8_t last_byte_bits; - uint32_t num_direct_distance_codes = 0; - uint32_t distance_postfix_bits = 0; + uint16_t last_bytes; + uint8_t last_bytes_bits; + ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode); if (bytes == 0) { /* Write the ISLAST and ISEMPTY bits. */ @@ -559,31 +564,22 @@ static void WriteMetaBlockInternal(MemoryManager* m, return; } - last_byte = storage[0]; - last_byte_bits = (uint8_t)(*storage_ix & 0xff); - if (params->quality >= MIN_QUALITY_FOR_RECOMPUTE_DISTANCE_PREFIXES && - params->mode == BROTLI_MODE_FONT) { - num_direct_distance_codes = 12; - distance_postfix_bits = 1; - RecomputeDistancePrefixes(commands, - num_commands, - num_direct_distance_codes, - distance_postfix_bits); - } + BROTLI_DCHECK(*storage_ix <= 14); + last_bytes = (uint16_t)((storage[1] << 8) | storage[0]); + last_bytes_bits = (uint8_t)(*storage_ix); if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) { BrotliStoreMetaBlockFast(m, data, wrapped_last_flush_pos, - bytes, mask, is_last, + bytes, mask, is_last, params, commands, num_commands, storage_ix, storage); if (BROTLI_IS_OOM(m)) return; } else if (params->quality < MIN_QUALITY_FOR_BLOCK_SPLIT) { BrotliStoreMetaBlockTrivial(m, data, wrapped_last_flush_pos, - bytes, mask, is_last, + bytes, mask, is_last, params, commands, num_commands, storage_ix, storage); if (BROTLI_IS_OOM(m)) return; } else { - ContextType literal_context_mode = CONTEXT_UTF8; MetaBlockSplit mb; InitMetaBlockSplit(&mb); if (params->quality < MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING) { @@ -596,14 +592,10 @@ static void WriteMetaBlockInternal(MemoryManager* m, &literal_context_map); } BrotliBuildMetaBlockGreedy(m, data, wrapped_last_flush_pos, mask, - prev_byte, prev_byte2, literal_context_mode, num_literal_contexts, + prev_byte, prev_byte2, literal_context_lut, num_literal_contexts, literal_context_map, commands, num_commands, &mb); if (BROTLI_IS_OOM(m)) return; } else { - if (!BrotliIsMostlyUTF8(data, wrapped_last_flush_pos, mask, bytes, - kMinUTF8Ratio)) { - literal_context_mode = CONTEXT_SIGNED; - } BrotliBuildMetaBlock(m, data, wrapped_last_flush_pos, mask, params, prev_byte, prev_byte2, commands, num_commands, @@ -612,15 +604,18 @@ static void WriteMetaBlockInternal(MemoryManager* m, if (BROTLI_IS_OOM(m)) return; } if (params->quality >= MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS) { - BrotliOptimizeHistograms(num_direct_distance_codes, - distance_postfix_bits, - &mb); + /* The number of distance symbols effectively used by + "Large Window Brotli" (32-bit). */ + uint32_t num_effective_dist_codes = params->dist.alphabet_size; + if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) { + num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS; + } + BrotliOptimizeHistograms(num_effective_dist_codes, &mb); } BrotliStoreMetaBlock(m, data, wrapped_last_flush_pos, bytes, mask, prev_byte, prev_byte2, is_last, - num_direct_distance_codes, - distance_postfix_bits, + params, literal_context_mode, commands, num_commands, &mb, @@ -631,20 +626,56 @@ static void WriteMetaBlockInternal(MemoryManager* m, if (bytes + 4 < (*storage_ix >> 3)) { /* Restore the distance cache and last byte. */ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0])); - storage[0] = last_byte; - *storage_ix = last_byte_bits; + storage[0] = (uint8_t)last_bytes; + storage[1] = (uint8_t)(last_bytes >> 8); + *storage_ix = last_bytes_bits; BrotliStoreUncompressedMetaBlock(is_last, data, wrapped_last_flush_pos, mask, bytes, storage_ix, storage); } } +static void ChooseDistanceParams(BrotliEncoderParams* params) { + /* NDIRECT, NPOSTFIX must be both zero for qualities + up to MIN_QUALITY_FOR_BLOCK_SPLIT == 3. */ + uint32_t num_direct_distance_codes = 0; + uint32_t distance_postfix_bits = 0; + uint32_t alphabet_size; + size_t max_distance = BROTLI_MAX_DISTANCE; + + if (params->quality >= MIN_QUALITY_FOR_RECOMPUTE_DISTANCE_PREFIXES && + params->mode == BROTLI_MODE_FONT) { + num_direct_distance_codes = 12; + distance_postfix_bits = 1; + max_distance = (1U << 27) + 4; + } + + alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE( + num_direct_distance_codes, distance_postfix_bits, + BROTLI_MAX_DISTANCE_BITS); + if (params->large_window) { + max_distance = BROTLI_MAX_ALLOWED_DISTANCE; + if (num_direct_distance_codes != 0 || distance_postfix_bits != 0) { + max_distance = (3U << 29) - 4; + } + alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE( + num_direct_distance_codes, distance_postfix_bits, + BROTLI_LARGE_MAX_DISTANCE_BITS); + } + + params->dist.num_direct_distance_codes = num_direct_distance_codes; + params->dist.distance_postfix_bits = distance_postfix_bits; + params->dist.alphabet_size = alphabet_size; + params->dist.max_distance = max_distance; +} + static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) { if (BROTLI_IS_OOM(&s->memory_manager_)) return BROTLI_FALSE; if (s->is_initialized_) return BROTLI_TRUE; SanitizeParams(&s->params); s->params.lgblock = ComputeLgBlock(&s->params); + ChooseDistanceParams(&s->params); s->remaining_metadata_bytes_ = BROTLI_UINT32_MAX; @@ -657,7 +688,8 @@ static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) { s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) { lgwin = BROTLI_MAX(int, lgwin, 18); } - EncodeWindowBits(lgwin, &s->last_byte_, &s->last_byte_bits_); + EncodeWindowBits(lgwin, s->params.large_window, + &s->last_bytes_, &s->last_bytes_bits_); } if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) { @@ -671,11 +703,18 @@ static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) { static void BrotliEncoderInitParams(BrotliEncoderParams* params) { params->mode = BROTLI_DEFAULT_MODE; + params->large_window = BROTLI_FALSE; params->quality = BROTLI_DEFAULT_QUALITY; params->lgwin = BROTLI_DEFAULT_WINDOW; params->lgblock = 0; params->size_hint = 0; params->disable_literal_context_modeling = BROTLI_FALSE; + BrotliInitEncoderDictionary(¶ms->dictionary); + params->dist.num_direct_distance_codes = 0; + params->dist.distance_postfix_bits = 0; + params->dist.alphabet_size = + BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_MAX_DISTANCE_BITS); + params->dist.max_distance = BROTLI_MAX_DISTANCE; } static void BrotliEncoderInitState(BrotliEncoderState* s) { @@ -718,9 +757,8 @@ static void BrotliEncoderInitState(BrotliEncoderState* s) { memcpy(s->saved_dist_cache_, s->dist_cache_, sizeof(s->saved_dist_cache_)); } -BrotliEncoderState* BrotliEncoderCreateInstance(brotli_alloc_func alloc_func, - brotli_free_func free_func, - void* opaque) { +BrotliEncoderState* BrotliEncoderCreateInstance( + brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) { BrotliEncoderState* state = 0; if (!alloc_func && !free_func) { state = (BrotliEncoderState*)malloc(sizeof(BrotliEncoderState)); @@ -837,6 +875,38 @@ static BROTLI_BOOL UpdateLastProcessedPos(BrotliEncoderState* s) { return TO_BROTLI_BOOL(wrapped_input_pos < wrapped_last_processed_pos); } +static void ExtendLastCommand(BrotliEncoderState* s, uint32_t* bytes, + uint32_t* wrapped_last_processed_pos) { + Command* last_command = &s->commands_[s->num_commands_ - 1]; + const uint8_t* data = s->ringbuffer_.buffer_; + const uint32_t mask = s->ringbuffer_.mask_; + uint64_t max_backward_distance = (1u << s->params.lgwin) - BROTLI_WINDOW_GAP; + uint64_t last_copy_len = last_command->copy_len_ & 0x1FFFFFF; + uint64_t last_processed_pos = s->last_processed_pos_ - last_copy_len; + uint64_t max_distance = last_processed_pos < max_backward_distance ? + last_processed_pos : max_backward_distance; + uint64_t cmd_dist = (uint64_t)s->dist_cache_[0]; + uint32_t distance_code = CommandRestoreDistanceCode(last_command, + &s->params.dist); + if (distance_code < BROTLI_NUM_DISTANCE_SHORT_CODES || + distance_code - (BROTLI_NUM_DISTANCE_SHORT_CODES - 1) == cmd_dist) { + if (cmd_dist <= max_distance) { + while (*bytes != 0 && data[*wrapped_last_processed_pos & mask] == + data[(*wrapped_last_processed_pos - cmd_dist) & mask]) { + last_command->copy_len_++; + (*bytes)--; + (*wrapped_last_processed_pos)++; + } + } + /* The copy length is at most the metablock size, and thus expressible. */ + GetLengthCode(last_command->insert_len_, + (size_t)((int)(last_command->copy_len_ & 0x1FFFFFF) + + (int)(last_command->copy_len_ >> 25)), + TO_BROTLI_BOOL((last_command->dist_prefix_ & 0x3FF) == 0), + &last_command->cmd_prefix_); + } +} + /* Processes the accumulated input data and sets |*out_size| to the length of the new output meta-block, or to zero if no new output meta-block has been @@ -853,13 +923,12 @@ static BROTLI_BOOL EncodeData( BrotliEncoderState* s, const BROTLI_BOOL is_last, const BROTLI_BOOL force_flush, size_t* out_size, uint8_t** output) { const uint64_t delta = UnprocessedInputSize(s); - const uint32_t bytes = (uint32_t)delta; - const uint32_t wrapped_last_processed_pos = - WrapPosition(s->last_processed_pos_); + uint32_t bytes = (uint32_t)delta; + uint32_t wrapped_last_processed_pos = WrapPosition(s->last_processed_pos_); uint8_t* data; uint32_t mask; MemoryManager* m = &s->memory_manager_; - const BrotliDictionary* dictionary = BrotliGetDictionary(); + ContextType literal_context_mode; if (!EnsureInitialized(s)) return BROTLI_FALSE; data = s->ringbuffer_.buffer_; @@ -884,7 +953,7 @@ static BROTLI_BOOL EncodeData( if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY || s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) { uint8_t* storage; - size_t storage_ix = s->last_byte_bits_; + size_t storage_ix = s->last_bytes_bits_; size_t table_size; int* table; @@ -894,9 +963,10 @@ static BROTLI_BOOL EncodeData( *out_size = 0; return BROTLI_TRUE; } - storage = GetBrotliStorage(s, 2 * bytes + 502); + storage = GetBrotliStorage(s, 2 * bytes + 503); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; - storage[0] = s->last_byte_; + storage[0] = (uint8_t)s->last_bytes_; + storage[1] = (uint8_t)(s->last_bytes_ >> 8); table = GetHashTable(s, s->params.quality, bytes, &table_size); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) { @@ -917,8 +987,8 @@ static BROTLI_BOOL EncodeData( &storage_ix, storage); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; } - s->last_byte_ = storage[storage_ix >> 3]; - s->last_byte_bits_ = storage_ix & 7u; + s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]); + s->last_bytes_bits_ = storage_ix & 7u; UpdateLastProcessedPos(s); *output = &storage[0]; *out_size = storage_ix >> 3; @@ -946,27 +1016,39 @@ static BROTLI_BOOL EncodeData( InitOrStitchToPreviousBlock(m, &s->hasher_, data, mask, &s->params, wrapped_last_processed_pos, bytes, is_last); + + literal_context_mode = ChooseContextMode( + &s->params, data, WrapPosition(s->last_flush_pos_), + mask, (size_t)(s->input_pos_ - s->last_flush_pos_)); + if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; + if (s->num_commands_ && s->last_insert_len_ == 0) { + ExtendLastCommand(s, &bytes, &wrapped_last_processed_pos); + } + if (s->params.quality == ZOPFLIFICATION_QUALITY) { - assert(s->params.hasher.type == 10); - BrotliCreateZopfliBackwardReferences( - m, dictionary, bytes, wrapped_last_processed_pos, data, mask, - &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_, - &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_); + BROTLI_DCHECK(s->params.hasher.type == 10); + BrotliCreateZopfliBackwardReferences(m, + bytes, wrapped_last_processed_pos, + data, mask, &s->params, s->hasher_, s->dist_cache_, + &s->last_insert_len_, &s->commands_[s->num_commands_], + &s->num_commands_, &s->num_literals_); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; } else if (s->params.quality == HQ_ZOPFLIFICATION_QUALITY) { - assert(s->params.hasher.type == 10); - BrotliCreateHqZopfliBackwardReferences( - m, dictionary, bytes, wrapped_last_processed_pos, data, mask, - &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_, - &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_); + BROTLI_DCHECK(s->params.hasher.type == 10); + BrotliCreateHqZopfliBackwardReferences(m, + bytes, wrapped_last_processed_pos, + data, mask, &s->params, s->hasher_, s->dist_cache_, + &s->last_insert_len_, &s->commands_[s->num_commands_], + &s->num_commands_, &s->num_literals_); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; } else { BrotliCreateBackwardReferences( - dictionary, bytes, wrapped_last_processed_pos, data, mask, - &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_, - &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_); + bytes, wrapped_last_processed_pos, + data, mask, &s->params, s->hasher_, s->dist_cache_, + &s->last_insert_len_, &s->commands_[s->num_commands_], + &s->num_commands_, &s->num_literals_); } { @@ -1009,24 +1091,25 @@ static BROTLI_BOOL EncodeData( *out_size = 0; return BROTLI_TRUE; } - assert(s->input_pos_ >= s->last_flush_pos_); - assert(s->input_pos_ > s->last_flush_pos_ || is_last); - assert(s->input_pos_ - s->last_flush_pos_ <= 1u << 24); + BROTLI_DCHECK(s->input_pos_ >= s->last_flush_pos_); + BROTLI_DCHECK(s->input_pos_ > s->last_flush_pos_ || is_last); + BROTLI_DCHECK(s->input_pos_ - s->last_flush_pos_ <= 1u << 24); { const uint32_t metablock_size = (uint32_t)(s->input_pos_ - s->last_flush_pos_); - uint8_t* storage = GetBrotliStorage(s, 2 * metablock_size + 502); - size_t storage_ix = s->last_byte_bits_; + uint8_t* storage = GetBrotliStorage(s, 2 * metablock_size + 503); + size_t storage_ix = s->last_bytes_bits_; if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; - storage[0] = s->last_byte_; + storage[0] = (uint8_t)s->last_bytes_; + storage[1] = (uint8_t)(s->last_bytes_ >> 8); WriteMetaBlockInternal( m, data, mask, s->last_flush_pos_, metablock_size, is_last, - &s->params, s->prev_byte_, s->prev_byte2_, + literal_context_mode, &s->params, s->prev_byte_, s->prev_byte2_, s->num_literals_, s->num_commands_, s->commands_, s->saved_dist_cache_, s->dist_cache_, &storage_ix, storage); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; - s->last_byte_ = storage[storage_ix >> 3]; - s->last_byte_bits_ = storage_ix & 7u; + s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]); + s->last_bytes_bits_ = storage_ix & 7u; s->last_flush_pos_ = s->input_pos_; if (UpdateLastProcessedPos(s)) { HasherReset(s->hasher_); @@ -1055,10 +1138,11 @@ static BROTLI_BOOL EncodeData( static size_t WriteMetadataHeader( BrotliEncoderState* s, const size_t block_size, uint8_t* header) { size_t storage_ix; - storage_ix = s->last_byte_bits_; - header[0] = s->last_byte_; - s->last_byte_ = 0; - s->last_byte_bits_ = 0; + storage_ix = s->last_bytes_bits_; + header[0] = (uint8_t)s->last_bytes_; + header[1] = (uint8_t)(s->last_bytes_ >> 8); + s->last_bytes_ = 0; + s->last_bytes_bits_ = 0; BrotliWriteBits(1, 0, &storage_ix, header); BrotliWriteBits(2, 3, &storage_ix, header); @@ -1088,15 +1172,14 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( BROTLI_BOOL ok = BROTLI_TRUE; const size_t max_out_size = *encoded_size; size_t total_out_size = 0; - uint8_t last_byte; - uint8_t last_byte_bits; + uint16_t last_bytes; + uint8_t last_bytes_bits; HasherHandle hasher = NULL; const size_t hasher_eff_size = BROTLI_MIN(size_t, input_size, max_backward_limit + BROTLI_WINDOW_GAP); BrotliEncoderParams params; - const BrotliDictionary* dictionary = BrotliGetDictionary(); const int lgmetablock = BROTLI_MIN(int, 24, lgwin + 1); size_t max_block_size; @@ -1110,14 +1193,18 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( BrotliEncoderInitParams(¶ms); params.quality = 10; params.lgwin = lgwin; + if (lgwin > BROTLI_MAX_WINDOW_BITS) { + params.large_window = BROTLI_TRUE; + } SanitizeParams(¶ms); params.lgblock = ComputeLgBlock(¶ms); + ChooseDistanceParams(¶ms); max_block_size = (size_t)1 << params.lgblock; BrotliInitMemoryManager(m, 0, 0, 0); - assert(input_size <= mask + 1); - EncodeWindowBits(lgwin, &last_byte, &last_byte_bits); + BROTLI_DCHECK(input_size <= mask + 1); + EncodeWindowBits(lgwin, params.large_window, &last_bytes, &last_bytes_bits); InitOrStitchToPreviousBlock(m, &hasher, input_buffer, mask, ¶ms, 0, hasher_eff_size, BROTLI_TRUE); if (BROTLI_IS_OOM(m)) goto oom; @@ -1137,6 +1224,9 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( uint8_t* storage; size_t storage_ix; + ContextType literal_context_mode = ChooseContextMode(¶ms, + input_buffer, metablock_start, mask, metablock_end - metablock_start); + size_t block_start; for (block_start = metablock_start; block_start < metablock_end; ) { size_t block_size = @@ -1148,8 +1238,8 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( BrotliInitZopfliNodes(nodes, block_size + 1); StitchToPreviousBlockH10(hasher, block_size, block_start, input_buffer, mask); - path_size = BrotliZopfliComputeShortestPath( - m, dictionary, block_size, block_start, input_buffer, mask, ¶ms, + path_size = BrotliZopfliComputeShortestPath(m, + block_size, block_start, input_buffer, mask, ¶ms, max_backward_limit, dist_cache, hasher, nodes); if (BROTLI_IS_OOM(m)) goto oom; /* We allocate a command buffer in the first iteration of this loop that @@ -1193,13 +1283,14 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( is_last = TO_BROTLI_BOOL(metablock_start + metablock_size == input_size); storage = NULL; - storage_ix = last_byte_bits; + storage_ix = last_bytes_bits; if (metablock_size == 0) { /* Write the ISLAST and ISEMPTY bits. */ storage = BROTLI_ALLOC(m, uint8_t, 16); if (BROTLI_IS_OOM(m)) goto oom; - storage[0] = last_byte; + storage[0] = (uint8_t)last_bytes; + storage[1] = (uint8_t)(last_bytes >> 8); BrotliWriteBits(2, 3, &storage_ix, storage); storage_ix = (storage_ix + 7u) & ~7u; } else if (!ShouldCompress(input_buffer, mask, metablock_start, @@ -1209,37 +1300,35 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0])); storage = BROTLI_ALLOC(m, uint8_t, metablock_size + 16); if (BROTLI_IS_OOM(m)) goto oom; - storage[0] = last_byte; + storage[0] = (uint8_t)last_bytes; + storage[1] = (uint8_t)(last_bytes >> 8); BrotliStoreUncompressedMetaBlock(is_last, input_buffer, metablock_start, mask, metablock_size, &storage_ix, storage); } else { - uint32_t num_direct_distance_codes = 0; - uint32_t distance_postfix_bits = 0; - ContextType literal_context_mode = CONTEXT_UTF8; MetaBlockSplit mb; - InitMetaBlockSplit(&mb); - if (!BrotliIsMostlyUTF8(input_buffer, metablock_start, mask, - metablock_size, kMinUTF8Ratio)) { - literal_context_mode = CONTEXT_SIGNED; + /* The number of distance symbols effectively used by + "Large Window Brotli" (32-bit). */ + uint32_t num_effective_dist_codes = params.dist.alphabet_size; + if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) { + num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS; } + InitMetaBlockSplit(&mb); BrotliBuildMetaBlock(m, input_buffer, metablock_start, mask, ¶ms, prev_byte, prev_byte2, commands, num_commands, literal_context_mode, &mb); if (BROTLI_IS_OOM(m)) goto oom; - BrotliOptimizeHistograms(num_direct_distance_codes, - distance_postfix_bits, - &mb); - storage = BROTLI_ALLOC(m, uint8_t, 2 * metablock_size + 502); + BrotliOptimizeHistograms(num_effective_dist_codes, &mb); + storage = BROTLI_ALLOC(m, uint8_t, 2 * metablock_size + 503); if (BROTLI_IS_OOM(m)) goto oom; - storage[0] = last_byte; + storage[0] = (uint8_t)last_bytes; + storage[1] = (uint8_t)(last_bytes >> 8); BrotliStoreMetaBlock(m, input_buffer, metablock_start, metablock_size, mask, prev_byte, prev_byte2, is_last, - num_direct_distance_codes, - distance_postfix_bits, + ¶ms, literal_context_mode, commands, num_commands, &mb, @@ -1248,19 +1337,22 @@ static BROTLI_BOOL BrotliCompressBufferQuality10( if (metablock_size + 4 < (storage_ix >> 3)) { /* Restore the distance cache and last byte. */ memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0])); - storage[0] = last_byte; - storage_ix = last_byte_bits; + storage[0] = (uint8_t)last_bytes; + storage[1] = (uint8_t)(last_bytes >> 8); + storage_ix = last_bytes_bits; BrotliStoreUncompressedMetaBlock(is_last, input_buffer, metablock_start, mask, metablock_size, &storage_ix, storage); } DestroyMetaBlockSplit(m, &mb); } - last_byte = storage[storage_ix >> 3]; - last_byte_bits = storage_ix & 7u; + last_bytes = (uint16_t)(storage[storage_ix >> 3]); + last_bytes_bits = storage_ix & 7u; metablock_start += metablock_size; - prev_byte = input_buffer[metablock_start - 1]; - prev_byte2 = input_buffer[metablock_start - 2]; + if (metablock_start < input_size) { + prev_byte = input_buffer[metablock_start - 1]; + prev_byte2 = input_buffer[metablock_start - 2]; + } /* Save the state of the distance cache in case we need to restore it for emitting an uncompressed block. */ memcpy(saved_dist_cache, dist_cache, 4 * sizeof(dist_cache[0])); @@ -1290,12 +1382,10 @@ oom: size_t BrotliEncoderMaxCompressedSize(size_t input_size) { /* [window bits / empty metadata] + N * [uncompressed] + [last empty] */ - size_t num_large_blocks = input_size >> 24; - size_t tail = input_size - (num_large_blocks << 24); - size_t tail_overhead = (tail > (1 << 20)) ? 4 : 3; - size_t overhead = 2 + (4 * num_large_blocks) + tail_overhead + 1; + size_t num_large_blocks = input_size >> 14; + size_t overhead = 2 + (4 * num_large_blocks) + 3 + 1; size_t result = input_size + overhead; - if (input_size == 0) return 1; + if (input_size == 0) return 2; return (result < input_size) ? 0 : result; } @@ -1356,7 +1446,7 @@ BROTLI_BOOL BrotliEncoderCompress( } if (quality == 10) { /* TODO: Implement this direct path for all quality levels. */ - const int lg_win = BROTLI_MIN(int, BROTLI_MAX_WINDOW_BITS, + const int lg_win = BROTLI_MIN(int, BROTLI_LARGE_MAX_WINDOW_BITS, BROTLI_MAX(int, 16, lgwin)); int ok = BrotliCompressBufferQuality10(lg_win, input_size, input_buffer, encoded_size, encoded_buffer); @@ -1380,6 +1470,9 @@ BROTLI_BOOL BrotliEncoderCompress( BrotliEncoderSetParameter(s, BROTLI_PARAM_LGWIN, (uint32_t)lgwin); BrotliEncoderSetParameter(s, BROTLI_PARAM_MODE, (uint32_t)mode); BrotliEncoderSetParameter(s, BROTLI_PARAM_SIZE_HINT, (uint32_t)input_size); + if (lgwin > BROTLI_MAX_WINDOW_BITS) { + BrotliEncoderSetParameter(s, BROTLI_PARAM_LARGE_WINDOW, BROTLI_TRUE); + } result = BrotliEncoderCompressStream(s, BROTLI_OPERATION_FINISH, &available_in, &next_in, &available_out, &next_out, &total_out); if (!BrotliEncoderIsFinished(s)) result = 0; @@ -1402,11 +1495,11 @@ fallback: } static void InjectBytePaddingBlock(BrotliEncoderState* s) { - uint32_t seal = s->last_byte_; - size_t seal_bits = s->last_byte_bits_; + uint32_t seal = s->last_bytes_; + size_t seal_bits = s->last_bytes_bits_; uint8_t* destination; - s->last_byte_ = 0; - s->last_byte_bits_ = 0; + s->last_bytes_ = 0; + s->last_bytes_bits_ = 0; /* is_last = 0, data_nibbles = 11, reserved = 0, meta_nibbles = 00 */ seal |= 0x6u << seal_bits; seal_bits += 6; @@ -1420,6 +1513,7 @@ static void InjectBytePaddingBlock(BrotliEncoderState* s) { } destination[0] = (uint8_t)seal; if (seal_bits > 8) destination[1] = (uint8_t)(seal >> 8); + if (seal_bits > 16) destination[2] = (uint8_t)(seal >> 16); s->available_out_ += (seal_bits + 7) >> 3; } @@ -1428,7 +1522,7 @@ static void InjectBytePaddingBlock(BrotliEncoderState* s) { static BROTLI_BOOL InjectFlushOrPushOutput(BrotliEncoderState* s, size_t* available_out, uint8_t** next_out, size_t* total_out) { if (s->stream_state_ == BROTLI_STREAM_FLUSH_REQUESTED && - s->last_byte_bits_ != 0) { + s->last_bytes_bits_ != 0) { InjectBytePaddingBlock(s); return BROTLI_TRUE; } @@ -1509,10 +1603,10 @@ static BROTLI_BOOL BrotliEncoderCompressStreamFast( (*available_in == block_size) && (op == BROTLI_OPERATION_FINISH); BROTLI_BOOL force_flush = (*available_in == block_size) && (op == BROTLI_OPERATION_FLUSH); - size_t max_out_size = 2 * block_size + 502; + size_t max_out_size = 2 * block_size + 503; BROTLI_BOOL inplace = BROTLI_TRUE; uint8_t* storage = NULL; - size_t storage_ix = s->last_byte_bits_; + size_t storage_ix = s->last_bytes_bits_; size_t table_size; int* table; @@ -1527,7 +1621,8 @@ static BROTLI_BOOL BrotliEncoderCompressStreamFast( storage = GetBrotliStorage(s, max_out_size); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; } - storage[0] = s->last_byte_; + storage[0] = (uint8_t)s->last_bytes_; + storage[1] = (uint8_t)(s->last_bytes_ >> 8); table = GetHashTable(s, s->params.quality, block_size, &table_size); if (BROTLI_IS_OOM(m)) return BROTLI_FALSE; @@ -1546,8 +1641,8 @@ static BROTLI_BOOL BrotliEncoderCompressStreamFast( *available_in -= block_size; if (inplace) { size_t out_bytes = storage_ix >> 3; - assert(out_bytes <= *available_out); - assert((storage_ix & 7) == 0 || out_bytes < *available_out); + BROTLI_DCHECK(out_bytes <= *available_out); + BROTLI_DCHECK((storage_ix & 7) == 0 || out_bytes < *available_out); *next_out += out_bytes; *available_out -= out_bytes; s->total_out_ += out_bytes; @@ -1557,8 +1652,8 @@ static BROTLI_BOOL BrotliEncoderCompressStreamFast( s->next_out_ = storage; s->available_out_ = out_bytes; } - s->last_byte_ = storage[storage_ix >> 3]; - s->last_byte_bits_ = storage_ix & 7u; + s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]); + s->last_bytes_bits_ = storage_ix & 7u; if (force_flush) s->stream_state_ = BROTLI_STREAM_FLUSH_REQUESTED; if (is_last) s->stream_state_ = BROTLI_STREAM_FINISHED; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c new file mode 100644 index 00000000000..8b2f6ad4a47 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c @@ -0,0 +1,32 @@ +/* Copyright 2017 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +#include "./encoder_dict.h" + +#include "../common/dictionary.h" +#include "../common/transform.h" +#include "./dictionary_hash.h" +#include "./hash.h" + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict) { + dict->words = BrotliGetDictionary(); + + dict->hash_table = kStaticDictionaryHash; + dict->buckets = kStaticDictionaryBuckets; + dict->dict_words = kStaticDictionaryWords; + + dict->cutoffTransformsCount = kCutoffTransformsCount; + dict->cutoffTransforms = kCutoffTransforms; + +} + +#if defined(__cplusplus) || defined(c_plusplus) +} /* extern "C" */ +#endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h new file mode 100644 index 00000000000..9ac8b4a38e4 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h @@ -0,0 +1,42 @@ +/* Copyright 2017 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +#ifndef BROTLI_ENC_ENCODER_DICT_H_ +#define BROTLI_ENC_ENCODER_DICT_H_ + +#include "../common/dictionary.h" +#include "../common/platform.h" +#include <brotli/types.h> +#include "./static_dict_lut.h" + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +/* Dictionary data (words and transforms) for 1 possible context */ +typedef struct BrotliEncoderDictionary { + const BrotliDictionary* words; + + /* cut off for fast encoder */ + uint32_t cutoffTransformsCount; + uint64_t cutoffTransforms; + + /* from dictionary_hash.h, for fast encoder */ + const uint16_t* hash_table; + + /* from static_dict_lut.h, for slow encoder */ + const uint16_t* buckets; + const DictWord* dict_words; +} BrotliEncoderDictionary; + +BROTLI_INTERNAL void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict); + + +#if defined(__cplusplus) || defined(c_plusplus) +} /* extern "C" */ +#endif + +#endif /* BROTLI_ENC_ENCODER_DICT_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c index 41ea9483d19..97f9dfb82aa 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c @@ -11,8 +11,8 @@ #include <string.h> /* memset */ #include "../common/constants.h" +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -23,7 +23,7 @@ BROTLI_BOOL BrotliSetDepth( int stack[16]; int level = 0; int p = p0; - assert(max_depth <= 15); + BROTLI_DCHECK(max_depth <= 15); stack[0] = -1; while (BROTLI_TRUE) { if (pool[p].index_left_ >= 0) { @@ -66,11 +66,11 @@ static BROTLI_INLINE BROTLI_BOOL SortHuffmanTree( we are not planning to use this with extremely long blocks. See http://en.wikipedia.org/wiki/Huffman_coding */ -void BrotliCreateHuffmanTree(const uint32_t *data, +void BrotliCreateHuffmanTree(const uint32_t* data, const size_t length, const int tree_limit, HuffmanTree* tree, - uint8_t *depth) { + uint8_t* depth) { uint32_t count_limit; HuffmanTree sentinel; InitHuffmanTree(&sentinel, BROTLI_UINT32_MAX, -1, -1); @@ -165,7 +165,7 @@ static void BrotliWriteHuffmanTreeRepetitions( size_t* tree_size, uint8_t* tree, uint8_t* extra_bits_data) { - assert(repetitions > 0); + BROTLI_DCHECK(repetitions > 0); if (previous_value != value) { tree[*tree_size] = value; extra_bits_data[*tree_size] = 0; @@ -371,8 +371,8 @@ void BrotliOptimizeHuffmanCountsForRle(size_t length, uint32_t* counts, } static void DecideOverRleUse(const uint8_t* depth, const size_t length, - BROTLI_BOOL *use_rle_for_non_zero, - BROTLI_BOOL *use_rle_for_zero) { + BROTLI_BOOL* use_rle_for_non_zero, + BROTLI_BOOL* use_rle_for_zero) { size_t total_reps_zero = 0; size_t total_reps_non_zero = 0; size_t count_reps_zero = 1; @@ -454,26 +454,26 @@ void BrotliWriteHuffmanTree(const uint8_t* depth, static uint16_t BrotliReverseBits(size_t num_bits, uint16_t bits) { static const size_t kLut[16] = { /* Pre-reversed 4-bit values. */ - 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, - 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf + 0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E, + 0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F }; - size_t retval = kLut[bits & 0xf]; + size_t retval = kLut[bits & 0x0F]; size_t i; for (i = 4; i < num_bits; i += 4) { retval <<= 4; bits = (uint16_t)(bits >> 4); - retval |= kLut[bits & 0xf]; + retval |= kLut[bits & 0x0F]; } - retval >>= ((0 - num_bits) & 0x3); + retval >>= ((0 - num_bits) & 0x03); return (uint16_t)retval; } /* 0..15 are values for bits */ #define MAX_HUFFMAN_BITS 16 -void BrotliConvertBitDepthsToSymbols(const uint8_t *depth, +void BrotliConvertBitDepthsToSymbols(const uint8_t* depth, size_t len, - uint16_t *bits) { + uint16_t* bits) { /* In Brotli, all bit depths are [1..15] 0 bit depth means that the symbol does not exist. */ uint16_t bl_count[MAX_HUFFMAN_BITS] = { 0 }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h index 812d0094f86..f23d9c379d0 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h @@ -9,8 +9,8 @@ #ifndef BROTLI_ENC_ENTROPY_ENCODE_H_ #define BROTLI_ENC_ENTROPY_ENCODE_H_ +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -46,11 +46,11 @@ BROTLI_INTERNAL BROTLI_BOOL BrotliSetDepth( be at least 2 * length + 1 long. See http://en.wikipedia.org/wiki/Huffman_coding */ -BROTLI_INTERNAL void BrotliCreateHuffmanTree(const uint32_t *data, +BROTLI_INTERNAL void BrotliCreateHuffmanTree(const uint32_t* data, const size_t length, const int tree_limit, HuffmanTree* tree, - uint8_t *depth); + uint8_t* depth); /* Change the population counts in a way that the consequent Huffman tree compression, especially its RLE-part will be more @@ -72,9 +72,9 @@ BROTLI_INTERNAL void BrotliWriteHuffmanTree(const uint8_t* depth, uint8_t* extra_bits_data); /* Get the actual bit values for a tree of bit depths. */ -BROTLI_INTERNAL void BrotliConvertBitDepthsToSymbols(const uint8_t *depth, +BROTLI_INTERNAL void BrotliConvertBitDepthsToSymbols(const uint8_t* depth, size_t len, - uint16_t *bits); + uint16_t* bits); /* Input size optimized Shell sort. */ typedef BROTLI_BOOL (*HuffmanTreeComparator)( diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h index bc0ee53c56b..62b99a954c5 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h @@ -10,7 +10,7 @@ #define BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_ #include "../common/constants.h" -#include <brotli/port.h> +#include "../common/platform.h" #include <brotli/types.h> #include "./write_bits.h" @@ -83,7 +83,7 @@ static const uint32_t kCodeLengthBits[18] = { static BROTLI_INLINE void StoreStaticCodeLengthCode( size_t* storage_ix, uint8_t* storage) { BrotliWriteBits( - 40, BROTLI_MAKE_UINT64_T(0x0000ffU, 0x55555554U), storage_ix, storage); + 40, BROTLI_MAKE_UINT64_T(0x0000FFu, 0x55555554u), storage_ix, storage); } static const uint64_t kZeroRepsBits[BROTLI_NUM_COMMAND_SYMBOLS] = { @@ -529,7 +529,7 @@ static const uint16_t kStaticDistanceCodeBits[64] = { static BROTLI_INLINE void StoreStaticDistanceHuffmanTree( size_t* storage_ix, uint8_t* storage) { - BrotliWriteBits(28, 0x0369dc03U, storage_ix, storage); + BrotliWriteBits(28, 0x0369DC03u, storage_ix, storage); } #if defined(__cplusplus) || defined(c_plusplus) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h index 49c1af31d06..d45a5280c87 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h @@ -11,8 +11,8 @@ #include <math.h> +#include "../common/platform.h" #include <brotli/types.h> -#include <brotli/port.h> #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h index 41845312c45..bc428cffdaf 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h @@ -9,8 +9,8 @@ #ifndef BROTLI_ENC_FIND_MATCH_LENGTH_H_ #define BROTLI_ENC_FIND_MATCH_LENGTH_H_ +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -60,8 +60,8 @@ static BROTLI_INLINE size_t FindMatchLengthWithLimit(const uint8_t* s1, the first non-matching bit and use that to calculate the total length of the match. */ while (s2_ptr <= s2_limit - 4 && - BROTLI_UNALIGNED_LOAD32(s2_ptr) == - BROTLI_UNALIGNED_LOAD32(s1 + matched)) { + BrotliUnalignedRead32(s2_ptr) == + BrotliUnalignedRead32(s1 + matched)) { s2_ptr += 4; matched += 4; } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h index c94edd3300e..1827ce6019a 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h @@ -14,11 +14,12 @@ #include "../common/constants.h" #include "../common/dictionary.h" +#include "../common/platform.h" #include <brotli/types.h> +#include "./encoder_dict.h" #include "./fast_log.h" #include "./find_match_length.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #include "./static_dict.h" @@ -73,13 +74,13 @@ typedef struct HasherSearchResult { * There is no effort to ensure that it is a prime, the oddity is enough for this use. * The number has been tuned heuristically against compression benchmarks. */ -static const uint32_t kHashMul32 = 0x1e35a7bd; -static const uint64_t kHashMul64 = BROTLI_MAKE_UINT64_T(0x1e35a7bd, 0x1e35a7bd); +static const uint32_t kHashMul32 = 0x1E35A7BD; +static const uint64_t kHashMul64 = BROTLI_MAKE_UINT64_T(0x1E35A7BD, 0x1E35A7BD); static const uint64_t kHashMul64Long = - BROTLI_MAKE_UINT64_T(0x1fe35a7bU, 0xd3579bd3U); + BROTLI_MAKE_UINT64_T(0x1FE35A7Bu, 0xD3579BD3u); static BROTLI_INLINE uint32_t Hash14(const uint8_t* data) { - uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32; + uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32; /* The higher bits contain more mixture from the multiplication, so we take our results from there. */ return h >> (32 - 14); @@ -146,8 +147,9 @@ static BROTLI_INLINE score_t BackwardReferencePenaltyUsingLastDistance( } static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem( - const BrotliDictionary* dictionary, size_t item, const uint8_t* data, - size_t max_length, size_t max_backward, HasherSearchResult* out) { + const BrotliEncoderDictionary* dictionary, size_t item, const uint8_t* data, + size_t max_length, size_t max_backward, size_t max_distance, + HasherSearchResult* out) { size_t len; size_t dist; size_t offset; @@ -156,24 +158,24 @@ static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem( score_t score; len = item & 0x1F; dist = item >> 5; - offset = dictionary->offsets_by_length[len] + len * dist; + offset = dictionary->words->offsets_by_length[len] + len * dist; if (len > max_length) { return BROTLI_FALSE; } matchlen = - FindMatchLengthWithLimit(data, &dictionary->data[offset], len); - if (matchlen + kCutoffTransformsCount <= len || matchlen == 0) { + FindMatchLengthWithLimit(data, &dictionary->words->data[offset], len); + if (matchlen + dictionary->cutoffTransformsCount <= len || matchlen == 0) { return BROTLI_FALSE; } { size_t cut = len - matchlen; - size_t transform_id = - (cut << 2) + (size_t)((kCutoffTransforms >> (cut * 6)) & 0x3F); + size_t transform_id = (cut << 2) + + (size_t)((dictionary->cutoffTransforms >> (cut * 6)) & 0x3F); backward = max_backward + dist + 1 + - (transform_id << dictionary->size_bits_by_length[len]); + (transform_id << dictionary->words->size_bits_by_length[len]); } - if (backward >= BROTLI_MAX_DISTANCE) { + if (backward > max_distance) { return BROTLI_FALSE; } score = BackwardReferenceScore(matchlen, backward); @@ -188,9 +190,10 @@ static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem( } static BROTLI_INLINE void SearchInStaticDictionary( - const BrotliDictionary* dictionary, const uint16_t* dictionary_hash, + const BrotliEncoderDictionary* dictionary, HasherHandle handle, const uint8_t* data, size_t max_length, - size_t max_backward, HasherSearchResult* out, BROTLI_BOOL shallow) { + size_t max_backward, size_t max_distance, + HasherSearchResult* out, BROTLI_BOOL shallow) { size_t key; size_t i; HasherCommon* self = GetHasherCommon(handle); @@ -199,11 +202,11 @@ static BROTLI_INLINE void SearchInStaticDictionary( } key = Hash14(data) << 1; for (i = 0; i < (shallow ? 1u : 2u); ++i, ++key) { - size_t item = dictionary_hash[key]; + size_t item = dictionary->hash_table[key]; self->dict_num_lookups++; if (item != 0) { BROTLI_BOOL item_matches = TestStaticDictionaryItem( - dictionary, item, data, max_length, max_backward, out); + dictionary, item, data, max_length, max_backward, max_distance, out); if (item_matches) { self->dict_num_matches++; } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h index 8f9ee7330de..41cb3ff03ac 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h @@ -28,8 +28,8 @@ static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; } static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; } /* HashBytes is the function that chooses the bucket to place the address in.*/ -static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t *data) { - const uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32; +static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* data) { + const uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32; /* The higher bits contain more mixture from the multiplication, so we take our results from there. */ return h >> (32 - BUCKET_BITS); @@ -115,7 +115,7 @@ static BROTLI_INLINE void FN(Store)(HasherHandle BROTLI_RESTRICT handle, } static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix_start, + const uint8_t* data, const size_t mask, const size_t ix_start, const size_t ix_end) { size_t i; for (i = ix_start; i < ix_end; ++i) { @@ -154,11 +154,12 @@ static BROTLI_INLINE void FN(PrepareDistanceCache)( Writes the best match into |out|. |out|->score is updated only if a better match is found. */ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, - const BrotliDictionary* dictionary, const uint16_t* dictionary_hash, + const BrotliEncoderDictionary* dictionary, const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix, const size_t max_length, const size_t max_backward, - const size_t gap, HasherSearchResult* BROTLI_RESTRICT out) { + const size_t gap, const size_t max_distance, + HasherSearchResult* BROTLI_RESTRICT out) { HashForgetfulChain* self = FN(Self)(handle); const size_t cur_ix_masked = cur_ix & ring_buffer_mask; /* Don't accept a short copy from far away. */ @@ -240,9 +241,9 @@ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, FN(Store)(handle, data, ring_buffer_mask, cur_ix); } if (out->score == min_score) { - SearchInStaticDictionary(dictionary, dictionary_hash, - handle, &data[cur_ix_masked], max_length, max_backward + gap, out, - BROTLI_FALSE); + SearchInStaticDictionary(dictionary, + handle, &data[cur_ix_masked], max_length, max_backward + gap, + max_distance, out, BROTLI_FALSE); } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h index 6b0697b2675..e099edf610c 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h @@ -20,7 +20,7 @@ static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 8; } static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; } /* HashBytes is the function that chooses the bucket to place the address in. */ -static BROTLI_INLINE uint32_t FN(HashBytes)(const uint8_t *data, +static BROTLI_INLINE uint32_t FN(HashBytes)(const uint8_t* data, const uint64_t mask, const int shift) { const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(data) & mask) * kHashMul64Long; @@ -105,7 +105,7 @@ static BROTLI_INLINE size_t FN(HashMemAllocInBytes)( /* Look at 4 bytes at &data[ix & mask]. Compute a hash from these, and store the value of ix at that position. */ -static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data, +static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data, const size_t mask, const size_t ix) { HashLongestMatch* self = FN(Self)(handle); uint16_t* num = FN(Num)(self); @@ -119,7 +119,7 @@ static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data, } static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix_start, + const uint8_t* data, const size_t mask, const size_t ix_start, const size_t ix_end) { size_t i; for (i = ix_start; i < ix_end; ++i) { @@ -158,11 +158,11 @@ static BROTLI_INLINE void FN(PrepareDistanceCache)( Writes the best match into |out|. |out|->score is updated only if a better match is found. */ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, - const BrotliDictionary* dictionary, const uint16_t* dictionary_hash, + const BrotliEncoderDictionary* dictionary, const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix, const size_t max_length, const size_t max_backward, const size_t gap, - HasherSearchResult* BROTLI_RESTRICT out) { + const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) { HasherCommon* common = GetHasherCommon(handle); HashLongestMatch* self = FN(Self)(handle); uint16_t* num = FN(Num)(self); @@ -257,9 +257,9 @@ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, ++num[key]; } if (min_score == out->score) { - SearchInStaticDictionary(dictionary, dictionary_hash, - handle, &data[cur_ix_masked], max_length, max_backward + gap, out, - BROTLI_FALSE); + SearchInStaticDictionary(dictionary, + handle, &data[cur_ix_masked], max_length, max_backward + gap, + max_distance, out, BROTLI_FALSE); } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h index dc5335f8edb..951d7a4b5a2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h @@ -20,8 +20,8 @@ static BROTLI_INLINE size_t FN(HashTypeLength)(void) { return 4; } static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; } /* HashBytes is the function that chooses the bucket to place the address in. */ -static uint32_t FN(HashBytes)(const uint8_t *data, const int shift) { - uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32; +static uint32_t FN(HashBytes)(const uint8_t* data, const int shift) { + uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32; /* The higher bits contain more mixture from the multiplication, so we take our results from there. */ return (uint32_t)(h >> shift); @@ -112,7 +112,7 @@ static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data, } static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix_start, + const uint8_t* data, const size_t mask, const size_t ix_start, const size_t ix_end) { size_t i; for (i = ix_start; i < ix_end; ++i) { @@ -151,11 +151,11 @@ static BROTLI_INLINE void FN(PrepareDistanceCache)( Writes the best match into |out|. |out|->score is updated only if a better match is found. */ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, - const BrotliDictionary* dictionary, const uint16_t* dictionary_hash, + const BrotliEncoderDictionary* dictionary, const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix, const size_t max_length, const size_t max_backward, const size_t gap, - HasherSearchResult* BROTLI_RESTRICT out) { + const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) { HasherCommon* common = GetHasherCommon(handle); HashLongestMatch* self = FN(Self)(handle); uint16_t* num = FN(Num)(self); @@ -249,9 +249,9 @@ static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle, ++num[key]; } if (min_score == out->score) { - SearchInStaticDictionary(dictionary, dictionary_hash, - handle, &data[cur_ix_masked], max_length, max_backward + gap, out, - BROTLI_FALSE); + SearchInStaticDictionary(dictionary, + handle, &data[cur_ix_masked], max_length, max_backward + gap, + max_distance, out, BROTLI_FALSE); } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h index 2c78351112a..a7b9639febf 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h @@ -81,7 +81,7 @@ static BROTLI_INLINE size_t FN(HashMemAllocInBytes)( Compute a hash from these, and store the value somewhere within [ix .. ix+3]. */ static BROTLI_INLINE void FN(Store)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix) { + const uint8_t* data, const size_t mask, const size_t ix) { const uint32_t key = FN(HashBytes)(&data[ix & mask]); /* Wiggle the value with the bucket sweep range. */ const uint32_t off = (ix >> 3) % BUCKET_SWEEP; @@ -89,7 +89,7 @@ static BROTLI_INLINE void FN(Store)(HasherHandle handle, } static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix_start, + const uint8_t* data, const size_t mask, const size_t ix_start, const size_t ix_end) { size_t i; for (i = ix_start; i < ix_end; ++i) { @@ -125,11 +125,12 @@ static BROTLI_INLINE void FN(PrepareDistanceCache)( Writes the best match into |out|. |out|->score is updated only if a better match is found. */ static BROTLI_INLINE void FN(FindLongestMatch)( - HasherHandle handle, const BrotliDictionary* dictionary, - const uint16_t* dictionary_hash, const uint8_t* BROTLI_RESTRICT data, + HasherHandle handle, const BrotliEncoderDictionary* dictionary, + const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix, const size_t max_length, const size_t max_backward, - const size_t gap, HasherSearchResult* BROTLI_RESTRICT out) { + const size_t gap, const size_t max_distance, + HasherSearchResult* BROTLI_RESTRICT out) { HashLongestMatchQuickly* self = FN(Self)(handle); const size_t best_len_in = out->len; const size_t cur_ix_masked = cur_ix & ring_buffer_mask; @@ -191,7 +192,7 @@ static BROTLI_INLINE void FN(FindLongestMatch)( } } } else { - uint32_t *bucket = self->buckets_ + key; + uint32_t* bucket = self->buckets_ + key; int i; prev_ix = *bucket++; for (i = 0; i < BUCKET_SWEEP; ++i, prev_ix = *bucket++) { @@ -221,9 +222,9 @@ static BROTLI_INLINE void FN(FindLongestMatch)( } } if (USE_DICTIONARY && min_score == out->score) { - SearchInStaticDictionary(dictionary, dictionary_hash, - handle, &data[cur_ix_masked], max_length, max_backward + gap, out, - BROTLI_TRUE); + SearchInStaticDictionary(dictionary, + handle, &data[cur_ix_masked], max_length, max_backward + gap, + max_distance, out, BROTLI_TRUE); } self->buckets_[key + ((cur_ix >> 3) % BUCKET_SWEEP)] = (uint32_t)cur_ix; } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h index 30c71b52f88..48097b178f5 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h @@ -24,8 +24,8 @@ static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return MAX_TREE_COMP_LENGTH; } -static uint32_t FN(HashBytes)(const uint8_t *data) { - uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32; +static uint32_t FN(HashBytes)(const uint8_t* data) { + uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32; /* The higher bits contain more mixture from the multiplication, so we take our results from there. */ return h >> (32 - BUCKET_BITS); @@ -154,12 +154,13 @@ static BROTLI_INLINE BackwardMatch* FN(StoreAndFindMatches)( { const size_t cur_len = BROTLI_MIN(size_t, best_len_left, best_len_right); size_t len; - assert(cur_len <= MAX_TREE_COMP_LENGTH); + BROTLI_DCHECK(cur_len <= MAX_TREE_COMP_LENGTH); len = cur_len + FindMatchLengthWithLimit(&data[cur_ix_masked + cur_len], &data[prev_ix_masked + cur_len], max_length - cur_len); - assert(0 == memcmp(&data[cur_ix_masked], &data[prev_ix_masked], len)); + BROTLI_DCHECK( + 0 == memcmp(&data[cur_ix_masked], &data[prev_ix_masked], len)); if (matches && len > *best_len) { *best_len = len; InitBackwardMatch(matches++, backward, len); @@ -199,7 +200,7 @@ static BROTLI_INLINE BackwardMatch* FN(StoreAndFindMatches)( sorted by strictly increasing length and (non-strictly) increasing distance. */ static BROTLI_INLINE size_t FN(FindAllMatches)(HasherHandle handle, - const BrotliDictionary* dictionary, const uint8_t* data, + const BrotliEncoderDictionary* dictionary, const uint8_t* data, const size_t ring_buffer_mask, const size_t cur_ix, const size_t max_length, const size_t max_backward, const size_t gap, const BrotliEncoderParams* params, BackwardMatch* matches) { @@ -251,7 +252,7 @@ static BROTLI_INLINE size_t FN(FindAllMatches)(HasherHandle handle, uint32_t dict_id = dict_matches[l]; if (dict_id < kInvalidMatch) { size_t distance = max_backward + gap + (dict_id >> 5) + 1; - if (distance < BROTLI_MAX_DISTANCE) { + if (distance <= params->dist.max_distance) { InitDictionaryBackwardMatch(matches++, distance, l, dict_id & 31); } } @@ -264,7 +265,7 @@ static BROTLI_INLINE size_t FN(FindAllMatches)(HasherHandle handle, /* Stores the hash of the next 4 bytes and re-roots the binary tree at the current sequence, without returning any matches. REQUIRES: ix + MAX_TREE_COMP_LENGTH <= end-of-current-block */ -static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data, +static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data, const size_t mask, const size_t ix) { HashToBinaryTree* self = FN(Self)(handle); /* Maximum distance is window size - 16, see section 9.1. of the spec. */ @@ -274,7 +275,7 @@ static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data, } static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle, - const uint8_t *data, const size_t mask, const size_t ix_start, + const uint8_t* data, const size_t mask, const size_t ix_start, const size_t ix_end) { size_t i = ix_start; size_t j = ix_start; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c index bb7b4c53626..6da2ff6bb43 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c @@ -8,9 +8,9 @@ #include "./histogram.h" +#include "../common/context.h" #include "./block_splitter.h" #include "./command.h" -#include "./context.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -63,13 +63,16 @@ void BrotliBuildHistogramsWithContext( BlockSplitIteratorNext(&insert_and_copy_it); HistogramAddCommand(&insert_and_copy_histograms[insert_and_copy_it.type_], cmd->cmd_prefix_); + /* TODO: unwrap iterator blocks. */ for (j = cmd->insert_len_; j != 0; --j) { size_t context; BlockSplitIteratorNext(&literal_it); - context = context_modes ? - ((literal_it.type_ << BROTLI_LITERAL_CONTEXT_BITS) + - Context(prev_byte, prev_byte2, context_modes[literal_it.type_])) : - literal_it.type_; + context = literal_it.type_; + if (context_modes) { + ContextLut lut = BROTLI_CONTEXT_LUT(context_modes[context]); + context = (context << BROTLI_LITERAL_CONTEXT_BITS) + + BROTLI_CONTEXT(prev_byte, prev_byte2, lut); + } HistogramAddLiteral(&literal_histograms[context], ringbuffer[pos & mask]); prev_byte2 = prev_byte; @@ -86,7 +89,7 @@ void BrotliBuildHistogramsWithContext( context = (dist_it.type_ << BROTLI_DISTANCE_CONTEXT_BITS) + CommandDistanceContext(cmd); HistogramAddDistance(©_dist_histograms[context], - cmd->dist_prefix_); + cmd->dist_prefix_ & 0x3FF); } } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h index 2161574b3bb..42af3c3f9d1 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h @@ -12,16 +12,19 @@ #include <string.h> /* memset */ #include "../common/constants.h" +#include "../common/context.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./block_splitter.h" #include "./command.h" -#include "./context.h" -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif +/* The distance symbols effectively used by "Large Window Brotli" (32-bit). */ +#define BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 544 + #define FN(X) X ## Literal #define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS #define DataType uint8_t @@ -38,7 +41,7 @@ extern "C" { #undef FN #define FN(X) X ## Distance -#define DATA_SIZE BROTLI_NUM_DISTANCE_SYMBOLS +#define DATA_SIZE BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS #include "./histogram_inc.h" /* NOLINT(build/include) */ #undef DataType #undef DATA_SIZE diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h index 78070368c5e..50eaf7468da 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h @@ -33,7 +33,7 @@ static BROTLI_INLINE void FN(HistogramAdd)(FN(Histogram)* self, size_t val) { } static BROTLI_INLINE void FN(HistogramAddVector)(FN(Histogram)* self, - const DataType *p, size_t n) { + const DataType* p, size_t n) { self->total_count_ += n; n += 1; while (--n) ++self->data_[*p++]; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c index 91c691cd437..c231100e341 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c @@ -9,9 +9,9 @@ #include "./literal_cost.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./fast_log.h" -#include "./port.h" #include "./utf8_util.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -25,7 +25,7 @@ static size_t UTF8Position(size_t last, size_t c, size_t clamp) { return BROTLI_MIN(size_t, 1, clamp); } else { /* Let's decide over the last byte if this ends the sequence. */ - if (last < 0xe0) { + if (last < 0xE0) { return 0; /* Completed two or three byte coding. */ } else { /* Next one is the 'Byte 3' of utf-8 encoding. */ return BROTLI_MIN(size_t, 2, clamp); @@ -34,7 +34,7 @@ static size_t UTF8Position(size_t last, size_t c, size_t clamp) { } static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask, - const uint8_t *data) { + const uint8_t* data) { size_t counts[3] = { 0 }; size_t max_utf8 = 1; /* should be 2, but 1 compresses better. */ size_t last_c = 0; @@ -54,7 +54,7 @@ static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask, } static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask, - const uint8_t *data, float *cost) { + const uint8_t* data, float* cost) { /* max_utf8 is 0 (normal ASCII single byte modeling), 1 (for 2-byte UTF-8 modeling), or 2 (for 3-byte UTF-8 modeling). */ const size_t max_utf8 = DecideMultiByteStatsLevel(pos, len, mask, data); @@ -125,7 +125,7 @@ static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask, } void BrotliEstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask, - const uint8_t *data, float *cost) { + const uint8_t* data, float* cost) { if (BrotliIsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio)) { EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost); return; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h index 7b3d030d2ee..8f53f39d3f2 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h @@ -10,8 +10,8 @@ #ifndef BROTLI_ENC_LITERAL_COST_H_ #define BROTLI_ENC_LITERAL_COST_H_ +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -21,7 +21,7 @@ extern "C" { ring-buffer (data, mask) will take entropy coded and writes these estimates to the cost[0..len) array. */ BROTLI_INTERNAL void BrotliEstimateBitCostsForLiterals( - size_t pos, size_t len, size_t mask, const uint8_t *data, float *cost); + size_t pos, size_t len, size_t mask, const uint8_t* data, float* cost); #if defined(__cplusplus) || defined(c_plusplus) } /* extern "C" */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c index 5aa5a2246b3..f6ed7e3cb75 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c @@ -9,12 +9,11 @@ #include "./memory.h" -#include <assert.h> #include <stdlib.h> /* exit, free, malloc */ #include <string.h> /* memcpy */ +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -28,22 +27,12 @@ extern "C" { #define NEW_ALLOCATED_OFFSET MAX_PERM_ALLOCATED #define NEW_FREED_OFFSET (MAX_PERM_ALLOCATED + MAX_NEW_ALLOCATED) -static void* DefaultAllocFunc(void* opaque, size_t size) { - BROTLI_UNUSED(opaque); - return malloc(size); -} - -static void DefaultFreeFunc(void* opaque, void* address) { - BROTLI_UNUSED(opaque); - free(address); -} - void BrotliInitMemoryManager( MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) { if (!alloc_func) { - m->alloc_func = DefaultAllocFunc; - m->free_func = DefaultFreeFunc; + m->alloc_func = BrotliDefaultAllocFunc; + m->free_func = BrotliDefaultFreeFunc; m->opaque = 0; } else { m->alloc_func = alloc_func; @@ -132,11 +121,11 @@ static void CollectGarbagePointers(MemoryManager* m) { m->pointers + NEW_FREED_OFFSET, m->new_freed); m->perm_allocated -= annihilated; m->new_freed -= annihilated; - assert(m->new_freed == 0); + BROTLI_DCHECK(m->new_freed == 0); } if (m->new_allocated != 0) { - assert(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED); + BROTLI_DCHECK(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED); memcpy(m->pointers + PERM_ALLOCATED_OFFSET + m->perm_allocated, m->pointers + NEW_ALLOCATED_OFFSET, sizeof(void*) * m->new_allocated); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h index babf1f80b19..2d56e97961a 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h @@ -9,8 +9,10 @@ #ifndef BROTLI_ENC_MEMORY_H_ #define BROTLI_ENC_MEMORY_H_ +#include <string.h> /* memcpy */ + +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -56,6 +58,28 @@ BROTLI_INTERNAL void BrotliFree(MemoryManager* m, void* p); BROTLI_INTERNAL void BrotliWipeOutMemoryManager(MemoryManager* m); +/* +Dynamically grows array capacity to at least the requested size +M: MemoryManager +T: data type +A: array +C: capacity +R: requested size +*/ +#define BROTLI_ENSURE_CAPACITY(M, T, A, C, R) { \ + if (C < (R)) { \ + size_t _new_size = (C == 0) ? (R) : C; \ + T* new_array; \ + while (_new_size < (R)) _new_size *= 2; \ + new_array = BROTLI_ALLOC((M), T, _new_size); \ + if (!BROTLI_IS_OOM(M) && C != 0) \ + memcpy(new_array, A, C * sizeof(T)); \ + BROTLI_FREE((M), A); \ + A = new_array; \ + C = _new_size; \ + } \ +} + #if defined(__cplusplus) || defined(c_plusplus) } /* extern "C" */ #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c index 1db76da0067..621929291f4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c @@ -10,15 +10,15 @@ #include "./metablock.h" #include "../common/constants.h" +#include "../common/context.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./bit_cost.h" #include "./block_splitter.h" #include "./cluster.h" -#include "./context.h" #include "./entropy_encode.h" #include "./histogram.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -77,7 +77,7 @@ void BrotliBuildMetaBlock(MemoryManager* m, if (BROTLI_IS_OOM(m)) return; ClearHistogramsDistance(distance_histograms, distance_histograms_size); - assert(mb->command_histograms == 0); + BROTLI_DCHECK(mb->command_histograms == 0); mb->command_histograms_size = mb->command_split.num_types; mb->command_histograms = BROTLI_ALLOC(m, HistogramCommand, mb->command_histograms_size); @@ -90,14 +90,14 @@ void BrotliBuildMetaBlock(MemoryManager* m, literal_histograms, mb->command_histograms, distance_histograms); BROTLI_FREE(m, literal_context_modes); - assert(mb->literal_context_map == 0); + BROTLI_DCHECK(mb->literal_context_map == 0); mb->literal_context_map_size = mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS; mb->literal_context_map = BROTLI_ALLOC(m, uint32_t, mb->literal_context_map_size); if (BROTLI_IS_OOM(m)) return; - assert(mb->literal_histograms == 0); + BROTLI_DCHECK(mb->literal_histograms == 0); mb->literal_histograms_size = mb->literal_context_map_size; mb->literal_histograms = BROTLI_ALLOC(m, HistogramLiteral, mb->literal_histograms_size); @@ -121,14 +121,14 @@ void BrotliBuildMetaBlock(MemoryManager* m, } } - assert(mb->distance_context_map == 0); + BROTLI_DCHECK(mb->distance_context_map == 0); mb->distance_context_map_size = mb->distance_split.num_types << BROTLI_DISTANCE_CONTEXT_BITS; mb->distance_context_map = BROTLI_ALLOC(m, uint32_t, mb->distance_context_map_size); if (BROTLI_IS_OOM(m)) return; - assert(mb->distance_histograms == 0); + BROTLI_DCHECK(mb->distance_histograms == 0); mb->distance_histograms_size = mb->distance_context_map_size; mb->distance_histograms = BROTLI_ALLOC(m, HistogramDistance, mb->distance_histograms_size); @@ -200,7 +200,7 @@ static void InitContextBlockSplitter( size_t* histograms_size) { size_t max_num_blocks = num_symbols / min_block_size + 1; size_t max_num_types; - assert(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS); + BROTLI_DCHECK(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS); self->alphabet_size_ = alphabet_size; self->num_contexts_ = num_contexts; @@ -226,7 +226,7 @@ static void InitContextBlockSplitter( if (BROTLI_IS_OOM(m)) return; split->num_blocks = max_num_blocks; if (BROTLI_IS_OOM(m)) return; - assert(*histograms == 0); + BROTLI_DCHECK(*histograms == 0); *histograms_size = max_num_types * num_contexts; *histograms = BROTLI_ALLOC(m, HistogramLiteral, *histograms_size); self->histograms_ = *histograms; @@ -379,7 +379,7 @@ static void MapStaticContexts(MemoryManager* m, const uint32_t* static_context_map, MetaBlockSplit* mb) { size_t i; - assert(mb->literal_context_map == 0); + BROTLI_DCHECK(mb->literal_context_map == 0); mb->literal_context_map_size = mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS; mb->literal_context_map = @@ -398,9 +398,9 @@ static void MapStaticContexts(MemoryManager* m, static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal( MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask, - uint8_t prev_byte, uint8_t prev_byte2, ContextType literal_context_mode, + uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut, const size_t num_contexts, const uint32_t* static_context_map, - const Command *commands, size_t n_commands, MetaBlockSplit* mb) { + const Command* commands, size_t n_commands, MetaBlockSplit* mb) { union { BlockSplitterLiteral plain; ContextBlockSplitter ctx; @@ -441,7 +441,8 @@ static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal( if (num_contexts == 1) { BlockSplitterAddSymbolLiteral(&lit_blocks.plain, literal); } else { - size_t context = Context(prev_byte, prev_byte2, literal_context_mode); + size_t context = + BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut); ContextBlockSplitterAddSymbol(&lit_blocks.ctx, m, literal, static_context_map[context]); if (BROTLI_IS_OOM(m)) return; @@ -455,7 +456,7 @@ static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal( prev_byte2 = ringbuffer[(pos - 2) & mask]; prev_byte = ringbuffer[(pos - 1) & mask]; if (cmd.cmd_prefix_ >= 128) { - BlockSplitterAddSymbolDistance(&dist_blocks, cmd.dist_prefix_); + BlockSplitterAddSymbolDistance(&dist_blocks, cmd.dist_prefix_ & 0x3FF); } } } @@ -482,7 +483,7 @@ void BrotliBuildMetaBlockGreedy(MemoryManager* m, size_t mask, uint8_t prev_byte, uint8_t prev_byte2, - ContextType literal_context_mode, + ContextLut literal_context_lut, size_t num_contexts, const uint32_t* static_context_map, const Command* commands, @@ -490,19 +491,17 @@ void BrotliBuildMetaBlockGreedy(MemoryManager* m, MetaBlockSplit* mb) { if (num_contexts == 1) { BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte, - prev_byte2, literal_context_mode, 1, NULL, commands, n_commands, mb); + prev_byte2, literal_context_lut, 1, NULL, commands, n_commands, mb); } else { BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte, - prev_byte2, literal_context_mode, num_contexts, static_context_map, + prev_byte2, literal_context_lut, num_contexts, static_context_map, commands, n_commands, mb); } } -void BrotliOptimizeHistograms(size_t num_direct_distance_codes, - size_t distance_postfix_bits, +void BrotliOptimizeHistograms(uint32_t num_distance_codes, MetaBlockSplit* mb) { uint8_t good_for_rle[BROTLI_NUM_COMMAND_SYMBOLS]; - size_t num_distance_codes; size_t i; for (i = 0; i < mb->literal_histograms_size; ++i) { BrotliOptimizeHuffmanCountsForRle(256, mb->literal_histograms[i].data_, @@ -513,9 +512,6 @@ void BrotliOptimizeHistograms(size_t num_direct_distance_codes, mb->command_histograms[i].data_, good_for_rle); } - num_distance_codes = BROTLI_NUM_DISTANCE_SHORT_CODES + - num_direct_distance_codes + - ((2 * BROTLI_MAX_DISTANCE_BITS) << distance_postfix_bits); for (i = 0; i < mb->distance_histograms_size; ++i) { BrotliOptimizeHuffmanCountsForRle(num_distance_codes, mb->distance_histograms[i].data_, diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h index cc523999cda..76a65940a92 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h @@ -10,13 +10,13 @@ #ifndef BROTLI_ENC_METABLOCK_H_ #define BROTLI_ENC_METABLOCK_H_ +#include "../common/context.h" +#include "../common/platform.h" #include <brotli/types.h> #include "./block_splitter.h" #include "./command.h" -#include "./context.h" #include "./histogram.h" #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -85,12 +85,11 @@ BROTLI_INTERNAL void BrotliBuildMetaBlock(MemoryManager* m, is the same for all block types. */ BROTLI_INTERNAL void BrotliBuildMetaBlockGreedy( MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask, - uint8_t prev_byte, uint8_t prev_byte2, ContextType literal_context_mode, + uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut, size_t num_contexts, const uint32_t* static_context_map, const Command* commands, size_t n_commands, MetaBlockSplit* mb); -BROTLI_INTERNAL void BrotliOptimizeHistograms(size_t num_direct_distance_codes, - size_t distance_postfix_bits, +BROTLI_INTERNAL void BrotliOptimizeHistograms(uint32_t num_distance_codes, MetaBlockSplit* mb); #if defined(__cplusplus) || defined(c_plusplus) diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h index c8bfb81281c..dcc9d3c4a64 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h @@ -67,7 +67,7 @@ static void FN(InitBlockSplitter)( split->lengths, split->lengths_alloc_size, max_num_blocks); if (BROTLI_IS_OOM(m)) return; self->split_->num_blocks = max_num_blocks; - assert(*histograms == 0); + BROTLI_DCHECK(*histograms == 0); *histograms_size = max_num_types; *histograms = BROTLI_ALLOC(m, HistogramType, *histograms_size); self->histograms_ = *histograms; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h new file mode 100644 index 00000000000..9bcf2361219 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h @@ -0,0 +1,44 @@ +/* Copyright 2017 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +/* Parameters for the Brotli encoder with chosen quality levels. */ + +#ifndef BROTLI_ENC_PARAMS_H_ +#define BROTLI_ENC_PARAMS_H_ + +#include <brotli/encode.h> +#include "./encoder_dict.h" + +typedef struct BrotliHasherParams { + int type; + int bucket_bits; + int block_bits; + int hash_len; + int num_last_distances_to_check; +} BrotliHasherParams; + +typedef struct BrotliDistanceParams { + uint32_t num_direct_distance_codes; + uint32_t distance_postfix_bits; + uint32_t alphabet_size; + size_t max_distance; +} BrotliDistanceParams; + +/* Encoding parameters */ +typedef struct BrotliEncoderParams { + BrotliEncoderMode mode; + int quality; + int lgwin; + int lgblock; + size_t size_hint; + BROTLI_BOOL disable_literal_context_modeling; + BROTLI_BOOL large_window; + BrotliHasherParams hasher; + BrotliDistanceParams dist; + BrotliEncoderDictionary dictionary; +} BrotliEncoderParams; + +#endif /* BROTLI_ENC_PARAMS_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h index e279ffe7f88..fd359a478d4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h @@ -11,7 +11,7 @@ #define BROTLI_ENC_PREFIX_H_ #include "../common/constants.h" -#include <brotli/port.h> +#include "../common/platform.h" #include <brotli/types.h> #include "./fast_log.h" @@ -39,11 +39,10 @@ static BROTLI_INLINE void PrefixEncodeCopyDistance(size_t distance_code, size_t prefix = (dist >> bucket) & 1; size_t offset = (2 + prefix) << bucket; size_t nbits = bucket - postfix_bits; - *code = (uint16_t)( + *code = (uint16_t)((nbits << 10) | (BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_codes + ((2 * (nbits - 1) + prefix) << postfix_bits) + postfix)); - *extra_bits = (uint32_t)( - (nbits << 24) | ((dist - offset) >> postfix_bits)); + *extra_bits = (uint32_t)((dist - offset) >> postfix_bits); } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h index 5791470510f..f9b11117381 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h @@ -10,8 +10,9 @@ #ifndef BROTLI_ENC_QUALITY_H_ #define BROTLI_ENC_QUALITY_H_ +#include "../common/platform.h" #include <brotli/encode.h> -#include "./port.h" +#include "./params.h" #define FAST_ONE_PASS_COMPRESSION_QUALITY 0 #define FAST_TWO_PASS_COMPRESSION_QUALITY 1 @@ -30,26 +31,7 @@ /* For quality below MIN_QUALITY_FOR_BLOCK_SPLIT there is no block splitting, so we buffer at most this much literals and commands. */ -#define MAX_NUM_DELAYED_SYMBOLS 0x2fff - -typedef struct BrotliHasherParams { - int type; - int bucket_bits; - int block_bits; - int hash_len; - int num_last_distances_to_check; -} BrotliHasherParams; - -/* Encoding parameters */ -typedef struct BrotliEncoderParams { - BrotliEncoderMode mode; - int quality; - int lgwin; - int lgblock; - size_t size_hint; - BROTLI_BOOL disable_literal_context_modeling; - BrotliHasherParams hasher; -} BrotliEncoderParams; +#define MAX_NUM_DELAYED_SYMBOLS 0x2FFF /* Returns hash-table size for quality levels 0 and 1. */ static BROTLI_INLINE size_t MaxHashTableSize(int quality) { @@ -78,10 +60,15 @@ static BROTLI_INLINE size_t MaxZopfliCandidates( static BROTLI_INLINE void SanitizeParams(BrotliEncoderParams* params) { params->quality = BROTLI_MIN(int, BROTLI_MAX_QUALITY, BROTLI_MAX(int, BROTLI_MIN_QUALITY, params->quality)); + if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) { + params->large_window = BROTLI_FALSE; + } if (params->lgwin < BROTLI_MIN_WINDOW_BITS) { params->lgwin = BROTLI_MIN_WINDOW_BITS; - } else if (params->lgwin > BROTLI_MAX_WINDOW_BITS) { - params->lgwin = BROTLI_MAX_WINDOW_BITS; + } else { + int max_lgwin = params->large_window ? BROTLI_LARGE_MAX_WINDOW_BITS : + BROTLI_MAX_WINDOW_BITS; + if (params->lgwin > max_lgwin) params->lgwin = max_lgwin; } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h index 0e7ef977a44..86079a89d35 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h @@ -11,9 +11,9 @@ #include <string.h> /* memcpy */ +#include "../common/platform.h" #include <brotli/types.h> #include "./memory.h" -#include "./port.h" #include "./quality.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -41,9 +41,9 @@ typedef struct RingBuffer { uint32_t pos_; /* The actual ring buffer containing the copy of the last two bytes, the data, and the copy of the beginning as a tail. */ - uint8_t *data_; + uint8_t* data_; /* The start of the ring-buffer. */ - uint8_t *buffer_; + uint8_t* buffer_; } RingBuffer; static BROTLI_INLINE void RingBufferInit(RingBuffer* rb) { @@ -91,7 +91,7 @@ static BROTLI_INLINE void RingBufferInitBuffer( } static BROTLI_INLINE void RingBufferWriteTail( - const uint8_t *bytes, size_t n, RingBuffer* rb) { + const uint8_t* bytes, size_t n, RingBuffer* rb) { const size_t masked_pos = rb->pos_ & rb->mask_; if (BROTLI_PREDICT_FALSE(masked_pos < rb->tail_size_)) { /* Just fill the tail buffer with the beginning data. */ @@ -103,7 +103,7 @@ static BROTLI_INLINE void RingBufferWriteTail( /* Push bytes into the ring buffer. */ static BROTLI_INLINE void RingBufferWrite( - MemoryManager* m, const uint8_t *bytes, size_t n, RingBuffer* rb) { + MemoryManager* m, const uint8_t* bytes, size_t n, RingBuffer* rb) { if (rb->pos_ == 0 && n < rb->tail_size_) { /* Special case for the first write: to process the first block, we don't need to allocate the whole ring-buffer and we don't need the tail @@ -144,12 +144,16 @@ static BROTLI_INLINE void RingBufferWrite( n - (rb->size_ - masked_pos)); } } - rb->buffer_[-2] = rb->buffer_[rb->size_ - 2]; - rb->buffer_[-1] = rb->buffer_[rb->size_ - 1]; - rb->pos_ += (uint32_t)n; - if (rb->pos_ > (1u << 30)) { - /* Wrap, but preserve not-a-first-lap feature. */ - rb->pos_ = (rb->pos_ & ((1u << 30) - 1)) | (1u << 30); + { + BROTLI_BOOL not_first_lap = (rb->pos_ & (1u << 31)) != 0; + uint32_t rb_pos_mask = (1u << 31) - 1; + rb->buffer_[-2] = rb->buffer_[rb->size_ - 2]; + rb->buffer_[-1] = rb->buffer_[rb->size_ - 1]; + rb->pos_ = (rb->pos_ & rb_pos_mask) + (uint32_t)(n & rb_pos_mask); + if (not_first_lap) { + /* Wrap, but preserve not-a-first-lap feature. */ + rb->pos_ |= 1u << 31; + } } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c index b98ee8becdd..758ef80edde 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c @@ -7,21 +7,22 @@ #include "./static_dict.h" #include "../common/dictionary.h" +#include "../common/platform.h" +#include "../common/transform.h" +#include "./encoder_dict.h" #include "./find_match_length.h" -#include "./port.h" -#include "./static_dict_lut.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif -static const uint8_t kUppercaseFirst = 10; +/* TODO: use BrotliTransforms.cutOffTransforms instead. */ static const uint8_t kOmitLastNTransforms[10] = { 0, 12, 27, 23, 42, 63, 56, 48, 59, 64, }; -static BROTLI_INLINE uint32_t Hash(const uint8_t *data) { - uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kDictHashMul32; +static BROTLI_INLINE uint32_t Hash(const uint8_t* data) { + uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kDictHashMul32; /* The higher bits contain more mixture from the multiplication, so we take our results from there. */ return h >> (32 - kDictNumBits); @@ -79,32 +80,33 @@ static BROTLI_INLINE BROTLI_BOOL IsMatch(const BrotliDictionary* dictionary, } BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( - const BrotliDictionary* dictionary, const uint8_t* data, size_t min_length, - size_t max_length, uint32_t* matches) { + const BrotliEncoderDictionary* dictionary, const uint8_t* data, + size_t min_length, size_t max_length, uint32_t* matches) { BROTLI_BOOL has_found_match = BROTLI_FALSE; { - size_t offset = kStaticDictionaryBuckets[Hash(data)]; + size_t offset = dictionary->buckets[Hash(data)]; BROTLI_BOOL end = !offset; while (!end) { - DictWord w = kStaticDictionaryWords[offset++]; + DictWord w = dictionary->dict_words[offset++]; const size_t l = w.len & 0x1F; - const size_t n = (size_t)1 << dictionary->size_bits_by_length[l]; + const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l]; const size_t id = w.idx; end = !!(w.len & 0x80); w.len = (uint8_t)l; if (w.transform == 0) { const size_t matchlen = - DictMatchLength(dictionary, data, id, l, max_length); + DictMatchLength(dictionary->words, data, id, l, max_length); const uint8_t* s; size_t minlen; size_t maxlen; size_t len; - /* Transform "" + kIdentity + "" */ + /* Transform "" + BROTLI_TRANSFORM_IDENTITY + "" */ if (matchlen == l) { AddMatch(id, l, l, matches); has_found_match = BROTLI_TRUE; } - /* Transforms "" + kOmitLast1 + "" and "" + kOmitLast1 + "ing " */ + /* Transforms "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "" and + "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "ing " */ if (matchlen >= l - 1) { AddMatch(id + 12 * n, l - 1, l, matches); if (l + 2 < max_length && @@ -114,7 +116,7 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( } has_found_match = BROTLI_TRUE; } - /* Transform "" + kOmitLastN + "" (N = 2 .. 9) */ + /* Transform "" + BROTLI_TRANSFORM_OMIT_LAST_# + "" (# = 2 .. 9) */ minlen = min_length; if (l > 9) minlen = BROTLI_MAX(size_t, minlen, l - 9); maxlen = BROTLI_MIN(size_t, matchlen, l - 2); @@ -126,7 +128,7 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( continue; } s = &data[l]; - /* Transforms "" + kIdentity + <suffix> */ + /* Transforms "" + BROTLI_TRANSFORM_IDENTITY + <suffix> */ if (s[0] == ' ') { AddMatch(id + n, l + 1, l, matches); if (s[1] == 'a') { @@ -273,12 +275,13 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( } } } else { - /* Set is_all_caps=0 for kUppercaseFirst and - is_all_caps=1 otherwise (kUppercaseAll) transform. */ + /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and + is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL) + transform. */ const BROTLI_BOOL is_all_caps = - TO_BROTLI_BOOL(w.transform != kUppercaseFirst); + TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST); const uint8_t* s; - if (!IsMatch(dictionary, w, data, max_length)) { + if (!IsMatch(dictionary->words, w, data, max_length)) { continue; } /* Transform "" + kUppercase{First,All} + "" */ @@ -323,27 +326,29 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( /* Transforms with prefixes " " and "." */ if (max_length >= 5 && (data[0] == ' ' || data[0] == '.')) { BROTLI_BOOL is_space = TO_BROTLI_BOOL(data[0] == ' '); - size_t offset = kStaticDictionaryBuckets[Hash(&data[1])]; + size_t offset = dictionary->buckets[Hash(&data[1])]; BROTLI_BOOL end = !offset; while (!end) { - DictWord w = kStaticDictionaryWords[offset++]; + DictWord w = dictionary->dict_words[offset++]; const size_t l = w.len & 0x1F; - const size_t n = (size_t)1 << dictionary->size_bits_by_length[l]; + const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l]; const size_t id = w.idx; end = !!(w.len & 0x80); w.len = (uint8_t)l; if (w.transform == 0) { const uint8_t* s; - if (!IsMatch(dictionary, w, &data[1], max_length - 1)) { + if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) { continue; } - /* Transforms " " + kIdentity + "" and "." + kIdentity + "" */ + /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + "" and + "." + BROTLI_TRANSFORM_IDENTITY + "" */ AddMatch(id + (is_space ? 6 : 32) * n, l + 1, l, matches); has_found_match = BROTLI_TRUE; if (l + 2 >= max_length) { continue; } - /* Transforms " " + kIdentity + <suffix> and "." + kIdentity + <suffix> + /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + <suffix> and + "." + BROTLI_TRANSFORM_IDENTITY + <suffix> */ s = &data[l + 1]; if (s[0] == ' ') { @@ -370,12 +375,13 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( } } } else if (is_space) { - /* Set is_all_caps=0 for kUppercaseFirst and - is_all_caps=1 otherwise (kUppercaseAll) transform. */ + /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and + is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL) + transform. */ const BROTLI_BOOL is_all_caps = - TO_BROTLI_BOOL(w.transform != kUppercaseFirst); + TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST); const uint8_t* s; - if (!IsMatch(dictionary, w, &data[1], max_length - 1)) { + if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) { continue; } /* Transforms " " + kUppercase{First,All} + "" */ @@ -411,22 +417,22 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( } } if (max_length >= 6) { - /* Transforms with prefixes "e ", "s ", ", " and "\xc2\xa0" */ + /* Transforms with prefixes "e ", "s ", ", " and "\xC2\xA0" */ if ((data[1] == ' ' && (data[0] == 'e' || data[0] == 's' || data[0] == ',')) || - (data[0] == 0xc2 && data[1] == 0xa0)) { - size_t offset = kStaticDictionaryBuckets[Hash(&data[2])]; + (data[0] == 0xC2 && data[1] == 0xA0)) { + size_t offset = dictionary->buckets[Hash(&data[2])]; BROTLI_BOOL end = !offset; while (!end) { - DictWord w = kStaticDictionaryWords[offset++]; + DictWord w = dictionary->dict_words[offset++]; const size_t l = w.len & 0x1F; - const size_t n = (size_t)1 << dictionary->size_bits_by_length[l]; + const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l]; const size_t id = w.idx; end = !!(w.len & 0x80); w.len = (uint8_t)l; if (w.transform == 0 && - IsMatch(dictionary, w, &data[2], max_length - 2)) { - if (data[0] == 0xc2) { + IsMatch(dictionary->words, w, &data[2], max_length - 2)) { + if (data[0] == 0xC2) { AddMatch(id + 102 * n, l + 2, l, matches); has_found_match = BROTLI_TRUE; } else if (l + 2 < max_length && data[l + 2] == ' ') { @@ -444,17 +450,17 @@ BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( data[3] == 'e' && data[4] == ' ') || (data[0] == '.' && data[1] == 'c' && data[2] == 'o' && data[3] == 'm' && data[4] == '/')) { - size_t offset = kStaticDictionaryBuckets[Hash(&data[5])]; + size_t offset = dictionary->buckets[Hash(&data[5])]; BROTLI_BOOL end = !offset; while (!end) { - DictWord w = kStaticDictionaryWords[offset++]; + DictWord w = dictionary->dict_words[offset++]; const size_t l = w.len & 0x1F; - const size_t n = (size_t)1 << dictionary->size_bits_by_length[l]; + const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l]; const size_t id = w.idx; end = !!(w.len & 0x80); w.len = (uint8_t)l; if (w.transform == 0 && - IsMatch(dictionary, w, &data[5], max_length - 5)) { + IsMatch(dictionary->words, w, &data[5], max_length - 5)) { AddMatch(id + (data[0] == ' ' ? 41 : 72) * n, l + 5, l, matches); has_found_match = BROTLI_TRUE; if (l + 5 < max_length) { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h index fb74b13368c..6b5d4eb0c98 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h @@ -10,15 +10,16 @@ #define BROTLI_ENC_STATIC_DICT_H_ #include "../common/dictionary.h" +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" +#include "./encoder_dict.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif #define BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN 37 -static const uint32_t kInvalidMatch = 0xfffffff; +static const uint32_t kInvalidMatch = 0xFFFFFFF; /* Matches data against static dictionary words, and for each length l, for which a match is found, updates matches[l] to be the minimum possible @@ -28,7 +29,7 @@ static const uint32_t kInvalidMatch = 0xfffffff; matches array is at least BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN + 1 long all elements are initialized to kInvalidMatch */ BROTLI_INTERNAL BROTLI_BOOL BrotliFindAllStaticDictionaryMatches( - const BrotliDictionary* dictionary, + const BrotliEncoderDictionary* dictionary, const uint8_t* data, size_t min_length, size_t max_length, uint32_t* matches); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h index ba94f76b28c..e299cda6d82 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h @@ -23,7 +23,7 @@ typedef struct DictWord { } DictWord; static const int kDictNumBits = 15; -static const uint32_t kDictHashMul32 = 0x1e35a7bd; +static const uint32_t kDictHashMul32 = 0x1E35A7BD; static const uint16_t kStaticDictionaryBuckets[32768] = { 1,0,0,0,0,0,0,0,0,3,6,0,0,0,0,0,20,0,0,0,21,0,22,0,0,0,0,0,0,0,0,23,0,0,25,0,29, diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c index a334927f369..04a7805161b 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c @@ -25,37 +25,37 @@ static size_t BrotliParseAsUTF8( } /* 2-byte UTF8 */ if (size > 1u && - (input[0] & 0xe0) == 0xc0 && - (input[1] & 0xc0) == 0x80) { - *symbol = (((input[0] & 0x1f) << 6) | - (input[1] & 0x3f)); - if (*symbol > 0x7f) { + (input[0] & 0xE0) == 0xC0 && + (input[1] & 0xC0) == 0x80) { + *symbol = (((input[0] & 0x1F) << 6) | + (input[1] & 0x3F)); + if (*symbol > 0x7F) { return 2; } } /* 3-byte UFT8 */ if (size > 2u && - (input[0] & 0xf0) == 0xe0 && - (input[1] & 0xc0) == 0x80 && - (input[2] & 0xc0) == 0x80) { - *symbol = (((input[0] & 0x0f) << 12) | - ((input[1] & 0x3f) << 6) | - (input[2] & 0x3f)); - if (*symbol > 0x7ff) { + (input[0] & 0xF0) == 0xE0 && + (input[1] & 0xC0) == 0x80 && + (input[2] & 0xC0) == 0x80) { + *symbol = (((input[0] & 0x0F) << 12) | + ((input[1] & 0x3F) << 6) | + (input[2] & 0x3F)); + if (*symbol > 0x7FF) { return 3; } } /* 4-byte UFT8 */ if (size > 3u && - (input[0] & 0xf8) == 0xf0 && - (input[1] & 0xc0) == 0x80 && - (input[2] & 0xc0) == 0x80 && - (input[3] & 0xc0) == 0x80) { + (input[0] & 0xF8) == 0xF0 && + (input[1] & 0xC0) == 0x80 && + (input[2] & 0xC0) == 0x80 && + (input[3] & 0xC0) == 0x80) { *symbol = (((input[0] & 0x07) << 18) | - ((input[1] & 0x3f) << 12) | - ((input[2] & 0x3f) << 6) | - (input[3] & 0x3f)); - if (*symbol > 0xffff && *symbol <= 0x10ffff) { + ((input[1] & 0x3F) << 12) | + ((input[2] & 0x3F) << 6) | + (input[3] & 0x3F)); + if (*symbol > 0xFFFF && *symbol <= 0x10FFFF) { return 4; } } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h index 2ede131ed30..8fda80c2203 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h @@ -9,8 +9,8 @@ #ifndef BROTLI_ENC_UTF8_UTIL_H_ #define BROTLI_ENC_UTF8_UTIL_H_ +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h index 83fdddc26f6..7733d925b1c 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h @@ -9,11 +9,8 @@ #ifndef BROTLI_ENC_WRITE_BITS_H_ #define BROTLI_ENC_WRITE_BITS_H_ -#include <assert.h> -#include <stdio.h> /* printf */ - +#include "../common/platform.h" #include <brotli/types.h> -#include "./port.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -38,27 +35,27 @@ extern "C" { and locate the rest in BYTE+1, BYTE+2, etc. */ static BROTLI_INLINE void BrotliWriteBits(size_t n_bits, uint64_t bits, - size_t * BROTLI_RESTRICT pos, - uint8_t * BROTLI_RESTRICT array) { + size_t* BROTLI_RESTRICT pos, + uint8_t* BROTLI_RESTRICT array) { #ifdef BROTLI_LITTLE_ENDIAN /* This branch of the code can write up to 56 bits at a time, 7 bits are lost by being perhaps already in *p and at least 1 bit is needed to initialize the bit-stream ahead (i.e. if 7 bits are in *p and we write 57 bits, then the next write will access a byte that was never initialized). */ - uint8_t *p = &array[*pos >> 3]; + uint8_t* p = &array[*pos >> 3]; uint64_t v = *p; -#ifdef BIT_WRITER_DEBUG - printf("WriteBits %2d 0x%016llx %10d\n", n_bits, bits, *pos); -#endif - assert((bits >> n_bits) == 0); - assert(n_bits <= 56); + BROTLI_LOG(("WriteBits %2d 0x%08x%08x %10d\n", (int)n_bits, + (uint32_t)(bits >> 32), (uint32_t)(bits & 0xFFFFFFFF), + (int)*pos)); + BROTLI_DCHECK((bits >> n_bits) == 0); + BROTLI_DCHECK(n_bits <= 56); v |= bits << (*pos & 7); BROTLI_UNALIGNED_STORE64LE(p, v); /* Set some bits. */ *pos += n_bits; #else - /* implicit & 0xff is assumed for uint8_t arithmetics */ - uint8_t *array_pos = &array[*pos >> 3]; + /* implicit & 0xFF is assumed for uint8_t arithmetics */ + uint8_t* array_pos = &array[*pos >> 3]; const size_t bits_reserved_in_first_byte = (*pos & 7); size_t bits_left_to_write; bits <<= bits_reserved_in_first_byte; @@ -75,11 +72,9 @@ static BROTLI_INLINE void BrotliWriteBits(size_t n_bits, } static BROTLI_INLINE void BrotliWriteBitsPrepareStorage( - size_t pos, uint8_t *array) { -#ifdef BIT_WRITER_DEBUG - printf("WriteBitsPrepareStorage %10d\n", pos); -#endif - assert((pos & 7) == 0); + size_t pos, uint8_t* array) { + BROTLI_LOG(("WriteBitsPrepareStorage %10d\n", (int)pos)); + BROTLI_DCHECK((pos & 7) == 0); array[pos >> 3] = 0; } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h index ac4fe905a2b..61a4326c1ac 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h @@ -34,11 +34,11 @@ typedef struct BrotliDecoderStateStruct BrotliDecoderState; typedef enum { /** Decoding error, e.g. corrupted input or memory allocation problem. */ BROTLI_DECODER_RESULT_ERROR = 0, - /** Decoding successfully completed */ + /** Decoding successfully completed. */ BROTLI_DECODER_RESULT_SUCCESS = 1, - /** Partially done; should be called again with more input */ + /** Partially done; should be called again with more input. */ BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT = 2, - /** Partially done; should be called again with more output */ + /** Partially done; should be called again with more output. */ BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT = 3 } BrotliDecoderResult; @@ -83,8 +83,9 @@ typedef enum { BROTLI_ERROR_CODE(_ERROR_FORMAT_, WINDOW_BITS, -13) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_1, -14) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR \ + BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR \ \ - /* -16..-17 codes are reserved */ \ + /* -17 code is reserved */ \ \ BROTLI_ERROR_CODE(_ERROR_, COMPOUND_DICTIONARY, -18) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR \ @@ -135,7 +136,11 @@ typedef enum BrotliDecoderParameter { * Ring buffer is allocated according to window size, despite the real size of * the content. */ - BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0 + BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0, + /** + * Flag that determines if "Large Window Brotli" is used. + */ + BROTLI_DECODER_PARAM_LARGE_WINDOW = 1 } BrotliDecoderParameter; /** @@ -160,7 +165,7 @@ BROTLI_DEC_API BROTLI_BOOL BrotliDecoderSetParameter( * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the * case they are both zero, default memory allocators are used. @p opaque is * passed to @p alloc_func and @p free_func when they are called. @p free_func - * should return without doing anything when asked to free a NULL pointer. + * has to return without doing anything when asked to free a NULL pointer. * * @param alloc_func custom memory allocation function * @param free_func custom memory free function diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h index 8849de2fbd6..0b5c8c7d2f5 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h @@ -27,6 +27,11 @@ extern "C" { * @note equal to @c BROTLI_MAX_DISTANCE_BITS constant. */ #define BROTLI_MAX_WINDOW_BITS 24 +/** + * Maximal value for ::BROTLI_PARAM_LGWIN parameter + * in "Large Window Brotli" (32-bit). + */ +#define BROTLI_LARGE_MAX_WINDOW_BITS 30 /** Minimal value for ::BROTLI_PARAM_LGBLOCK parameter. */ #define BROTLI_MIN_INPUT_BLOCK_BITS 16 /** Maximal value for ::BROTLI_PARAM_LGBLOCK parameter. */ @@ -176,7 +181,11 @@ typedef enum BrotliEncoderParameter { * * The default value is 0, which means that the total input size is unknown. */ - BROTLI_PARAM_SIZE_HINT = 5 + BROTLI_PARAM_SIZE_HINT = 5, + /** + * Flag that determines if "Large Window Brotli" is used. + */ + BROTLI_PARAM_LARGE_WINDOW = 6 } BrotliEncoderParameter; /** @@ -210,7 +219,7 @@ BROTLI_ENC_API BROTLI_BOOL BrotliEncoderSetParameter( * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the * case they are both zero, default memory allocators are used. @p opaque is * passed to @p alloc_func and @p free_func when they are called. @p free_func - * should return without doing anything when asked to free a NULL pointer. + * has to return without doing anything when asked to free a NULL pointer. * * @param alloc_func custom memory allocation function * @param free_func custom memory free function @@ -231,10 +240,9 @@ BROTLI_ENC_API void BrotliEncoderDestroyInstance(BrotliEncoderState* state); /** * Calculates the output size bound for the given @p input_size. * - * @warning Result is not applicable to ::BrotliEncoderCompressStream output, - * because every "flush" adds extra overhead bytes, and some encoder - * settings (e.g. quality @c 0 and @c 1) might imply a "soft flush" - * after every chunk of input. + * @warning Result is only valid if quality is at least @c 2 and, in + * case ::BrotliEncoderCompressStream was used, no flushes + * (::BROTLI_OPERATION_FLUSH) were performed. * * @param input_size size of projected input * @returns @c 0 if result does not fit @c size_t diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h index 16c31d426d7..88cdbf459f4 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h +++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h @@ -4,7 +4,12 @@ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ -/* Macros for compiler / platform specific features and build options. */ +/* Macros for compiler / platform specific features and build options. + + Build options are: + * BROTLI_BUILD_MODERN_COMPILER forces to use modern compilers built-ins, + features and attributes + */ #ifndef BROTLI_COMMON_PORT_H_ #define BROTLI_COMMON_PORT_H_ @@ -42,51 +47,6 @@ #define BROTLI_MODERN_COMPILER 0 #endif -/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable - compilers. - -To apply compiler hint, enclose the branching condition into macros, like this: - - if (BROTLI_PREDICT_TRUE(zero == 0)) { - // main execution path - } else { - // compiler should place this code outside of main execution path - } - -OR: - - if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) { - // compiler should place this code outside of main execution path - } - -*/ -#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_expect) -#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) -#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0)) -#else -#define BROTLI_PREDICT_FALSE(x) (x) -#define BROTLI_PREDICT_TRUE(x) (x) -#endif - -#if BROTLI_MODERN_COMPILER || __has_attribute(always_inline) -#define BROTLI_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline)) -#else -#define BROTLI_ATTRIBUTE_ALWAYS_INLINE -#endif - -#if defined(_WIN32) || defined(__CYGWIN__) -#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN -#elif BROTLI_MODERN_COMPILER || __has_attribute(visibility) -#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN \ - __attribute__ ((visibility ("hidden"))) -#else -#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN -#endif - -#ifndef BROTLI_INTERNAL -#define BROTLI_INTERNAL BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN -#endif - #if defined(BROTLI_SHARED_COMPILATION) && defined(_WIN32) #if defined(BROTLICOMMON_SHARED_COMPILATION) #define BROTLI_COMMON_API __declspec(dllexport) @@ -109,38 +69,10 @@ OR: #define BROTLI_ENC_API #endif -#ifndef _MSC_VER -#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || \ - (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -#define BROTLI_INLINE inline BROTLI_ATTRIBUTE_ALWAYS_INLINE -#else -#define BROTLI_INLINE -#endif -#else /* _MSC_VER */ -#define BROTLI_INLINE __forceinline -#endif /* _MSC_VER */ - -#if !defined(__cplusplus) && !defined(c_plusplus) && \ - (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -#define BROTLI_RESTRICT restrict -#elif BROTLI_GCC_VERSION > 295 || defined(__llvm__) -#define BROTLI_RESTRICT __restrict -#else -#define BROTLI_RESTRICT -#endif - -#if BROTLI_MODERN_COMPILER || __has_attribute(noinline) -#define BROTLI_NOINLINE __attribute__((noinline)) -#else -#define BROTLI_NOINLINE -#endif - #if BROTLI_MODERN_COMPILER || __has_attribute(deprecated) #define BROTLI_DEPRECATED __attribute__((deprecated)) #else #define BROTLI_DEPRECATED #endif -#define BROTLI_UNUSED(X) (void)(X) - #endif /* BROTLI_COMMON_PORT_H_ */ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp index 1127fa0531b..851737628fb 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp @@ -94,6 +94,8 @@ static void type_error (const Option &option, bool shortname) { void CommandLine::parseShortOption (istringstream &iss, int argc, char **argv, int &argn) { bool combined = false; do { + if (iss.peek() < 0) + throw CommandLineException("missing character after '-'"); char shortname = static_cast<char>(iss.get()); if (!isalnum(shortname)) throw CommandLineException(string("syntax error: -")+shortname); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp index 5a86b1322ce..36990ce17ba 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp @@ -21,16 +21,15 @@ #ifndef EMSPECIALHANDLER_HPP #define EMSPECIALHANDLER_HPP -#include <list> #include <unordered_map> +#include <vector> #include "Pair.hpp" #include "SpecialHandler.hpp" class InputReader; class SpecialActions; -class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener -{ +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 @@ -55,7 +54,7 @@ class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener private: std::unordered_map<int, DPair> _points; ///< points defined by special em:point - std::list<Line> _lines; ///< list of lines with undefined end points + std::vector<Line> _lines; ///< list of lines with undefined end points double _linewidth; ///< global line width DPair _pos; ///< current position of "graphic cursor" }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp index bce560c1dee..d22cc45f690 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp @@ -18,6 +18,7 @@ ** along with this program; if not, see <http://www.gnu.org/licenses/>. ** *************************************************************************/ +#include <stdio.h> #include <comdef.h> #include <string> #include "MessageException.hpp" diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp index c96aa1029bf..ea5f8d64a6e 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp @@ -125,11 +125,11 @@ void RangeMap::addRange (uint32_t cmin, uint32_t cmax, uint32_t vmin) { void RangeMap::adaptNeighbors (Ranges::iterator it) { if (it != _ranges.end()) { // adapt left neighbor - Ranges::iterator lit = it-1; // points to left neighbor - if (it != _ranges.begin() && it->min() <= lit->max()) { + if (it != _ranges.begin() && it->min() <= (it-1)->max()) { + Ranges::iterator lit = it-1; // points to left neighbor 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) // 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); } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp index 90e1cd23cfb..c184336424c 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp @@ -22,6 +22,7 @@ #define XMLDOCUMENT_HPP #include <memory> +#include <vector> #include "XMLNode.hpp" class XMLDocument { @@ -36,7 +37,7 @@ class XMLDocument { std::ostream& write (std::ostream &os) const; private: - std::list<std::unique_ptr<XMLNode>> _nodes; + std::vector<std::unique_ptr<XMLNode>> _nodes; std::unique_ptr<XMLElementNode> _rootElement; }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp index bfdbbe476ea..76b489e4d26 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp @@ -18,6 +18,7 @@ ** along with this program; if not, see <http://www.gnu.org/licenses/>. ** *************************************************************************/ +#include <algorithm> #include <map> #include <list> #include <sstream> @@ -148,9 +149,11 @@ bool XMLElementNode::insertAfter (unique_ptr<XMLNode> &&child, XMLNode *sibling) /** Removes a given child from the element. */ void XMLElementNode::remove (const XMLNode *child) { - _children.remove_if([=](const unique_ptr<XMLNode> &ptr) { + auto it = find_if(_children.begin(), _children.end(), [=](const unique_ptr<XMLNode> &ptr) { return ptr.get() == child; }); + if (it != _children.end()) + _children.erase(it); } diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp index faaab0b5322..b02bf1bb571 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp @@ -21,7 +21,7 @@ #ifndef XMLNODE_HPP #define XMLNODE_HPP -#include <list> +#include <deque> #include <map> #include <memory> #include <ostream> @@ -42,7 +42,7 @@ class XMLNode { class XMLElementNode : public XMLNode { public: using AttribMap = std::map<std::string,std::string>; - using ChildList = std::list<std::unique_ptr<XMLNode>>; + using ChildList = std::deque<std::unique_ptr<XMLNode>>; public: XMLElementNode (const std::string &name); diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp index 89f698d3f37..f333cbbdb90 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp @@ -19,12 +19,13 @@ *************************************************************************/ #include <config.h> +#include <algorithm> #include <clipper.hpp> #include <fstream> #include <iostream> -#include <list> #include <potracelib.h> #include <sstream> +#include <vector> #include <xxhash.h> #include <zlib.h> #include "CommandLine.hpp" @@ -215,7 +216,7 @@ class VersionInfo { /** Writes the version information to the given output stream. */ void write (ostream &os) { using Entry = pair<string,string>; - _versionPairs.sort([](const Entry &e1, const Entry &e2) { + sort(_versionPairs.begin(), _versionPairs.end(), [](const Entry &e1, const Entry &e2) { return util::tolower(e1.first) < util::tolower(e2.first); }); size_t maxNameLength=0; @@ -234,7 +235,7 @@ class VersionInfo { } private: - list<pair<string,string>> _versionPairs; + vector<pair<string,string>> _versionPairs; }; diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml index 7613f44fb30..39659844307 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml @@ -24,7 +24,7 @@ <program> <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> + <description>This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.</description> <copyright>Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking@uos.de></copyright> </program> <options> @@ -134,13 +134,13 @@ <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) && !defined(DISABLE_GS)"> + <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) && !defined(DISABLE_GS)"> <arg name="filename" type="string"/> <description>set name of Ghostscript shared library</description> </option> @@ -156,7 +156,7 @@ <description>don't process [selected] specials</description> </option> <option long="trace-all" short="a"> - <arg name="retrace" type="bool" optional="yes" default="false"/> + <arg name="retrace" type="bool" optional="yes" default="false"/> <description>trace all glyphs of bitmap fonts</description> </option> </section> @@ -172,7 +172,7 @@ <description>print supported special sets and exit</description> </option> <option long="progress" short="P"> - <arg name="delay" type="double" optional="yes" default="0.5"/> + <arg name="delay" type="double" optional="yes" default="0.5"/> <description>enable progress indicator</description> </option> <option long="verbosity" short="v"> diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp index 56a02cfc718..38a8e51c3f9 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp @@ -22,7 +22,7 @@ #define VERSION_HPP constexpr const char *PROGRAM_NAME = "dvisvgm"; -constexpr const char *PROGRAM_VERSION = "2.3.3"; +constexpr const char *PROGRAM_VERSION = "2.3.4"; #endif diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am index 1c63b79d3dc..83e50e63015 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am @@ -6,6 +6,7 @@ EXTRA_DIST = \ cidjmgr0-h.tfm \ cmr10.600gf \ + cmr10.pfb \ cmr10.tfm \ dvipdfm_test.map \ dvips_test.map \ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in index 018be0f9950..de2af54091a 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in @@ -275,6 +275,7 @@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ cidjmgr0-h.tfm \ cmr10.600gf \ + cmr10.pfb \ cmr10.tfm \ dvipdfm_test.map \ dvips_test.map \ diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb Binary files differnew file mode 100644 index 00000000000..fa8c833d374 --- /dev/null +++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb diff --git a/Build/source/texk/dvisvgm/version.ac b/Build/source/texk/dvisvgm/version.ac index 1544b8d542e..8775e274216 100644 --- a/Build/source/texk/dvisvgm/version.ac +++ b/Build/source/texk/dvisvgm/version.ac @@ -9,4 +9,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current dvisvgm version -m4_define([dvisvgm_version], [2.3.3]) +m4_define([dvisvgm_version], [2.3.4]) |