From 7df30ed249a4493833346d2e40ac3fca765602b8 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Sun, 18 Mar 2018 21:59:37 +0000 Subject: poppler-0.63.0 git-svn-id: svn://tug.org/texlive/trunk@47014 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 2 +- Build/source/libs/poppler/ChangeLog | 5 + Build/source/libs/poppler/Makefile.am | 1 + Build/source/libs/poppler/Makefile.in | 6 + Build/source/libs/poppler/TLpatches/ChangeLog | 4 + Build/source/libs/poppler/TLpatches/TL-Changes | 7 +- Build/source/libs/poppler/TLpatches/patch-04-ctime | 9 +- Build/source/libs/poppler/configure | 22 +- .../source/libs/poppler/poppler-src/CMakeLists.txt | 9 +- Build/source/libs/poppler/poppler-src/ChangeLog | 1315 +++ Build/source/libs/poppler/poppler-src/NEWS | 60 + .../libs/poppler/poppler-src/fofi/FoFiBase.cc | 10 +- .../libs/poppler/poppler-src/fofi/FoFiBase.h | 16 + .../libs/poppler/poppler-src/fofi/FoFiEncodings.cc | 396 +- .../poppler/poppler-src/fofi/FoFiIdentifier.cc | 6 +- .../libs/poppler/poppler-src/fofi/FoFiTrueType.cc | 60 +- .../libs/poppler/poppler-src/fofi/FoFiType1.cc | 18 +- .../libs/poppler/poppler-src/fofi/FoFiType1C.cc | 28 +- .../source/libs/poppler/poppler-src/goo/GooHash.cc | 24 +- .../source/libs/poppler/poppler-src/goo/GooMutex.h | 5 +- .../libs/poppler/poppler-src/goo/GooString.cc | 16 +- .../libs/poppler/poppler-src/goo/GooTimer.cc | 6 +- .../libs/poppler/poppler-src/goo/ImgWriter.h | 6 +- .../libs/poppler/poppler-src/goo/PNGWriter.cc | 6 +- .../libs/poppler/poppler-src/goo/TiffWriter.cc | 18 +- Build/source/libs/poppler/poppler-src/goo/gfile.cc | 94 +- Build/source/libs/poppler/poppler-src/goo/gfile.h | 17 +- Build/source/libs/poppler/poppler-src/goo/glibc.h | 5 +- .../libs/poppler/poppler-src/goo/glibc_strtok_r.cc | 3 + Build/source/libs/poppler/poppler-src/goo/gmem.cc | 18 +- .../source/libs/poppler/poppler-src/goo/grandom.cc | 4 +- .../source/libs/poppler/poppler-src/goo/gstrtod.cc | 10 +- Build/source/libs/poppler/poppler-src/gtkdoc.py | 23 +- .../libs/poppler/poppler-src/poppler/Annot.cc | 336 +- .../libs/poppler/poppler-src/poppler/Annot.h | 38 +- .../libs/poppler/poppler-src/poppler/Array.cc | 2 +- .../libs/poppler/poppler-src/poppler/Array.h | 5 +- .../poppler/poppler-src/poppler/BuiltinFont.cc | 2 +- .../libs/poppler/poppler-src/poppler/BuiltinFont.h | 18 + .../poppler-src/poppler/BuiltinFontTables.cc | 8374 ++++++++++---------- .../libs/poppler/poppler-src/poppler/CMap.cc | 22 +- .../source/libs/poppler/poppler-src/poppler/CMap.h | 8 +- .../libs/poppler/poppler-src/poppler/CachedFile.cc | 8 +- .../libs/poppler/poppler-src/poppler/CachedFile.h | 9 +- .../poppler/poppler-src/poppler/CairoFontEngine.cc | 108 +- .../poppler/poppler-src/poppler/CairoFontEngine.h | 6 +- .../poppler/poppler-src/poppler/CairoOutputDev.cc | 202 +- .../poppler/poppler-src/poppler/CairoOutputDev.h | 17 +- .../poppler/poppler-src/poppler/CairoRescaleBox.cc | 6 +- .../poppler/poppler-src/poppler/CairoRescaleBox.h | 4 + .../libs/poppler/poppler-src/poppler/Catalog.cc | 78 +- .../libs/poppler/poppler-src/poppler/Catalog.h | 9 +- .../poppler-src/poppler/CharCodeToUnicode.cc | 28 +- .../poppler-src/poppler/CharCodeToUnicode.h | 8 +- .../poppler/poppler-src/poppler/CurlCachedFile.cc | 6 +- .../libs/poppler/poppler-src/poppler/DCTStream.cc | 16 +- .../libs/poppler/poppler-src/poppler/DateInfo.cc | 4 +- .../libs/poppler/poppler-src/poppler/Decrypt.cc | 10 +- .../libs/poppler/poppler-src/poppler/Dict.cc | 8 +- .../source/libs/poppler/poppler-src/poppler/Dict.h | 5 +- .../libs/poppler/poppler-src/poppler/Error.cc | 4 +- .../libs/poppler/poppler-src/poppler/ErrorCodes.h | 16 + .../libs/poppler/poppler-src/poppler/FileSpec.cc | 18 +- .../libs/poppler/poppler-src/poppler/FileSpec.h | 8 +- .../poppler-src/poppler/FontEncodingTables.cc | 980 +-- .../libs/poppler/poppler-src/poppler/FontInfo.cc | 27 +- .../libs/poppler/poppler-src/poppler/FontInfo.h | 4 +- .../libs/poppler/poppler-src/poppler/Form.cc | 72 +- .../source/libs/poppler/poppler-src/poppler/Form.h | 10 +- .../libs/poppler/poppler-src/poppler/Function.cc | 26 +- .../libs/poppler/poppler-src/poppler/Function.h | 5 +- .../source/libs/poppler/poppler-src/poppler/Gfx.cc | 178 +- .../source/libs/poppler/poppler-src/poppler/Gfx.h | 8 +- .../libs/poppler/poppler-src/poppler/GfxFont.cc | 275 +- .../libs/poppler/poppler-src/poppler/GfxFont.h | 17 +- .../libs/poppler/poppler-src/poppler/GfxState.cc | 452 +- .../libs/poppler/poppler-src/poppler/GfxState.h | 26 +- .../poppler/poppler-src/poppler/GlobalParams.cc | 82 +- .../poppler/poppler-src/poppler/GlobalParams.h | 5 +- .../poppler/poppler-src/poppler/GlobalParamsWin.cc | 172 +- .../libs/poppler/poppler-src/poppler/Hints.cc | 18 +- .../libs/poppler/poppler-src/poppler/Hints.h | 5 +- .../poppler-src/poppler/JArithmeticDecoder.cc | 2 +- .../poppler-src/poppler/JArithmeticDecoder.h | 18 + .../poppler/poppler-src/poppler/JBIG2Stream.cc | 217 +- .../poppler/poppler-src/poppler/JPEG2000Stream.cc | 22 +- .../libs/poppler/poppler-src/poppler/Lexer.cc | 25 +- .../libs/poppler/poppler-src/poppler/Lexer.h | 5 +- .../poppler/poppler-src/poppler/Linearization.cc | 16 +- .../libs/poppler/poppler-src/poppler/Link.cc | 54 +- .../source/libs/poppler/poppler-src/poppler/Link.h | 12 +- .../poppler-src/poppler/MarkedContentOutputDev.cc | 22 +- .../poppler-src/poppler/MarkedContentOutputDev.h | 4 + .../libs/poppler/poppler-src/poppler/Movie.cc | 2 +- .../libs/poppler/poppler-src/poppler/Movie.h | 3 +- .../poppler/poppler-src/poppler/NameToCharCode.cc | 4 +- .../poppler/poppler-src/poppler/NameToCharCode.h | 17 + .../poppler-src/poppler/NameToUnicodeTable.h | 4 +- .../libs/poppler/poppler-src/poppler/Object.h | 14 +- .../poppler/poppler-src/poppler/OptionalContent.cc | 28 +- .../poppler/poppler-src/poppler/OptionalContent.h | 11 +- .../libs/poppler/poppler-src/poppler/Outline.cc | 41 +- .../libs/poppler/poppler-src/poppler/Outline.h | 14 +- .../libs/poppler/poppler-src/poppler/OutputDev.cc | 6 +- .../libs/poppler/poppler-src/poppler/OutputDev.h | 2 +- .../libs/poppler/poppler-src/poppler/PDFDoc.cc | 120 +- .../libs/poppler/poppler-src/poppler/PDFDoc.h | 5 +- .../poppler/poppler-src/poppler/PDFDocBuilder.h | 8 +- .../poppler/poppler-src/poppler/PDFDocFactory.h | 5 +- .../poppler/poppler-src/poppler/PSOutputDev.cc | 169 +- .../libs/poppler/poppler-src/poppler/PSOutputDev.h | 2 +- .../poppler/poppler-src/poppler/PSTokenizer.cc | 7 +- .../libs/poppler/poppler-src/poppler/Page.cc | 10 +- .../source/libs/poppler/poppler-src/poppler/Page.h | 5 +- .../poppler/poppler-src/poppler/PageLabelInfo.cc | 2 +- .../poppler/poppler-src/poppler/PageLabelInfo.h | 6 +- .../libs/poppler/poppler-src/poppler/Parser.cc | 13 +- .../libs/poppler/poppler-src/poppler/Parser.h | 5 +- .../poppler/poppler-src/poppler/PopplerCache.cc | 4 +- .../poppler/poppler-src/poppler/PopplerCache.h | 18 +- .../libs/poppler/poppler-src/poppler/Rendition.cc | 4 +- .../libs/poppler/poppler-src/poppler/Rendition.h | 3 +- .../poppler/poppler-src/poppler/SecurityHandler.cc | 31 +- .../poppler/poppler-src/poppler/SecurityHandler.h | 5 +- .../poppler-src/poppler/SignatureHandler.cc | 60 +- .../libs/poppler/poppler-src/poppler/Sound.cc | 10 +- .../libs/poppler/poppler-src/poppler/Sound.h | 5 +- .../poppler/poppler-src/poppler/SplashOutputDev.cc | 201 +- .../poppler/poppler-src/poppler/SplashOutputDev.h | 10 +- .../poppler/poppler-src/poppler/StdinCachedFile.cc | 2 +- .../poppler-src/poppler/StdinPDFDocBuilder.cc | 2 +- .../libs/poppler/poppler-src/poppler/Stream.cc | 88 +- .../libs/poppler/poppler-src/poppler/Stream.h | 20 +- .../poppler/poppler-src/poppler/StructElement.cc | 81 +- .../poppler/poppler-src/poppler/StructElement.h | 35 +- .../poppler/poppler-src/poppler/StructTreeRoot.cc | 136 +- .../poppler/poppler-src/poppler/StructTreeRoot.h | 27 +- .../poppler/poppler-src/poppler/TextOutputDev.cc | 236 +- .../poppler/poppler-src/poppler/TextOutputDev.h | 33 +- .../source/libs/poppler/poppler-src/poppler/UTF.cc | 10 +- .../libs/poppler/poppler-src/poppler/UnicodeMap.cc | 18 +- .../libs/poppler/poppler-src/poppler/UnicodeMap.h | 7 + .../poppler/poppler-src/poppler/UnicodeMapFuncs.cc | 88 + .../poppler/poppler-src/poppler/UnicodeMapFuncs.h | 64 +- .../poppler-src/poppler/UnicodeTypeTable.cc | 938 +-- .../libs/poppler/poppler-src/poppler/XRef.cc | 49 +- .../source/libs/poppler/poppler-src/poppler/XRef.h | 9 +- .../poppler-src/poppler/poppler-config.h.cmake | 2 +- Build/source/libs/poppler/version.ac | 2 +- 149 files changed, 9600 insertions(+), 7472 deletions(-) create mode 100644 Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc diff --git a/Build/source/libs/README b/Build/source/libs/README index 9611b0450b1..1df759da9ef 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -49,7 +49,7 @@ mpfr 4.0.1 - checked 10feb18 pixman 0.34.0 - checked 04feb16 http://cairographics.org/releases/ -poppler 0.62.0 - checked 9jan18 +poppler 0.63.0 - checked 18mar18 http://poppler.freedesktop.org/ - used by luatex and xetex (requires C++11) diff --git a/Build/source/libs/poppler/ChangeLog b/Build/source/libs/poppler/ChangeLog index f972855b6d9..df54026e7b3 100644 --- a/Build/source/libs/poppler/ChangeLog +++ b/Build/source/libs/poppler/ChangeLog @@ -1,3 +1,8 @@ +2018-03-18 Akira Kakuto + + Import poppler-0.63.0. + * Makefile.am, version.ac: Adjust. + 2018-03-14 Luigi Scarso * configure.ac (HAVE_DCT_DECODER, HAVE_JPX_DECODER): hardwire to 1, diff --git a/Build/source/libs/poppler/Makefile.am b/Build/source/libs/poppler/Makefile.am index be1c4c22104..f07942a6f09 100644 --- a/Build/source/libs/poppler/Makefile.am +++ b/Build/source/libs/poppler/Makefile.am @@ -122,6 +122,7 @@ poppler_libpoppler_a_sources = \ @POPPLER_TREE@/poppler/StructTreeRoot.cc \ @POPPLER_TREE@/poppler/UTF.cc \ @POPPLER_TREE@/poppler/UnicodeMap.cc \ + @POPPLER_TREE@/poppler/UnicodeMapFuncs.cc \ @POPPLER_TREE@/poppler/UnicodeTypeTable.cc \ @POPPLER_TREE@/poppler/ViewerPreferences.cc \ @POPPLER_TREE@/poppler/XRef.cc \ diff --git a/Build/source/libs/poppler/Makefile.in b/Build/source/libs/poppler/Makefile.in index 66748099aea..9360b344a27 100644 --- a/Build/source/libs/poppler/Makefile.in +++ b/Build/source/libs/poppler/Makefile.in @@ -190,6 +190,7 @@ am__objects_3 = @POPPLER_TREE@/poppler/Annot.$(OBJEXT) \ @POPPLER_TREE@/poppler/StructTreeRoot.$(OBJEXT) \ @POPPLER_TREE@/poppler/UTF.$(OBJEXT) \ @POPPLER_TREE@/poppler/UnicodeMap.$(OBJEXT) \ + @POPPLER_TREE@/poppler/UnicodeMapFuncs.$(OBJEXT) \ @POPPLER_TREE@/poppler/UnicodeTypeTable.$(OBJEXT) \ @POPPLER_TREE@/poppler/ViewerPreferences.$(OBJEXT) \ @POPPLER_TREE@/poppler/XRef.$(OBJEXT) \ @@ -531,6 +532,7 @@ poppler_libpoppler_a_sources = \ @POPPLER_TREE@/poppler/StructTreeRoot.cc \ @POPPLER_TREE@/poppler/UTF.cc \ @POPPLER_TREE@/poppler/UnicodeMap.cc \ + @POPPLER_TREE@/poppler/UnicodeMapFuncs.cc \ @POPPLER_TREE@/poppler/UnicodeTypeTable.cc \ @POPPLER_TREE@/poppler/ViewerPreferences.cc \ @POPPLER_TREE@/poppler/XRef.cc \ @@ -852,6 +854,9 @@ clean-noinstLIBRARIES: @POPPLER_TREE@/poppler/UnicodeMap.$(OBJEXT): \ @POPPLER_TREE@/poppler/$(am__dirstamp) \ @POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp) +@POPPLER_TREE@/poppler/UnicodeMapFuncs.$(OBJEXT): \ + @POPPLER_TREE@/poppler/$(am__dirstamp) \ + @POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp) @POPPLER_TREE@/poppler/UnicodeTypeTable.$(OBJEXT): \ @POPPLER_TREE@/poppler/$(am__dirstamp) \ @POPPLER_TREE@/poppler/$(DEPDIR)/$(am__dirstamp) @@ -954,6 +959,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/StructTreeRoot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UTF.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeMap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeMapFuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/UnicodeTypeTable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/ViewerPreferences.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@@POPPLER_TREE@/poppler/$(DEPDIR)/XRef.Po@am__quote@ diff --git a/Build/source/libs/poppler/TLpatches/ChangeLog b/Build/source/libs/poppler/TLpatches/ChangeLog index dc56e3f8df6..629722ebf90 100644 --- a/Build/source/libs/poppler/TLpatches/ChangeLog +++ b/Build/source/libs/poppler/TLpatches/ChangeLog @@ -1,3 +1,7 @@ +2018-03-18 Akira Kakuto + + * Import poppler-0.63.0. + 2018-01-15 Karl Berry * patch-04-ctime: add. diff --git a/Build/source/libs/poppler/TLpatches/TL-Changes b/Build/source/libs/poppler/TLpatches/TL-Changes index 5d3ec566f77..1eb93580e20 100644 --- a/Build/source/libs/poppler/TLpatches/TL-Changes +++ b/Build/source/libs/poppler/TLpatches/TL-Changes @@ -1,8 +1,11 @@ -Changes applied to the poppler-0.62.0 tree as obtained from: +Changes applied to the poppler-0.63.0 tree as obtained from: http://poppler.freedesktop.org/ Removed unused dirs: - cmake cpp glib m4 qt4 qt5 test utils + cmake cpp glib qt5 test utils + +Removed unused files in splash: + only SplashTypes.h is used General idea: update version.ac diff --git a/Build/source/libs/poppler/TLpatches/patch-04-ctime b/Build/source/libs/poppler/TLpatches/patch-04-ctime index f59293666a2..3c4a349569f 100644 --- a/Build/source/libs/poppler/TLpatches/patch-04-ctime +++ b/Build/source/libs/poppler/TLpatches/patch-04-ctime @@ -1,9 +1,10 @@ To make time_t work on FreeBSD 11.1, per Mojca. http://tug.org/pipermail/tlbuild/2018q1/003931.html - ---- Form.h (revision 46316) -+++ Form.h (working copy) -@@ -31,6 +31,7 @@ + +diff -ur poppler-0.63.0/poppler/Form.h poppler-src/poppler/Form.h +--- poppler-0.63.0/poppler/Form.h Mon Mar 19 03:23:49 2018 ++++ poppler-src/poppler/Form.h Mon Mar 19 06:18:51 2018 +@@ -33,6 +33,7 @@ #include #include diff --git a/Build/source/libs/poppler/configure b/Build/source/libs/poppler/configure index 1bb36bd8b7e..dc3b7b5cfc2 100755 --- a/Build/source/libs/poppler/configure +++ b/Build/source/libs/poppler/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for poppler (TeX Live) 0.62.0. +# Generated by GNU Autoconf 2.69 for poppler (TeX Live) 0.63.0. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='poppler (TeX Live)' PACKAGE_TARNAME='poppler--tex-live-' -PACKAGE_VERSION='0.62.0' -PACKAGE_STRING='poppler (TeX Live) 0.62.0' +PACKAGE_VERSION='0.63.0' +PACKAGE_STRING='poppler (TeX Live) 0.63.0' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1307,7 +1307,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 poppler (TeX Live) 0.62.0 to adapt to many kinds of systems. +\`configure' configures poppler (TeX Live) 0.63.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1374,7 +1374,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of poppler (TeX Live) 0.62.0:";; + short | recursive ) echo "Configuration of poppler (TeX Live) 0.63.0:";; esac cat <<\_ACEOF @@ -1487,7 +1487,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -poppler (TeX Live) configure 0.62.0 +poppler (TeX Live) configure 0.63.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2077,7 +2077,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 poppler (TeX Live) $as_me 0.62.0, which was +It was created by poppler (TeX Live) $as_me 0.63.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4000,7 +4000,7 @@ fi # Define the identity of the package. PACKAGE='poppler--tex-live-' - VERSION='0.62.0' + VERSION='0.63.0' # Some tools Automake needs. @@ -7578,7 +7578,7 @@ ac_config_headers="$ac_config_headers poppler-config.h:poppler-src/poppler/poppl cat >>confdefs.h <<_ACEOF -#define POPPLER_VERSION "0.62.0" +#define POPPLER_VERSION "0.63.0" _ACEOF @@ -8272,7 +8272,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 poppler (TeX Live) $as_me 0.62.0, which was +This file was extended by poppler (TeX Live) $as_me 0.63.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8338,7 +8338,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="\\ -poppler (TeX Live) config.status 0.62.0 +poppler (TeX Live) config.status 0.63.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/poppler/poppler-src/CMakeLists.txt b/Build/source/libs/poppler/poppler-src/CMakeLists.txt index d8072a936c9..eecd41fb9a3 100644 --- a/Build/source/libs/poppler/poppler-src/CMakeLists.txt +++ b/Build/source/libs/poppler/poppler-src/CMakeLists.txt @@ -30,7 +30,7 @@ if (ECM_FOUND) endif() set(POPPLER_MAJOR_VERSION "0") -set(POPPLER_MINOR_VERSION "62") +set(POPPLER_MINOR_VERSION "63") set(POPPLER_MICRO_VERSION "0") set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION}.${POPPLER_MICRO_VERSION}") @@ -378,6 +378,7 @@ set(poppler_SRCS poppler/StructTreeRoot.cc poppler/StructElement.cc poppler/UnicodeMap.cc + poppler/UnicodeMapFuncs.cc poppler/UnicodeTypeTable.cc poppler/UTF.cc poppler/XRef.cc @@ -482,7 +483,7 @@ add_library(poppler STATIC ${poppler_SRCS}) else() add_library(poppler ${poppler_SRCS}) endif() -set_target_properties(poppler PROPERTIES VERSION 73.0.0 SOVERSION 73) +set_target_properties(poppler PROPERTIES VERSION 74.0.0 SOVERSION 74) if(MINGW) get_target_property(POPPLER_SOVERSION poppler SOVERSION) set_target_properties(poppler PROPERTIES SUFFIX "-${POPPLER_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}") @@ -755,7 +756,7 @@ add_custom_target(dist COMMAND COMMAND git log --stat | fmt --split-only > ${CMAKE_BINARY_DIR}/ChangeLog COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar - COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar ChangeLog --transform='s,,${ARCHIVE_NAME}/,' - COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar glib/reference/html --transform='s,,${ARCHIVE_NAME}/,' + COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar ChangeLog --transform='s,,${ARCHIVE_NAME}/,' --owner root:0 --group root:0 + COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar glib/reference/html --transform='s,,${ARCHIVE_NAME}/,' --owner root:0 --group root:0 COMMAND xz -9 ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) diff --git a/Build/source/libs/poppler/poppler-src/ChangeLog b/Build/source/libs/poppler/poppler-src/ChangeLog index 590171350fe..3a1a061026c 100644 --- a/Build/source/libs/poppler/poppler-src/ChangeLog +++ b/Build/source/libs/poppler/poppler-src/ChangeLog @@ -1,3 +1,1318 @@ +commit f26285f361478219ea9d3c6de1529ecd5ff96ac9 +Author: Albert Astals Cid +Date: Sun Mar 18 19:23:49 2018 +0100 + + 0.63 + + CMakeLists.txt | 4 ++-- + NEWS | 60 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + cpp/CMakeLists.txt | 2 +- + cpp/Doxyfile | 2 +- + qt5/src/CMakeLists.txt | 2 +- + qt5/src/Doxyfile | 2 +- + 6 files changed, 66 insertions(+), 6 deletions(-) + +commit 8b2079b7250e037599f6640539f8107d93314919 +Author: Albert Astals Cid +Date: Sun Mar 18 19:01:40 2018 +0100 + + Update copyrights + + poppler/CairoOutputDev.cc | 2 +- + poppler/CairoOutputDev.h | 2 +- + poppler/GfxFont.cc | 2 +- + poppler/GfxFont.h | 2 +- + poppler/Object.h | 2 +- + poppler/StructElement.cc | 1 + + poppler/StructTreeRoot.cc | 2 +- + poppler/StructTreeRoot.h | 1 + + poppler/TextOutputDev.cc | 2 +- + utils/pdfinfo.cc | 2 +- + 10 files changed, 10 insertions(+), 8 deletions(-) + +commit 41321580f0a13309e5de44eb42851e3c82a5ef8f +Author: Adam Reichold +Date: Sun Mar 4 09:17:00 2018 +0100 + + Use the detection idiom to handle the non-standard struct stat field + name for high-resolution mtime on Mac OS X. + + goo/gfile.cc | 40 +++++++++++++++++++++++++++++++++++++--- + 1 file changed, 37 insertions(+), 3 deletions(-) + +commit b14baefb406b8f08f0702edd686ebc7698cb7f15 +Author: Adam Reichold +Date: Mon Feb 12 08:09:00 2018 +0100 + + Explicitly anchor destructor of text_box_data to avoid linker errors + using Clang on Mac OS X. + + cpp/poppler-page.cpp | 3 +++ + cpp/poppler-private.h | 3 +++ + 2 files changed, 6 insertions(+) + +commit 4afe2fb10ab969bfd9895c0ba9d4990c5881b451 +Author: Carlos Garcia Campos +Date: Sun Mar 4 10:28:57 2018 +0100 + + cairo: use GOOD instead of BEST as the default cairo filter for + scaling + + The quality is good enough and the performance is much better. + + https://bugs.freedesktop.org/show_bug.cgi?id=103136 + + poppler/CairoOutputDev.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 41c61811fdd6efe2bef34d2ce26520fc6b3c4237 +Author: Jason Crain +Date: Fri Feb 23 23:21:03 2018 -0600 + + TextPage: Add horizontal scaling to font matrix + + Drawing the text selection sometimes draws text reversed or expanded. + This is because the while the current font transformation matrix is + saved, the horizontal scaling is not. Include the effect of the + horizontal scaling in the transformation matrix. + + https://bugs.freedesktop.org/show_bug.cgi?id=105259 + + poppler/TextOutputDev.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2740b3aca81a6a8c690540fc141e5923a1fff460 +Author: Albert Astals Cid +Date: Tue Feb 27 00:47:04 2018 +0100 + + cpp: Add since + + cpp/poppler-page.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit 42a6b8651f040f0960802e705b1aea82a956a63b +Author: suzuki toshiya +Date: Tue Feb 27 00:46:18 2018 +0100 + + cpp: Add page::text_list + + cpp/poppler-page.cpp | 91 + ++++++++++++++++++++++++++++++++++++++++++++++ + cpp/poppler-page.h | 55 ++++++++++++++++++++++++++++ + cpp/poppler-private.h | 9 +++++ + cpp/tests/poppler-dump.cpp | 34 +++++++++++++++++ + 4 files changed, 189 insertions(+) + +commit e25d4af6ed9b254db3096a2e483798734296376d +Author: Adam Reichold +Date: Sun Feb 18 09:43:58 2018 +0100 + + Fix warnings due to unhandled link types in XML serialization of + annotations code in the Qt5 frontend. + + qt5/src/poppler-annotation.cc | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +commit e015ab97c1ee3a4ea386ccc86385aad458827d96 +Author: Adam Reichold +Date: Sun Feb 18 09:42:58 2018 +0100 + + Fix warnings due to the use of deprecated overloads of + Poppler::Page::Search in tests of Qt5 frontend. + + qt5/tests/check_search.cpp | 38 + +++++++++++++++++++------------------- + qt5/tests/stress-threads-qt5.cpp | 10 +++++----- + 2 files changed, 24 insertions(+), 24 deletions(-) + +commit 732903ecf1bdb085cac36eb29d330a7970670064 +Author: Adam Reichold +Date: Sun Feb 18 09:42:04 2018 +0100 + + Fix buffer size warning due to missing space for null terminator + in pdfseparate. + + utils/pdfseparate.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 791e024656212c65d798cb69a134cdd3e30cc79e +Author: Albert Astals Cid +Date: Sun Feb 18 23:05:59 2018 +0100 + + Make it work with newer gtk-doc + + Hopefully still works with older versions + + Bug #105075 + + gtkdoc.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 948d392d9acc3d82b86a260c952095a603fe767f +Author: William Bader +Date: Sun Feb 18 22:06:02 2018 +0100 + + Add python3 support to gtkdoc.py + + gtkdoc.py | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +commit 73130ae1125c86ebd0ee504d0681d9911ff2cfbd +Author: Albert Astals Cid +Date: Wed Feb 14 17:40:23 2018 +0100 + + SplashGouraudPattern: Remove mode member variable + + We don't need it anymore, was introduced in the initial overprint + implementation and was forgotten to be removed when merging xpdf 3.03 + + poppler/SplashOutputDev.cc | 9 ++------- + poppler/SplashOutputDev.h | 5 ++--- + 2 files changed, 4 insertions(+), 10 deletions(-) + +commit 37efb98d77c14c27a22806ec676c13f0a8b99490 +Author: Albert Astals Cid +Date: Wed Feb 14 17:43:41 2018 +0100 + + SplashOutputDev:: Remove unused maskBitmap member + + poppler/SplashOutputDev.h | 1 - + 1 file changed, 1 deletion(-) + +commit e3cece1bfc00083637f709f7647b4711b5c6a084 +Author: Albert Astals Cid +Date: Fri Feb 2 23:17:11 2018 +0100 + + Fix some -Wshadow warnings + + More to come, -Wshadow is interesting but if we enable it we still + get too many warnings for it to be useful + + cpp/tests/poppler-dump.cpp | 6 ++-- + poppler/CachedFile.cc | 8 +++--- + poppler/CairoFontEngine.cc | 64 + +++++++++++++++++++++--------------------- + poppler/CairoOutputDev.cc | 5 ++-- + poppler/CairoOutputDev.h | 4 +-- + poppler/Decrypt.cc | 6 ++-- + poppler/FontInfo.cc | 5 ++-- + poppler/Gfx.cc | 2 +- + poppler/GfxFont.cc | 12 ++++---- + poppler/GfxState.cc | 31 +++++++++----------- + poppler/JBIG2Stream.cc | 11 ++++---- + poppler/PDFDoc.cc | 4 +-- + poppler/StructElement.cc | 6 ++-- + poppler/StructTreeRoot.cc | 8 +++--- + poppler/TextOutputDev.h | 4 +-- + poppler/XRef.cc | 4 +-- + qt5/src/ArthurOutputDev.cc | 4 +-- + qt5/src/poppler-annotation.cc | 18 ++++++------ + qt5/src/poppler-media.cc | 4 +-- + qt5/src/poppler-page.cc | 24 ++++++++-------- + qt5/tests/test-poppler-qt5.cpp | 10 ++++--- + splash/SplashFTFontFile.cc | 5 ++-- + utils/ImageOutputDev.cc | 8 +++--- + utils/pdfinfo.cc | 7 ++--- + utils/pdftocairo.cc | 22 +++++++-------- + utils/pdftoppm.cc | 20 ++++++------- + 26 files changed, 149 insertions(+), 153 deletions(-) + +commit 8cfe91ae51fa50e66217c6bbcb236ec3a267e45e +Author: Albert Astals Cid +Date: Fri Feb 2 23:22:33 2018 +0100 + + CairoOutputDev: Remove two unused member variables + + poppler/CairoOutputDev.h | 2 -- + 1 file changed, 2 deletions(-) + +commit b1016f574ac63fa269ca5125827895220e1df883 +Author: Albert Astals Cid +Date: Thu Feb 1 22:46:33 2018 +0100 + + Qt5: Add cancellation support to renderToImage and textList + + qt5/src/poppler-page.cc | 148 + ++++++++++++++++++++++++++++-------------------- + qt5/src/poppler-qt5.h | 98 +++++++++++++++++++++++++++++++- + 2 files changed, 185 insertions(+), 61 deletions(-) + +commit 248aa0f5832ce063a9ae061dfcf54596e0ea5fba +Author: Albert Astals Cid +Date: Sun Jan 28 00:25:38 2018 +0100 + + Fix build without libpng + + utils/ImageOutputDev.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f93fa48839be2937cd7ce38c14884428416bcc4b +Author: Andreas Gruenbacher +Date: Sat Jan 27 20:24:09 2018 +0100 + + Fix build without libtiff + + Bug #104813 + + utils/ImageOutputDev.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f65f60e5d3f5e4109a79212a9994b5096a2a2a8d +Author: Jason Crain +Date: Thu Jan 18 11:57:33 2018 -0600 + + GfxFontDict: merge reference generation from xpdf 4.00 + + The GfxFontDict constructor generates a fake indirect reference if the + font dictionary doesn't have a real indirect reference. It sometimes + assigns the same reference to two different fonts leading to a wrong + font being used. XPDF 4.00 fixes this by using the hash of the font + data to create the fake reference. + + https://bugs.freedesktop.org/show_bug.cgi?id=104565 + + poppler/GfxFont.cc | 125 + +++++++++++++++++++++++++++++++++++++++++++++++++---- + poppler/GfxFont.h | 4 ++ + 2 files changed, 120 insertions(+), 9 deletions(-) + +commit 7342327039dfc750934f3ce7ff0bdb6bc585151c +Author: Albert Astals Cid +Date: Wed Jan 17 22:33:42 2018 +0100 + + Form.h: include time.h for time_t + + poppler/Form.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit a89e7474fcd9e7e6dd1330c585130346aa862598 +Author: suzuki toshiya +Date: Wed Jan 17 00:22:55 2018 +0100 + + Enable building all libs as static libs + + if the correct switch is used + + cpp/CMakeLists.txt | 2 +- + glib/CMakeLists.txt | 4 ++-- + qt5/src/CMakeLists.txt | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 7f550e88d86482adcfab6e054ff14588b32b692a +Author: Albert Astals Cid +Date: Sun Jan 14 20:51:19 2018 +0100 + + Remove declare but unused Object instances + + poppler/Annot.cc | 36 ------------------------------------ + poppler/CairoFontEngine.cc | 2 -- + poppler/Catalog.cc | 1 - + poppler/Form.cc | 2 +- + poppler/Lexer.cc | 1 - + poppler/Link.cc | 2 -- + poppler/PDFDoc.cc | 1 - + poppler/SplashOutputDev.cc | 2 -- + poppler/XRef.cc | 1 - + qt5/src/ArthurOutputDev.cc | 1 - + utils/JSInfo.cc | 1 - + utils/pdfinfo.cc | 1 - + utils/pdfseparate.cc | 1 - + 13 files changed, 1 insertion(+), 51 deletions(-) + +commit 4b237953b187f38c90b9a747f587cbc277db6d45 +Author: Albert Astals Cid +Date: Sun Jan 14 20:17:56 2018 +0100 + + pdfsig: Remove "int i = 0;" variable that was shadowing pevious i + + And making us access the wrong sig_widgets element + + utils/pdfsig.cc | 1 - + 1 file changed, 1 deletion(-) + +commit 08f2cddf18b6ccdc13861b52821cbbf2d3e48472 +Author: Albert Astals Cid +Date: Thu Jan 11 19:38:29 2018 +0100 + + GfxFunctionShading::parse: Fix abort in malformed document + + Bug #104581 + + poppler/GfxState.cc | 32 ++++++++++++++++++++++---------- + 1 file changed, 22 insertions(+), 10 deletions(-) + +commit 10831921281f75b4b2c05ab85f4093331788e6a8 +Author: Albert Astals Cid +Date: Thu Jan 11 00:27:50 2018 +0100 + + GfxGouraudTriangleShading::parse: Don't abort on malformed documents + + Bug #104567 + + poppler/GfxState.cc | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit a59f61641fcb36859b625749afb4561557e419f6 +Author: Albert Astals Cid +Date: Wed Jan 10 23:24:19 2018 +0100 + + PDFDoc::setup: Fail early if base stream length is 0 + + Bug #103552 + + poppler/PDFDoc.cc | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 00c1566e8cc0dacd899ec6dd267265f4b714eae4 +Author: Albert Astals Cid +Date: Wed Jan 10 00:49:51 2018 +0100 + + UnicodeMapFuncs: Move implementation to .cpp + + With that the last warning i got on poppler core is gone \o/ + + CMakeLists.txt | 1 + + poppler/UnicodeMapFuncs.cc | 88 + ++++++++++++++++++++++++++++++++++++++++++++++ + poppler/UnicodeMapFuncs.h | 64 +++------------------------------ + 3 files changed, 93 insertions(+), 60 deletions(-) + +commit bf6d79b5c6b5bdcc0d79b4eebd85840e8f2e30ef +Author: Albert Astals Cid +Date: Wed Jan 10 00:49:33 2018 +0100 + + Forgot C for last commit + + poppler/UTF.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ebf33c2b0c66c456683c189af1b297fe24adcf9d +Author: Albert Astals Cid +Date: Wed Jan 10 00:40:38 2018 +0100 + + utf16CountUtf8Bytes: initialize codepoint to 0 + + Was tired of seeing the warning + + I actually think the code is a little bit fishy for invalid values, + but since we only use it for win32 builds i'm not spending much more + time looking at it. + + poppler/UTF.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 43ad7071aa126d3b6754421b544e114d87fdd82a +Author: Albert Astals Cid +Date: Tue Jan 9 23:41:01 2018 +0100 + + qt5: Implement operator= for PageTransition + + qt5/src/poppler-page-transition.cc | 10 ++++++++++ + qt5/src/poppler-page-transition.h | 5 ++++- + 2 files changed, 14 insertions(+), 1 deletion(-) + +commit c2711874a4afc00448c21e86fdaf0b7aec40b623 +Author: Albert Astals Cid +Date: Tue Jan 9 19:47:29 2018 +0100 + + Fix another clazy rule-of-three warning + + We can just use the default copy assignemnt and constructor for Parent + + poppler/StructTreeRoot.h | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 30ccee028213efcf3d3a103ae6003bdcd15e1126 +Author: Albert Astals Cid +Date: Tue Jan 9 19:42:53 2018 +0100 + + Fix more Wmissing-field-initializer + + by using the default initializer + + goo/gfile.cc | 6 +++--- + poppler/GlobalParamsWin.cc | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit ef4e450c921f4373955def51a74ebffd8f7b4599 +Author: Albert Astals Cid +Date: Tue Jan 9 19:36:16 2018 +0100 + + Enable no-missing-field-initializers + + cmake/modules/PopplerMacros.cmake | 2 +- + glib/poppler-structure-element.cc | 29 +++++++++++++++-------------- + poppler/GfxFont.cc | 4 ++-- + poppler/JBIG2Stream.cc | 20 ++++++++++---------- + test/gtk-test.cc | 2 +- + test/pdf-fullrewrite.cc | 2 +- + utils/pdfdetach.cc | 3 ++- + utils/pdffonts.cc | 4 ++-- + utils/pdfimages.cc | 4 ++-- + utils/pdfinfo.cc | 4 ++-- + utils/pdfseparate.cc | 4 ++-- + utils/pdfsig.cc | 4 ++-- + utils/pdftocairo.cc | 4 ++-- + utils/pdftohtml.cc | 4 ++-- + utils/pdftoppm.cc | 4 ++-- + utils/pdftops.cc | 4 ++-- + utils/pdftotext.cc | 4 ++-- + utils/pdfunite.cc | 4 ++-- + 18 files changed, 54 insertions(+), 52 deletions(-) + +commit efd2205a0bc9e838fd2184c329f8370aa292c346 +Author: suzuki toshiya +Date: Tue Jan 9 00:03:59 2018 +0100 + + add "--owner root:0 --group root:0" options to tar command in + dist target + + Because git-archive always uses root:root in the generated tarball, + the source tarballs (since 0.60.0) have 2 uid/gids in it. + "root:root" by git-archive, and normal users/group by normal tar. + For detail, please find the analysis at:: + https://lists.freedesktop.org/archives/poppler/2017-December/012737.html + + Bug #104398 + + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit cbd864b74fe368c1172974c7040c67ddfbc52cf6 +Author: Albert Astals Cid +Date: Mon Jan 8 23:48:57 2018 +0100 + + Fix abort in Gfx::opBeginMarkedContent if args[1] is not a name + + Bug #104468 + + poppler/Gfx.cc | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +commit 1aaf621f511ca4c235cb30a5ddbf050acd30fe91 +Author: Ben Timby +Date: Mon Jan 8 23:42:40 2018 +0100 + + Check return code of getChar(), abort reading on error. + + Bug #104502 + + poppler/PDFDoc.cc | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit ad7f6acd3c643b5bc0c9b7f91616f678b178a041 +Author: Albert Astals Cid +Date: Mon Jan 8 23:40:25 2018 +0100 + + (C) of last commit + + poppler/Lexer.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 582153b68e076c0f2ae71392f7553181c466e849 +Author: Albert Astals Cid +Date: Mon Jan 8 23:34:13 2018 +0100 + + Lexer: Check curStr is actually a Stream before doing Stream + operations + + Bug #104518 + + poppler/Lexer.cc | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit dea6e03352084361e7c89cff7adaa53110c4e91a +Author: Albert Astals Cid +Date: Mon Jan 8 23:25:39 2018 +0100 + + Fix new Object API porting bug + + When doing the XRef::readXRefTable workaround of moving entries[1] to + entries[0] set the entries[1] object back to null + + Bug #104517 + + poppler/XRef.cc | 1 + + 1 file changed, 1 insertion(+) + +commit 4c9e1b66725051cd4726baf19d891c2d9c710868 +Author: Albert Astals Cid +Date: Mon Jan 8 23:09:13 2018 +0100 + + A few more nullptr + + poppler/Link.h | 2 +- + poppler/Object.h | 4 ++-- + poppler/OutputDev.h | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit e428033c2d7efbbbf89bb2f84c8998521ac7ef8e +Author: Albert Astals Cid +Date: Mon Jan 8 22:55:00 2018 +0100 + + Run clang-tidy with modernize nullptr + + Also add two enum values in the qt5 frontend to representate no flags + Also mark glib/gtk/cairo system includes so that gcc doesn't report + the issues in those headers + + cmake/modules/PopplerMacros.cmake | 2 +- + cpp/poppler-document.cpp | 50 +- + cpp/poppler-image.cpp | 20 +- + cpp/poppler-page.cpp | 8 +- + cpp/poppler-private.cpp | 2 +- + cpp/poppler-toc.cpp | 4 +- + cpp/tests/poppler-dump.cpp | 2 +- + cpp/tests/poppler-render.cpp | 2 +- + fofi/FoFiBase.cc | 10 +- + fofi/FoFiEncodings.cc | 396 +- + fofi/FoFiIdentifier.cc | 2 +- + fofi/FoFiTrueType.cc | 30 +- + fofi/FoFiType1.cc | 18 +- + fofi/FoFiType1C.cc | 28 +- + glib/CMakeLists.txt | 4 + + glib/demo/info.cc | 12 +- + glib/poppler-action.cc | 54 +- + glib/poppler-annot.cc | 64 +- + glib/poppler-attachment.cc | 12 +- + glib/poppler-cached-file-loader.cc | 16 +- + glib/poppler-document.cc | 246 +- + glib/poppler-form-field.cc | 30 +- + glib/poppler-input-stream.cc | 14 +- + glib/poppler-layer.cc | 16 +- + glib/poppler-media.cc | 10 +- + glib/poppler-movie.cc | 6 +- + glib/poppler-page.cc | 124 +- + glib/poppler-structure-element.cc | 200 +- + glib/poppler.cc | 8 +- + goo/GooHash.cc | 24 +- + goo/GooString.cc | 16 +- + goo/GooTimer.cc | 6 +- + goo/PNGWriter.cc | 6 +- + goo/TiffWriter.cc | 18 +- + goo/gfile.cc | 26 +- + goo/gmem.cc | 18 +- + goo/grandom.cc | 4 +- + goo/gstrtod.cc | 10 +- + poppler/Annot.cc | 300 +- + poppler/Array.cc | 2 +- + poppler/BuiltinFont.cc | 2 +- + poppler/BuiltinFontTables.cc | 8374 + ++++++++++++++++++------------------ + poppler/CMap.cc | 22 +- + poppler/CairoFontEngine.cc | 42 +- + poppler/CairoOutputDev.cc | 108 +- + poppler/CairoRescaleBox.cc | 6 +- + poppler/Catalog.cc | 76 +- + poppler/CharCodeToUnicode.cc | 28 +- + poppler/CurlCachedFile.cc | 6 +- + poppler/DCTStream.cc | 16 +- + poppler/DateInfo.cc | 4 +- + poppler/Decrypt.cc | 4 +- + poppler/Dict.cc | 8 +- + poppler/Error.cc | 4 +- + poppler/FileSpec.cc | 18 +- + poppler/FontEncodingTables.cc | 980 ++--- + poppler/FontInfo.cc | 22 +- + poppler/Form.cc | 70 +- + poppler/Function.cc | 26 +- + poppler/Gfx.cc | 146 +- + poppler/GfxFont.cc | 134 +- + poppler/GfxState.cc | 346 +- + poppler/GlobalParams.cc | 76 +- + poppler/GlobalParamsWin.cc | 170 +- + poppler/Hints.cc | 18 +- + poppler/JArithmeticDecoder.cc | 2 +- + poppler/JBIG2Stream.cc | 202 +- + poppler/JPEG2000Stream.cc | 22 +- + poppler/Lexer.cc | 8 +- + poppler/Linearization.cc | 16 +- + poppler/Link.cc | 52 +- + poppler/MarkedContentOutputDev.cc | 22 +- + poppler/Movie.cc | 2 +- + poppler/NameToCharCode.cc | 4 +- + poppler/NameToUnicodeTable.h | 4 +- + poppler/OptionalContent.cc | 28 +- + poppler/Outline.cc | 10 +- + poppler/OutputDev.cc | 6 +- + poppler/PDFDoc.cc | 84 +- + poppler/PSOutputDev.cc | 162 +- + poppler/PSOutputDev.h | 2 +- + poppler/Page.cc | 10 +- + poppler/PageLabelInfo.cc | 2 +- + poppler/Parser.cc | 10 +- + poppler/PopplerCache.cc | 4 +- + poppler/Rendition.cc | 4 +- + poppler/SecurityHandler.cc | 26 +- + poppler/SignatureHandler.cc | 60 +- + poppler/Sound.cc | 10 +- + poppler/SplashOutputDev.cc | 186 +- + poppler/StdinCachedFile.cc | 2 +- + poppler/StdinPDFDocBuilder.cc | 2 +- + poppler/Stream.cc | 70 +- + poppler/StructElement.cc | 72 +- + poppler/StructElement.h | 30 +- + poppler/StructTreeRoot.cc | 4 +- + poppler/StructTreeRoot.h | 2 +- + poppler/TextOutputDev.cc | 224 +- + poppler/UTF.cc | 6 +- + poppler/UnicodeMap.cc | 18 +- + poppler/UnicodeTypeTable.cc | 938 ++-- + poppler/XRef.cc | 38 +- + qt5/demos/abstractinfodock.h | 2 +- + qt5/demos/documentobserver.cpp | 2 +- + qt5/demos/embeddedfiles.h | 2 +- + qt5/demos/fonts.h | 2 +- + qt5/demos/info.h | 2 +- + qt5/demos/metadata.h | 2 +- + qt5/demos/navigationtoolbar.h | 2 +- + qt5/demos/optcontent.cpp | 2 +- + qt5/demos/optcontent.h | 2 +- + qt5/demos/pageview.h | 2 +- + qt5/demos/permissions.h | 2 +- + qt5/demos/thumbnails.h | 2 +- + qt5/demos/toc.cpp | 4 +- + qt5/demos/toc.h | 2 +- + qt5/demos/viewer.cpp | 4 +- + qt5/src/ArthurOutputDev.cc | 2 +- + qt5/src/poppler-annotation.cc | 60 +- + qt5/src/poppler-base-converter.cc | 8 +- + qt5/src/poppler-document.cc | 18 +- + qt5/src/poppler-embeddedfile.cc | 14 +- + qt5/src/poppler-form.cc | 6 +- + qt5/src/poppler-link.cc | 4 +- + qt5/src/poppler-media.cc | 2 +- + qt5/src/poppler-movie.cc | 2 +- + qt5/src/poppler-optcontent.cc | 16 +- + qt5/src/poppler-optcontent.h | 2 +- + qt5/src/poppler-page.cc | 36 +- + qt5/src/poppler-pdf-converter.cc | 2 +- + qt5/src/poppler-private.cc | 16 +- + qt5/src/poppler-private.h | 2 +- + qt5/src/poppler-ps-converter.cc | 10 +- + qt5/src/poppler-qt5.h | 8 +- + qt5/src/poppler-sound.cc | 2 +- + qt5/tests/check_lexer.cpp | 2 +- + qt5/tests/check_metadata.cpp | 8 +- + qt5/tests/check_search.cpp | 2 +- + qt5/tests/stress-threads-qt5.cpp | 12 +- + qt5/tests/test-poppler-qt5.cpp | 2 +- + splash/Splash.cc | 110 +- + splash/SplashBitmap.cc | 18 +- + splash/SplashClip.cc | 12 +- + splash/SplashFTFont.cc | 8 +- + splash/SplashFTFontEngine.cc | 8 +- + splash/SplashFTFontFile.cc | 12 +- + splash/SplashFont.cc | 8 +- + splash/SplashFontEngine.cc | 22 +- + splash/SplashFontFile.cc | 4 +- + splash/SplashPath.cc | 8 +- + splash/SplashScreen.cc | 4 +- + splash/SplashState.cc | 22 +- + splash/SplashXPath.cc | 8 +- + splash/SplashXPathScanner.cc | 4 +- + test/CMakeLists.txt | 5 +- + test/gtk-test.cc | 28 +- + test/pdf-fullrewrite.cc | 14 +- + test/pdf-inspector.cc | 22 +- + test/perf-test.cc | 66 +- + utils/HtmlFonts.cc | 8 +- + utils/HtmlLinks.cc | 6 +- + utils/HtmlOutputDev.cc | 94 +- + utils/ImageOutputDev.cc | 10 +- + utils/JSInfo.cc | 4 +- + utils/Win32Console.cc | 2 +- + utils/parseargs.cc | 2 +- + utils/pdfdetach.cc | 8 +- + utils/pdffonts.cc | 6 +- + utils/pdfimages.cc | 8 +- + utils/pdfinfo.cc | 6 +- + utils/pdfseparate.cc | 14 +- + utils/pdfsig.cc | 12 +- + utils/pdftocairo-win32.cc | 22 +- + utils/pdftocairo.cc | 34 +- + utils/pdftohtml.cc | 36 +- + utils/pdftoppm.cc | 20 +- + utils/pdftops.cc | 8 +- + utils/pdftotext.cc | 10 +- + utils/pdfunite.cc | 16 +- + 179 files changed, 7929 insertions(+), 7920 deletions(-) + +commit 2e47887616155dee566083e1aac9adab69aa4386 +Author: Albert Astals Cid +Date: Mon Jan 8 22:14:34 2018 +0100 + + Seems we don't need to set this cmake policies to OLD + + builds fine without warnings + + cmake/modules/PopplerDefaults.cmake | 8 -------- + 1 file changed, 8 deletions(-) + +commit 1ae5d91467663576a5d11add69fa72a2d108f0ad +Author: Albert Astals Cid +Date: Mon Jan 8 18:45:43 2018 +0100 + + Remove useless return in a void function + + poppler/SplashOutputDev.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8794789a72f845b009656e6d7ae6a00b709e09bc +Author: Albert Astals Cid +Date: Mon Jan 8 18:07:38 2018 +0100 + + Delete lots of copy constructors and copy assignment operators + + Fixes rule-of-three and copyable-polymorphic warnings reported + by clazy. + + The default copy constructor and copy assignment operator are + only valid for simple classes so we delete them (i.e. make then + not exist) + when we have either a virtual class or a destructor, the code still + compiles + so this doesn't fix any bug, it is more a protection for when you + think you + can copy a class and don't realize the default copy constrcutor is + not doing + what you want and you get crashes. Hopefully this helps us in the + future :) + + cpp/poppler-document-private.h | 4 ++++ + cpp/poppler-embedded-file-private.h | 4 ++++ + cpp/poppler-global.cpp | 3 +++ + cpp/poppler-image-private.h | 4 ++++ + cpp/poppler-image.cpp | 4 +++- + cpp/poppler-page-private.h | 4 ++++ + cpp/poppler-toc-private.h | 4 ++++ + fofi/FoFiBase.h | 16 ++++++++++++++ + fofi/FoFiIdentifier.cc | 4 ++++ + goo/GooMutex.h | 5 ++++- + goo/ImgWriter.h | 6 +++++- + goo/gfile.h | 5 ++++- + poppler/Annot.h | 38 + +++++++++++++++++++++++++++++++++- + poppler/Array.h | 5 ++++- + poppler/BuiltinFont.h | 18 ++++++++++++++++ + poppler/CMap.h | 8 ++++++- + poppler/CachedFile.h | 9 +++++++- + poppler/CairoFontEngine.h | 6 +++++- + poppler/CairoOutputDev.h | 4 ++++ + poppler/CairoRescaleBox.h | 4 ++++ + poppler/Catalog.h | 9 +++++++- + poppler/CharCodeToUnicode.h | 8 ++++++- + poppler/Dict.h | 5 ++++- + poppler/FileSpec.h | 8 ++++++- + poppler/FontInfo.h | 4 +++- + poppler/Form.h | 8 ++++++- + poppler/Function.h | 5 ++++- + poppler/Gfx.cc | 5 ++++- + poppler/Gfx.h | 8 ++++++- + poppler/GfxFont.h | 11 +++++++++- + poppler/GfxState.cc | 2 ++ + poppler/GfxState.h | 26 ++++++++++++++++++++++- + poppler/GlobalParams.cc | 6 +++++- + poppler/GlobalParams.h | 5 ++++- + poppler/Hints.h | 5 ++++- + poppler/JArithmeticDecoder.h | 18 ++++++++++++++++ + poppler/JBIG2Stream.cc | 4 +++- + poppler/Lexer.h | 5 ++++- + poppler/Link.h | 10 +++++++++ + poppler/MarkedContentOutputDev.h | 4 ++++ + poppler/Movie.h | 3 ++- + poppler/NameToCharCode.h | 17 +++++++++++++++ + poppler/OptionalContent.h | 11 +++++++++- + poppler/Outline.h | 8 ++++++- + poppler/PDFDoc.h | 5 ++++- + poppler/PDFDocBuilder.h | 8 +++++-- + poppler/PDFDocFactory.h | 5 ++++- + poppler/PSOutputDev.cc | 7 ++++++- + poppler/Page.h | 5 ++++- + poppler/PageLabelInfo.h | 6 +++++- + poppler/Parser.h | 5 ++++- + poppler/PopplerCache.h | 18 +++++++++++++--- + poppler/Rendition.h | 3 ++- + poppler/SecurityHandler.cc | 5 ++++- + poppler/SecurityHandler.h | 5 ++++- + poppler/Sound.h | 5 ++++- + poppler/SplashOutputDev.cc | 4 +++- + poppler/Stream.h | 14 ++++++++++++- + poppler/StructElement.h | 5 ++++- + poppler/StructTreeRoot.h | 4 ++++ + poppler/TextOutputDev.cc | 2 ++ + poppler/TextOutputDev.h | 29 +++++++++++++++++++++++++- + poppler/UnicodeMap.h | 7 +++++++ + poppler/XRef.cc | 5 ++++- + poppler/XRef.h | 9 +++++++- + qt5/demos/documentobserver.h | 3 +++ + qt5/src/poppler-annotation-private.h | 5 ++++- + qt5/src/poppler-annotation.cc | 14 ++++++++++++- + qt5/src/poppler-converter-private.h | 5 ++++- + qt5/src/poppler-embeddedfile-private.h | 5 ++++- + qt5/src/poppler-link-private.h | 5 ++++- + qt5/src/poppler-media.cc | 5 ++++- + qt5/src/poppler-movie.cc | 5 ++++- + qt5/src/poppler-optcontent-private.h | 5 ++++- + qt5/src/poppler-page-transition.cc | 3 +++ + qt5/src/poppler-page-transition.h | 3 ++- + qt5/src/poppler-private.h | 18 +++++++--------- + qt5/src/poppler-sound.cc | 5 ++++- + splash/Splash.h | 5 ++++- + splash/SplashBitmap.h | 5 ++++- + splash/SplashClip.h | 5 ++++- + splash/SplashFTFontEngine.h | 5 ++++- + splash/SplashFont.h | 5 ++++- + splash/SplashFontEngine.h | 5 ++++- + splash/SplashFontFile.h | 8 ++++++- + splash/SplashFontFileID.h | 16 ++++++++++++++ + splash/SplashPath.h | 17 +++++++++++++++ + splash/SplashPattern.h | 4 ++++ + splash/SplashScreen.h | 5 ++++- + splash/SplashState.h | 4 ++++ + splash/SplashXPath.h | 4 ++++ + splash/SplashXPathScanner.h | 4 ++++ + test/perf-test.cc | 4 ++++ + utils/HtmlFonts.h | 4 +++- + utils/HtmlLinks.h | 5 ++++- + utils/HtmlOutputDev.cc | 4 +++- + utils/HtmlOutputDev.h | 13 ++++++++++-- + 97 files changed, 626 insertions(+), 83 deletions(-) + +commit 4c7814342806b61fedbb2d45ce74462f9dbc20bc +Author: Albert Astals Cid +Date: Thu Jan 4 23:12:54 2018 +0100 + + Fix assert on malformed documents + + Bug #104354 + + poppler/GfxState.cc | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +commit 6233710068e8406cb44741bdc74d1a0e2582e5cf +Author: Adrian Johnson +Date: Thu Jan 4 15:41:11 2018 +1030 + + Remove error for wrong child type for tagged pdf + + It is harmless and as a few PDFs do this it just adds noise to + the output. + + Bug #103587 + + poppler/StructTreeRoot.cc | 3 --- + 1 file changed, 3 deletions(-) + +commit 321538259a9c79a99ce846a6ea2d94dd7fa56f61 +Author: Adrian Johnson +Date: Sun Nov 26 20:43:15 2017 +1030 + + Fix some bugs in StructTreeRoot parsing of parent tree + + - Add support for parsing child nodes in the number tree + - Number tree keys do not have to be consecutive numbers. Use + map instead of vector for parentTree. + - Due to performance impact of iterating a map instead of + vector in parentTreeAdd, add a reverse mapping from Ref + to parentTree. + - Add mcid parameter to findParentElement() to enable finding + the parent when there are multiple MCIDs on the same page. + - Move RefCompare from pdfinfo.cc to Object.h so it can be + used by other files. + + Bug #103912 + + poppler/Object.h | 8 +++ + poppler/StructElement.cc | 2 +- + poppler/StructTreeRoot.cc | 121 + +++++++++++++++++++++++++++------------------- + poppler/StructTreeRoot.h | 14 ++++-- + utils/pdfinfo.cc | 6 --- + 5 files changed, 91 insertions(+), 60 deletions(-) + +commit c4cbb4fd5e062544bf34109140266d0b027a512b +Author: Adrian Johnson +Date: Mon Oct 30 19:21:41 2017 +1030 + + Fix pdfimages with flate encoded inline images + + - Remove advance strem pos to end of image code from listImage(). + getInlineImageLength() already does this. + + - Always EmbedStream in getInlineImageLength() to get size of + stored image. + The type of encoding does not matter. + + - Use same record EmbeddeStream code for all image types in + writeImage() + + - Fix some memory leaks + + Bug #103446 + + utils/ImageOutputDev.cc | 54 + ++++++++++++------------------------------------- + 1 file changed, 13 insertions(+), 41 deletions(-) + +commit f87238296f7a81f131f2525c4ea3a26d14e8a7ff +Author: Adrian Johnson +Date: Wed Jan 3 08:36:58 2018 +1030 + + Fix EmbedStream replay + + Bug #103446 + + poppler/Stream.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e70990c5b2d95a9099b8f4a1c69ca9e5b2a559a4 +Author: Albert Astals Cid +Date: Wed Jan 3 00:46:42 2018 +0100 + + qt5: make the check for rendition a bit earlier + + qt5/src/poppler-annotation.cc | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit 9f08b62ea283ea66b35cfc6dab3e7f45bc4170b9 +Author: Albert Astals Cid +Date: Wed Jan 3 00:32:23 2018 +0100 + + qt5: Do not assume all Screen annotation actions are Renditions + + Fixes KDE bug #388175 + + qt5/src/poppler-annotation.cc | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 15272137daf186114d8dfeb6898d8d90b3ccfd91 +Author: Albert Astals Cid +Date: Wed Jan 3 00:14:13 2018 +0100 + + Fix undefined sanitizer warning about qsort + + Said the first parameter is defined by spec to not be null and + we where + passing null when there's no blocks, so add an if + + poppler/TextOutputDev.cc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 066e6a3e0487f9e011f7b8d1ccff62def8db1e6c +Author: Albert Astals Cid +Date: Wed Jan 3 00:15:14 2018 +0100 + + Welcome 2018 + + poppler/poppler-config.h.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c9958ecb87de34b923a17521c8bb149569bacca8 +Author: Oliver Sander +Date: Sat Oct 28 21:16:55 2017 +0200 + + ArthurOutputDev: Rudimentary support for transparency groups + + This patch adds minimal support for transparency groups. With it, + the Arthur backend can render highlight annotations. + + qt5/src/ArthurOutputDev.cc | 46 + ++++++++++++++++++++++++++++++++++++++++++++++ + qt5/src/ArthurOutputDev.h | 15 +++++++++++++++ + 2 files changed, 61 insertions(+) + +commit bda1d76fc3c9cf69b2b67d94278e136ac50c3e3b +Author: Oliver Sander +Date: Fri Dec 29 00:14:44 2017 +0100 + + ArthurOutputDev: Replace the QPainter by a stack of QPainters + + This patch lays some groundwork for the support of transparency + groups. Transparency groups temporarily create new painters. + These get painted upon, and then the resulting new painting + will be drawn at once onto the original PaintDevice. To implement + this, we need a stack of painters rather than a single one. + The first painter on the stack is the original one. Opening a + transparency group pushes a new painter onto the stack, and + all drawing operations always go to the painter on the top + of the stack. + + qt5/src/ArthurOutputDev.cc | 88 + +++++++++++++++++++++++----------------------- + qt5/src/ArthurOutputDev.h | 7 +++- + 2 files changed, 50 insertions(+), 45 deletions(-) + +commit 71b04b79154a8edd27e73a2360d0c3a901246d8c +Author: Oliver Sander +Date: Fri Aug 11 22:23:46 2017 +0200 + + ArthurOutputDev: Implement updateBlendMode + + qt5/src/ArthurOutputDev.cc | 52 + ++++++++++++++++++++++++++++++++++++++++++++++ + qt5/src/ArthurOutputDev.h | 1 + + 2 files changed, 53 insertions(+) + +commit 9b981f9123fe8c3c8662015de341cff76aa28b07 +Author: Thomas Freitag +Date: Thu Dec 28 00:55:39 2017 +0100 + + FoFiTrueType::readPostTable() from xpdf 4.00 + + Bug #102880 + + fofi/FoFiTrueType.cc | 30 +++++++++++------------------- + 1 file changed, 11 insertions(+), 19 deletions(-) + +commit 00fc829352716b04d9ab59552daefffed20e2852 +Author: Thomas Freitag +Date: Thu Dec 28 00:55:00 2017 +0100 + + Break loop if recursionLimit is reached + + poppler/Parser.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e41ce80a27b735df8e2ccc17e15adea012543712 +Author: Albert Astals Cid +Date: Wed Dec 27 00:18:47 2017 +0100 + + OutlineItem: Store parent and refNum + + This way when opening our children we make sure they are not also our + parent (i.e. there's a loop) + + Fixes bug #102914 + + poppler/Outline.cc | 31 +++++++++++++++++-------------- + poppler/Outline.h | 6 ++++-- + 2 files changed, 21 insertions(+), 16 deletions(-) + +commit ffefe1c038de555ed39c3d9eca6ef79ac1f97b86 +Author: Albert Astals Cid +Date: Tue Dec 26 23:57:21 2017 +0100 + + qt5: demo: don't crash if page is malformed + + qt5/demos/pageview.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 81461f4cddf6b8705e6cf24d20084fc71891bb91 +Author: Albert Astals Cid +Date: Sat Dec 23 11:20:43 2017 +0100 + + Remove another LCMS1 old ifdef + + utils/pdftocairo.cc | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +commit 2556ec0705373a01feffe3ca0cd7147af2fdd2c9 +Author: suzuki toshiya +Date: Sat Dec 23 11:19:17 2017 +0100 + + Remove libcms1 crumbs from pdftocairo and qt5 frontend + + Bug #104358 + + qt5/src/poppler-document.cc | 5 +---- + utils/pdftocairo.cc | 6 +----- + 2 files changed, 2 insertions(+), 9 deletions(-) + +commit 48de59a92a5f88d10a1a53abf7f15f578104e1ed +Author: Carlos Garcia Campos +Date: Thu Dec 21 13:25:37 2017 +0100 + + regtest: Add an option to exit after n failures + + Note that running jobs are not cancelled when max failures is reached, + so we usually end up getting more failures than the maximum. + + regtest/HTMLReport.py | 2 ++ + regtest/Printer.py | 15 ++++++++++++++ + regtest/TestRun.py | 46 + +++++++++++++++++++++++++++++++++++++++++-- + regtest/commands/run-tests.py | 8 +++++++- + 4 files changed, 68 insertions(+), 3 deletions(-) + +commit 79a096a48c735ac301ae4d7439bddf630a559a96 +Author: Vincent Le Garrec +Date: Thu Dec 21 00:57:48 2017 +0100 + + Fix index out of bounds undefined behaviour in PSTokenizer + + Bug #103583 + + poppler/PSTokenizer.cc | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit c138ec620b5084348dc892bf9fd8228ed098970a +Author: Oliver Sander +Date: Tue Nov 28 16:40:40 2017 +0100 + + Arthur: 'clip' should intersect new and old clipping path + + Previously, the 'clip' method of the ArthurOutputDev class + replaced the current clipping path with the one given in + the GfxState variable. However, the expected behavior is + to intersect the new path with the old one, and use the + result as the new clipping path. + + qt5/src/ArthurOutputDev.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7b434a7ad9333a3b2250d636a517c58d9a12bca2 +Author: Pekka Vuorela +Date: Fri Dec 15 16:56:20 2017 +0200 + + Honor configuration for building glibc copy of strtok_r + + config.h didn't get included and HAVE_STRTOK_R was never defined. + Now getting via glibc.h. + + goo/glibc_strtok_r.cc | 3 +++ + 1 file changed, 3 insertions(+) + +commit c2037af18095bb42dd43bafb42650df469e7e5ef +Author: Oliver Sander +Date: Wed Oct 18 23:23:50 2017 +0200 + + Don't let ArthurOutputDev be friend of SplashPath anymore + + Now that ArthurOutputDev uses Qt glyph rendering, there is + not need for it to be friend of SplashPath anymore. + + splash/SplashPath.h | 2 -- + 1 file changed, 2 deletions(-) + +commit 33c3b391dfc3c10b1b63b0b82df4dcb47b71c53a +Author: Fredrik Fornwall +Date: Tue Dec 19 00:37:44 2017 +0100 + + PDFDoc: use %c instead of \x to output binary + + Bug #103873 + + poppler/PDFDoc.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 15dd674a384c80a8f3d4f0647f6617ba72d9bd26 +Author: Albert Astals Cid +Date: Thu Dec 14 15:11:31 2017 +0100 + + Remove unused FindLIBOPENJPEG.cmake + + cmake/modules/FindLIBOPENJPEG.cmake | 64 + ------------------------------------- + 1 file changed, 64 deletions(-) + +commit 65dcc0b9c16c80e6718ada060d7ac0e2c0e39abf +Author: Albert Astals Cid +Date: Wed Dec 13 10:40:50 2017 +0100 + + Reset lastAbortCheck on updateLevel reset + + Otherwise we get to a point that the + if (updateLevel - lastAbortCheck > 10) { + branch is never executed because updateLevel got to 20000 but + lastAbortCheck is still at the last value + + poppler/Gfx.cc | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3690e96154b226025b465ac2260cf1ff2d269abd +Author: Albert Astals Cid +Date: Wed Dec 13 00:07:20 2017 +0100 + + Remove the extern C from glib.h + + Apparently this fixes build with MSVC + + Bug #103621 + + goo/glibc.h | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit f5706275121409887b0e486b896b48cbcccb766a +Author: Adrian Johnson +Date: Sun Oct 22 10:26:55 2017 +1030 + + cairo: limit image size when printing + + 1 bpp image formats can have very large sizes. Even if the maximum + cairo image size is not exceeded, it still uses a huge amount + of memory + and is very slow. + + This limits the image size when printing to 8192x8192 which is + sufficient for 300ppi at A2 size. Cairo >= 1.5.10 scales mime images + to the same dimensions as the cairo image, so the original mime image + can still be embedded. + + Bug 103399 + + poppler/CairoOutputDev.cc | 35 ++++++++++++++++++++++++++++++++--- + 1 file changed, 32 insertions(+), 3 deletions(-) + +commit 3f13dd5f04984be1912b4537ffbfacd892750915 +Author: Adrian Johnson +Date: Sun Oct 22 09:37:01 2017 +1030 + + cairo: support embedding CCITT image data + + Bug 103399 + + poppler/CairoOutputDev.cc | 46 + +++++++++++++++++++++++++++++++++++++++++++--- + poppler/CairoOutputDev.h | 5 ++++- + poppler/Stream.cc | 14 ++++++++++---- + poppler/Stream.h | 6 +++++- + 4 files changed, 62 insertions(+), 9 deletions(-) + +commit 3263fa4439e1a09dae6a0332a90b983d25bc218d +Author: Thomas Freitag +Date: Tue Dec 12 00:26:37 2017 +0100 + + windows version for Error out on save if file has changed since we + opened it + + goo/gfile.cc | 14 +++++++++++++- + goo/gfile.h | 6 ++++-- + 2 files changed, 17 insertions(+), 3 deletions(-) + +commit e4ee1392136188fab0005a0bd7b30c6d9a16d97d +Author: Albert Astals Cid +Date: Tue Dec 12 00:24:31 2017 +0100 + + Error out on save if file has changed since we opened it + + In poppler we keep the fd of the file open so the XRef+FileStream can + locate objects. This is good since we save lots of memory for + not having + everything on memory all the time, but that means that when we want to + save we need the file to be exactly the same as it was when we created + the XRef otherwise we're going to be reading from the wrong part + of the + "new" file. + + Bug #103793 + + goo/gfile.cc | 18 +++++++++++++++++- + goo/gfile.h | 10 ++++++++-- + poppler/ErrorCodes.h | 16 ++++++++++++++++ + poppler/PDFDoc.cc | 11 +++++++++++ + 4 files changed, 52 insertions(+), 3 deletions(-) + +commit f10359121568409e6062a82de696fe93be615a53 +Author: Albert Astals Cid +Date: Sun Dec 3 22:41:32 2017 +0100 + + Fix memory leak on error condition + + poppler/Catalog.cc | 1 + + 1 file changed, 1 insertion(+) + commit 72e0a3a087f160d819f7697a8536bbee12240c7a Author: Albert Astals Cid Date: Sun Dec 3 20:25:06 2017 +0100 diff --git a/Build/source/libs/poppler/poppler-src/NEWS b/Build/source/libs/poppler/poppler-src/NEWS index 283dfc423b8..8b0af2243c6 100644 --- a/Build/source/libs/poppler/poppler-src/NEWS +++ b/Build/source/libs/poppler/poppler-src/NEWS @@ -1,3 +1,63 @@ +Release 0.63.0 + core: + * CairoOutputDev: support embedding CCITT image data. Bug #103399 + * CairoOutputDev: limit image size when printing. Bug #103399 + * CairoOutputDev: use GOOD instead of BEST as the default cairo filter for scaling. Bug #103136 + * Error out on save if file has changed since we opened it. Bug #103793 + * PDFDoc: use %c instead of \x to output binary. Bug #103873 + * Fix index out of bounds undefined behaviour in PSTokenizer. Bug #103583 + * Fix opening files with OutlineItem loops. Bug #102914 + * Fix some bugs in StructTreeRoot parsing of parent tree. Bug #103912 + * Remove error for wrong child type for tagged pdf. Bug #103587 + * FoFiTrueType::readPostTable() from xpdf 4.00. Bug #102880 + * GfxFontDict: merge reference generation from xpdf 4.00. Bug #104565 + * Reset lastAbortCheck on updateLevel reset + * PDFDoc::setup: Fail early if base stream length is 0. Bug #103552 + * Check curStr is actually a Stream before doing Stream operations. Bug #104518 + * Fix new Object API porting bug. Bug #104517 + * Check return code of getChar(), abort reading on error. Bug #104502 + * TextPage: Add horizontal scaling to font matrix. Bug #105259 + * Fix EmbedStream replay. Bug #103446 + * Fix memory leak on error condition + * Fix assert on malformed documents. Bug #104354 + * Fix abort in Gfx::opBeginMarkedContent if args[1] is not a name. Bug #104468 + * GfxGouraudTriangleShading::parse: Don't abort on malformed documents. Bug #104567 + * GfxFunctionShading::parse: Fix abort in malformed document. Bug #104581 + * Remove the extern C from glib.h. Bug #103621 + * Don't let ArthurOutputDev be friend of SplashPath anymore + * Fix undefined sanitizer warning about qsort + * Form.h: include time.h for time_t + * Various code improvements + + qt5: + * Add cancellation support to renderToImage and textList + * Do not assume all Screen annotation actions are Renditions. KDE bug #388175 + * qt5: Implement operator= for PageTransition + * ArthurOutputDev: 'clip' should intersect new and old clipping path + * ArthurOutputDev: Implement updateBlendMode + * ArthurOutputDev: Replace the QPainter by a stack of QPainters + * ArthurOutputDev: Rudimentary support for transparency groups + * Remove stale libcms1 code. Bug #104358 + * demo: don't crash if page is malformed + * Fix warnings due to the use of deprecated overloads of Poppler::Page::Search in tests. + + utils: + * pdfimages: Fix for files with flate encoded inline images. Bug #103446 + * pdftocairo: Remove stale libcms1 code. Bug #104358 + * pdfimages: Fix build without libtiff and libpng + * pdfseparate: Fix buffer size warning due to missing space for null terminator + + build system: + * Enable building all libs as static libs + * Enable no-missing-field-initializers + * Remove unused FindLIBOPENJPEG.cmake + * add "--owner root:0 --group root:0" options to tar command in dist target. Bug #104398 + * Add python3 support to gtkdoc.py + * gtkdoc.py: Make it work with newer gtk-doc. Bug #105075 + + cpp: + * Add page::text_list + Release 0.62.0 core: * Stop supporting lcms1, you really want to use lcms2 :) diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc index c58231189b1..2fa71d130be 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.cc @@ -57,29 +57,29 @@ char *FoFiBase::readFile(char *fileName, int *fileLen) { if (!(f = fopen(fileName, "rb"))) { error(errIO, -1, "Cannot open '{0:s}'", fileName); - return NULL; + return nullptr; } if (fseek(f, 0, SEEK_END) != 0) { error(errIO, -1, "Cannot seek to end of '{0:s}'", fileName); fclose(f); - return NULL; + return nullptr; } n = (int)ftell(f); if (n < 0) { error(errIO, -1, "Cannot determine length of '{0:s}'", fileName); fclose(f); - return NULL; + return nullptr; } if (fseek(f, 0, SEEK_SET) != 0) { error(errIO, -1, "Cannot seek to start of '{0:s}'", fileName); fclose(f); - return NULL; + return nullptr; } buf = (char *)gmalloc(n); if ((int)fread(buf, 1, n, f) != n) { gfree(buf); fclose(f); - return NULL; + return nullptr; } fclose(f); *fileLen = n; diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h b/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h index d613acd2bb1..be4e7025336 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiBase.h @@ -6,6 +6,20 @@ // //======================================================================== +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2018 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + #ifndef FOFIBASE_H #define FOFIBASE_H @@ -25,6 +39,8 @@ typedef void (*FoFiOutputFunc)(void *stream, const char *data, int len); class FoFiBase { public: + FoFiBase(const FoFiBase &) = delete; + FoFiBase& operator=(const FoFiBase &other) = delete; virtual ~FoFiBase(); diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc index 9fad1ebae83..96bd4e950fd 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiEncodings.cc @@ -34,38 +34,38 @@ //------------------------------------------------------------------------ const char * const fofiType1StandardEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclam", "quotedbl", @@ -161,40 +161,40 @@ const char * const fofiType1StandardEncoding[256] = { "bar", "braceright", "asciitilde", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "exclamdown", "cent", "sterling", @@ -210,12 +210,12 @@ const char * const fofiType1StandardEncoding[256] = { "guilsinglright", "fi", "fl", - NULL, + nullptr, "endash", "dagger", "daggerdbl", "periodcentered", - NULL, + nullptr, "paragraph", "bullet", "quotesinglbase", @@ -224,9 +224,9 @@ const char * const fofiType1StandardEncoding[256] = { "guillemotright", "ellipsis", "perthousand", - NULL, + nullptr, "questiondown", - NULL, + nullptr, "grave", "acute", "circumflex", @@ -235,100 +235,100 @@ const char * const fofiType1StandardEncoding[256] = { "breve", "dotaccent", "dieresis", - NULL, + nullptr, "ring", "cedilla", - NULL, + nullptr, "hungarumlaut", "ogonek", "caron", "emdash", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "AE", - NULL, + nullptr, "ordfeminine", - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, "Lslash", "Oslash", "OE", "ordmasculine", - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "ae", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "dotlessi", - NULL, - NULL, + nullptr, + nullptr, "lslash", "oslash", "oe", "germandbls", - NULL, - NULL, - NULL, - NULL + nullptr, + nullptr, + nullptr, + nullptr }; const char * const fofiType1ExpertEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclamsmall", "Hungarumlautsmall", - NULL, + nullptr, "dollaroldstyle", "dollarsuperior", "ampersandsmall", @@ -357,35 +357,35 @@ const char * const fofiType1ExpertEncoding[256] = { "threequartersemdash", "periodsuperior", "questionsmall", - NULL, + nullptr, "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "isuperior", - NULL, - NULL, + nullptr, + nullptr, "lsuperior", "msuperior", "nsuperior", "osuperior", - NULL, - NULL, + nullptr, + nullptr, "rsuperior", "ssuperior", "tsuperior", - NULL, + nullptr, "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", - NULL, + nullptr, "parenrightinferior", "Circumflexsmall", "hyphensuperior", @@ -420,67 +420,67 @@ const char * const fofiType1ExpertEncoding[256] = { "onefitted", "rupiah", "Tildesmall", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "exclamdownsmall", "centoldstyle", "Lslashsmall", - NULL, - NULL, + nullptr, + nullptr, "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", - NULL, + nullptr, "Dotaccentsmall", - NULL, - NULL, + nullptr, + nullptr, "Macronsmall", - NULL, - NULL, + nullptr, + nullptr, "figuredash", "hypheninferior", - NULL, - NULL, + nullptr, + nullptr, "Ogoneksmall", "Ringsmall", "Cedillasmall", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "onequarter", "onehalf", "threequarters", @@ -491,8 +491,8 @@ const char * const fofiType1ExpertEncoding[256] = { "seveneighths", "onethird", "twothirds", - NULL, - NULL, + nullptr, + nullptr, "zerosuperior", "onesuperior", "twosuperior", diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc index 00b240fdf07..3d41145b15d 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiIdentifier.cc @@ -14,6 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2013 Christoph Duelli +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -36,6 +37,9 @@ namespace { // do not pollute global namespace class Reader { public: + Reader() = default; + Reader(const Reader &) = delete; + Reader& operator=(const Reader &other) = delete; virtual ~Reader() {} @@ -186,7 +190,7 @@ FileReader *FileReader::make(char *fileName) { FILE *fA; if (!(fA = fopen(fileName, "rb"))) { - return NULL; + return nullptr; } return new FileReader(fA); } diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc index 2bbf04680dd..76299acc3d5 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiTrueType.cc @@ -277,7 +277,7 @@ FoFiTrueType *FoFiTrueType::make(char *fileA, int lenA, int faceIndexA) { ff = new FoFiTrueType(fileA, lenA, gFalse, faceIndexA); if (!ff->parsedOk) { delete ff; - return NULL; + return nullptr; } return ff; } @@ -288,12 +288,12 @@ FoFiTrueType *FoFiTrueType::load(char *fileName, int faceIndexA) { int lenA; if (!(fileA = FoFiBase::readFile(fileName, &lenA))) { - return NULL; + return nullptr; } ff = new FoFiTrueType(fileA, lenA, gTrue, faceIndexA); if (!ff->parsedOk) { delete ff; - return NULL; + return nullptr; } return ff; } @@ -301,11 +301,11 @@ FoFiTrueType *FoFiTrueType::load(char *fileName, int faceIndexA) { FoFiTrueType::FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA, int faceIndexA): FoFiBase(fileA, lenA, freeFileDataA) { - tables = NULL; + tables = nullptr; nTables = 0; - cmaps = NULL; + cmaps = nullptr; nCmaps = 0; - nameToGID = NULL; + nameToGID = nullptr; parsedOk = gFalse; faceIndex = faceIndexA; gsubFeatureTable = 0; @@ -472,10 +472,10 @@ int *FoFiTrueType::getCIDToGIDMap(int *nCIDs) { *nCIDs = 0; if (!getCFFBlock(&start, &length)) { - return NULL; + return nullptr; } if (!(ff = FoFiType1C::make(start, length))) { - return NULL; + return nullptr; } map = ff->getCIDToGIDMap(nCIDs); delete ff; @@ -556,7 +556,7 @@ void FoFiTrueType::convertToType42(char *psName, char **encoding, // write the guts of the dictionary cvtEncoding(encoding, outputFunc, outputStream); cvtCharStrings(encoding, codeToGID, outputFunc, outputStream); - cvtSfnts(outputFunc, outputStream, NULL, gFalse, &maxUsedGlyph); + cvtSfnts(outputFunc, outputStream, nullptr, gFalse, &maxUsedGlyph); // end the dictionary and define the font (*outputFunc)(outputStream, "FontName currentdict end definefont pop\n", 40); @@ -701,7 +701,7 @@ void FoFiTrueType::convertToCIDType2(char *psName, (*outputFunc)(outputStream, " end readonly def\n", 19); // write the guts of the dictionary - cvtSfnts(outputFunc, outputStream, NULL, needVerticalMetrics, &maxUsedGlyph); + cvtSfnts(outputFunc, outputStream, nullptr, needVerticalMetrics, &maxUsedGlyph); // end the dictionary and define the font (*outputFunc)(outputStream, @@ -1061,7 +1061,7 @@ void FoFiTrueType::cvtSfnts(FoFiOutputFunc outputFunc, ++nNewTables; } } - vmtxTab = NULL; // make gcc happy + vmtxTab = nullptr; // make gcc happy vmtxTabLength = 0; advance = 0; // make gcc happy if (needVerticalMetrics) { @@ -1387,7 +1387,7 @@ void FoFiTrueType::parse() { nTables = j; tables = (TrueTypeTable *)greallocn_checkoverflow(tables, nTables, sizeof(TrueTypeTable)); } - if (!parsedOk || tables == NULL) { + if (!parsedOk || tables == nullptr) { return; } @@ -1451,7 +1451,7 @@ void FoFiTrueType::parse() { void FoFiTrueType::readPostTable() { GooString *name; - int tablePos, postFmt, stringIdx, stringPos, savedStringIdx; + int tablePos, postFmt, stringIdx, stringPos; GBool ok; int i, j, n, m; @@ -1481,38 +1481,30 @@ void FoFiTrueType::readPostTable() { stringIdx = 0; stringPos = tablePos + 34 + 2*n; for (i = 0; i < n; ++i) { + ok = gTrue; j = getU16BE(tablePos + 34 + 2*i, &ok); if (j < 258) { nameToGID->removeInt(macGlyphNames[j]); nameToGID->add(new GooString(macGlyphNames[j]), i); } else { - savedStringIdx = stringIdx; j -= 258; if (j != stringIdx) { for (stringIdx = 0, stringPos = tablePos + 34 + 2*n; stringIdx < j; ++stringIdx, stringPos += 1 + getU8(stringPos, &ok)) ; if (!ok) { - goto err; + continue; } } m = getU8(stringPos, &ok); if (!ok || !checkRegion(stringPos + 1, m)) { - stringIdx = savedStringIdx; - if (j < 258) { - ok = gTrue; - nameToGID->removeInt(macGlyphNames[j]); - nameToGID->add(new GooString(macGlyphNames[0]), i); - } else { - goto err; - } - } else { - name = new GooString((char *)&file[stringPos + 1], m); - nameToGID->removeInt(name); - nameToGID->add(name, i); - ++stringIdx; - stringPos += 1 + m; - } + continue; + } + name = new GooString((char *)&file[stringPos + 1], m); + nameToGID->removeInt(name); + nameToGID->add(name, i); + ++stringIdx; + stringPos += 1 + m; } } } else if (postFmt == 0x00028000) { @@ -1520,7 +1512,7 @@ void FoFiTrueType::readPostTable() { for (i = 0; i < nGlyphs; ++i) { j = getU8(tablePos + 32 + i, &ok); if (!ok) { - goto err; + continue; } if (j < 258) { nameToGID->removeInt(macGlyphNames[j]); @@ -1534,7 +1526,7 @@ void FoFiTrueType::readPostTable() { err: if (nameToGID) { delete nameToGID; - nameToGID = NULL; + nameToGID = nullptr; } } @@ -1578,7 +1570,7 @@ Guint FoFiTrueType::charToTag(const char *tagName) */ int FoFiTrueType::setupGSUB(const char *scriptName) { - return setupGSUB(scriptName, NULL); + return setupGSUB(scriptName, nullptr); } /* @@ -1603,7 +1595,7 @@ int FoFiTrueType::setupGSUB(const char *scriptName, int x; Guint pos; - if (scriptName == 0) { + if (scriptName == nullptr) { gsubFeatureTable = 0; return 0; } diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc index a73b77c2914..dbe95b67174 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiType1.cc @@ -54,7 +54,7 @@ FoFiType1 *FoFiType1::load(char *fileName) { int lenA; if (!(fileA = FoFiBase::readFile(fileName, &lenA))) { - return NULL; + return nullptr; } return new FoFiType1(fileA, lenA, gTrue); } @@ -62,8 +62,8 @@ FoFiType1 *FoFiType1::load(char *fileName) { FoFiType1::FoFiType1(char *fileA, int lenA, GBool freeFileDataA): FoFiBase(fileA, lenA, freeFileDataA) { - name = NULL; - encoding = NULL; + name = nullptr; + encoding = nullptr; fontMatrix[0] = 0.001; fontMatrix[1] = 0; fontMatrix[2] = 0; @@ -150,7 +150,7 @@ void FoFiType1::writeEncoded(const char **newEncoding, // skip "/Encoding" + one whitespace char, // then look for 'def' preceded by PostScript whitespace p = line + 10; - line = NULL; + line = nullptr; for (; p < (char *)file + len; ++p) { if ((*p == ' ' || *p == '\t' || *p == '\x0a' || *p == '\x0d' || *p == '\x0c' || *p == '\0') && @@ -176,7 +176,7 @@ void FoFiType1::writeEncoded(const char **newEncoding, // skip "/Encoding" + one whitespace char, // then look for 'def' preceded by PostScript whitespace p = line2 + 10; - line = NULL; + line = nullptr; for (; p < (char *)file + len; ++p) { if ((*p == ' ' || *p == '\t' || *p == '\x0a' || *p == '\x0d' || *p == '\x0c' || *p == '\0') && @@ -207,7 +207,7 @@ char *FoFiType1::getNextLine(char *line) { ++line; } if (line >= (char *)file + len) { - return NULL; + return nullptr; } return line; } @@ -243,7 +243,7 @@ void FoFiType1::parse() { !strncmp(line, "/Encoding 256 array", 19)) { encoding = (char **)gmallocn(256, sizeof(char *)); for (j = 0; j < 256; ++j) { - encoding[j] = NULL; + encoding[j] = nullptr; } continueLine = gFalse; for (j = 0, line = getNextLine(line); @@ -324,7 +324,7 @@ void FoFiType1::parse() { } } else { if (strtok_r(buf, " \t", &tokptr) && - (p = strtok_r(NULL, " \t\n\r", &tokptr)) && !strcmp(p, "def")) { + (p = strtok_r(nullptr, " \t\n\r", &tokptr)) && !strcmp(p, "def")) { break; } } @@ -339,7 +339,7 @@ void FoFiType1::parse() { if ((p2 = strchr(p, ']'))) { *p2 = '\0'; for (j = 0; j < 6; ++j) { - if ((p = strtok(j == 0 ? p : (char *)NULL, " \t\n\r"))) { + if ((p = strtok(j == 0 ? p : (char *)nullptr, " \t\n\r"))) { fontMatrix[j] = atof(p); } else { break; diff --git a/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc b/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc index 7c9494f57c6..03e779938f1 100644 --- a/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc +++ b/Build/source/libs/poppler/poppler-src/fofi/FoFiType1C.cc @@ -51,7 +51,7 @@ FoFiType1C *FoFiType1C::make(char *fileA, int lenA) { ff = new FoFiType1C(fileA, lenA, gFalse); if (!ff->parse()) { delete ff; - return NULL; + return nullptr; } return ff; } @@ -62,12 +62,12 @@ FoFiType1C *FoFiType1C::load(char *fileName) { int lenA; if (!(fileA = FoFiBase::readFile(fileName, &lenA))) { - return NULL; + return nullptr; } ff = new FoFiType1C(fileA, lenA, gTrue); if (!ff->parse()) { delete ff; - return NULL; + return nullptr; } return ff; } @@ -75,11 +75,11 @@ FoFiType1C *FoFiType1C::load(char *fileName) { FoFiType1C::FoFiType1C(char *fileA, int lenA, GBool freeFileDataA): FoFiBase(fileA, lenA, freeFileDataA) { - name = NULL; - encoding = NULL; - privateDicts = NULL; - fdSelect = NULL; - charset = NULL; + name = nullptr; + encoding = nullptr; + privateDicts = nullptr; + fdSelect = nullptr; + charset = nullptr; charsetLength = 0; } @@ -112,7 +112,7 @@ FoFiType1C::~FoFiType1C() { } char *FoFiType1C::getName() { - return name ? name->getCString() : (char *)NULL; + return name ? name->getCString() : (char *)nullptr; } char **FoFiType1C::getEncoding() { @@ -125,10 +125,10 @@ GooString *FoFiType1C::getGlyphName(int gid) { ok = gTrue; if (gid < 0 || gid >= charsetLength) - return NULL; + return nullptr; getString(charset[gid], buf, &ok); if (!ok) { - return NULL; + return nullptr; } return new GooString(buf); } @@ -140,7 +140,7 @@ int *FoFiType1C::getCIDToGIDMap(int *nCIDs) { // a CID font's top dict has ROS as the first operator if (topDict.firstOp != 0x0c1e) { *nCIDs = 0; - return NULL; + return nullptr; } // in a CID font, the charset data is the GID-to-CID mapping, so all @@ -2412,7 +2412,7 @@ void FoFiType1C::buildEncoding() { } else { encoding = (char **)gmallocn(256, sizeof(char *)); for (i = 0; i < 256; ++i) { - encoding[i] = NULL; + encoding[i] = nullptr; } pos = topDict.encodingOffset; encFormat = getU8(pos++, &parsedOk); @@ -2545,7 +2545,7 @@ GBool FoFiType1C::readCharset() { } if (!parsedOk) { gfree(charset); - charset = NULL; + charset = nullptr; charsetLength = 0; return gFalse; } diff --git a/Build/source/libs/poppler/poppler-src/goo/GooHash.cc b/Build/source/libs/poppler/poppler-src/goo/GooHash.cc index 49f58c5f00a..cd39a5aee3f 100644 --- a/Build/source/libs/poppler/poppler-src/goo/GooHash.cc +++ b/Build/source/libs/poppler/poppler-src/goo/GooHash.cc @@ -56,7 +56,7 @@ GooHash::GooHash(GBool deleteKeysA) { size = 7; tab = (GooHashBucket **)gmallocn(size, sizeof(GooHashBucket *)); for (h = 0; h < size; ++h) { - tab[h] = NULL; + tab[h] = nullptr; } len = 0; } @@ -149,7 +149,7 @@ void *GooHash::lookup(GooString *key) { int h; if (!(p = find(key, &h))) { - return NULL; + return nullptr; } return p->val.p; } @@ -169,7 +169,7 @@ void *GooHash::lookup(const char *key) { int h; if (!(p = find(key, &h))) { - return NULL; + return nullptr; } return p->val.p; } @@ -191,7 +191,7 @@ void *GooHash::remove(GooString *key) { int h; if (!(p = find(key, &h))) { - return NULL; + return nullptr; } q = &tab[h]; while (*q != p) { @@ -237,7 +237,7 @@ void *GooHash::remove(const char *key) { int h; if (!(p = find(key, &h))) { - return NULL; + return nullptr; } q = &tab[h]; while (*q != p) { @@ -279,7 +279,7 @@ int GooHash::removeInt(const char *key) { void GooHash::startIter(GooHashIter **iter) { *iter = new GooHashIter; (*iter)->h = -1; - (*iter)->p = NULL; + (*iter)->p = nullptr; } GBool GooHash::getNext(GooHashIter **iter, GooString **key, void **val) { @@ -292,7 +292,7 @@ GBool GooHash::getNext(GooHashIter **iter, GooString **key, void **val) { while (!(*iter)->p) { if (++(*iter)->h == size) { delete *iter; - *iter = NULL; + *iter = nullptr; return gFalse; } (*iter)->p = tab[(*iter)->h]; @@ -312,7 +312,7 @@ GBool GooHash::getNext(GooHashIter **iter, GooString **key, int *val) { while (!(*iter)->p) { if (++(*iter)->h == size) { delete *iter; - *iter = NULL; + *iter = nullptr; return gFalse; } (*iter)->p = tab[(*iter)->h]; @@ -324,7 +324,7 @@ GBool GooHash::getNext(GooHashIter **iter, GooString **key, int *val) { void GooHash::killIter(GooHashIter **iter) { delete *iter; - *iter = NULL; + *iter = nullptr; } void GooHash::expand() { @@ -337,7 +337,7 @@ void GooHash::expand() { size = 2*size + 1; tab = (GooHashBucket **)gmallocn(size, sizeof(GooHashBucket *)); for (h = 0; h < size; ++h) { - tab[h] = NULL; + tab[h] = nullptr; } for (i = 0; i < oldSize; ++i) { while (oldTab[i]) { @@ -363,7 +363,7 @@ GooHashBucket *GooHash::find(GooString *key, int *h) { return p; } } - return NULL; + return nullptr; } GooHashBucket *GooHash::find(const char *key, int *h) { @@ -375,7 +375,7 @@ GooHashBucket *GooHash::find(const char *key, int *h) { return p; } } - return NULL; + return nullptr; } int GooHash::hash(GooString *key) { diff --git a/Build/source/libs/poppler/poppler-src/goo/GooMutex.h b/Build/source/libs/poppler/poppler-src/goo/GooMutex.h index 68dabc4028c..ed0758fa67a 100644 --- a/Build/source/libs/poppler/poppler-src/goo/GooMutex.h +++ b/Build/source/libs/poppler/poppler-src/goo/GooMutex.h @@ -17,7 +17,7 @@ // // Copyright (C) 2009 Kovid Goyal // Copyright (C) 2013 Thomas Freitag -// Copyright (C) 2013 Albert Astals Cid +// Copyright (C) 2013, 2018 Albert Astals Cid // Copyright (C) 2013 Adam Reichold // Copyright (C) 2014 Bogdan Cristea // Copyright (C) 2014 Peter Breitenlohner @@ -81,6 +81,9 @@ public: MutexLocker(GooMutex *mutexA) : mutex(mutexA) { gLockMutex(mutex); } ~MutexLocker() { gUnlockMutex(mutex); } + MutexLocker(const MutexLocker &) = delete; + MutexLocker& operator=(const MutexLocker &other) = delete; + private: GooMutex *mutex; }; diff --git a/Build/source/libs/poppler/poppler-src/goo/GooString.cc b/Build/source/libs/poppler/poppler-src/goo/GooString.cc index e23c2b76d6b..d67b8752622 100644 --- a/Build/source/libs/poppler/poppler-src/goo/GooString.cc +++ b/Build/source/libs/poppler/poppler-src/goo/GooString.cc @@ -114,7 +114,7 @@ static const char *formatStrings[] = { "s", "t", "w", - NULL + nullptr }; //------------------------------------------------------------------------ @@ -185,9 +185,9 @@ GooString* GooString::Set(const char *newStr, int newLen) } GooString::GooString() { - s = NULL; + s = nullptr; length = 0; - Set(NULL); + Set(nullptr); #if __cplusplus >= 201103L static_assert(sizeof(GooString) == GooString::STR_FINAL_SIZE, "You should check memory alignment or STR_STATIC_SIZE calculation."); @@ -195,32 +195,32 @@ GooString::GooString() { } GooString::GooString(const char *sA) { - s = NULL; + s = nullptr; length = 0; Set(sA, CALC_STRING_LEN); } GooString::GooString(const char *sA, int lengthA) { - s = NULL; + s = nullptr; length = 0; Set(sA, lengthA); } GooString::GooString(GooString *str, int idx, int lengthA) { - s = NULL; + s = nullptr; length = 0; assert(idx + lengthA <= str->length); Set(str->getCString() + idx, lengthA); } GooString::GooString(const GooString *str) { - s = NULL; + s = nullptr; length = 0; Set(str->getCString(), str->length); } GooString::GooString(GooString *str1, GooString *str2) { - s = NULL; + s = nullptr; length = 0; resize(str1->length + str2->length); memcpy(s, str1->getCString(), str1->length); diff --git a/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc b/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc index c766c6bf2e4..b1161853f2d 100644 --- a/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc +++ b/Build/source/libs/poppler/poppler-src/goo/GooTimer.cc @@ -32,7 +32,7 @@ GooTimer::GooTimer() { void GooTimer::start() { #ifdef HAVE_GETTIMEOFDAY - gettimeofday(&start_time, NULL); + gettimeofday(&start_time, nullptr); #elif defined(_WIN32) QueryPerformanceCounter(&start_time); #endif @@ -41,7 +41,7 @@ void GooTimer::start() { void GooTimer::stop() { #ifdef HAVE_GETTIMEOFDAY - gettimeofday(&end_time, NULL); + gettimeofday(&end_time, nullptr); #elif defined(_WIN32) QueryPerformanceCounter(&end_time); #endif @@ -55,7 +55,7 @@ double GooTimer::getElapsed() struct timeval elapsed; if (active) - gettimeofday(&end_time, NULL); + gettimeofday(&end_time, nullptr); if (start_time.tv_usec > end_time.tv_usec) { end_time.tv_usec += USEC_PER_SEC; diff --git a/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h b/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h index 8feb3511e4d..2ab97cdb4b2 100644 --- a/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h +++ b/Build/source/libs/poppler/poppler-src/goo/ImgWriter.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2009 Stefan Thomas -// Copyright (C) 2009, 2011 Albert Astals Cid +// Copyright (C) 2009, 2011, 2018 Albert Astals Cid // Copyright (C) 2010 Adrian Johnson // Copyright (C) 2010 Brian Cameron // Copyright (C) 2011 Thomas Freitag @@ -20,6 +20,10 @@ class ImgWriter { public: + ImgWriter() = default; + ImgWriter(const ImgWriter &) = delete; + ImgWriter& operator=(const ImgWriter &other) = delete; + virtual ~ImgWriter(); virtual bool init(FILE *f, int width, int height, int hDPI, int vDPI) = 0; diff --git a/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc b/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc index ed06edb3d15..f230fcaf96f 100644 --- a/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc +++ b/Build/source/libs/poppler/poppler-src/goo/PNGWriter.cc @@ -41,9 +41,9 @@ PNGWriter::PNGWriter(Format formatA) { priv = new PNGWriterPrivate; priv->format = formatA; - priv->icc_data = NULL; + priv->icc_data = nullptr; priv->icc_data_size = 0; - priv->icc_name = NULL; + priv->icc_name = nullptr; priv->sRGB_profile = false; } @@ -82,7 +82,7 @@ bool PNGWriter::init(FILE *f, int width, int height, int hDPI, int vDPI) #endif /* initialize stuff */ - priv->png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + priv->png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); if (!priv->png_ptr) { error(errInternal, -1, "png_create_write_struct failed"); return false; diff --git a/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc b/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc index 35ceae69f6a..fd2eaa31485 100644 --- a/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc +++ b/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc @@ -42,10 +42,10 @@ TiffWriter::~TiffWriter() TiffWriter::TiffWriter(Format formatA) { priv = new TiffWriterPrivate; - priv->f = NULL; + priv->f = nullptr; priv->numRows = 0; priv->curRow = 0; - priv->compressionString = NULL; + priv->compressionString = nullptr; priv->format = formatA; } @@ -87,12 +87,12 @@ bool TiffWriter::init(FILE *openedFile, int width, int height, int hDPI, int vDP { "dcs", COMPRESSION_DCS, "Kodak DCS encoding" }, { "jbig", COMPRESSION_JBIG, "ISO JBIG" }, { "jp2000", COMPRESSION_JP2000, "Leadtools JPEG2000" }, - { NULL, 0, NULL } + { nullptr, 0, nullptr } }; // Initialize - priv->f = NULL; + priv->f = nullptr; priv->curRow = 0; // Store the number of rows @@ -103,20 +103,20 @@ bool TiffWriter::init(FILE *openedFile, int width, int height, int hDPI, int vDP compression = COMPRESSION_NONE; - if (priv->compressionString == NULL || strcmp(priv->compressionString, "") == 0) { + if (priv->compressionString == nullptr || strcmp(priv->compressionString, "") == 0) { compression = COMPRESSION_NONE; } else { int i; - for (i = 0; compressionList[i].compressionName != NULL; i++) { + for (i = 0; compressionList[i].compressionName != nullptr; i++) { if (strcmp(priv->compressionString, compressionList[i].compressionName) == 0) { compression = compressionList[i].compressionCode; break; } } - if (compressionList[i].compressionName == NULL) { + if (compressionList[i].compressionName == nullptr) { fprintf(stderr, "TiffWriter: Unknown compression type '%.10s', using 'none'.\n", priv->compressionString); fprintf(stderr, "Known compression types (the tiff library might not support every type)\n"); - for (i = 0; compressionList[i].compressionName != NULL; i++) { + for (i = 0; compressionList[i].compressionName != nullptr; i++) { fprintf(stderr, "%10s %s\n", compressionList[i].compressionName, compressionList[i].compressionDescription); } } @@ -157,7 +157,7 @@ bool TiffWriter::init(FILE *openedFile, int width, int height, int hDPI, int vDP // Open the file - if (openedFile == NULL) { + if (openedFile == nullptr) { fprintf(stderr, "TiffWriter: No output file given.\n"); return false; } diff --git a/Build/source/libs/poppler/poppler-src/goo/gfile.cc b/Build/source/libs/poppler/poppler-src/goo/gfile.cc index fe05de67b5e..218882d32d7 100644 --- a/Build/source/libs/poppler/poppler-src/goo/gfile.cc +++ b/Build/source/libs/poppler/poppler-src/goo/gfile.cc @@ -19,12 +19,12 @@ // Copyright (C) 2006 Kristian Høgsberg // Copyright (C) 2008 Adam Batkin // Copyright (C) 2008, 2010, 2012, 2013 Hib Eris -// Copyright (C) 2009, 2012, 2014 Albert Astals Cid +// Copyright (C) 2009, 2012, 2014, 2017, 2018 Albert Astals Cid // Copyright (C) 2009 Kovid Goyal -// Copyright (C) 2013 Adam Reichold +// Copyright (C) 2013, 2018 Adam Reichold // Copyright (C) 2013, 2017 Adrian Johnson // Copyright (C) 2013 Peter Breitenlohner -// Copyright (C) 2013 Thomas Freitag +// Copyright (C) 2013, 2017 Thomas Freitag // Copyright (C) 2017 Christoph Cullmann // // To see a description of the changes please see the Changelog file that @@ -65,6 +65,40 @@ #define PATH_MAX 1024 #endif +namespace { + +template< typename... > +struct void_type +{ + using type = void; +}; + +template< typename... Args > +using void_t = typename void_type< Args... >::type; + +template< typename Stat, typename = void_t<> > +struct StatMtim +{ + static const struct timespec& value(const Stat& stbuf) { + return stbuf.st_mtim; + } +}; + +// Mac OS X uses a different field name than POSIX and this detects it. +template< typename Stat > +struct StatMtim< Stat, void_t< decltype ( Stat::st_mtimespec ) > > +{ + static const struct timespec& value(const Stat& stbuf) { + return stbuf.st_mtimespec; + } +}; + +inline const struct timespec& mtim(const struct stat& stbuf) { + return StatMtim< struct stat >::value(stbuf); +} + +} + //------------------------------------------------------------------------ GooString *getCurrentDir() { @@ -357,7 +391,7 @@ GBool openTempFile(GooString **name, FILE **f, const char *mode) { } s->appendf("x_{0:d}_{1:d}_", (int)GetCurrentProcessId(), (int)GetCurrentThreadId()); - t = (int)time(NULL); + t = (int)time(nullptr); for (i = 0; i < 1000; ++i) { s2 = s->copy()->appendf("{0:d}", t + i); if (!(f2 = fopen(s2->getCString(), "r"))) { @@ -416,7 +450,7 @@ GBool openTempFile(GooString **name, FILE **f, const char *mode) { #endif // HAVE_MKSTEMP if (fd < 0 || !(*f = fdopen(fd, mode))) { delete *name; - *name = NULL; + *name = nullptr; return gFalse; } return gTrue; @@ -548,7 +582,7 @@ char *getLine(char *buf, int size, FILE *f) { } buf[i] = '\0'; if (i == 0) { - return NULL; + return nullptr; } return buf; } @@ -599,13 +633,17 @@ Goffset GoffsetMax() { #ifdef _WIN32 +GooFile::GooFile(HANDLE handleA) : handle(handleA) { + GetFileTime(handleA, nullptr, nullptr, &modifiedTimeOnOpen); +} + int GooFile::read(char *buf, int n, Goffset offset) const { DWORD m; - LARGE_INTEGER largeInteger = {0}; + LARGE_INTEGER largeInteger = {}; largeInteger.QuadPart = offset; - OVERLAPPED overlapped = {0}; + OVERLAPPED overlapped = {}; overlapped.Offset = largeInteger.LowPart; overlapped.OffsetHigh = largeInteger.HighPart; @@ -624,22 +662,30 @@ GooFile* GooFile::open(const GooString *fileName) { HANDLE handle = CreateFileA(fileName->getCString(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, + nullptr, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); + FILE_ATTRIBUTE_NORMAL, nullptr); - return handle == INVALID_HANDLE_VALUE ? NULL : new GooFile(handle); + return handle == INVALID_HANDLE_VALUE ? nullptr : new GooFile(handle); } GooFile* GooFile::open(const wchar_t *fileName) { HANDLE handle = CreateFileW(fileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, + nullptr, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, NULL); + FILE_ATTRIBUTE_NORMAL, nullptr); - return handle == INVALID_HANDLE_VALUE ? NULL : new GooFile(handle); + return handle == INVALID_HANDLE_VALUE ? nullptr : new GooFile(handle); +} + +bool GooFile::modificationTimeChangedSinceOpen() const +{ + struct _FILETIME lastModified; + GetFileTime(handle, nullptr, nullptr, &lastModified); + + return modifiedTimeOnOpen.dwHighDateTime != lastModified.dwHighDateTime || modifiedTimeOnOpen.dwLowDateTime != lastModified.dwLowDateTime; } #else @@ -667,7 +713,23 @@ GooFile* GooFile::open(const GooString *fileName) { int fd = ::open(fileName->getCString(), O_RDONLY); #endif - return fd < 0 ? NULL : new GooFile(fd); + return fd < 0 ? nullptr : new GooFile(fd); +} + +GooFile::GooFile(int fdA) + : fd(fdA) +{ + struct stat statbuf; + fstat(fd, &statbuf); + modifiedTimeOnOpen = mtim(statbuf); +} + +bool GooFile::modificationTimeChangedSinceOpen() const +{ + struct stat statbuf; + fstat(fd, &statbuf); + + return modifiedTimeOnOpen.tv_sec != mtim(statbuf).tv_sec || modifiedTimeOnOpen.tv_nsec != mtim(statbuf).tv_nsec; } #endif // _WIN32 @@ -749,7 +811,7 @@ GDir::~GDir() { } GDirEntry *GDir::getNextEntry() { - GDirEntry *e = NULL; + GDirEntry *e = nullptr; #if defined(_WIN32) if (hnd != INVALID_HANDLE_VALUE) { diff --git a/Build/source/libs/poppler/poppler-src/goo/gfile.h b/Build/source/libs/poppler/poppler-src/goo/gfile.h index 805e5232262..0741a92df96 100644 --- a/Build/source/libs/poppler/poppler-src/goo/gfile.h +++ b/Build/source/libs/poppler/poppler-src/goo/gfile.h @@ -16,13 +16,14 @@ // under GPL version 2 or later // // Copyright (C) 2006 Kristian Høgsberg -// Copyright (C) 2009, 2011, 2012 Albert Astals Cid +// Copyright (C) 2009, 2011, 2012, 2017, 2018 Albert Astals Cid // Copyright (C) 2009 Kovid Goyal // Copyright (C) 2013 Adam Reichold // Copyright (C) 2013, 2017 Adrian Johnson // Copyright (C) 2014 Bogdan Cristea // Copyright (C) 2014 Peter Breitenlohner // Copyright (C) 2017 Christoph Cullmann +// Copyright (C) 2017 Thomas Freitag // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -136,6 +137,9 @@ extern Goffset GoffsetMax(); class GooFile { public: + GooFile(const GooFile &) = delete; + GooFile& operator=(const GooFile &other) = delete; + int read(char *buf, int n, Goffset offset) const; Goffset size() const; @@ -145,16 +149,23 @@ public: static GooFile *open(const wchar_t *fileName); ~GooFile() { CloseHandle(handle); } + + // Asuming than on windows you can't change files that are already open + bool modificationTimeChangedSinceOpen() const; private: - GooFile(HANDLE handleA): handle(handleA) {} + GooFile(HANDLE handleA); HANDLE handle; + struct _FILETIME modifiedTimeOnOpen; #else ~GooFile() { close(fd); } + + bool modificationTimeChangedSinceOpen() const; private: - GooFile(int fdA) : fd(fdA) {} + GooFile(int fdA); int fd; + struct timespec modifiedTimeOnOpen; #endif // _WIN32 }; diff --git a/Build/source/libs/poppler/poppler-src/goo/glibc.h b/Build/source/libs/poppler/poppler-src/goo/glibc.h index 8b372bcaa30..ccbd87364eb 100644 --- a/Build/source/libs/poppler/poppler-src/goo/glibc.h +++ b/Build/source/libs/poppler/poppler-src/goo/glibc.h @@ -7,6 +7,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2016, 2017 Adrian Johnson +// Copyright (C) 2017 Albert Astals Cid // //======================================================================== @@ -17,8 +18,6 @@ #include -extern "C" { - #ifndef HAVE_GMTIME_R struct tm *gmtime_r(const time_t *timep, struct tm *result); #endif @@ -35,7 +34,5 @@ time_t timegm(struct tm *tm); char * strtok_r (char *s, const char *delim, char **save_ptr); #endif -} - #endif // GLIBC_H diff --git a/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc b/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc index e779bf50a2f..e323bc21b4c 100644 --- a/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc +++ b/Build/source/libs/poppler/poppler-src/goo/glibc_strtok_r.cc @@ -50,12 +50,15 @@ // Copyright (C) 2012 Alexey Pavlov // Copyright (C) 2012 Albert Astals Cid // Copyright (C) 2017 Adrian Johnson +// Copyright (C) 2017 Pekka Vuorela // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git // //======================================================================== +#include "glibc.h" + #ifndef HAVE_STRTOK_R #include diff --git a/Build/source/libs/poppler/poppler-src/goo/gmem.cc b/Build/source/libs/poppler/poppler-src/goo/gmem.cc index c1c607ac3f3..574997fadda 100644 --- a/Build/source/libs/poppler/poppler-src/goo/gmem.cc +++ b/Build/source/libs/poppler/poppler-src/goo/gmem.cc @@ -105,11 +105,11 @@ inline static void *gmalloc(size_t size, bool checkoverflow) { void *p; if (size == 0) { - return NULL; + return nullptr; } if (!(p = malloc(size))) { fprintf(stderr, "Out of memory\n"); - if (checkoverflow) return NULL; + if (checkoverflow) return nullptr; else exit(1); } return p; @@ -153,7 +153,7 @@ inline static void *grealloc(void *p, size_t size, bool checkoverflow) { if (p) { free(p); } - return NULL; + return nullptr; } if (p) { q = realloc(p, size); @@ -162,7 +162,7 @@ inline static void *grealloc(void *p, size_t size, bool checkoverflow) { } if (!q) { fprintf(stderr, "Out of memory\n"); - if (checkoverflow) return NULL; + if (checkoverflow) return nullptr; else exit(1); } return q; @@ -181,12 +181,12 @@ inline static void *gmallocn(int nObjs, int objSize, bool checkoverflow) { int n; if (nObjs == 0) { - return NULL; + return nullptr; } n = nObjs * objSize; if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) { fprintf(stderr, "Bogus memory allocation size\n"); - if (checkoverflow) return NULL; + if (checkoverflow) return nullptr; else exit(1); } return gmalloc(n, checkoverflow); @@ -204,7 +204,7 @@ inline static void *gmallocn3(int a, int b, int c, bool checkoverflow) { int n = a * b; if (b <= 0 || a < 0 || a >= INT_MAX / b) { fprintf(stderr, "Bogus memory allocation size\n"); - if (checkoverflow) return NULL; + if (checkoverflow) return nullptr; else exit(1); } return gmallocn(n, c, checkoverflow); @@ -225,14 +225,14 @@ inline static void *greallocn(void *p, int nObjs, int objSize, bool checkoverflo if (p) { gfree(p); } - return NULL; + return nullptr; } n = nObjs * objSize; if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) { fprintf(stderr, "Bogus memory allocation size\n"); if (checkoverflow) { gfree(p); - return NULL; + return nullptr; } else { exit(1); } diff --git a/Build/source/libs/poppler/poppler-src/goo/grandom.cc b/Build/source/libs/poppler/poppler-src/goo/grandom.cc index 1237175420b..3171af85ec3 100644 --- a/Build/source/libs/poppler/poppler-src/goo/grandom.cc +++ b/Build/source/libs/poppler/poppler-src/goo/grandom.cc @@ -22,7 +22,7 @@ static unsigned int seed; static void initialize() { if (!initialized) { - seed = time(NULL); + seed = time(nullptr); initialized = gTrue; } } @@ -49,7 +49,7 @@ static GBool initialized = gFalse; static void initialize() { if (!initialized) { - srand(time(NULL)); + srand(time(nullptr)); initialized = gTrue; } } diff --git a/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc b/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc index cd1d5b554f7..a1062821218 100644 --- a/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc +++ b/Build/source/libs/poppler/poppler-src/goo/gstrtod.cc @@ -34,7 +34,7 @@ double gatof(const char *nptr) { - return gstrtod(nptr, NULL); + return gstrtod(nptr, nullptr); } double gstrtod(const char *nptr, char **endptr) @@ -45,17 +45,17 @@ double gstrtod(const char *nptr, char **endptr) const char *decimal_point; int decimal_point_len; const char *p, *decimal_point_pos; - const char *end = NULL; /* Silence gcc */ + const char *end = nullptr; /* Silence gcc */ int strtod_errno; - fail_pos = NULL; + fail_pos = nullptr; locale_data = localeconv (); decimal_point = locale_data->decimal_point; decimal_point_len = strlen (decimal_point); - decimal_point_pos = NULL; - end = NULL; + decimal_point_pos = nullptr; + end = nullptr; if (decimal_point[0] != '.' || decimal_point[1] != 0) { p = nptr; diff --git a/Build/source/libs/poppler/poppler-src/gtkdoc.py b/Build/source/libs/poppler/poppler-src/gtkdoc.py index 48f862a31fa..cc73ffc1bc3 100644 --- a/Build/source/libs/poppler/poppler-src/gtkdoc.py +++ b/Build/source/libs/poppler/poppler-src/gtkdoc.py @@ -21,6 +21,7 @@ import os.path import subprocess import sys +PY2 = sys.version_info[0] == 2 class GTKDoc(object): @@ -194,14 +195,20 @@ class GTKDoc(object): if print_output: if stdout: - try: - sys.stdout.write(stdout.encode("utf-8")) - except UnicodeDecodeError: + if PY2: + try: + sys.stdout.write(stdout.encode("utf-8")) + except UnicodeDecodeError: + sys.stdout.write(stdout) + else: sys.stdout.write(stdout) if stderr: - try: - sys.stderr.write(stderr.encode("utf-8")) - except UnicodeDecodeError: + if PY2: + try: + sys.stderr.write(stderr.encode("utf-8")) + except UnicodeDecodeError: + sys.stderr.write(stderr) + else: sys.stderr.write(stderr) if process.returncode != 0: @@ -319,9 +326,9 @@ class GTKDoc(object): ldflags = ' "-L%s" %s ' % (self.library_path, additional_ldflags) + ldflags current_ld_library_path = env.get('LD_LIBRARY_PATH') if current_ld_library_path: - env['RUN'] = 'LD_LIBRARY_PATH="%s:%s" ' % (self.library_path, current_ld_library_path) + env['LD_LIBRARY_PATH'] = '%s:%s' % (self.library_path, current_ld_library_path) else: - env['RUN'] = 'LD_LIBRARY_PATH="%s" ' % self.library_path + env['LD_LIBRARY_PATH'] = self.library_path if ldflags: env['LDFLAGS'] = '%s %s' % (ldflags, env.get('LDFLAGS', '')) diff --git a/Build/source/libs/poppler/poppler-src/poppler/Annot.cc b/Build/source/libs/poppler/poppler-src/poppler/Annot.cc index 7f249d5a919..15c86a05789 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Annot.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Annot.cc @@ -114,7 +114,7 @@ #define bezierCircle 0.55228475 static AnnotLineEndingStyle parseAnnotLineEndingStyle(GooString *string) { - if (string != NULL) { + if (string != nullptr) { if (!string->cmp("Square")) { return annotLineEndingSquare; } else if (!string->cmp("Circle")) { @@ -186,7 +186,7 @@ static AnnotExternalDataType parseAnnotExternalData(Dict* dict) { } static PDFRectangle *parseDiffRectangle(Array *array, PDFRectangle *rect) { - PDFRectangle *newRect = NULL; + PDFRectangle *newRect = nullptr; if (array->getLength() == 4) { // deltas Object obj1; @@ -224,7 +224,7 @@ static LinkAction* getAdditionalAction(Annot::AdditionalActionsType type, Object type == Annot::actionPageOpening ? "PO" : type == Annot::actionPageClosing ? "PC" : type == Annot::actionPageVisible ? "PV" : - type == Annot::actionPageInvisible ? "PI" : NULL); + type == Annot::actionPageInvisible ? "PI" : nullptr); Object actionObject = additionalActionsObject.dictLookup(key); if (actionObject.isDict()) @@ -242,7 +242,7 @@ static LinkAction* getFormAdditionalAction(Annot::FormAdditionalActionsType type const char *key = (type == Annot::actionFieldModified ? "K" : type == Annot::actionFormatField ? "F" : type == Annot::actionValidateField ? "V" : - type == Annot::actionCalculateField ? "C" : NULL); + type == Annot::actionCalculateField ? "C" : nullptr); Object actionObject = additionalActionsObject.dictLookup(key); if (actionObject.isDict()) @@ -284,12 +284,12 @@ AnnotBorderEffect::AnnotBorderEffect(Dict *dict) { //------------------------------------------------------------------------ AnnotPath::AnnotPath() { - coords = NULL; + coords = nullptr; coordsLength = 0; } AnnotPath::AnnotPath(Array *array) { - coords = NULL; + coords = nullptr; coordsLength = 0; parsePathArray(array); } @@ -322,7 +322,7 @@ double AnnotPath::getY(int coord) const { AnnotCoord *AnnotPath::getCoord(int coord) const { if (coord >= 0 && coord < coordsLength) return coords[coord]; - return NULL; + return nullptr; } void AnnotPath::parsePathArray(Array *array) { @@ -398,7 +398,7 @@ AnnotQuadrilaterals::AnnotQuadrilaterals(Array *array, PDFRectangle *rect) { double quadArray[8]; // default values - quadrilaterals = NULL; + quadrilaterals = nullptr; quadrilateralsLength = 0; if ((arrayLength % 8) == 0) { @@ -514,7 +514,7 @@ AnnotQuadrilaterals::AnnotQuadrilateral::AnnotQuadrilateral(double x1, double y1 AnnotBorder::AnnotBorder() { width = 1; dashLength = 0; - dash = NULL; + dash = nullptr; style = borderSolid; } @@ -892,7 +892,7 @@ Object AnnotAppearance::getAppearanceStream(AnnotAppearanceType type, const char } GooString * AnnotAppearance::getStateKey(int i) { - GooString * res = NULL; + GooString * res = nullptr; Object obj1 = appearDict.dictLookupNF("N"); if (obj1.isDict()) res = new GooString(obj1.dictGetKey(i)); @@ -1018,10 +1018,10 @@ AnnotAppearanceCharacs::AnnotAppearanceCharacs(Dict *dict) { if (colorComponents->getLength() > 0) { borderColor = new AnnotColor(colorComponents); } else { - borderColor = NULL; + borderColor = nullptr; } } else { - borderColor = NULL; + borderColor = nullptr; } obj1 = dict->lookup("BG"); @@ -1030,38 +1030,38 @@ AnnotAppearanceCharacs::AnnotAppearanceCharacs(Dict *dict) { if (colorComponents->getLength() > 0) { backColor = new AnnotColor(colorComponents); } else { - backColor = NULL; + backColor = nullptr; } } else { - backColor = NULL; + backColor = nullptr; } obj1 = dict->lookup("CA"); if (obj1.isString()) { normalCaption = new GooString(obj1.getString()); } else { - normalCaption = NULL; + normalCaption = nullptr; } obj1 = dict->lookup("RC"); if (obj1.isString()) { rolloverCaption = new GooString(obj1.getString()); } else { - rolloverCaption = NULL; + rolloverCaption = nullptr; } obj1 = dict->lookup("AC"); if (obj1.isString()) { alternateCaption = new GooString(obj1.getString()); } else { - alternateCaption = NULL; + alternateCaption = nullptr; } obj1 = dict->lookup("IF"); if (obj1.isDict()) { iconFit = new AnnotIconFit(obj1.getDict()); } else { - iconFit = NULL; + iconFit = nullptr; } obj1 = dict->lookup("TP"); @@ -1198,10 +1198,10 @@ void Annot::initialize(PDFDoc *docA, Dict *dict) { ok = gTrue; doc = docA; xref = doc->getXRef(); - appearStreams = NULL; - appearBBox = NULL; - appearState = NULL; - appearBuf = NULL; + appearStreams = nullptr; + appearBBox = nullptr; + appearState = nullptr; + appearBuf = nullptr; fontSize = 0; appearance.setToNull(); @@ -1255,14 +1255,14 @@ void Annot::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isString()) { name = obj1.getString()->copy(); } else { - name = NULL; + name = nullptr; } obj1 = dict->lookup("M"); if (obj1.isString()) { modified = obj1.getString()->copy(); } else { - modified = NULL; + modified = nullptr; } //----- get the flags @@ -1310,13 +1310,13 @@ void Annot::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isArray()) border = new AnnotBorderArray(obj1.getArray()); else - border = NULL; + border = nullptr; obj1 = dict->lookup("C"); if (obj1.isArray()) { color = new AnnotColor(obj1.getArray()); } else { - color = NULL; + color = nullptr; } obj1 = dict->lookup("StructParent"); @@ -1380,7 +1380,7 @@ void Annot::update(const char *key, Object &&value) { /* Set M to current time, unless we are updating M itself */ if (strcmp(key, "M") != 0) { delete modified; - modified = timeToDateString(NULL); + modified = timeToDateString(nullptr); annotObj.dictSet("M", Object(modified->copy())); } @@ -1447,7 +1447,7 @@ void Annot::setBorder(AnnotBorder *new_border) { update(new_border->getType() == AnnotBorder::typeArray ? "Border" : "BS", std::move(obj1)); border = new_border; } else { - border = NULL; + border = nullptr; } invalidateAppearance(); } @@ -1461,7 +1461,7 @@ void Annot::setColor(AnnotColor *new_color) { update ("C", std::move(obj1)); color = new_color; } else { - color = NULL; + color = nullptr; } invalidateAppearance(); } @@ -1493,7 +1493,7 @@ void Annot::setAppearanceState(const char *state) { appearState = new GooString(state); delete appearBBox; - appearBBox = NULL; + appearBBox = nullptr; update ("AS", Object(objName, state)); @@ -1511,13 +1511,13 @@ void Annot::invalidateAppearance() { appearStreams->removeAllStreams(); } delete appearStreams; - appearStreams = NULL; + appearStreams = nullptr; delete appearState; - appearState = NULL; + appearState = nullptr; delete appearBBox; - appearBBox = NULL; + appearBBox = nullptr; appearance.setToNull(); @@ -1811,7 +1811,7 @@ GBool Annot::isVisible(GBool printing) { int Annot::getRotation() const { Page *pageobj = doc->getPage(page); - assert(pageobj != NULL); + assert(pageobj != nullptr); if (flags & flagNoRotate) { return (360 - pageobj->getRotate()) % 360; @@ -1827,7 +1827,7 @@ void Annot::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -1837,8 +1837,6 @@ void Annot::draw(Gfx *gfx, GBool printing) { AnnotPopup::AnnotPopup(PDFDoc *docA, PDFRectangle *rect) : Annot(docA, rect) { - Object obj1; - type = typePopup; annotObj.dictSet ("Subtype", Object(objName, "Popup")); @@ -1916,7 +1914,7 @@ void AnnotMarkup::initialize(PDFDoc *docA, Dict *dict, Object *obj) { if (obj1.isString()) { label = obj1.getString()->copy(); } else { - label = NULL; + label = nullptr; } obj1 = dict->lookup("Popup"); @@ -1924,7 +1922,7 @@ void AnnotMarkup::initialize(PDFDoc *docA, Dict *dict, Object *obj) { if (obj1.isDict() && obj2.isRef()) { popup = new AnnotPopup(docA, &obj1, &obj2); } else { - popup = NULL; + popup = nullptr; } obj1 = dict->lookup("CA"); @@ -1938,7 +1936,7 @@ void AnnotMarkup::initialize(PDFDoc *docA, Dict *dict, Object *obj) { if (obj1.isString()) { date = obj1.getString()->copy(); } else { - date = NULL; + date = nullptr; } obj1 = dict->lookupNF("IRT"); @@ -1953,7 +1951,7 @@ void AnnotMarkup::initialize(PDFDoc *docA, Dict *dict, Object *obj) { if (obj1.isString()) { subject = obj1.getString()->copy(); } else { - subject = NULL; + subject = nullptr; } obj1 = dict->lookup("RT"); @@ -2000,7 +1998,7 @@ void AnnotMarkup::setPopup(AnnotPopup *new_popup) { // associated with a page, then we need to remove that // popup annotation from the page. Otherwise we would have // dangling references to it. - if (popup != NULL && popup->getPageNum() != 0) { + if (popup != nullptr && popup->getPageNum() != 0) { Page *pageobj = doc->getPage(popup->getPageNum()); if (pageobj) { pageobj->removeAnnot(popup); @@ -2019,12 +2017,12 @@ void AnnotMarkup::setPopup(AnnotPopup *new_popup) { // add the new popup annotation to the same page. if (page != 0) { Page *pageobj = doc->getPage(page); - assert(pageobj != NULL); // pageobj should exist in doc (see setPage()) + assert(pageobj != nullptr); // pageobj should exist in doc (see setPage()) pageobj->addAnnot(popup); } } else { - popup = NULL; + popup = nullptr; } } @@ -2047,7 +2045,7 @@ void AnnotMarkup::setDate(GooString *new_date) { void AnnotMarkup::removeReferencedObjects() { Page *pageobj = doc->getPage(page); - assert(pageobj != NULL); // We're called when removing an annot from a page + assert(pageobj != nullptr); // We're called when removing an annot from a page // Remove popup if (popup) { @@ -2163,8 +2161,6 @@ void AnnotText::initialize(PDFDoc *docA, Dict *dict) { } void AnnotText::setOpen(GBool openA) { - Object obj1; - open = openA; update ("Open", Object(open)); } @@ -2478,7 +2474,7 @@ void AnnotText::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -2487,12 +2483,12 @@ void AnnotText::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); if (appearBBox) { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, appearBBox->getPageXMin(), appearBBox->getPageYMin(), appearBBox->getPageXMax(), appearBBox->getPageYMax(), getRotation()); } else { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } } @@ -2502,8 +2498,6 @@ void AnnotText::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotLink::AnnotLink(PDFDoc *docA, PDFRectangle *rect) : Annot(docA, rect) { - Object obj1; - type = typeLink; annotObj.dictSet ("Subtype", Object(objName, "Link")); initialize (docA, annotObj.getDict()); @@ -2529,7 +2523,7 @@ AnnotLink::~AnnotLink() { void AnnotLink::initialize(PDFDoc *docA, Dict *dict) { Object obj1; - action = NULL; + action = nullptr; // look for destination obj1 = dict->lookup("Dest"); @@ -2574,7 +2568,7 @@ void AnnotLink::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isArray()) { quadrilaterals = new AnnotQuadrilaterals(obj1.getArray(), rect); } else { - quadrilaterals = NULL; + quadrilaterals = nullptr; } obj1 = dict->lookup("BS"); @@ -2602,8 +2596,6 @@ void AnnotLink::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotFreeText::AnnotFreeText(PDFDoc *docA, PDFRectangle *rect, GooString *da) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeFreeText; annotObj.dictSet ("Subtype", Object(objName, "FreeText")); @@ -2657,7 +2649,7 @@ void AnnotFreeText::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isString()) { styleString = obj1.getString()->copy(); } else { - styleString = NULL; + styleString = nullptr; } obj1 = dict->lookup("CL"); @@ -2679,7 +2671,7 @@ void AnnotFreeText::initialize(PDFDoc *docA, Dict *dict) { calloutLine = new AnnotCalloutLine(x1, y1, x2, y2); } } else { - calloutLine = NULL; + calloutLine = nullptr; } obj1 = dict->lookup("IT"); @@ -2711,14 +2703,14 @@ void AnnotFreeText::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isDict()) { borderEffect = new AnnotBorderEffect(obj1.getDict()); } else { - borderEffect = NULL; + borderEffect = nullptr; } obj1 = dict->lookup("RD"); if (obj1.isArray()) { rectangle = parseDiffRectangle(obj1.getArray(), rect); } else { - rectangle = NULL; + rectangle = nullptr; } obj1 = dict->lookup("LE"); @@ -2749,7 +2741,6 @@ void AnnotFreeText::setAppearanceString(GooString *new_string) { } void AnnotFreeText::setQuadding(AnnotFreeTextQuadding new_quadding) { - Object obj1; quadding = new_quadding; update ("Q", Object((int)quadding)); invalidateAppearance(); @@ -2775,9 +2766,9 @@ void AnnotFreeText::setCalloutLine(AnnotCalloutLine *line) { delete calloutLine; Object obj1; - if (line == NULL) { + if (line == nullptr) { obj1.setToNull(); - calloutLine = NULL; + calloutLine = nullptr; } else { double x1 = line->getX1(), y1 = line->getY1(); double x2 = line->getX2(), y2 = line->getY2(); @@ -2834,7 +2825,7 @@ static GfxFont * createAnnotDrawFont(XRef * xref, Dict *fontResDict) void AnnotFreeText::parseAppearanceString(GooString *da, double &fontsize, AnnotColor* &fontcolor) { fontsize = -1; - fontcolor = NULL; + fontcolor = nullptr; if (da) { GooList * daToks = new GooList(); int i = FormFieldText::tokenizeDA(da, daToks, "Tf"); @@ -2845,7 +2836,7 @@ void AnnotFreeText::parseAppearanceString(GooString *da, double &fontsize, Annot } // Scan backwards: we are looking for the last set value for (i = daToks->getLength()-1; i >= 0; --i) { - if (fontcolor == NULL) { + if (fontcolor == nullptr) { if (!((GooString *)daToks->get(i))->cmp("g") && i >= 1) { fontcolor = new AnnotColor(gatof(( (GooString *)daToks->get(i-1) )->getCString())); } else if (!((GooString *)daToks->get(i))->cmp("rg") && i >= 3) { @@ -2886,7 +2877,7 @@ void AnnotFreeText::generateFreeTextAppearance() // Default values if (fontsize <= 0) fontsize = 10; - if (fontcolor == NULL) + if (fontcolor == nullptr) fontcolor = new AnnotColor(0, 0, 0); // Black if (!contents) contents = new GooString (); @@ -2925,7 +2916,7 @@ void AnnotFreeText::generateFreeTextAppearance() while (i < contents->getLength()) { GooString out; double linewidth, xpos; - layoutText(contents, &out, &i, font, &linewidth, textwidth/fontsize, NULL, gFalse); + layoutText(contents, &out, &i, font, &linewidth, textwidth/fontsize, nullptr, gFalse); linewidth *= fontsize; switch (quadding) { case quaddingCentered: @@ -2960,7 +2951,7 @@ void AnnotFreeText::generateFreeTextAppearance() delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -2977,7 +2968,7 @@ void AnnotFreeText::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -2996,8 +2987,6 @@ Object AnnotFreeText::getAppearanceResDict() { AnnotLine::AnnotLine(PDFDoc *docA, PDFRectangle *rect) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeLine; annotObj.dictSet ("Subtype", Object(objName, "Line")); @@ -3065,7 +3054,7 @@ void AnnotLine::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isArray()) { interiorColor = new AnnotColor(obj1.getArray()); } else { - interiorColor = NULL; + interiorColor = nullptr; } obj1 = dict->lookup("LL"); @@ -3134,9 +3123,9 @@ void AnnotLine::initialize(PDFDoc *docA, Dict *dict) { obj1 = dict->lookup("Measure"); if (obj1.isDict()) { - measure = NULL; + measure = nullptr; } else { - measure = NULL; + measure = nullptr; } obj1 = dict->lookup("CO"); @@ -3202,7 +3191,7 @@ void AnnotLine::setInteriorColor(AnnotColor *new_color) { update ("IC", std::move(obj1)); interiorColor = new_color; } else { - interiorColor = NULL; + interiorColor = nullptr; } invalidateAppearance(); } @@ -3289,7 +3278,7 @@ void AnnotLine::generateLineAppearance() while (i < contents->getLength()) { GooString out; double linewidth; - layoutText(contents, &out, &i, font, &linewidth, 0, NULL, gFalse); + layoutText(contents, &out, &i, font, &linewidth, 0, nullptr, gFalse); linewidth *= fontsize; if (linewidth > captionwidth) { captionwidth = linewidth; @@ -3303,7 +3292,7 @@ void AnnotLine::generateLineAppearance() } } else { fontResDict = nullptr; - font = NULL; + font = nullptr; } // Draw main segment @@ -3358,7 +3347,7 @@ void AnnotLine::generateLineAppearance() while (i < contents->getLength()) { GooString out; double linewidth, xpos; - layoutText(contents, &out, &i, font, &linewidth, 0, NULL, gFalse); + layoutText(contents, &out, &i, font, &linewidth, 0, nullptr, gFalse); linewidth *= fontsize; xpos = (captionwidth - linewidth) / 2; appearBuf->appendf("{0:.2f} {1:.2f} Td\n", xpos - xposPrev, -fontsize); @@ -3400,7 +3389,7 @@ void AnnotLine::generateLineAppearance() delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -3418,12 +3407,12 @@ void AnnotLine::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); if (appearBBox) { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, appearBBox->getPageXMin(), appearBBox->getPageYMin(), appearBBox->getPageXMax(), appearBBox->getPageYMax(), getRotation()); } else { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } } @@ -3442,8 +3431,6 @@ Object AnnotLine::getAppearanceResDict() { //------------------------------------------------------------------------ AnnotTextMarkup::AnnotTextMarkup(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) : AnnotMarkup(docA, rect) { - Object obj1; - switch (subType) { case typeHighlight: annotObj.dictSet ("Subtype", Object(objName, "Highlight")); @@ -3500,7 +3487,7 @@ void AnnotTextMarkup::initialize(PDFDoc *docA, Dict *dict) { quadrilaterals = new AnnotQuadrilaterals(obj1.getArray(), rect); } else { error(errSyntaxError, -1, "Bad Annot Text Markup QuadPoints"); - quadrilaterals = NULL; + quadrilaterals = nullptr; ok = gFalse; } } @@ -3695,11 +3682,11 @@ void AnnotTextMarkup::draw(Gfx *gfx, GBool printing) { bbox[1] = appearBBox->getPageYMin(); bbox[2] = appearBBox->getPageXMax(); bbox[3] = appearBBox->getPageYMax(); - aStream = createForm(bbox, gTrue, NULL); + aStream = createForm(bbox, gTrue, nullptr); delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", 1, blendMultiply ? "Multiply" : NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", 1, blendMultiply ? "Multiply" : nullptr); if (ca == 1) { appearance = createForm(bbox, gFalse, resDict); } else { @@ -3707,7 +3694,7 @@ void AnnotTextMarkup::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict2 = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict2 = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict2); } delete appearBuf; @@ -3716,12 +3703,12 @@ void AnnotTextMarkup::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); if (appearBBox) { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, appearBBox->getPageXMin(), appearBBox->getPageYMin(), appearBBox->getPageXMax(), appearBBox->getPageYMax(), getRotation()); } else { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } } @@ -3733,7 +3720,7 @@ void AnnotTextMarkup::draw(Gfx *gfx, GBool printing) { AnnotWidget::AnnotWidget(PDFDoc *docA, Object *dictObject, Object *obj) : Annot(docA, dictObject, obj) { type = typeWidget; - field = NULL; + field = nullptr; initialize(docA, dictObject->getDict()); } @@ -3781,10 +3768,10 @@ void AnnotWidget::initialize(PDFDoc *docA, Dict *dict) { if (obj1.isDict()) { appearCharacs = new AnnotAppearanceCharacs(obj1.getDict()); } else { - appearCharacs = NULL; + appearCharacs = nullptr; } - action = NULL; + action = nullptr; obj1 = dict->lookup("A"); if (obj1.isDict()) { action = LinkAction::parseAction(&obj1, doc->getCatalog()->getBaseURI()); @@ -3794,9 +3781,9 @@ void AnnotWidget::initialize(PDFDoc *docA, Dict *dict) { obj1 = dict->lookup("Parent"); if (obj1.isDict()) { - parent = NULL; + parent = nullptr; } else { - parent = NULL; + parent = nullptr; } obj1 = dict->lookup("BS"); @@ -4008,13 +3995,13 @@ void Annot::layoutText(GooString *text, GooString *outBuf, int *i, // Compute the actual width and character count of the final string, based on // breakpoint, if this information is requested by the caller. - if (width != NULL || charCount != NULL) { + if (width != nullptr || charCount != nullptr) { char *s = outBuf->getCString(); int len = outBuf->getLength(); - if (width != NULL) + if (width != nullptr) *width = 0.0; - if (charCount != NULL) + if (charCount != nullptr) *charCount = 0; while (len > 0) { @@ -4025,9 +4012,9 @@ void Annot::layoutText(GooString *text, GooString *outBuf, int *i, break; } - if (width != NULL) + if (width != nullptr) *width += dx; - if (charCount != NULL) + if (charCount != nullptr) *charCount += 1; s += n; @@ -4104,7 +4091,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc } } } else { - daToks = NULL; + daToks = nullptr; } // force ZapfDingbats @@ -4118,7 +4105,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc } } // get the font and font size - font = NULL; + font = nullptr; fontSize = 0; if (tfPos >= 0) { tok = (GooString *)daToks->get(tfPos); @@ -4214,7 +4201,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc y = dy - 3; i = 0; while (i < text->getLength()) { - layoutText(text, convertedText, &i, font, &w, wMax / fontSize, NULL, + layoutText(text, convertedText, &i, font, &w, wMax / fontSize, nullptr, forceZapfDingbats); y -= fontSize; } @@ -4261,7 +4248,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc i = 0; xPrev = 0; while (i < text->getLength()) { - layoutText(text, convertedText, &i, font, &w, wMax / fontSize, NULL, + layoutText(text, convertedText, &i, font, &w, wMax / fontSize, nullptr, forceZapfDingbats); w *= fontSize; @@ -4314,7 +4301,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc } i = 0; - layoutText(text, convertedText, &i, font, NULL, 0.0, &charCount, + layoutText(text, convertedText, &i, font, nullptr, 0.0, &charCount, forceZapfDingbats); if (charCount > comb) charCount = comb; @@ -4391,7 +4378,7 @@ void AnnotWidget::drawText(GooString *text, GooString *da, GfxResources *resourc // regular (non-comb) formatting } else { i = 0; - layoutText(text, convertedText, &i, font, &w, 0.0, NULL, + layoutText(text, convertedText, &i, font, &w, 0.0, nullptr, forceZapfDingbats); // compute font autosize @@ -4508,11 +4495,11 @@ void AnnotWidget::drawListBox(FormFieldChoice *fieldChoice, } } } else { - daToks = NULL; + daToks = nullptr; } // get the font and font size - font = NULL; + font = nullptr; fontSize = 0; if (tfPos >= 0) { tok = (GooString *)daToks->get(tfPos); @@ -4545,7 +4532,7 @@ void AnnotWidget::drawListBox(FormFieldChoice *fieldChoice, wMax = 0; for (i = 0; i < fieldChoice->getNumChoices(); ++i) { j = 0; - if (fieldChoice->getChoice(i) == NULL) { + if (fieldChoice->getChoice(i) == nullptr) { error(errSyntaxError, -1, "Invalid annotation listbox"); if (daToks) { deleteGooList(daToks, GooString); @@ -4553,7 +4540,7 @@ void AnnotWidget::drawListBox(FormFieldChoice *fieldChoice, delete convertedText; return; } - layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, NULL, gFalse); + layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, nullptr, gFalse); if (w > wMax) { wMax = w; } @@ -4591,7 +4578,7 @@ void AnnotWidget::drawListBox(FormFieldChoice *fieldChoice, // compute text width and start position j = 0; - layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, NULL, gFalse); + layoutText(fieldChoice->getChoice(i), convertedText, &j, font, &w, 0.0, nullptr, gFalse); w *= fontSize; switch (quadding) { case quaddingLeftJustified: @@ -4668,7 +4655,7 @@ void AnnotWidget::drawBorder() { double dy = rect->y2 - rect->y1; // radio buttons with no caption have a round border - GBool hasCaption = appearCharacs->getNormalCaption() != NULL; + GBool hasCaption = appearCharacs->getNormalCaption() != nullptr; if (field->getType() == formButton && static_cast(field)->getButtonType() == formButtonRadio && !hasCaption) { double r = 0.5 * (dx < dy ? dx : dy); @@ -4757,7 +4744,7 @@ void AnnotWidget::drawBorder() { } void AnnotWidget::drawFormFieldButton(GfxResources *resources, GooString *da) { - GooString *caption = NULL; + GooString *caption = nullptr; if (appearCharacs) caption = appearCharacs->getNormalCaption(); @@ -4978,7 +4965,7 @@ void AnnotWidget::draw(Gfx *gfx, GBool printing) { gfx->pushResources(dict); delete dict; } - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); if (addDingbatsResource) { gfx->popResources(); @@ -4991,8 +4978,6 @@ void AnnotWidget::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotMovie::AnnotMovie(PDFDoc *docA, PDFRectangle *rect, Movie *movieA) : Annot(docA, rect) { - Object obj1; - type = typeMovie; annotObj.dictSet ("Subtype", Object(objName, "Movie")); @@ -5021,7 +5006,7 @@ void AnnotMovie::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isString()) { title = obj1.getString()->copy(); } else { - title = NULL; + title = nullptr; } Object movieDict = dict->lookup("Movie"); @@ -5033,12 +5018,12 @@ void AnnotMovie::initialize(PDFDoc *docA, Dict* dict) { movie = new Movie (&movieDict); if (!movie->isOk()) { delete movie; - movie = NULL; + movie = nullptr; ok = gFalse; } } else { error(errSyntaxError, -1, "Bad Annot Movie"); - movie = NULL; + movie = nullptr; ok = gFalse; } } @@ -5118,7 +5103,7 @@ void AnnotMovie::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -5127,8 +5112,6 @@ void AnnotMovie::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotScreen::AnnotScreen(PDFDoc *docA, PDFRectangle *rect) : Annot(docA, rect) { - Object obj1; - type = typeScreen; annotObj.dictSet ("Subtype", Object(objName, "Screen")); @@ -5150,27 +5133,27 @@ AnnotScreen::~AnnotScreen() { void AnnotScreen::initialize(PDFDoc *docA, Dict* dict) { Object obj1; - title = NULL; + title = nullptr; obj1 = dict->lookup("T"); if (obj1.isString()) { title = obj1.getString()->copy(); } - action = NULL; + action = nullptr; obj1 = dict->lookup("A"); if (obj1.isDict()) { action = LinkAction::parseAction(&obj1, doc->getCatalog()->getBaseURI()); if (action && action->getKind() == actionRendition && page == 0) { error (errSyntaxError, -1, "Invalid Rendition action: associated screen annotation without P"); delete action; - action = NULL; + action = nullptr; ok = gFalse; } } additionalActions = dict->lookupNF("AA"); - appearCharacs = NULL; + appearCharacs = nullptr; obj1 = dict->lookup("MK"); if (obj1.isDict()) { appearCharacs = new AnnotAppearanceCharacs(obj1.getDict()); @@ -5180,7 +5163,7 @@ void AnnotScreen::initialize(PDFDoc *docA, Dict* dict) { LinkAction* AnnotScreen::getAdditionalAction(AdditionalActionsType type) { if (type == actionFocusIn || type == actionFocusOut) // not defined for screen annotation - return NULL; + return nullptr; return ::getAdditionalAction(type, &additionalActions, doc); } @@ -5190,8 +5173,6 @@ LinkAction* AnnotScreen::getAdditionalAction(AdditionalActionsType type) //------------------------------------------------------------------------ AnnotStamp::AnnotStamp(PDFDoc *docA, PDFRectangle *rect) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeStamp; annotObj.dictSet ("Subtype", Object(objName, "Stamp")); initialize(docA, annotObj.getDict()); @@ -5235,8 +5216,6 @@ void AnnotStamp::setIcon(GooString *new_icon) { //------------------------------------------------------------------------ AnnotGeometry::AnnotGeometry(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) : AnnotMarkup(docA, rect) { - Object obj1; - switch (subType) { case typeSquare: annotObj.dictSet ("Subtype", Object(objName, "Square")); @@ -5281,7 +5260,7 @@ void AnnotGeometry::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isArray()) { interiorColor = new AnnotColor(obj1.getArray()); } else { - interiorColor = NULL; + interiorColor = nullptr; } obj1 = dict->lookup("BS"); @@ -5296,10 +5275,10 @@ void AnnotGeometry::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isDict()) { borderEffect = new AnnotBorderEffect(obj1.getDict()); } else { - borderEffect = NULL; + borderEffect = nullptr; } - geometryRect = NULL; + geometryRect = nullptr; obj1 = dict->lookup("RD"); if (obj1.isArray()) { geometryRect = parseDiffRectangle(obj1.getArray(), rect); @@ -5333,7 +5312,7 @@ void AnnotGeometry::setInteriorColor(AnnotColor *new_color) { update ("IC", std::move(obj1)); interiorColor = new_color; } else { - interiorColor = NULL; + interiorColor = nullptr; } invalidateAppearance(); } @@ -5430,7 +5409,7 @@ void AnnotGeometry::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -5438,7 +5417,7 @@ void AnnotGeometry::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -5447,8 +5426,6 @@ void AnnotGeometry::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotPolygon::AnnotPolygon(PDFDoc *docA, PDFRectangle *rect, AnnotSubtype subType) : AnnotMarkup(docA, rect) { - Object obj1; - switch (subType) { case typePolygon: annotObj.dictSet ("Subtype", Object(objName, "Polygon")); @@ -5530,7 +5507,7 @@ void AnnotPolygon::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isArray()) { interiorColor = new AnnotColor(obj1.getArray()); } else { - interiorColor = NULL; + interiorColor = nullptr; } obj1 = dict->lookup("BS"); @@ -5545,7 +5522,7 @@ void AnnotPolygon::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isDict()) { borderEffect = new AnnotBorderEffect(obj1.getDict()); } else { - borderEffect = NULL; + borderEffect = nullptr; } obj1 = dict->lookup("IT"); @@ -5618,7 +5595,7 @@ void AnnotPolygon::setInteriorColor(AnnotColor *new_color) { update ("IC", std::move(obj1)); interiorColor = new_color; } else { - interiorColor = NULL; + interiorColor = nullptr; } invalidateAppearance(); } @@ -5692,7 +5669,7 @@ void AnnotPolygon::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -5701,12 +5678,12 @@ void AnnotPolygon::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); if (appearBBox) { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, appearBBox->getPageXMin(), appearBBox->getPageYMin(), appearBBox->getPageXMax(), appearBBox->getPageYMax(), getRotation()); } else { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } } @@ -5716,8 +5693,6 @@ void AnnotPolygon::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotCaret::AnnotCaret(PDFDoc *docA, PDFRectangle *rect) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeCaret; annotObj.dictSet ("Subtype", Object(objName, "Caret")); @@ -5752,7 +5727,7 @@ void AnnotCaret::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isArray()) { caretRect = parseDiffRectangle(obj1.getArray(), rect); } else { - caretRect = NULL; + caretRect = nullptr; } } @@ -5767,14 +5742,11 @@ void AnnotCaret::setSymbol(AnnotCaretSymbol new_symbol) { //------------------------------------------------------------------------ AnnotInk::AnnotInk(PDFDoc *docA, PDFRectangle *rect) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeInk; annotObj.dictSet ("Subtype", Object(objName, "Ink")); // Store dummy path with one null vertex only - Object obj3, obj4; Array *inkList = new Array(doc->getXRef()); Array *vList = new Array(doc->getXRef()); vList->add(Object(0.)); @@ -5803,7 +5775,7 @@ void AnnotInk::initialize(PDFDoc *docA, Dict* dict) { parseInkList(obj1.getArray()); } else { inkListLength = 0; - inkList = NULL; + inkList = nullptr; error(errSyntaxError, -1, "Bad Annot Ink List"); ok = gFalse; } @@ -5906,7 +5878,7 @@ void AnnotInk::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -5915,12 +5887,12 @@ void AnnotInk::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); if (appearBBox) { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, appearBBox->getPageXMin(), appearBBox->getPageYMin(), appearBBox->getPageXMax(), appearBBox->getPageYMax(), getRotation()); } else { - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } } @@ -5930,8 +5902,6 @@ void AnnotInk::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotFileAttachment::AnnotFileAttachment(PDFDoc *docA, PDFRectangle *rect, GooString *filename) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeFileAttachment; annotObj.dictSet("Subtype", Object(objName, "FileAttachment")); @@ -6118,7 +6088,7 @@ void AnnotFileAttachment::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -6126,7 +6096,7 @@ void AnnotFileAttachment::draw(Gfx *gfx, GBool printing) { // draw the appearance stream Object obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -6135,8 +6105,6 @@ void AnnotFileAttachment::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ AnnotSound::AnnotSound(PDFDoc *docA, PDFRectangle *rect, Sound *soundA) : AnnotMarkup(docA, rect) { - Object obj1; - type = typeSound; annotObj.dictSet ("Subtype", Object(objName, "Sound")); @@ -6271,7 +6239,7 @@ void AnnotSound::draw(Gfx *gfx, GBool printing) { delete appearBuf; appearBuf = new GooString ("/GS0 gs\n/Fm0 Do"); - Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, NULL); + Dict *resDict = createResourcesDict("Fm0", std::move(aStream), "GS0", ca, nullptr); appearance = createForm(bbox, gFalse, resDict); } delete appearBuf; @@ -6279,7 +6247,7 @@ void AnnotSound::draw(Gfx *gfx, GBool printing) { // draw the appearance stream obj = appearance.fetch(gfx->getXRef()); - gfx->drawAnnot(&obj, (AnnotBorder *)NULL, color, + gfx->drawAnnot(&obj, (AnnotBorder *)nullptr, color, rect->x1, rect->y1, rect->x2, rect->y2, getRotation()); } @@ -6288,8 +6256,6 @@ void AnnotSound::draw(Gfx *gfx, GBool printing) { //------------------------------------------------------------------------ Annot3D::Annot3D(PDFDoc *docA, PDFRectangle *rect) : Annot(docA, rect) { - Object obj1; - type = type3D; annotObj.dictSet ("Subtype", Object(objName, "3D")); @@ -6313,7 +6279,7 @@ void Annot3D::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isDict()) { activation = new Activation(obj1.getDict()); } else { - activation = NULL; + activation = nullptr; } } @@ -6406,8 +6372,6 @@ Annot3D::Activation::Activation(Dict *dict) { //------------------------------------------------------------------------ AnnotRichMedia::AnnotRichMedia(PDFDoc *docA, PDFRectangle *rect) : Annot(docA, rect) { - Object obj1; - type = typeRichMedia; annotObj.dictSet ("Subtype", Object(objName, "RichMedia")); @@ -6431,14 +6395,14 @@ void AnnotRichMedia::initialize(PDFDoc *docA, Dict* dict) { if (obj1.isDict()) { content = new AnnotRichMedia::Content(obj1.getDict()); } else { - content = NULL; + content = nullptr; } obj1 = dict->lookup("RichMediaSettings"); if (obj1.isDict()) { settings = new AnnotRichMedia::Settings(obj1.getDict()); } else { - settings = NULL; + settings = nullptr; } } @@ -6455,14 +6419,14 @@ AnnotRichMedia::Settings::Settings(Dict *dict) { if (obj1.isDict()) { activation = new AnnotRichMedia::Activation(obj1.getDict()); } else { - activation = NULL; + activation = nullptr; } obj1 = dict->lookup("Deactivation"); if (obj1.isDict()) { deactivation = new AnnotRichMedia::Deactivation(obj1.getDict()); } else { - deactivation = NULL; + deactivation = nullptr; } } @@ -6537,16 +6501,16 @@ AnnotRichMedia::Content::Content(Dict *dict) { if (obj2.isDict()) { configurations[i] = new AnnotRichMedia::Configuration(obj2.getDict()); } else { - configurations[i] = NULL; + configurations[i] = nullptr; } } } else { nConfigurations = 0; - configurations = NULL; + configurations = nullptr; } nAssets = 0; - assets = NULL; + assets = nullptr; obj1 = dict->lookup("Assets"); if (obj1.isDict()) { Object obj2 = obj1.getDict()->lookup("Names"); @@ -6590,7 +6554,7 @@ int AnnotRichMedia::Content::getConfigurationsCount() const { AnnotRichMedia::Configuration* AnnotRichMedia::Content::getConfiguration(int index) const { if (index < 0 || index >= nConfigurations) - return NULL; + return nullptr; return configurations[index]; } @@ -6601,13 +6565,13 @@ int AnnotRichMedia::Content::getAssetsCount() const { AnnotRichMedia::Asset* AnnotRichMedia::Content::getAsset(int index) const { if (index < 0 || index >= nAssets) - return NULL; + return nullptr; return assets[index]; } AnnotRichMedia::Asset::Asset() - : name(NULL) + : name(nullptr) { } @@ -6637,18 +6601,18 @@ AnnotRichMedia::Configuration::Configuration(Dict *dict) if (obj2.isDict()) { instances[i] = new AnnotRichMedia::Instance(obj2.getDict()); } else { - instances[i] = NULL; + instances[i] = nullptr; } } } else { - instances = NULL; + instances = nullptr; } obj1 = dict->lookup("Name"); if (obj1.isString()) { name = new GooString(obj1.getString()); } else { - name = NULL; + name = nullptr; } obj1 = dict->lookup("Subtype"); @@ -6710,7 +6674,7 @@ int AnnotRichMedia::Configuration::getInstancesCount() const { AnnotRichMedia::Instance* AnnotRichMedia::Configuration::getInstance(int index) const { if (index < 0 || index >= nInstances) - return NULL; + return nullptr; return instances[index]; } @@ -6744,7 +6708,7 @@ AnnotRichMedia::Instance::Instance(Dict *dict) if (obj1.isDict()) { params = new AnnotRichMedia::Params(obj1.getDict()); } else { - params = NULL; + params = nullptr; } } @@ -6767,7 +6731,7 @@ AnnotRichMedia::Params::Params(Dict *dict) if (obj1.isString()) { flashVars = new GooString(obj1.getString()); } else { - flashVars = NULL; + flashVars = nullptr; } } @@ -6789,7 +6753,7 @@ Annots::Annots(PDFDoc *docA, int page, Object *annotsObj) { int i; doc = docA; - annots = NULL; + annots = nullptr; size = 0; nAnnots = 0; @@ -6920,7 +6884,7 @@ Annot *Annots::createAnnot(Object* dictObject, Object *obj) { if (obj2.isNull()) annot = new AnnotPopup(doc, dictObject, obj); else - annot = NULL; + annot = nullptr; } else { annot = new Annot(doc, dictObject, obj); } @@ -6937,7 +6901,7 @@ Annot *Annots::findAnnot(Ref *ref) { return annots[i]; } } - return NULL; + return nullptr; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Annot.h b/Build/source/libs/poppler/poppler-src/poppler/Annot.h index 82279bdfddf..860d95e9a73 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Annot.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Annot.h @@ -21,7 +21,7 @@ // Copyright (C) 2008 Hugo Mercier // Copyright (C) 2008 Pino Toscano // Copyright (C) 2008 Tomas Are Haavet -// Copyright (C) 2009-2011, 2013, 2016, 2017 Albert Astals Cid +// Copyright (C) 2009-2011, 2013, 2016-2018 Albert Astals Cid // Copyright (C) 2012, 2013 Fabio D'Urso // Copyright (C) 2012, 2015 Tobias Koenig // Copyright (C) 2013 Thomas Freitag @@ -105,6 +105,9 @@ public: AnnotPath(AnnotCoord **coords, int coordLength); ~AnnotPath(); + AnnotPath(const AnnotPath &) = delete; + AnnotPath& operator=(const AnnotPath &other) = delete; + double getX(int coord) const; double getY(int coord) const; AnnotCoord *getCoord(int coord) const; @@ -126,6 +129,9 @@ public: AnnotCalloutLine(double x1, double y1, double x2, double y2); virtual ~AnnotCalloutLine() { } + AnnotCalloutLine(const AnnotCalloutLine &) = delete; + AnnotCalloutLine& operator=(const AnnotCalloutLine &other) = delete; + double getX1() const { return coord1.getX(); } double getY1() const { return coord1.getY(); } double getX2() const { return coord2.getX(); } @@ -195,6 +201,9 @@ public: AnnotQuadrilaterals(AnnotQuadrilateral **quads, int quadsLength); ~AnnotQuadrilaterals(); + AnnotQuadrilaterals(const AnnotQuadrilaterals &) = delete; + AnnotQuadrilaterals& operator=(const AnnotQuadrilaterals &other) = delete; + double getX1(int quadrilateral); double getY1(int quadrilateral); double getX2(int quadrilateral); @@ -231,6 +240,9 @@ public: virtual ~AnnotBorder(); + AnnotBorder(const AnnotBorder &) = delete; + AnnotBorder& operator=(const AnnotBorder &other) = delete; + virtual void setWidth(double new_width) { width = new_width; } virtual AnnotBorderType getType() const = 0; @@ -429,6 +441,9 @@ public: AnnotAppearanceCharacs(Dict *dict); ~AnnotAppearanceCharacs(); + AnnotAppearanceCharacs(const AnnotAppearanceCharacs &) = delete; + AnnotAppearanceCharacs& operator=(const AnnotAppearanceCharacs &) = delete; + int getRotation() { return rotation; } AnnotColor *getBorderColor() { return borderColor; } AnnotColor *getBackColor() { return backColor; } @@ -1420,6 +1435,9 @@ public: Params(Dict *dict); ~Params(); + Params(const Params &) = delete; + Params& operator=(const Params &) = delete; + GooString* getFlashVars() const; private: @@ -1439,6 +1457,9 @@ public: Instance(Dict *dict); ~Instance(); + Instance(const Instance &) = delete; + Instance& operator=(const Instance &) = delete; + Type getType() const; Params* getParams() const; @@ -1460,6 +1481,9 @@ public: Configuration(Dict *dict); ~Configuration(); + Configuration(const Configuration &) = delete; + Configuration& operator=(const Configuration &) = delete; + Type getType() const; GooString* getName() const; int getInstancesCount() const; @@ -1480,6 +1504,9 @@ public: Asset(); ~Asset(); + Asset(const Asset &) = delete; + Asset& operator=(const Asset &) = delete; + GooString* getName() const; Object* getFileSpec() const; @@ -1495,6 +1522,9 @@ public: Content(Dict *dict); ~Content(); + Content(const Content &) = delete; + Content& operator=(const Content &) = delete; + int getConfigurationsCount() const; Configuration* getConfiguration(int index) const; @@ -1549,6 +1579,9 @@ public: Settings(Dict *dict); ~Settings(); + Settings(const Settings &) = delete; + Settings& operator=(const Settings &) = delete; + Activation* getActivation() const; Deactivation* getDeactivation() const; @@ -1589,6 +1622,9 @@ public: ~Annots(); + Annots(const Annots &) = delete; + Annots& operator=(const Annots &) = delete; + // Iterate through list of annotations. int getNumAnnots() { return nAnnots; } Annot *getAnnot(int i) { return annots[i]; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Array.cc b/Build/source/libs/poppler/poppler-src/poppler/Array.cc index c6de53ef03e..3276349fbcc 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Array.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Array.cc @@ -47,7 +47,7 @@ Array::Array(XRef *xrefA) { xref = xrefA; - elems = NULL; + elems = nullptr; size = length = 0; ref = 1; #ifdef MULTITHREADED diff --git a/Build/source/libs/poppler/poppler-src/poppler/Array.h b/Build/source/libs/poppler/poppler-src/poppler/Array.h index 2babc8be52f..cd71c825537 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Array.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Array.h @@ -16,7 +16,7 @@ // Copyright (C) 2005 Kristian Høgsberg // Copyright (C) 2012 Fabio D'Urso // Copyright (C) 2013 Thomas Freitag -// Copyright (C) 2017 Albert Astals Cid +// Copyright (C) 2017, 2018 Albert Astals Cid // Copyright (C) 2017 Adrian Johnson // // To see a description of the changes please see the Changelog file that @@ -50,6 +50,9 @@ public: // Destructor. ~Array(); + Array(const Array &) = delete; + Array& operator=(const Array &) = delete; + // Get number of elements. int getLength() const { return length; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc index 20a297d6135..b6034752a23 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.cc @@ -26,7 +26,7 @@ BuiltinFontWidths::BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA) { size = sizeA; tab = (BuiltinFontWidth **)gmallocn(size, sizeof(BuiltinFontWidth *)); for (i = 0; i < size; ++i) { - tab[i] = NULL; + tab[i] = nullptr; } for (i = 0; i < sizeA; ++i) { h = hash(widths[i].name); diff --git a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h index bbdd0558e9f..754e736669c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h +++ b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFont.h @@ -6,6 +6,20 @@ // //======================================================================== +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2018 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + #ifndef BUILTINFONT_H #define BUILTINFONT_H @@ -42,6 +56,10 @@ public: BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA); ~BuiltinFontWidths(); + + BuiltinFontWidths(const BuiltinFontWidths &) = delete; + BuiltinFontWidths& operator=(const BuiltinFontWidths &) = delete; + GBool getWidth(const char *name, Gushort *width); private: diff --git a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc index 5115b7bcf13..c1e636f6ee3 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/BuiltinFontTables.cc @@ -12,4235 +12,4235 @@ #include "BuiltinFontTables.h" static BuiltinFontWidth courierWidthsTab[] = { - { "Ntilde", 600, NULL }, - { "rcaron", 600, NULL }, - { "kcommaaccent", 600, NULL }, - { "Ncommaaccent", 600, NULL }, - { "Zacute", 600, NULL }, - { "comma", 600, NULL }, - { "cedilla", 600, NULL }, - { "plusminus", 600, NULL }, - { "circumflex", 600, NULL }, - { "dotaccent", 600, NULL }, - { "edotaccent", 600, NULL }, - { "asciitilde", 600, NULL }, - { "colon", 600, NULL }, - { "onehalf", 600, NULL }, - { "dollar", 600, NULL }, - { "Lcaron", 600, NULL }, - { "ntilde", 600, NULL }, - { "Aogonek", 600, NULL }, - { "ncommaaccent", 600, NULL }, - { "minus", 600, NULL }, - { "Iogonek", 600, NULL }, - { "zacute", 600, NULL }, - { "yen", 600, NULL }, - { "space", 600, NULL }, - { "Omacron", 600, NULL }, - { "questiondown", 600, NULL }, - { "emdash", 600, NULL }, - { "Agrave", 600, NULL }, - { "three", 600, NULL }, - { "numbersign", 600, NULL }, - { "lcaron", 600, NULL }, - { "A", 600, NULL }, - { "B", 600, NULL }, - { "C", 600, NULL }, - { "aogonek", 600, NULL }, - { "D", 600, NULL }, - { "E", 600, NULL }, - { "onequarter", 600, NULL }, - { "F", 600, NULL }, - { "G", 600, NULL }, - { "H", 600, NULL }, - { "I", 600, NULL }, - { "J", 600, NULL }, - { "K", 600, NULL }, - { "iogonek", 600, NULL }, - { "L", 600, NULL }, - { "backslash", 600, NULL }, - { "periodcentered", 600, NULL }, - { "M", 600, NULL }, - { "N", 600, NULL }, - { "omacron", 600, NULL }, - { "Tcommaaccent", 600, NULL }, - { "O", 600, NULL }, - { "P", 600, NULL }, - { "Q", 600, NULL }, - { "Uhungarumlaut", 600, NULL }, - { "R", 600, NULL }, - { "Aacute", 600, NULL }, - { "caron", 600, NULL }, - { "S", 600, NULL }, - { "T", 600, NULL }, - { "U", 600, NULL }, - { "agrave", 600, NULL }, - { "V", 600, NULL }, - { "W", 600, NULL }, - { "equal", 600, NULL }, - { "question", 600, NULL }, - { "X", 600, NULL }, - { "Y", 600, NULL }, - { "Z", 600, NULL }, - { "four", 600, NULL }, - { "a", 600, NULL }, - { "Gcommaaccent", 600, NULL }, - { "b", 600, NULL }, - { "c", 600, NULL }, - { "d", 600, NULL }, - { "e", 600, NULL }, - { "f", 600, NULL }, - { "g", 600, NULL }, - { "bullet", 600, NULL }, - { "h", 600, NULL }, - { "i", 600, NULL }, - { "Oslash", 600, NULL }, - { "dagger", 600, NULL }, - { "j", 600, NULL }, - { "k", 600, NULL }, - { "l", 600, NULL }, - { "m", 600, NULL }, - { "n", 600, NULL }, - { "tcommaaccent", 600, NULL }, - { "o", 600, NULL }, - { "ordfeminine", 600, NULL }, - { "ring", 600, NULL }, - { "p", 600, NULL }, - { "q", 600, NULL }, - { "uhungarumlaut", 600, NULL }, - { "r", 600, NULL }, - { "twosuperior", 600, NULL }, - { "aacute", 600, NULL }, - { "s", 600, NULL }, - { "OE", 600, NULL }, - { "t", 600, NULL }, - { "divide", 600, NULL }, - { "u", 600, NULL }, - { "Ccaron", 600, NULL }, - { "v", 600, NULL }, - { "w", 600, NULL }, - { "x", 600, NULL }, - { "y", 600, NULL }, - { "z", 600, NULL }, - { "Gbreve", 600, NULL }, - { "commaaccent", 600, NULL }, - { "hungarumlaut", 600, NULL }, - { "Idotaccent", 600, NULL }, - { "Nacute", 600, NULL }, - { "quotedbl", 600, NULL }, - { "gcommaaccent", 600, NULL }, - { "mu", 600, NULL }, - { "greaterequal", 600, NULL }, - { "Scaron", 600, NULL }, - { "Lslash", 600, NULL }, - { "semicolon", 600, NULL }, - { "oslash", 600, NULL }, - { "lessequal", 600, NULL }, - { "lozenge", 600, NULL }, - { "parenright", 600, NULL }, - { "ccaron", 600, NULL }, - { "Ecircumflex", 600, NULL }, - { "gbreve", 600, NULL }, - { "trademark", 600, NULL }, - { "daggerdbl", 600, NULL }, - { "nacute", 600, NULL }, - { "macron", 600, NULL }, - { "Otilde", 600, NULL }, - { "Emacron", 600, NULL }, - { "ellipsis", 600, NULL }, - { "scaron", 600, NULL }, - { "AE", 600, NULL }, - { "Ucircumflex", 600, NULL }, - { "lslash", 600, NULL }, - { "quotedblleft", 600, NULL }, - { "hyphen", 600, NULL }, - { "guilsinglright", 600, NULL }, - { "quotesingle", 600, NULL }, - { "eight", 600, NULL }, - { "exclamdown", 600, NULL }, - { "endash", 600, NULL }, - { "oe", 600, NULL }, - { "Abreve", 600, NULL }, - { "Umacron", 600, NULL }, - { "ecircumflex", 600, NULL }, - { "Adieresis", 600, NULL }, - { "copyright", 600, NULL }, - { "Egrave", 600, NULL }, - { "slash", 600, NULL }, - { "Edieresis", 600, NULL }, - { "otilde", 600, NULL }, - { "Idieresis", 600, NULL }, - { "parenleft", 600, NULL }, - { "one", 600, NULL }, - { "emacron", 600, NULL }, - { "Odieresis", 600, NULL }, - { "ucircumflex", 600, NULL }, - { "bracketleft", 600, NULL }, - { "Ugrave", 600, NULL }, - { "quoteright", 600, NULL }, - { "Udieresis", 600, NULL }, - { "perthousand", 600, NULL }, - { "Ydieresis", 600, NULL }, - { "umacron", 600, NULL }, - { "abreve", 600, NULL }, - { "Eacute", 600, NULL }, - { "adieresis", 600, NULL }, - { "egrave", 600, NULL }, - { "edieresis", 600, NULL }, - { "idieresis", 600, NULL }, - { "Eth", 600, NULL }, - { "ae", 600, NULL }, - { "asterisk", 600, NULL }, - { "odieresis", 600, NULL }, - { "Uacute", 600, NULL }, - { "ugrave", 600, NULL }, - { "five", 600, NULL }, - { "nine", 600, NULL }, - { "udieresis", 600, NULL }, - { "Zcaron", 600, NULL }, - { "Scommaaccent", 600, NULL }, - { "threequarters", 600, NULL }, - { "guillemotright", 600, NULL }, - { "Ccedilla", 600, NULL }, - { "ydieresis", 600, NULL }, - { "tilde", 600, NULL }, - { "at", 600, NULL }, - { "eacute", 600, NULL }, - { "underscore", 600, NULL }, - { "Euro", 600, NULL }, - { "Dcroat", 600, NULL }, - { "zero", 600, NULL }, - { "multiply", 600, NULL }, - { "eth", 600, NULL }, - { "Scedilla", 600, NULL }, - { "Racute", 600, NULL }, - { "Ograve", 600, NULL }, - { "partialdiff", 600, NULL }, - { "uacute", 600, NULL }, - { "braceleft", 600, NULL }, - { "Thorn", 600, NULL }, - { "zcaron", 600, NULL }, - { "scommaaccent", 600, NULL }, - { "ccedilla", 600, NULL }, - { "Dcaron", 600, NULL }, - { "dcroat", 600, NULL }, - { "scedilla", 600, NULL }, - { "Oacute", 600, NULL }, - { "Ocircumflex", 600, NULL }, - { "ogonek", 600, NULL }, - { "ograve", 600, NULL }, - { "racute", 600, NULL }, - { "Tcaron", 600, NULL }, - { "Eogonek", 600, NULL }, - { "thorn", 600, NULL }, - { "degree", 600, NULL }, - { "registered", 600, NULL }, - { "radical", 600, NULL }, - { "Aring", 600, NULL }, - { "percent", 600, NULL }, - { "six", 600, NULL }, - { "paragraph", 600, NULL }, - { "dcaron", 600, NULL }, - { "Uogonek", 600, NULL }, - { "two", 600, NULL }, - { "summation", 600, NULL }, - { "Igrave", 600, NULL }, - { "Lacute", 600, NULL }, - { "ocircumflex", 600, NULL }, - { "oacute", 600, NULL }, - { "Uring", 600, NULL }, - { "Lcommaaccent", 600, NULL }, - { "tcaron", 600, NULL }, - { "eogonek", 600, NULL }, - { "Delta", 600, NULL }, - { "Ohungarumlaut", 600, NULL }, - { "asciicircum", 600, NULL }, - { "aring", 600, NULL }, - { "grave", 600, NULL }, - { "uogonek", 600, NULL }, - { "bracketright", 600, NULL }, - { "ampersand", 600, NULL }, - { "Iacute", 600, NULL }, - { "lacute", 600, NULL }, - { "igrave", 600, NULL }, - { "Ncaron", 600, NULL }, - { "plus", 600, NULL }, - { "uring", 600, NULL }, - { "quotesinglbase", 600, NULL }, - { "lcommaaccent", 600, NULL }, - { "Yacute", 600, NULL }, - { "ohungarumlaut", 600, NULL }, - { "threesuperior", 600, NULL }, - { "acute", 600, NULL }, - { "section", 600, NULL }, - { "dieresis", 600, NULL }, - { "quotedblbase", 600, NULL }, - { "iacute", 600, NULL }, - { "ncaron", 600, NULL }, - { "florin", 600, NULL }, - { "yacute", 600, NULL }, - { "Rcommaaccent", 600, NULL }, - { "fi", 600, NULL }, - { "fl", 600, NULL }, - { "Acircumflex", 600, NULL }, - { "Cacute", 600, NULL }, - { "Icircumflex", 600, NULL }, - { "guillemotleft", 600, NULL }, - { "germandbls", 600, NULL }, - { "seven", 600, NULL }, - { "Amacron", 600, NULL }, - { "Sacute", 600, NULL }, - { "ordmasculine", 600, NULL }, - { "dotlessi", 600, NULL }, - { "sterling", 600, NULL }, - { "notequal", 600, NULL }, - { "Imacron", 600, NULL }, - { "rcommaaccent", 600, NULL }, - { "Zdotaccent", 600, NULL }, - { "acircumflex", 600, NULL }, - { "cacute", 600, NULL }, - { "Ecaron", 600, NULL }, - { "braceright", 600, NULL }, - { "icircumflex", 600, NULL }, - { "quotedblright", 600, NULL }, - { "amacron", 600, NULL }, - { "sacute", 600, NULL }, - { "imacron", 600, NULL }, - { "cent", 600, NULL }, - { "currency", 600, NULL }, - { "logicalnot", 600, NULL }, - { "zdotaccent", 600, NULL }, - { "Atilde", 600, NULL }, - { "breve", 600, NULL }, - { "bar", 600, NULL }, - { "fraction", 600, NULL }, - { "less", 600, NULL }, - { "ecaron", 600, NULL }, - { "guilsinglleft", 600, NULL }, - { "exclam", 600, NULL }, - { "period", 600, NULL }, - { "Rcaron", 600, NULL }, - { "Kcommaaccent", 600, NULL }, - { "greater", 600, NULL }, - { "atilde", 600, NULL }, - { "brokenbar", 600, NULL }, - { "quoteleft", 600, NULL }, - { "Edotaccent", 600, NULL }, - { "onesuperior", 600, NULL } + { "Ntilde", 600, nullptr }, + { "rcaron", 600, nullptr }, + { "kcommaaccent", 600, nullptr }, + { "Ncommaaccent", 600, nullptr }, + { "Zacute", 600, nullptr }, + { "comma", 600, nullptr }, + { "cedilla", 600, nullptr }, + { "plusminus", 600, nullptr }, + { "circumflex", 600, nullptr }, + { "dotaccent", 600, nullptr }, + { "edotaccent", 600, nullptr }, + { "asciitilde", 600, nullptr }, + { "colon", 600, nullptr }, + { "onehalf", 600, nullptr }, + { "dollar", 600, nullptr }, + { "Lcaron", 600, nullptr }, + { "ntilde", 600, nullptr }, + { "Aogonek", 600, nullptr }, + { "ncommaaccent", 600, nullptr }, + { "minus", 600, nullptr }, + { "Iogonek", 600, nullptr }, + { "zacute", 600, nullptr }, + { "yen", 600, nullptr }, + { "space", 600, nullptr }, + { "Omacron", 600, nullptr }, + { "questiondown", 600, nullptr }, + { "emdash", 600, nullptr }, + { "Agrave", 600, nullptr }, + { "three", 600, nullptr }, + { "numbersign", 600, nullptr }, + { "lcaron", 600, nullptr }, + { "A", 600, nullptr }, + { "B", 600, nullptr }, + { "C", 600, nullptr }, + { "aogonek", 600, nullptr }, + { "D", 600, nullptr }, + { "E", 600, nullptr }, + { "onequarter", 600, nullptr }, + { "F", 600, nullptr }, + { "G", 600, nullptr }, + { "H", 600, nullptr }, + { "I", 600, nullptr }, + { "J", 600, nullptr }, + { "K", 600, nullptr }, + { "iogonek", 600, nullptr }, + { "L", 600, nullptr }, + { "backslash", 600, nullptr }, + { "periodcentered", 600, nullptr }, + { "M", 600, nullptr }, + { "N", 600, nullptr }, + { "omacron", 600, nullptr }, + { "Tcommaaccent", 600, nullptr }, + { "O", 600, nullptr }, + { "P", 600, nullptr }, + { "Q", 600, nullptr }, + { "Uhungarumlaut", 600, nullptr }, + { "R", 600, nullptr }, + { "Aacute", 600, nullptr }, + { "caron", 600, nullptr }, + { "S", 600, nullptr }, + { "T", 600, nullptr }, + { "U", 600, nullptr }, + { "agrave", 600, nullptr }, + { "V", 600, nullptr }, + { "W", 600, nullptr }, + { "equal", 600, nullptr }, + { "question", 600, nullptr }, + { "X", 600, nullptr }, + { "Y", 600, nullptr }, + { "Z", 600, nullptr }, + { "four", 600, nullptr }, + { "a", 600, nullptr }, + { "Gcommaaccent", 600, nullptr }, + { "b", 600, nullptr }, + { "c", 600, nullptr }, + { "d", 600, nullptr }, + { "e", 600, nullptr }, + { "f", 600, nullptr }, + { "g", 600, nullptr }, + { "bullet", 600, nullptr }, + { "h", 600, nullptr }, + { "i", 600, nullptr }, + { "Oslash", 600, nullptr }, + { "dagger", 600, nullptr }, + { "j", 600, nullptr }, + { "k", 600, nullptr }, + { "l", 600, nullptr }, + { "m", 600, nullptr }, + { "n", 600, nullptr }, + { "tcommaaccent", 600, nullptr }, + { "o", 600, nullptr }, + { "ordfeminine", 600, nullptr }, + { "ring", 600, nullptr }, + { "p", 600, nullptr }, + { "q", 600, nullptr }, + { "uhungarumlaut", 600, nullptr }, + { "r", 600, nullptr }, + { "twosuperior", 600, nullptr }, + { "aacute", 600, nullptr }, + { "s", 600, nullptr }, + { "OE", 600, nullptr }, + { "t", 600, nullptr }, + { "divide", 600, nullptr }, + { "u", 600, nullptr }, + { "Ccaron", 600, nullptr }, + { "v", 600, nullptr }, + { "w", 600, nullptr }, + { "x", 600, nullptr }, + { "y", 600, nullptr }, + { "z", 600, nullptr }, + { "Gbreve", 600, nullptr }, + { "commaaccent", 600, nullptr }, + { "hungarumlaut", 600, nullptr }, + { "Idotaccent", 600, nullptr }, + { "Nacute", 600, nullptr }, + { "quotedbl", 600, nullptr }, + { "gcommaaccent", 600, nullptr }, + { "mu", 600, nullptr }, + { "greaterequal", 600, nullptr }, + { "Scaron", 600, nullptr }, + { "Lslash", 600, nullptr }, + { "semicolon", 600, nullptr }, + { "oslash", 600, nullptr }, + { "lessequal", 600, nullptr }, + { "lozenge", 600, nullptr }, + { "parenright", 600, nullptr }, + { "ccaron", 600, nullptr }, + { "Ecircumflex", 600, nullptr }, + { "gbreve", 600, nullptr }, + { "trademark", 600, nullptr }, + { "daggerdbl", 600, nullptr }, + { "nacute", 600, nullptr }, + { "macron", 600, nullptr }, + { "Otilde", 600, nullptr }, + { "Emacron", 600, nullptr }, + { "ellipsis", 600, nullptr }, + { "scaron", 600, nullptr }, + { "AE", 600, nullptr }, + { "Ucircumflex", 600, nullptr }, + { "lslash", 600, nullptr }, + { "quotedblleft", 600, nullptr }, + { "hyphen", 600, nullptr }, + { "guilsinglright", 600, nullptr }, + { "quotesingle", 600, nullptr }, + { "eight", 600, nullptr }, + { "exclamdown", 600, nullptr }, + { "endash", 600, nullptr }, + { "oe", 600, nullptr }, + { "Abreve", 600, nullptr }, + { "Umacron", 600, nullptr }, + { "ecircumflex", 600, nullptr }, + { "Adieresis", 600, nullptr }, + { "copyright", 600, nullptr }, + { "Egrave", 600, nullptr }, + { "slash", 600, nullptr }, + { "Edieresis", 600, nullptr }, + { "otilde", 600, nullptr }, + { "Idieresis", 600, nullptr }, + { "parenleft", 600, nullptr }, + { "one", 600, nullptr }, + { "emacron", 600, nullptr }, + { "Odieresis", 600, nullptr }, + { "ucircumflex", 600, nullptr }, + { "bracketleft", 600, nullptr }, + { "Ugrave", 600, nullptr }, + { "quoteright", 600, nullptr }, + { "Udieresis", 600, nullptr }, + { "perthousand", 600, nullptr }, + { "Ydieresis", 600, nullptr }, + { "umacron", 600, nullptr }, + { "abreve", 600, nullptr }, + { "Eacute", 600, nullptr }, + { "adieresis", 600, nullptr }, + { "egrave", 600, nullptr }, + { "edieresis", 600, nullptr }, + { "idieresis", 600, nullptr }, + { "Eth", 600, nullptr }, + { "ae", 600, nullptr }, + { "asterisk", 600, nullptr }, + { "odieresis", 600, nullptr }, + { "Uacute", 600, nullptr }, + { "ugrave", 600, nullptr }, + { "five", 600, nullptr }, + { "nine", 600, nullptr }, + { "udieresis", 600, nullptr }, + { "Zcaron", 600, nullptr }, + { "Scommaaccent", 600, nullptr }, + { "threequarters", 600, nullptr }, + { "guillemotright", 600, nullptr }, + { "Ccedilla", 600, nullptr }, + { "ydieresis", 600, nullptr }, + { "tilde", 600, nullptr }, + { "at", 600, nullptr }, + { "eacute", 600, nullptr }, + { "underscore", 600, nullptr }, + { "Euro", 600, nullptr }, + { "Dcroat", 600, nullptr }, + { "zero", 600, nullptr }, + { "multiply", 600, nullptr }, + { "eth", 600, nullptr }, + { "Scedilla", 600, nullptr }, + { "Racute", 600, nullptr }, + { "Ograve", 600, nullptr }, + { "partialdiff", 600, nullptr }, + { "uacute", 600, nullptr }, + { "braceleft", 600, nullptr }, + { "Thorn", 600, nullptr }, + { "zcaron", 600, nullptr }, + { "scommaaccent", 600, nullptr }, + { "ccedilla", 600, nullptr }, + { "Dcaron", 600, nullptr }, + { "dcroat", 600, nullptr }, + { "scedilla", 600, nullptr }, + { "Oacute", 600, nullptr }, + { "Ocircumflex", 600, nullptr }, + { "ogonek", 600, nullptr }, + { "ograve", 600, nullptr }, + { "racute", 600, nullptr }, + { "Tcaron", 600, nullptr }, + { "Eogonek", 600, nullptr }, + { "thorn", 600, nullptr }, + { "degree", 600, nullptr }, + { "registered", 600, nullptr }, + { "radical", 600, nullptr }, + { "Aring", 600, nullptr }, + { "percent", 600, nullptr }, + { "six", 600, nullptr }, + { "paragraph", 600, nullptr }, + { "dcaron", 600, nullptr }, + { "Uogonek", 600, nullptr }, + { "two", 600, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 600, nullptr }, + { "Lacute", 600, nullptr }, + { "ocircumflex", 600, nullptr }, + { "oacute", 600, nullptr }, + { "Uring", 600, nullptr }, + { "Lcommaaccent", 600, nullptr }, + { "tcaron", 600, nullptr }, + { "eogonek", 600, nullptr }, + { "Delta", 600, nullptr }, + { "Ohungarumlaut", 600, nullptr }, + { "asciicircum", 600, nullptr }, + { "aring", 600, nullptr }, + { "grave", 600, nullptr }, + { "uogonek", 600, nullptr }, + { "bracketright", 600, nullptr }, + { "ampersand", 600, nullptr }, + { "Iacute", 600, nullptr }, + { "lacute", 600, nullptr }, + { "igrave", 600, nullptr }, + { "Ncaron", 600, nullptr }, + { "plus", 600, nullptr }, + { "uring", 600, nullptr }, + { "quotesinglbase", 600, nullptr }, + { "lcommaaccent", 600, nullptr }, + { "Yacute", 600, nullptr }, + { "ohungarumlaut", 600, nullptr }, + { "threesuperior", 600, nullptr }, + { "acute", 600, nullptr }, + { "section", 600, nullptr }, + { "dieresis", 600, nullptr }, + { "quotedblbase", 600, nullptr }, + { "iacute", 600, nullptr }, + { "ncaron", 600, nullptr }, + { "florin", 600, nullptr }, + { "yacute", 600, nullptr }, + { "Rcommaaccent", 600, nullptr }, + { "fi", 600, nullptr }, + { "fl", 600, nullptr }, + { "Acircumflex", 600, nullptr }, + { "Cacute", 600, nullptr }, + { "Icircumflex", 600, nullptr }, + { "guillemotleft", 600, nullptr }, + { "germandbls", 600, nullptr }, + { "seven", 600, nullptr }, + { "Amacron", 600, nullptr }, + { "Sacute", 600, nullptr }, + { "ordmasculine", 600, nullptr }, + { "dotlessi", 600, nullptr }, + { "sterling", 600, nullptr }, + { "notequal", 600, nullptr }, + { "Imacron", 600, nullptr }, + { "rcommaaccent", 600, nullptr }, + { "Zdotaccent", 600, nullptr }, + { "acircumflex", 600, nullptr }, + { "cacute", 600, nullptr }, + { "Ecaron", 600, nullptr }, + { "braceright", 600, nullptr }, + { "icircumflex", 600, nullptr }, + { "quotedblright", 600, nullptr }, + { "amacron", 600, nullptr }, + { "sacute", 600, nullptr }, + { "imacron", 600, nullptr }, + { "cent", 600, nullptr }, + { "currency", 600, nullptr }, + { "logicalnot", 600, nullptr }, + { "zdotaccent", 600, nullptr }, + { "Atilde", 600, nullptr }, + { "breve", 600, nullptr }, + { "bar", 600, nullptr }, + { "fraction", 600, nullptr }, + { "less", 600, nullptr }, + { "ecaron", 600, nullptr }, + { "guilsinglleft", 600, nullptr }, + { "exclam", 600, nullptr }, + { "period", 600, nullptr }, + { "Rcaron", 600, nullptr }, + { "Kcommaaccent", 600, nullptr }, + { "greater", 600, nullptr }, + { "atilde", 600, nullptr }, + { "brokenbar", 600, nullptr }, + { "quoteleft", 600, nullptr }, + { "Edotaccent", 600, nullptr }, + { "onesuperior", 600, nullptr } }; static BuiltinFontWidth courierBoldWidthsTab[] = { - { "Ntilde", 600, NULL }, - { "rcaron", 600, NULL }, - { "kcommaaccent", 600, NULL }, - { "Ncommaaccent", 600, NULL }, - { "Zacute", 600, NULL }, - { "comma", 600, NULL }, - { "cedilla", 600, NULL }, - { "plusminus", 600, NULL }, - { "circumflex", 600, NULL }, - { "dotaccent", 600, NULL }, - { "edotaccent", 600, NULL }, - { "asciitilde", 600, NULL }, - { "colon", 600, NULL }, - { "onehalf", 600, NULL }, - { "dollar", 600, NULL }, - { "Lcaron", 600, NULL }, - { "ntilde", 600, NULL }, - { "Aogonek", 600, NULL }, - { "ncommaaccent", 600, NULL }, - { "minus", 600, NULL }, - { "Iogonek", 600, NULL }, - { "zacute", 600, NULL }, - { "yen", 600, NULL }, - { "space", 600, NULL }, - { "Omacron", 600, NULL }, - { "questiondown", 600, NULL }, - { "emdash", 600, NULL }, - { "Agrave", 600, NULL }, - { "three", 600, NULL }, - { "numbersign", 600, NULL }, - { "lcaron", 600, NULL }, - { "A", 600, NULL }, - { "B", 600, NULL }, - { "C", 600, NULL }, - { "aogonek", 600, NULL }, - { "D", 600, NULL }, - { "E", 600, NULL }, - { "onequarter", 600, NULL }, - { "F", 600, NULL }, - { "G", 600, NULL }, - { "H", 600, NULL }, - { "I", 600, NULL }, - { "J", 600, NULL }, - { "K", 600, NULL }, - { "iogonek", 600, NULL }, - { "backslash", 600, NULL }, - { "L", 600, NULL }, - { "periodcentered", 600, NULL }, - { "M", 600, NULL }, - { "N", 600, NULL }, - { "omacron", 600, NULL }, - { "Tcommaaccent", 600, NULL }, - { "O", 600, NULL }, - { "P", 600, NULL }, - { "Q", 600, NULL }, - { "Uhungarumlaut", 600, NULL }, - { "R", 600, NULL }, - { "Aacute", 600, NULL }, - { "caron", 600, NULL }, - { "S", 600, NULL }, - { "T", 600, NULL }, - { "U", 600, NULL }, - { "agrave", 600, NULL }, - { "V", 600, NULL }, - { "W", 600, NULL }, - { "X", 600, NULL }, - { "question", 600, NULL }, - { "equal", 600, NULL }, - { "Y", 600, NULL }, - { "Z", 600, NULL }, - { "four", 600, NULL }, - { "a", 600, NULL }, - { "Gcommaaccent", 600, NULL }, - { "b", 600, NULL }, - { "c", 600, NULL }, - { "d", 600, NULL }, - { "e", 600, NULL }, - { "f", 600, NULL }, - { "g", 600, NULL }, - { "bullet", 600, NULL }, - { "h", 600, NULL }, - { "i", 600, NULL }, - { "Oslash", 600, NULL }, - { "dagger", 600, NULL }, - { "j", 600, NULL }, - { "k", 600, NULL }, - { "l", 600, NULL }, - { "m", 600, NULL }, - { "n", 600, NULL }, - { "tcommaaccent", 600, NULL }, - { "o", 600, NULL }, - { "ordfeminine", 600, NULL }, - { "ring", 600, NULL }, - { "p", 600, NULL }, - { "q", 600, NULL }, - { "uhungarumlaut", 600, NULL }, - { "r", 600, NULL }, - { "twosuperior", 600, NULL }, - { "aacute", 600, NULL }, - { "s", 600, NULL }, - { "OE", 600, NULL }, - { "t", 600, NULL }, - { "divide", 600, NULL }, - { "u", 600, NULL }, - { "Ccaron", 600, NULL }, - { "v", 600, NULL }, - { "w", 600, NULL }, - { "x", 600, NULL }, - { "y", 600, NULL }, - { "z", 600, NULL }, - { "Gbreve", 600, NULL }, - { "commaaccent", 600, NULL }, - { "hungarumlaut", 600, NULL }, - { "Idotaccent", 600, NULL }, - { "Nacute", 600, NULL }, - { "quotedbl", 600, NULL }, - { "gcommaaccent", 600, NULL }, - { "mu", 600, NULL }, - { "greaterequal", 600, NULL }, - { "Scaron", 600, NULL }, - { "Lslash", 600, NULL }, - { "semicolon", 600, NULL }, - { "oslash", 600, NULL }, - { "lessequal", 600, NULL }, - { "lozenge", 600, NULL }, - { "parenright", 600, NULL }, - { "ccaron", 600, NULL }, - { "Ecircumflex", 600, NULL }, - { "gbreve", 600, NULL }, - { "trademark", 600, NULL }, - { "daggerdbl", 600, NULL }, - { "nacute", 600, NULL }, - { "macron", 600, NULL }, - { "Otilde", 600, NULL }, - { "Emacron", 600, NULL }, - { "ellipsis", 600, NULL }, - { "scaron", 600, NULL }, - { "AE", 600, NULL }, - { "Ucircumflex", 600, NULL }, - { "lslash", 600, NULL }, - { "quotedblleft", 600, NULL }, - { "guilsinglright", 600, NULL }, - { "hyphen", 600, NULL }, - { "quotesingle", 600, NULL }, - { "eight", 600, NULL }, - { "exclamdown", 600, NULL }, - { "endash", 600, NULL }, - { "oe", 600, NULL }, - { "Abreve", 600, NULL }, - { "Umacron", 600, NULL }, - { "ecircumflex", 600, NULL }, - { "Adieresis", 600, NULL }, - { "copyright", 600, NULL }, - { "Egrave", 600, NULL }, - { "slash", 600, NULL }, - { "Edieresis", 600, NULL }, - { "otilde", 600, NULL }, - { "Idieresis", 600, NULL }, - { "parenleft", 600, NULL }, - { "one", 600, NULL }, - { "emacron", 600, NULL }, - { "Odieresis", 600, NULL }, - { "ucircumflex", 600, NULL }, - { "bracketleft", 600, NULL }, - { "Ugrave", 600, NULL }, - { "quoteright", 600, NULL }, - { "Udieresis", 600, NULL }, - { "perthousand", 600, NULL }, - { "Ydieresis", 600, NULL }, - { "umacron", 600, NULL }, - { "abreve", 600, NULL }, - { "Eacute", 600, NULL }, - { "adieresis", 600, NULL }, - { "egrave", 600, NULL }, - { "edieresis", 600, NULL }, - { "idieresis", 600, NULL }, - { "Eth", 600, NULL }, - { "ae", 600, NULL }, - { "asterisk", 600, NULL }, - { "odieresis", 600, NULL }, - { "Uacute", 600, NULL }, - { "ugrave", 600, NULL }, - { "nine", 600, NULL }, - { "five", 600, NULL }, - { "udieresis", 600, NULL }, - { "Zcaron", 600, NULL }, - { "Scommaaccent", 600, NULL }, - { "threequarters", 600, NULL }, - { "guillemotright", 600, NULL }, - { "Ccedilla", 600, NULL }, - { "ydieresis", 600, NULL }, - { "tilde", 600, NULL }, - { "at", 600, NULL }, - { "eacute", 600, NULL }, - { "underscore", 600, NULL }, - { "Euro", 600, NULL }, - { "Dcroat", 600, NULL }, - { "multiply", 600, NULL }, - { "zero", 600, NULL }, - { "eth", 600, NULL }, - { "Scedilla", 600, NULL }, - { "Ograve", 600, NULL }, - { "Racute", 600, NULL }, - { "partialdiff", 600, NULL }, - { "uacute", 600, NULL }, - { "braceleft", 600, NULL }, - { "Thorn", 600, NULL }, - { "zcaron", 600, NULL }, - { "scommaaccent", 600, NULL }, - { "ccedilla", 600, NULL }, - { "Dcaron", 600, NULL }, - { "dcroat", 600, NULL }, - { "Ocircumflex", 600, NULL }, - { "Oacute", 600, NULL }, - { "scedilla", 600, NULL }, - { "ogonek", 600, NULL }, - { "ograve", 600, NULL }, - { "racute", 600, NULL }, - { "Tcaron", 600, NULL }, - { "Eogonek", 600, NULL }, - { "thorn", 600, NULL }, - { "degree", 600, NULL }, - { "registered", 600, NULL }, - { "radical", 600, NULL }, - { "Aring", 600, NULL }, - { "percent", 600, NULL }, - { "six", 600, NULL }, - { "paragraph", 600, NULL }, - { "dcaron", 600, NULL }, - { "Uogonek", 600, NULL }, - { "two", 600, NULL }, - { "summation", 600, NULL }, - { "Igrave", 600, NULL }, - { "Lacute", 600, NULL }, - { "ocircumflex", 600, NULL }, - { "oacute", 600, NULL }, - { "Uring", 600, NULL }, - { "Lcommaaccent", 600, NULL }, - { "tcaron", 600, NULL }, - { "eogonek", 600, NULL }, - { "Delta", 600, NULL }, - { "Ohungarumlaut", 600, NULL }, - { "asciicircum", 600, NULL }, - { "aring", 600, NULL }, - { "grave", 600, NULL }, - { "uogonek", 600, NULL }, - { "bracketright", 600, NULL }, - { "Iacute", 600, NULL }, - { "ampersand", 600, NULL }, - { "igrave", 600, NULL }, - { "lacute", 600, NULL }, - { "Ncaron", 600, NULL }, - { "plus", 600, NULL }, - { "uring", 600, NULL }, - { "quotesinglbase", 600, NULL }, - { "lcommaaccent", 600, NULL }, - { "Yacute", 600, NULL }, - { "ohungarumlaut", 600, NULL }, - { "threesuperior", 600, NULL }, - { "acute", 600, NULL }, - { "section", 600, NULL }, - { "dieresis", 600, NULL }, - { "iacute", 600, NULL }, - { "quotedblbase", 600, NULL }, - { "ncaron", 600, NULL }, - { "florin", 600, NULL }, - { "yacute", 600, NULL }, - { "Rcommaaccent", 600, NULL }, - { "fi", 600, NULL }, - { "fl", 600, NULL }, - { "Acircumflex", 600, NULL }, - { "Cacute", 600, NULL }, - { "Icircumflex", 600, NULL }, - { "guillemotleft", 600, NULL }, - { "germandbls", 600, NULL }, - { "Amacron", 600, NULL }, - { "seven", 600, NULL }, - { "Sacute", 600, NULL }, - { "ordmasculine", 600, NULL }, - { "dotlessi", 600, NULL }, - { "sterling", 600, NULL }, - { "notequal", 600, NULL }, - { "Imacron", 600, NULL }, - { "rcommaaccent", 600, NULL }, - { "Zdotaccent", 600, NULL }, - { "acircumflex", 600, NULL }, - { "cacute", 600, NULL }, - { "Ecaron", 600, NULL }, - { "icircumflex", 600, NULL }, - { "braceright", 600, NULL }, - { "quotedblright", 600, NULL }, - { "amacron", 600, NULL }, - { "sacute", 600, NULL }, - { "imacron", 600, NULL }, - { "cent", 600, NULL }, - { "currency", 600, NULL }, - { "logicalnot", 600, NULL }, - { "zdotaccent", 600, NULL }, - { "Atilde", 600, NULL }, - { "breve", 600, NULL }, - { "bar", 600, NULL }, - { "fraction", 600, NULL }, - { "less", 600, NULL }, - { "ecaron", 600, NULL }, - { "guilsinglleft", 600, NULL }, - { "exclam", 600, NULL }, - { "period", 600, NULL }, - { "Rcaron", 600, NULL }, - { "Kcommaaccent", 600, NULL }, - { "greater", 600, NULL }, - { "atilde", 600, NULL }, - { "brokenbar", 600, NULL }, - { "quoteleft", 600, NULL }, - { "Edotaccent", 600, NULL }, - { "onesuperior", 600, NULL } + { "Ntilde", 600, nullptr }, + { "rcaron", 600, nullptr }, + { "kcommaaccent", 600, nullptr }, + { "Ncommaaccent", 600, nullptr }, + { "Zacute", 600, nullptr }, + { "comma", 600, nullptr }, + { "cedilla", 600, nullptr }, + { "plusminus", 600, nullptr }, + { "circumflex", 600, nullptr }, + { "dotaccent", 600, nullptr }, + { "edotaccent", 600, nullptr }, + { "asciitilde", 600, nullptr }, + { "colon", 600, nullptr }, + { "onehalf", 600, nullptr }, + { "dollar", 600, nullptr }, + { "Lcaron", 600, nullptr }, + { "ntilde", 600, nullptr }, + { "Aogonek", 600, nullptr }, + { "ncommaaccent", 600, nullptr }, + { "minus", 600, nullptr }, + { "Iogonek", 600, nullptr }, + { "zacute", 600, nullptr }, + { "yen", 600, nullptr }, + { "space", 600, nullptr }, + { "Omacron", 600, nullptr }, + { "questiondown", 600, nullptr }, + { "emdash", 600, nullptr }, + { "Agrave", 600, nullptr }, + { "three", 600, nullptr }, + { "numbersign", 600, nullptr }, + { "lcaron", 600, nullptr }, + { "A", 600, nullptr }, + { "B", 600, nullptr }, + { "C", 600, nullptr }, + { "aogonek", 600, nullptr }, + { "D", 600, nullptr }, + { "E", 600, nullptr }, + { "onequarter", 600, nullptr }, + { "F", 600, nullptr }, + { "G", 600, nullptr }, + { "H", 600, nullptr }, + { "I", 600, nullptr }, + { "J", 600, nullptr }, + { "K", 600, nullptr }, + { "iogonek", 600, nullptr }, + { "backslash", 600, nullptr }, + { "L", 600, nullptr }, + { "periodcentered", 600, nullptr }, + { "M", 600, nullptr }, + { "N", 600, nullptr }, + { "omacron", 600, nullptr }, + { "Tcommaaccent", 600, nullptr }, + { "O", 600, nullptr }, + { "P", 600, nullptr }, + { "Q", 600, nullptr }, + { "Uhungarumlaut", 600, nullptr }, + { "R", 600, nullptr }, + { "Aacute", 600, nullptr }, + { "caron", 600, nullptr }, + { "S", 600, nullptr }, + { "T", 600, nullptr }, + { "U", 600, nullptr }, + { "agrave", 600, nullptr }, + { "V", 600, nullptr }, + { "W", 600, nullptr }, + { "X", 600, nullptr }, + { "question", 600, nullptr }, + { "equal", 600, nullptr }, + { "Y", 600, nullptr }, + { "Z", 600, nullptr }, + { "four", 600, nullptr }, + { "a", 600, nullptr }, + { "Gcommaaccent", 600, nullptr }, + { "b", 600, nullptr }, + { "c", 600, nullptr }, + { "d", 600, nullptr }, + { "e", 600, nullptr }, + { "f", 600, nullptr }, + { "g", 600, nullptr }, + { "bullet", 600, nullptr }, + { "h", 600, nullptr }, + { "i", 600, nullptr }, + { "Oslash", 600, nullptr }, + { "dagger", 600, nullptr }, + { "j", 600, nullptr }, + { "k", 600, nullptr }, + { "l", 600, nullptr }, + { "m", 600, nullptr }, + { "n", 600, nullptr }, + { "tcommaaccent", 600, nullptr }, + { "o", 600, nullptr }, + { "ordfeminine", 600, nullptr }, + { "ring", 600, nullptr }, + { "p", 600, nullptr }, + { "q", 600, nullptr }, + { "uhungarumlaut", 600, nullptr }, + { "r", 600, nullptr }, + { "twosuperior", 600, nullptr }, + { "aacute", 600, nullptr }, + { "s", 600, nullptr }, + { "OE", 600, nullptr }, + { "t", 600, nullptr }, + { "divide", 600, nullptr }, + { "u", 600, nullptr }, + { "Ccaron", 600, nullptr }, + { "v", 600, nullptr }, + { "w", 600, nullptr }, + { "x", 600, nullptr }, + { "y", 600, nullptr }, + { "z", 600, nullptr }, + { "Gbreve", 600, nullptr }, + { "commaaccent", 600, nullptr }, + { "hungarumlaut", 600, nullptr }, + { "Idotaccent", 600, nullptr }, + { "Nacute", 600, nullptr }, + { "quotedbl", 600, nullptr }, + { "gcommaaccent", 600, nullptr }, + { "mu", 600, nullptr }, + { "greaterequal", 600, nullptr }, + { "Scaron", 600, nullptr }, + { "Lslash", 600, nullptr }, + { "semicolon", 600, nullptr }, + { "oslash", 600, nullptr }, + { "lessequal", 600, nullptr }, + { "lozenge", 600, nullptr }, + { "parenright", 600, nullptr }, + { "ccaron", 600, nullptr }, + { "Ecircumflex", 600, nullptr }, + { "gbreve", 600, nullptr }, + { "trademark", 600, nullptr }, + { "daggerdbl", 600, nullptr }, + { "nacute", 600, nullptr }, + { "macron", 600, nullptr }, + { "Otilde", 600, nullptr }, + { "Emacron", 600, nullptr }, + { "ellipsis", 600, nullptr }, + { "scaron", 600, nullptr }, + { "AE", 600, nullptr }, + { "Ucircumflex", 600, nullptr }, + { "lslash", 600, nullptr }, + { "quotedblleft", 600, nullptr }, + { "guilsinglright", 600, nullptr }, + { "hyphen", 600, nullptr }, + { "quotesingle", 600, nullptr }, + { "eight", 600, nullptr }, + { "exclamdown", 600, nullptr }, + { "endash", 600, nullptr }, + { "oe", 600, nullptr }, + { "Abreve", 600, nullptr }, + { "Umacron", 600, nullptr }, + { "ecircumflex", 600, nullptr }, + { "Adieresis", 600, nullptr }, + { "copyright", 600, nullptr }, + { "Egrave", 600, nullptr }, + { "slash", 600, nullptr }, + { "Edieresis", 600, nullptr }, + { "otilde", 600, nullptr }, + { "Idieresis", 600, nullptr }, + { "parenleft", 600, nullptr }, + { "one", 600, nullptr }, + { "emacron", 600, nullptr }, + { "Odieresis", 600, nullptr }, + { "ucircumflex", 600, nullptr }, + { "bracketleft", 600, nullptr }, + { "Ugrave", 600, nullptr }, + { "quoteright", 600, nullptr }, + { "Udieresis", 600, nullptr }, + { "perthousand", 600, nullptr }, + { "Ydieresis", 600, nullptr }, + { "umacron", 600, nullptr }, + { "abreve", 600, nullptr }, + { "Eacute", 600, nullptr }, + { "adieresis", 600, nullptr }, + { "egrave", 600, nullptr }, + { "edieresis", 600, nullptr }, + { "idieresis", 600, nullptr }, + { "Eth", 600, nullptr }, + { "ae", 600, nullptr }, + { "asterisk", 600, nullptr }, + { "odieresis", 600, nullptr }, + { "Uacute", 600, nullptr }, + { "ugrave", 600, nullptr }, + { "nine", 600, nullptr }, + { "five", 600, nullptr }, + { "udieresis", 600, nullptr }, + { "Zcaron", 600, nullptr }, + { "Scommaaccent", 600, nullptr }, + { "threequarters", 600, nullptr }, + { "guillemotright", 600, nullptr }, + { "Ccedilla", 600, nullptr }, + { "ydieresis", 600, nullptr }, + { "tilde", 600, nullptr }, + { "at", 600, nullptr }, + { "eacute", 600, nullptr }, + { "underscore", 600, nullptr }, + { "Euro", 600, nullptr }, + { "Dcroat", 600, nullptr }, + { "multiply", 600, nullptr }, + { "zero", 600, nullptr }, + { "eth", 600, nullptr }, + { "Scedilla", 600, nullptr }, + { "Ograve", 600, nullptr }, + { "Racute", 600, nullptr }, + { "partialdiff", 600, nullptr }, + { "uacute", 600, nullptr }, + { "braceleft", 600, nullptr }, + { "Thorn", 600, nullptr }, + { "zcaron", 600, nullptr }, + { "scommaaccent", 600, nullptr }, + { "ccedilla", 600, nullptr }, + { "Dcaron", 600, nullptr }, + { "dcroat", 600, nullptr }, + { "Ocircumflex", 600, nullptr }, + { "Oacute", 600, nullptr }, + { "scedilla", 600, nullptr }, + { "ogonek", 600, nullptr }, + { "ograve", 600, nullptr }, + { "racute", 600, nullptr }, + { "Tcaron", 600, nullptr }, + { "Eogonek", 600, nullptr }, + { "thorn", 600, nullptr }, + { "degree", 600, nullptr }, + { "registered", 600, nullptr }, + { "radical", 600, nullptr }, + { "Aring", 600, nullptr }, + { "percent", 600, nullptr }, + { "six", 600, nullptr }, + { "paragraph", 600, nullptr }, + { "dcaron", 600, nullptr }, + { "Uogonek", 600, nullptr }, + { "two", 600, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 600, nullptr }, + { "Lacute", 600, nullptr }, + { "ocircumflex", 600, nullptr }, + { "oacute", 600, nullptr }, + { "Uring", 600, nullptr }, + { "Lcommaaccent", 600, nullptr }, + { "tcaron", 600, nullptr }, + { "eogonek", 600, nullptr }, + { "Delta", 600, nullptr }, + { "Ohungarumlaut", 600, nullptr }, + { "asciicircum", 600, nullptr }, + { "aring", 600, nullptr }, + { "grave", 600, nullptr }, + { "uogonek", 600, nullptr }, + { "bracketright", 600, nullptr }, + { "Iacute", 600, nullptr }, + { "ampersand", 600, nullptr }, + { "igrave", 600, nullptr }, + { "lacute", 600, nullptr }, + { "Ncaron", 600, nullptr }, + { "plus", 600, nullptr }, + { "uring", 600, nullptr }, + { "quotesinglbase", 600, nullptr }, + { "lcommaaccent", 600, nullptr }, + { "Yacute", 600, nullptr }, + { "ohungarumlaut", 600, nullptr }, + { "threesuperior", 600, nullptr }, + { "acute", 600, nullptr }, + { "section", 600, nullptr }, + { "dieresis", 600, nullptr }, + { "iacute", 600, nullptr }, + { "quotedblbase", 600, nullptr }, + { "ncaron", 600, nullptr }, + { "florin", 600, nullptr }, + { "yacute", 600, nullptr }, + { "Rcommaaccent", 600, nullptr }, + { "fi", 600, nullptr }, + { "fl", 600, nullptr }, + { "Acircumflex", 600, nullptr }, + { "Cacute", 600, nullptr }, + { "Icircumflex", 600, nullptr }, + { "guillemotleft", 600, nullptr }, + { "germandbls", 600, nullptr }, + { "Amacron", 600, nullptr }, + { "seven", 600, nullptr }, + { "Sacute", 600, nullptr }, + { "ordmasculine", 600, nullptr }, + { "dotlessi", 600, nullptr }, + { "sterling", 600, nullptr }, + { "notequal", 600, nullptr }, + { "Imacron", 600, nullptr }, + { "rcommaaccent", 600, nullptr }, + { "Zdotaccent", 600, nullptr }, + { "acircumflex", 600, nullptr }, + { "cacute", 600, nullptr }, + { "Ecaron", 600, nullptr }, + { "icircumflex", 600, nullptr }, + { "braceright", 600, nullptr }, + { "quotedblright", 600, nullptr }, + { "amacron", 600, nullptr }, + { "sacute", 600, nullptr }, + { "imacron", 600, nullptr }, + { "cent", 600, nullptr }, + { "currency", 600, nullptr }, + { "logicalnot", 600, nullptr }, + { "zdotaccent", 600, nullptr }, + { "Atilde", 600, nullptr }, + { "breve", 600, nullptr }, + { "bar", 600, nullptr }, + { "fraction", 600, nullptr }, + { "less", 600, nullptr }, + { "ecaron", 600, nullptr }, + { "guilsinglleft", 600, nullptr }, + { "exclam", 600, nullptr }, + { "period", 600, nullptr }, + { "Rcaron", 600, nullptr }, + { "Kcommaaccent", 600, nullptr }, + { "greater", 600, nullptr }, + { "atilde", 600, nullptr }, + { "brokenbar", 600, nullptr }, + { "quoteleft", 600, nullptr }, + { "Edotaccent", 600, nullptr }, + { "onesuperior", 600, nullptr } }; static BuiltinFontWidth courierBoldObliqueWidthsTab[] = { - { "Ntilde", 600, NULL }, - { "rcaron", 600, NULL }, - { "kcommaaccent", 600, NULL }, - { "Ncommaaccent", 600, NULL }, - { "Zacute", 600, NULL }, - { "comma", 600, NULL }, - { "cedilla", 600, NULL }, - { "plusminus", 600, NULL }, - { "circumflex", 600, NULL }, - { "dotaccent", 600, NULL }, - { "edotaccent", 600, NULL }, - { "asciitilde", 600, NULL }, - { "colon", 600, NULL }, - { "onehalf", 600, NULL }, - { "dollar", 600, NULL }, - { "Lcaron", 600, NULL }, - { "ntilde", 600, NULL }, - { "Aogonek", 600, NULL }, - { "ncommaaccent", 600, NULL }, - { "minus", 600, NULL }, - { "Iogonek", 600, NULL }, - { "zacute", 600, NULL }, - { "yen", 600, NULL }, - { "space", 600, NULL }, - { "Omacron", 600, NULL }, - { "questiondown", 600, NULL }, - { "emdash", 600, NULL }, - { "Agrave", 600, NULL }, - { "three", 600, NULL }, - { "numbersign", 600, NULL }, - { "lcaron", 600, NULL }, - { "A", 600, NULL }, - { "B", 600, NULL }, - { "C", 600, NULL }, - { "aogonek", 600, NULL }, - { "D", 600, NULL }, - { "E", 600, NULL }, - { "onequarter", 600, NULL }, - { "F", 600, NULL }, - { "G", 600, NULL }, - { "H", 600, NULL }, - { "I", 600, NULL }, - { "J", 600, NULL }, - { "K", 600, NULL }, - { "iogonek", 600, NULL }, - { "backslash", 600, NULL }, - { "L", 600, NULL }, - { "periodcentered", 600, NULL }, - { "M", 600, NULL }, - { "N", 600, NULL }, - { "omacron", 600, NULL }, - { "Tcommaaccent", 600, NULL }, - { "O", 600, NULL }, - { "P", 600, NULL }, - { "Q", 600, NULL }, - { "Uhungarumlaut", 600, NULL }, - { "R", 600, NULL }, - { "Aacute", 600, NULL }, - { "caron", 600, NULL }, - { "S", 600, NULL }, - { "T", 600, NULL }, - { "U", 600, NULL }, - { "agrave", 600, NULL }, - { "V", 600, NULL }, - { "W", 600, NULL }, - { "X", 600, NULL }, - { "question", 600, NULL }, - { "equal", 600, NULL }, - { "Y", 600, NULL }, - { "Z", 600, NULL }, - { "four", 600, NULL }, - { "a", 600, NULL }, - { "Gcommaaccent", 600, NULL }, - { "b", 600, NULL }, - { "c", 600, NULL }, - { "d", 600, NULL }, - { "e", 600, NULL }, - { "f", 600, NULL }, - { "g", 600, NULL }, - { "bullet", 600, NULL }, - { "h", 600, NULL }, - { "i", 600, NULL }, - { "Oslash", 600, NULL }, - { "dagger", 600, NULL }, - { "j", 600, NULL }, - { "k", 600, NULL }, - { "l", 600, NULL }, - { "m", 600, NULL }, - { "n", 600, NULL }, - { "tcommaaccent", 600, NULL }, - { "o", 600, NULL }, - { "ordfeminine", 600, NULL }, - { "ring", 600, NULL }, - { "p", 600, NULL }, - { "q", 600, NULL }, - { "uhungarumlaut", 600, NULL }, - { "r", 600, NULL }, - { "twosuperior", 600, NULL }, - { "aacute", 600, NULL }, - { "s", 600, NULL }, - { "OE", 600, NULL }, - { "t", 600, NULL }, - { "divide", 600, NULL }, - { "u", 600, NULL }, - { "Ccaron", 600, NULL }, - { "v", 600, NULL }, - { "w", 600, NULL }, - { "x", 600, NULL }, - { "y", 600, NULL }, - { "z", 600, NULL }, - { "Gbreve", 600, NULL }, - { "commaaccent", 600, NULL }, - { "hungarumlaut", 600, NULL }, - { "Idotaccent", 600, NULL }, - { "Nacute", 600, NULL }, - { "quotedbl", 600, NULL }, - { "gcommaaccent", 600, NULL }, - { "mu", 600, NULL }, - { "greaterequal", 600, NULL }, - { "Scaron", 600, NULL }, - { "Lslash", 600, NULL }, - { "semicolon", 600, NULL }, - { "oslash", 600, NULL }, - { "lessequal", 600, NULL }, - { "lozenge", 600, NULL }, - { "parenright", 600, NULL }, - { "ccaron", 600, NULL }, - { "Ecircumflex", 600, NULL }, - { "gbreve", 600, NULL }, - { "trademark", 600, NULL }, - { "daggerdbl", 600, NULL }, - { "nacute", 600, NULL }, - { "macron", 600, NULL }, - { "Otilde", 600, NULL }, - { "Emacron", 600, NULL }, - { "ellipsis", 600, NULL }, - { "scaron", 600, NULL }, - { "AE", 600, NULL }, - { "Ucircumflex", 600, NULL }, - { "lslash", 600, NULL }, - { "quotedblleft", 600, NULL }, - { "guilsinglright", 600, NULL }, - { "hyphen", 600, NULL }, - { "quotesingle", 600, NULL }, - { "eight", 600, NULL }, - { "exclamdown", 600, NULL }, - { "endash", 600, NULL }, - { "oe", 600, NULL }, - { "Abreve", 600, NULL }, - { "Umacron", 600, NULL }, - { "ecircumflex", 600, NULL }, - { "Adieresis", 600, NULL }, - { "copyright", 600, NULL }, - { "Egrave", 600, NULL }, - { "slash", 600, NULL }, - { "Edieresis", 600, NULL }, - { "otilde", 600, NULL }, - { "Idieresis", 600, NULL }, - { "parenleft", 600, NULL }, - { "one", 600, NULL }, - { "emacron", 600, NULL }, - { "Odieresis", 600, NULL }, - { "ucircumflex", 600, NULL }, - { "bracketleft", 600, NULL }, - { "Ugrave", 600, NULL }, - { "quoteright", 600, NULL }, - { "Udieresis", 600, NULL }, - { "perthousand", 600, NULL }, - { "Ydieresis", 600, NULL }, - { "umacron", 600, NULL }, - { "abreve", 600, NULL }, - { "Eacute", 600, NULL }, - { "adieresis", 600, NULL }, - { "egrave", 600, NULL }, - { "edieresis", 600, NULL }, - { "idieresis", 600, NULL }, - { "Eth", 600, NULL }, - { "ae", 600, NULL }, - { "asterisk", 600, NULL }, - { "odieresis", 600, NULL }, - { "Uacute", 600, NULL }, - { "ugrave", 600, NULL }, - { "nine", 600, NULL }, - { "five", 600, NULL }, - { "udieresis", 600, NULL }, - { "Zcaron", 600, NULL }, - { "Scommaaccent", 600, NULL }, - { "threequarters", 600, NULL }, - { "guillemotright", 600, NULL }, - { "Ccedilla", 600, NULL }, - { "ydieresis", 600, NULL }, - { "tilde", 600, NULL }, - { "at", 600, NULL }, - { "eacute", 600, NULL }, - { "underscore", 600, NULL }, - { "Euro", 600, NULL }, - { "Dcroat", 600, NULL }, - { "multiply", 600, NULL }, - { "zero", 600, NULL }, - { "eth", 600, NULL }, - { "Scedilla", 600, NULL }, - { "Ograve", 600, NULL }, - { "Racute", 600, NULL }, - { "partialdiff", 600, NULL }, - { "uacute", 600, NULL }, - { "braceleft", 600, NULL }, - { "Thorn", 600, NULL }, - { "zcaron", 600, NULL }, - { "scommaaccent", 600, NULL }, - { "ccedilla", 600, NULL }, - { "Dcaron", 600, NULL }, - { "dcroat", 600, NULL }, - { "Ocircumflex", 600, NULL }, - { "Oacute", 600, NULL }, - { "scedilla", 600, NULL }, - { "ogonek", 600, NULL }, - { "ograve", 600, NULL }, - { "racute", 600, NULL }, - { "Tcaron", 600, NULL }, - { "Eogonek", 600, NULL }, - { "thorn", 600, NULL }, - { "degree", 600, NULL }, - { "registered", 600, NULL }, - { "radical", 600, NULL }, - { "Aring", 600, NULL }, - { "percent", 600, NULL }, - { "six", 600, NULL }, - { "paragraph", 600, NULL }, - { "dcaron", 600, NULL }, - { "Uogonek", 600, NULL }, - { "two", 600, NULL }, - { "summation", 600, NULL }, - { "Igrave", 600, NULL }, - { "Lacute", 600, NULL }, - { "ocircumflex", 600, NULL }, - { "oacute", 600, NULL }, - { "Uring", 600, NULL }, - { "Lcommaaccent", 600, NULL }, - { "tcaron", 600, NULL }, - { "eogonek", 600, NULL }, - { "Delta", 600, NULL }, - { "Ohungarumlaut", 600, NULL }, - { "asciicircum", 600, NULL }, - { "aring", 600, NULL }, - { "grave", 600, NULL }, - { "uogonek", 600, NULL }, - { "bracketright", 600, NULL }, - { "Iacute", 600, NULL }, - { "ampersand", 600, NULL }, - { "igrave", 600, NULL }, - { "lacute", 600, NULL }, - { "Ncaron", 600, NULL }, - { "plus", 600, NULL }, - { "uring", 600, NULL }, - { "quotesinglbase", 600, NULL }, - { "lcommaaccent", 600, NULL }, - { "Yacute", 600, NULL }, - { "ohungarumlaut", 600, NULL }, - { "threesuperior", 600, NULL }, - { "acute", 600, NULL }, - { "section", 600, NULL }, - { "dieresis", 600, NULL }, - { "iacute", 600, NULL }, - { "quotedblbase", 600, NULL }, - { "ncaron", 600, NULL }, - { "florin", 600, NULL }, - { "yacute", 600, NULL }, - { "Rcommaaccent", 600, NULL }, - { "fi", 600, NULL }, - { "fl", 600, NULL }, - { "Acircumflex", 600, NULL }, - { "Cacute", 600, NULL }, - { "Icircumflex", 600, NULL }, - { "guillemotleft", 600, NULL }, - { "germandbls", 600, NULL }, - { "Amacron", 600, NULL }, - { "seven", 600, NULL }, - { "Sacute", 600, NULL }, - { "ordmasculine", 600, NULL }, - { "dotlessi", 600, NULL }, - { "sterling", 600, NULL }, - { "notequal", 600, NULL }, - { "Imacron", 600, NULL }, - { "rcommaaccent", 600, NULL }, - { "Zdotaccent", 600, NULL }, - { "acircumflex", 600, NULL }, - { "cacute", 600, NULL }, - { "Ecaron", 600, NULL }, - { "icircumflex", 600, NULL }, - { "braceright", 600, NULL }, - { "quotedblright", 600, NULL }, - { "amacron", 600, NULL }, - { "sacute", 600, NULL }, - { "imacron", 600, NULL }, - { "cent", 600, NULL }, - { "currency", 600, NULL }, - { "logicalnot", 600, NULL }, - { "zdotaccent", 600, NULL }, - { "Atilde", 600, NULL }, - { "breve", 600, NULL }, - { "bar", 600, NULL }, - { "fraction", 600, NULL }, - { "less", 600, NULL }, - { "ecaron", 600, NULL }, - { "guilsinglleft", 600, NULL }, - { "exclam", 600, NULL }, - { "period", 600, NULL }, - { "Rcaron", 600, NULL }, - { "Kcommaaccent", 600, NULL }, - { "greater", 600, NULL }, - { "atilde", 600, NULL }, - { "brokenbar", 600, NULL }, - { "quoteleft", 600, NULL }, - { "Edotaccent", 600, NULL }, - { "onesuperior", 600, NULL } + { "Ntilde", 600, nullptr }, + { "rcaron", 600, nullptr }, + { "kcommaaccent", 600, nullptr }, + { "Ncommaaccent", 600, nullptr }, + { "Zacute", 600, nullptr }, + { "comma", 600, nullptr }, + { "cedilla", 600, nullptr }, + { "plusminus", 600, nullptr }, + { "circumflex", 600, nullptr }, + { "dotaccent", 600, nullptr }, + { "edotaccent", 600, nullptr }, + { "asciitilde", 600, nullptr }, + { "colon", 600, nullptr }, + { "onehalf", 600, nullptr }, + { "dollar", 600, nullptr }, + { "Lcaron", 600, nullptr }, + { "ntilde", 600, nullptr }, + { "Aogonek", 600, nullptr }, + { "ncommaaccent", 600, nullptr }, + { "minus", 600, nullptr }, + { "Iogonek", 600, nullptr }, + { "zacute", 600, nullptr }, + { "yen", 600, nullptr }, + { "space", 600, nullptr }, + { "Omacron", 600, nullptr }, + { "questiondown", 600, nullptr }, + { "emdash", 600, nullptr }, + { "Agrave", 600, nullptr }, + { "three", 600, nullptr }, + { "numbersign", 600, nullptr }, + { "lcaron", 600, nullptr }, + { "A", 600, nullptr }, + { "B", 600, nullptr }, + { "C", 600, nullptr }, + { "aogonek", 600, nullptr }, + { "D", 600, nullptr }, + { "E", 600, nullptr }, + { "onequarter", 600, nullptr }, + { "F", 600, nullptr }, + { "G", 600, nullptr }, + { "H", 600, nullptr }, + { "I", 600, nullptr }, + { "J", 600, nullptr }, + { "K", 600, nullptr }, + { "iogonek", 600, nullptr }, + { "backslash", 600, nullptr }, + { "L", 600, nullptr }, + { "periodcentered", 600, nullptr }, + { "M", 600, nullptr }, + { "N", 600, nullptr }, + { "omacron", 600, nullptr }, + { "Tcommaaccent", 600, nullptr }, + { "O", 600, nullptr }, + { "P", 600, nullptr }, + { "Q", 600, nullptr }, + { "Uhungarumlaut", 600, nullptr }, + { "R", 600, nullptr }, + { "Aacute", 600, nullptr }, + { "caron", 600, nullptr }, + { "S", 600, nullptr }, + { "T", 600, nullptr }, + { "U", 600, nullptr }, + { "agrave", 600, nullptr }, + { "V", 600, nullptr }, + { "W", 600, nullptr }, + { "X", 600, nullptr }, + { "question", 600, nullptr }, + { "equal", 600, nullptr }, + { "Y", 600, nullptr }, + { "Z", 600, nullptr }, + { "four", 600, nullptr }, + { "a", 600, nullptr }, + { "Gcommaaccent", 600, nullptr }, + { "b", 600, nullptr }, + { "c", 600, nullptr }, + { "d", 600, nullptr }, + { "e", 600, nullptr }, + { "f", 600, nullptr }, + { "g", 600, nullptr }, + { "bullet", 600, nullptr }, + { "h", 600, nullptr }, + { "i", 600, nullptr }, + { "Oslash", 600, nullptr }, + { "dagger", 600, nullptr }, + { "j", 600, nullptr }, + { "k", 600, nullptr }, + { "l", 600, nullptr }, + { "m", 600, nullptr }, + { "n", 600, nullptr }, + { "tcommaaccent", 600, nullptr }, + { "o", 600, nullptr }, + { "ordfeminine", 600, nullptr }, + { "ring", 600, nullptr }, + { "p", 600, nullptr }, + { "q", 600, nullptr }, + { "uhungarumlaut", 600, nullptr }, + { "r", 600, nullptr }, + { "twosuperior", 600, nullptr }, + { "aacute", 600, nullptr }, + { "s", 600, nullptr }, + { "OE", 600, nullptr }, + { "t", 600, nullptr }, + { "divide", 600, nullptr }, + { "u", 600, nullptr }, + { "Ccaron", 600, nullptr }, + { "v", 600, nullptr }, + { "w", 600, nullptr }, + { "x", 600, nullptr }, + { "y", 600, nullptr }, + { "z", 600, nullptr }, + { "Gbreve", 600, nullptr }, + { "commaaccent", 600, nullptr }, + { "hungarumlaut", 600, nullptr }, + { "Idotaccent", 600, nullptr }, + { "Nacute", 600, nullptr }, + { "quotedbl", 600, nullptr }, + { "gcommaaccent", 600, nullptr }, + { "mu", 600, nullptr }, + { "greaterequal", 600, nullptr }, + { "Scaron", 600, nullptr }, + { "Lslash", 600, nullptr }, + { "semicolon", 600, nullptr }, + { "oslash", 600, nullptr }, + { "lessequal", 600, nullptr }, + { "lozenge", 600, nullptr }, + { "parenright", 600, nullptr }, + { "ccaron", 600, nullptr }, + { "Ecircumflex", 600, nullptr }, + { "gbreve", 600, nullptr }, + { "trademark", 600, nullptr }, + { "daggerdbl", 600, nullptr }, + { "nacute", 600, nullptr }, + { "macron", 600, nullptr }, + { "Otilde", 600, nullptr }, + { "Emacron", 600, nullptr }, + { "ellipsis", 600, nullptr }, + { "scaron", 600, nullptr }, + { "AE", 600, nullptr }, + { "Ucircumflex", 600, nullptr }, + { "lslash", 600, nullptr }, + { "quotedblleft", 600, nullptr }, + { "guilsinglright", 600, nullptr }, + { "hyphen", 600, nullptr }, + { "quotesingle", 600, nullptr }, + { "eight", 600, nullptr }, + { "exclamdown", 600, nullptr }, + { "endash", 600, nullptr }, + { "oe", 600, nullptr }, + { "Abreve", 600, nullptr }, + { "Umacron", 600, nullptr }, + { "ecircumflex", 600, nullptr }, + { "Adieresis", 600, nullptr }, + { "copyright", 600, nullptr }, + { "Egrave", 600, nullptr }, + { "slash", 600, nullptr }, + { "Edieresis", 600, nullptr }, + { "otilde", 600, nullptr }, + { "Idieresis", 600, nullptr }, + { "parenleft", 600, nullptr }, + { "one", 600, nullptr }, + { "emacron", 600, nullptr }, + { "Odieresis", 600, nullptr }, + { "ucircumflex", 600, nullptr }, + { "bracketleft", 600, nullptr }, + { "Ugrave", 600, nullptr }, + { "quoteright", 600, nullptr }, + { "Udieresis", 600, nullptr }, + { "perthousand", 600, nullptr }, + { "Ydieresis", 600, nullptr }, + { "umacron", 600, nullptr }, + { "abreve", 600, nullptr }, + { "Eacute", 600, nullptr }, + { "adieresis", 600, nullptr }, + { "egrave", 600, nullptr }, + { "edieresis", 600, nullptr }, + { "idieresis", 600, nullptr }, + { "Eth", 600, nullptr }, + { "ae", 600, nullptr }, + { "asterisk", 600, nullptr }, + { "odieresis", 600, nullptr }, + { "Uacute", 600, nullptr }, + { "ugrave", 600, nullptr }, + { "nine", 600, nullptr }, + { "five", 600, nullptr }, + { "udieresis", 600, nullptr }, + { "Zcaron", 600, nullptr }, + { "Scommaaccent", 600, nullptr }, + { "threequarters", 600, nullptr }, + { "guillemotright", 600, nullptr }, + { "Ccedilla", 600, nullptr }, + { "ydieresis", 600, nullptr }, + { "tilde", 600, nullptr }, + { "at", 600, nullptr }, + { "eacute", 600, nullptr }, + { "underscore", 600, nullptr }, + { "Euro", 600, nullptr }, + { "Dcroat", 600, nullptr }, + { "multiply", 600, nullptr }, + { "zero", 600, nullptr }, + { "eth", 600, nullptr }, + { "Scedilla", 600, nullptr }, + { "Ograve", 600, nullptr }, + { "Racute", 600, nullptr }, + { "partialdiff", 600, nullptr }, + { "uacute", 600, nullptr }, + { "braceleft", 600, nullptr }, + { "Thorn", 600, nullptr }, + { "zcaron", 600, nullptr }, + { "scommaaccent", 600, nullptr }, + { "ccedilla", 600, nullptr }, + { "Dcaron", 600, nullptr }, + { "dcroat", 600, nullptr }, + { "Ocircumflex", 600, nullptr }, + { "Oacute", 600, nullptr }, + { "scedilla", 600, nullptr }, + { "ogonek", 600, nullptr }, + { "ograve", 600, nullptr }, + { "racute", 600, nullptr }, + { "Tcaron", 600, nullptr }, + { "Eogonek", 600, nullptr }, + { "thorn", 600, nullptr }, + { "degree", 600, nullptr }, + { "registered", 600, nullptr }, + { "radical", 600, nullptr }, + { "Aring", 600, nullptr }, + { "percent", 600, nullptr }, + { "six", 600, nullptr }, + { "paragraph", 600, nullptr }, + { "dcaron", 600, nullptr }, + { "Uogonek", 600, nullptr }, + { "two", 600, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 600, nullptr }, + { "Lacute", 600, nullptr }, + { "ocircumflex", 600, nullptr }, + { "oacute", 600, nullptr }, + { "Uring", 600, nullptr }, + { "Lcommaaccent", 600, nullptr }, + { "tcaron", 600, nullptr }, + { "eogonek", 600, nullptr }, + { "Delta", 600, nullptr }, + { "Ohungarumlaut", 600, nullptr }, + { "asciicircum", 600, nullptr }, + { "aring", 600, nullptr }, + { "grave", 600, nullptr }, + { "uogonek", 600, nullptr }, + { "bracketright", 600, nullptr }, + { "Iacute", 600, nullptr }, + { "ampersand", 600, nullptr }, + { "igrave", 600, nullptr }, + { "lacute", 600, nullptr }, + { "Ncaron", 600, nullptr }, + { "plus", 600, nullptr }, + { "uring", 600, nullptr }, + { "quotesinglbase", 600, nullptr }, + { "lcommaaccent", 600, nullptr }, + { "Yacute", 600, nullptr }, + { "ohungarumlaut", 600, nullptr }, + { "threesuperior", 600, nullptr }, + { "acute", 600, nullptr }, + { "section", 600, nullptr }, + { "dieresis", 600, nullptr }, + { "iacute", 600, nullptr }, + { "quotedblbase", 600, nullptr }, + { "ncaron", 600, nullptr }, + { "florin", 600, nullptr }, + { "yacute", 600, nullptr }, + { "Rcommaaccent", 600, nullptr }, + { "fi", 600, nullptr }, + { "fl", 600, nullptr }, + { "Acircumflex", 600, nullptr }, + { "Cacute", 600, nullptr }, + { "Icircumflex", 600, nullptr }, + { "guillemotleft", 600, nullptr }, + { "germandbls", 600, nullptr }, + { "Amacron", 600, nullptr }, + { "seven", 600, nullptr }, + { "Sacute", 600, nullptr }, + { "ordmasculine", 600, nullptr }, + { "dotlessi", 600, nullptr }, + { "sterling", 600, nullptr }, + { "notequal", 600, nullptr }, + { "Imacron", 600, nullptr }, + { "rcommaaccent", 600, nullptr }, + { "Zdotaccent", 600, nullptr }, + { "acircumflex", 600, nullptr }, + { "cacute", 600, nullptr }, + { "Ecaron", 600, nullptr }, + { "icircumflex", 600, nullptr }, + { "braceright", 600, nullptr }, + { "quotedblright", 600, nullptr }, + { "amacron", 600, nullptr }, + { "sacute", 600, nullptr }, + { "imacron", 600, nullptr }, + { "cent", 600, nullptr }, + { "currency", 600, nullptr }, + { "logicalnot", 600, nullptr }, + { "zdotaccent", 600, nullptr }, + { "Atilde", 600, nullptr }, + { "breve", 600, nullptr }, + { "bar", 600, nullptr }, + { "fraction", 600, nullptr }, + { "less", 600, nullptr }, + { "ecaron", 600, nullptr }, + { "guilsinglleft", 600, nullptr }, + { "exclam", 600, nullptr }, + { "period", 600, nullptr }, + { "Rcaron", 600, nullptr }, + { "Kcommaaccent", 600, nullptr }, + { "greater", 600, nullptr }, + { "atilde", 600, nullptr }, + { "brokenbar", 600, nullptr }, + { "quoteleft", 600, nullptr }, + { "Edotaccent", 600, nullptr }, + { "onesuperior", 600, nullptr } }; static BuiltinFontWidth courierObliqueWidthsTab[] = { - { "Ntilde", 600, NULL }, - { "rcaron", 600, NULL }, - { "kcommaaccent", 600, NULL }, - { "Ncommaaccent", 600, NULL }, - { "Zacute", 600, NULL }, - { "comma", 600, NULL }, - { "cedilla", 600, NULL }, - { "plusminus", 600, NULL }, - { "circumflex", 600, NULL }, - { "dotaccent", 600, NULL }, - { "edotaccent", 600, NULL }, - { "asciitilde", 600, NULL }, - { "colon", 600, NULL }, - { "onehalf", 600, NULL }, - { "dollar", 600, NULL }, - { "Lcaron", 600, NULL }, - { "ntilde", 600, NULL }, - { "Aogonek", 600, NULL }, - { "ncommaaccent", 600, NULL }, - { "minus", 600, NULL }, - { "Iogonek", 600, NULL }, - { "zacute", 600, NULL }, - { "yen", 600, NULL }, - { "space", 600, NULL }, - { "Omacron", 600, NULL }, - { "questiondown", 600, NULL }, - { "emdash", 600, NULL }, - { "Agrave", 600, NULL }, - { "three", 600, NULL }, - { "numbersign", 600, NULL }, - { "lcaron", 600, NULL }, - { "A", 600, NULL }, - { "B", 600, NULL }, - { "C", 600, NULL }, - { "aogonek", 600, NULL }, - { "D", 600, NULL }, - { "E", 600, NULL }, - { "onequarter", 600, NULL }, - { "F", 600, NULL }, - { "G", 600, NULL }, - { "H", 600, NULL }, - { "I", 600, NULL }, - { "J", 600, NULL }, - { "K", 600, NULL }, - { "iogonek", 600, NULL }, - { "backslash", 600, NULL }, - { "L", 600, NULL }, - { "periodcentered", 600, NULL }, - { "M", 600, NULL }, - { "N", 600, NULL }, - { "omacron", 600, NULL }, - { "Tcommaaccent", 600, NULL }, - { "O", 600, NULL }, - { "P", 600, NULL }, - { "Q", 600, NULL }, - { "Uhungarumlaut", 600, NULL }, - { "R", 600, NULL }, - { "Aacute", 600, NULL }, - { "caron", 600, NULL }, - { "S", 600, NULL }, - { "T", 600, NULL }, - { "U", 600, NULL }, - { "agrave", 600, NULL }, - { "V", 600, NULL }, - { "W", 600, NULL }, - { "X", 600, NULL }, - { "question", 600, NULL }, - { "equal", 600, NULL }, - { "Y", 600, NULL }, - { "Z", 600, NULL }, - { "four", 600, NULL }, - { "a", 600, NULL }, - { "Gcommaaccent", 600, NULL }, - { "b", 600, NULL }, - { "c", 600, NULL }, - { "d", 600, NULL }, - { "e", 600, NULL }, - { "f", 600, NULL }, - { "g", 600, NULL }, - { "bullet", 600, NULL }, - { "h", 600, NULL }, - { "i", 600, NULL }, - { "Oslash", 600, NULL }, - { "dagger", 600, NULL }, - { "j", 600, NULL }, - { "k", 600, NULL }, - { "l", 600, NULL }, - { "m", 600, NULL }, - { "n", 600, NULL }, - { "tcommaaccent", 600, NULL }, - { "o", 600, NULL }, - { "ordfeminine", 600, NULL }, - { "ring", 600, NULL }, - { "p", 600, NULL }, - { "q", 600, NULL }, - { "uhungarumlaut", 600, NULL }, - { "r", 600, NULL }, - { "twosuperior", 600, NULL }, - { "aacute", 600, NULL }, - { "s", 600, NULL }, - { "OE", 600, NULL }, - { "t", 600, NULL }, - { "divide", 600, NULL }, - { "u", 600, NULL }, - { "Ccaron", 600, NULL }, - { "v", 600, NULL }, - { "w", 600, NULL }, - { "x", 600, NULL }, - { "y", 600, NULL }, - { "z", 600, NULL }, - { "Gbreve", 600, NULL }, - { "commaaccent", 600, NULL }, - { "hungarumlaut", 600, NULL }, - { "Idotaccent", 600, NULL }, - { "Nacute", 600, NULL }, - { "quotedbl", 600, NULL }, - { "gcommaaccent", 600, NULL }, - { "mu", 600, NULL }, - { "greaterequal", 600, NULL }, - { "Scaron", 600, NULL }, - { "Lslash", 600, NULL }, - { "semicolon", 600, NULL }, - { "oslash", 600, NULL }, - { "lessequal", 600, NULL }, - { "lozenge", 600, NULL }, - { "parenright", 600, NULL }, - { "ccaron", 600, NULL }, - { "Ecircumflex", 600, NULL }, - { "gbreve", 600, NULL }, - { "trademark", 600, NULL }, - { "daggerdbl", 600, NULL }, - { "nacute", 600, NULL }, - { "macron", 600, NULL }, - { "Otilde", 600, NULL }, - { "Emacron", 600, NULL }, - { "ellipsis", 600, NULL }, - { "scaron", 600, NULL }, - { "AE", 600, NULL }, - { "Ucircumflex", 600, NULL }, - { "lslash", 600, NULL }, - { "quotedblleft", 600, NULL }, - { "guilsinglright", 600, NULL }, - { "hyphen", 600, NULL }, - { "quotesingle", 600, NULL }, - { "eight", 600, NULL }, - { "exclamdown", 600, NULL }, - { "endash", 600, NULL }, - { "oe", 600, NULL }, - { "Abreve", 600, NULL }, - { "Umacron", 600, NULL }, - { "ecircumflex", 600, NULL }, - { "Adieresis", 600, NULL }, - { "copyright", 600, NULL }, - { "Egrave", 600, NULL }, - { "slash", 600, NULL }, - { "Edieresis", 600, NULL }, - { "otilde", 600, NULL }, - { "Idieresis", 600, NULL }, - { "parenleft", 600, NULL }, - { "one", 600, NULL }, - { "emacron", 600, NULL }, - { "Odieresis", 600, NULL }, - { "ucircumflex", 600, NULL }, - { "bracketleft", 600, NULL }, - { "Ugrave", 600, NULL }, - { "quoteright", 600, NULL }, - { "Udieresis", 600, NULL }, - { "perthousand", 600, NULL }, - { "Ydieresis", 600, NULL }, - { "umacron", 600, NULL }, - { "abreve", 600, NULL }, - { "Eacute", 600, NULL }, - { "adieresis", 600, NULL }, - { "egrave", 600, NULL }, - { "edieresis", 600, NULL }, - { "idieresis", 600, NULL }, - { "Eth", 600, NULL }, - { "ae", 600, NULL }, - { "asterisk", 600, NULL }, - { "odieresis", 600, NULL }, - { "Uacute", 600, NULL }, - { "ugrave", 600, NULL }, - { "nine", 600, NULL }, - { "five", 600, NULL }, - { "udieresis", 600, NULL }, - { "Zcaron", 600, NULL }, - { "Scommaaccent", 600, NULL }, - { "threequarters", 600, NULL }, - { "guillemotright", 600, NULL }, - { "Ccedilla", 600, NULL }, - { "ydieresis", 600, NULL }, - { "tilde", 600, NULL }, - { "at", 600, NULL }, - { "eacute", 600, NULL }, - { "underscore", 600, NULL }, - { "Euro", 600, NULL }, - { "Dcroat", 600, NULL }, - { "multiply", 600, NULL }, - { "zero", 600, NULL }, - { "eth", 600, NULL }, - { "Scedilla", 600, NULL }, - { "Ograve", 600, NULL }, - { "Racute", 600, NULL }, - { "partialdiff", 600, NULL }, - { "uacute", 600, NULL }, - { "braceleft", 600, NULL }, - { "Thorn", 600, NULL }, - { "zcaron", 600, NULL }, - { "scommaaccent", 600, NULL }, - { "ccedilla", 600, NULL }, - { "Dcaron", 600, NULL }, - { "dcroat", 600, NULL }, - { "Ocircumflex", 600, NULL }, - { "Oacute", 600, NULL }, - { "scedilla", 600, NULL }, - { "ogonek", 600, NULL }, - { "ograve", 600, NULL }, - { "racute", 600, NULL }, - { "Tcaron", 600, NULL }, - { "Eogonek", 600, NULL }, - { "thorn", 600, NULL }, - { "degree", 600, NULL }, - { "registered", 600, NULL }, - { "radical", 600, NULL }, - { "Aring", 600, NULL }, - { "percent", 600, NULL }, - { "six", 600, NULL }, - { "paragraph", 600, NULL }, - { "dcaron", 600, NULL }, - { "Uogonek", 600, NULL }, - { "two", 600, NULL }, - { "summation", 600, NULL }, - { "Igrave", 600, NULL }, - { "Lacute", 600, NULL }, - { "ocircumflex", 600, NULL }, - { "oacute", 600, NULL }, - { "Uring", 600, NULL }, - { "Lcommaaccent", 600, NULL }, - { "tcaron", 600, NULL }, - { "eogonek", 600, NULL }, - { "Delta", 600, NULL }, - { "Ohungarumlaut", 600, NULL }, - { "asciicircum", 600, NULL }, - { "aring", 600, NULL }, - { "grave", 600, NULL }, - { "uogonek", 600, NULL }, - { "bracketright", 600, NULL }, - { "Iacute", 600, NULL }, - { "ampersand", 600, NULL }, - { "igrave", 600, NULL }, - { "lacute", 600, NULL }, - { "Ncaron", 600, NULL }, - { "plus", 600, NULL }, - { "uring", 600, NULL }, - { "quotesinglbase", 600, NULL }, - { "lcommaaccent", 600, NULL }, - { "Yacute", 600, NULL }, - { "ohungarumlaut", 600, NULL }, - { "threesuperior", 600, NULL }, - { "acute", 600, NULL }, - { "section", 600, NULL }, - { "dieresis", 600, NULL }, - { "iacute", 600, NULL }, - { "quotedblbase", 600, NULL }, - { "ncaron", 600, NULL }, - { "florin", 600, NULL }, - { "yacute", 600, NULL }, - { "Rcommaaccent", 600, NULL }, - { "fi", 600, NULL }, - { "fl", 600, NULL }, - { "Acircumflex", 600, NULL }, - { "Cacute", 600, NULL }, - { "Icircumflex", 600, NULL }, - { "guillemotleft", 600, NULL }, - { "germandbls", 600, NULL }, - { "Amacron", 600, NULL }, - { "seven", 600, NULL }, - { "Sacute", 600, NULL }, - { "ordmasculine", 600, NULL }, - { "dotlessi", 600, NULL }, - { "sterling", 600, NULL }, - { "notequal", 600, NULL }, - { "Imacron", 600, NULL }, - { "rcommaaccent", 600, NULL }, - { "Zdotaccent", 600, NULL }, - { "acircumflex", 600, NULL }, - { "cacute", 600, NULL }, - { "Ecaron", 600, NULL }, - { "icircumflex", 600, NULL }, - { "braceright", 600, NULL }, - { "quotedblright", 600, NULL }, - { "amacron", 600, NULL }, - { "sacute", 600, NULL }, - { "imacron", 600, NULL }, - { "cent", 600, NULL }, - { "currency", 600, NULL }, - { "logicalnot", 600, NULL }, - { "zdotaccent", 600, NULL }, - { "Atilde", 600, NULL }, - { "breve", 600, NULL }, - { "bar", 600, NULL }, - { "fraction", 600, NULL }, - { "less", 600, NULL }, - { "ecaron", 600, NULL }, - { "guilsinglleft", 600, NULL }, - { "exclam", 600, NULL }, - { "period", 600, NULL }, - { "Rcaron", 600, NULL }, - { "Kcommaaccent", 600, NULL }, - { "greater", 600, NULL }, - { "atilde", 600, NULL }, - { "brokenbar", 600, NULL }, - { "quoteleft", 600, NULL }, - { "Edotaccent", 600, NULL }, - { "onesuperior", 600, NULL } + { "Ntilde", 600, nullptr }, + { "rcaron", 600, nullptr }, + { "kcommaaccent", 600, nullptr }, + { "Ncommaaccent", 600, nullptr }, + { "Zacute", 600, nullptr }, + { "comma", 600, nullptr }, + { "cedilla", 600, nullptr }, + { "plusminus", 600, nullptr }, + { "circumflex", 600, nullptr }, + { "dotaccent", 600, nullptr }, + { "edotaccent", 600, nullptr }, + { "asciitilde", 600, nullptr }, + { "colon", 600, nullptr }, + { "onehalf", 600, nullptr }, + { "dollar", 600, nullptr }, + { "Lcaron", 600, nullptr }, + { "ntilde", 600, nullptr }, + { "Aogonek", 600, nullptr }, + { "ncommaaccent", 600, nullptr }, + { "minus", 600, nullptr }, + { "Iogonek", 600, nullptr }, + { "zacute", 600, nullptr }, + { "yen", 600, nullptr }, + { "space", 600, nullptr }, + { "Omacron", 600, nullptr }, + { "questiondown", 600, nullptr }, + { "emdash", 600, nullptr }, + { "Agrave", 600, nullptr }, + { "three", 600, nullptr }, + { "numbersign", 600, nullptr }, + { "lcaron", 600, nullptr }, + { "A", 600, nullptr }, + { "B", 600, nullptr }, + { "C", 600, nullptr }, + { "aogonek", 600, nullptr }, + { "D", 600, nullptr }, + { "E", 600, nullptr }, + { "onequarter", 600, nullptr }, + { "F", 600, nullptr }, + { "G", 600, nullptr }, + { "H", 600, nullptr }, + { "I", 600, nullptr }, + { "J", 600, nullptr }, + { "K", 600, nullptr }, + { "iogonek", 600, nullptr }, + { "backslash", 600, nullptr }, + { "L", 600, nullptr }, + { "periodcentered", 600, nullptr }, + { "M", 600, nullptr }, + { "N", 600, nullptr }, + { "omacron", 600, nullptr }, + { "Tcommaaccent", 600, nullptr }, + { "O", 600, nullptr }, + { "P", 600, nullptr }, + { "Q", 600, nullptr }, + { "Uhungarumlaut", 600, nullptr }, + { "R", 600, nullptr }, + { "Aacute", 600, nullptr }, + { "caron", 600, nullptr }, + { "S", 600, nullptr }, + { "T", 600, nullptr }, + { "U", 600, nullptr }, + { "agrave", 600, nullptr }, + { "V", 600, nullptr }, + { "W", 600, nullptr }, + { "X", 600, nullptr }, + { "question", 600, nullptr }, + { "equal", 600, nullptr }, + { "Y", 600, nullptr }, + { "Z", 600, nullptr }, + { "four", 600, nullptr }, + { "a", 600, nullptr }, + { "Gcommaaccent", 600, nullptr }, + { "b", 600, nullptr }, + { "c", 600, nullptr }, + { "d", 600, nullptr }, + { "e", 600, nullptr }, + { "f", 600, nullptr }, + { "g", 600, nullptr }, + { "bullet", 600, nullptr }, + { "h", 600, nullptr }, + { "i", 600, nullptr }, + { "Oslash", 600, nullptr }, + { "dagger", 600, nullptr }, + { "j", 600, nullptr }, + { "k", 600, nullptr }, + { "l", 600, nullptr }, + { "m", 600, nullptr }, + { "n", 600, nullptr }, + { "tcommaaccent", 600, nullptr }, + { "o", 600, nullptr }, + { "ordfeminine", 600, nullptr }, + { "ring", 600, nullptr }, + { "p", 600, nullptr }, + { "q", 600, nullptr }, + { "uhungarumlaut", 600, nullptr }, + { "r", 600, nullptr }, + { "twosuperior", 600, nullptr }, + { "aacute", 600, nullptr }, + { "s", 600, nullptr }, + { "OE", 600, nullptr }, + { "t", 600, nullptr }, + { "divide", 600, nullptr }, + { "u", 600, nullptr }, + { "Ccaron", 600, nullptr }, + { "v", 600, nullptr }, + { "w", 600, nullptr }, + { "x", 600, nullptr }, + { "y", 600, nullptr }, + { "z", 600, nullptr }, + { "Gbreve", 600, nullptr }, + { "commaaccent", 600, nullptr }, + { "hungarumlaut", 600, nullptr }, + { "Idotaccent", 600, nullptr }, + { "Nacute", 600, nullptr }, + { "quotedbl", 600, nullptr }, + { "gcommaaccent", 600, nullptr }, + { "mu", 600, nullptr }, + { "greaterequal", 600, nullptr }, + { "Scaron", 600, nullptr }, + { "Lslash", 600, nullptr }, + { "semicolon", 600, nullptr }, + { "oslash", 600, nullptr }, + { "lessequal", 600, nullptr }, + { "lozenge", 600, nullptr }, + { "parenright", 600, nullptr }, + { "ccaron", 600, nullptr }, + { "Ecircumflex", 600, nullptr }, + { "gbreve", 600, nullptr }, + { "trademark", 600, nullptr }, + { "daggerdbl", 600, nullptr }, + { "nacute", 600, nullptr }, + { "macron", 600, nullptr }, + { "Otilde", 600, nullptr }, + { "Emacron", 600, nullptr }, + { "ellipsis", 600, nullptr }, + { "scaron", 600, nullptr }, + { "AE", 600, nullptr }, + { "Ucircumflex", 600, nullptr }, + { "lslash", 600, nullptr }, + { "quotedblleft", 600, nullptr }, + { "guilsinglright", 600, nullptr }, + { "hyphen", 600, nullptr }, + { "quotesingle", 600, nullptr }, + { "eight", 600, nullptr }, + { "exclamdown", 600, nullptr }, + { "endash", 600, nullptr }, + { "oe", 600, nullptr }, + { "Abreve", 600, nullptr }, + { "Umacron", 600, nullptr }, + { "ecircumflex", 600, nullptr }, + { "Adieresis", 600, nullptr }, + { "copyright", 600, nullptr }, + { "Egrave", 600, nullptr }, + { "slash", 600, nullptr }, + { "Edieresis", 600, nullptr }, + { "otilde", 600, nullptr }, + { "Idieresis", 600, nullptr }, + { "parenleft", 600, nullptr }, + { "one", 600, nullptr }, + { "emacron", 600, nullptr }, + { "Odieresis", 600, nullptr }, + { "ucircumflex", 600, nullptr }, + { "bracketleft", 600, nullptr }, + { "Ugrave", 600, nullptr }, + { "quoteright", 600, nullptr }, + { "Udieresis", 600, nullptr }, + { "perthousand", 600, nullptr }, + { "Ydieresis", 600, nullptr }, + { "umacron", 600, nullptr }, + { "abreve", 600, nullptr }, + { "Eacute", 600, nullptr }, + { "adieresis", 600, nullptr }, + { "egrave", 600, nullptr }, + { "edieresis", 600, nullptr }, + { "idieresis", 600, nullptr }, + { "Eth", 600, nullptr }, + { "ae", 600, nullptr }, + { "asterisk", 600, nullptr }, + { "odieresis", 600, nullptr }, + { "Uacute", 600, nullptr }, + { "ugrave", 600, nullptr }, + { "nine", 600, nullptr }, + { "five", 600, nullptr }, + { "udieresis", 600, nullptr }, + { "Zcaron", 600, nullptr }, + { "Scommaaccent", 600, nullptr }, + { "threequarters", 600, nullptr }, + { "guillemotright", 600, nullptr }, + { "Ccedilla", 600, nullptr }, + { "ydieresis", 600, nullptr }, + { "tilde", 600, nullptr }, + { "at", 600, nullptr }, + { "eacute", 600, nullptr }, + { "underscore", 600, nullptr }, + { "Euro", 600, nullptr }, + { "Dcroat", 600, nullptr }, + { "multiply", 600, nullptr }, + { "zero", 600, nullptr }, + { "eth", 600, nullptr }, + { "Scedilla", 600, nullptr }, + { "Ograve", 600, nullptr }, + { "Racute", 600, nullptr }, + { "partialdiff", 600, nullptr }, + { "uacute", 600, nullptr }, + { "braceleft", 600, nullptr }, + { "Thorn", 600, nullptr }, + { "zcaron", 600, nullptr }, + { "scommaaccent", 600, nullptr }, + { "ccedilla", 600, nullptr }, + { "Dcaron", 600, nullptr }, + { "dcroat", 600, nullptr }, + { "Ocircumflex", 600, nullptr }, + { "Oacute", 600, nullptr }, + { "scedilla", 600, nullptr }, + { "ogonek", 600, nullptr }, + { "ograve", 600, nullptr }, + { "racute", 600, nullptr }, + { "Tcaron", 600, nullptr }, + { "Eogonek", 600, nullptr }, + { "thorn", 600, nullptr }, + { "degree", 600, nullptr }, + { "registered", 600, nullptr }, + { "radical", 600, nullptr }, + { "Aring", 600, nullptr }, + { "percent", 600, nullptr }, + { "six", 600, nullptr }, + { "paragraph", 600, nullptr }, + { "dcaron", 600, nullptr }, + { "Uogonek", 600, nullptr }, + { "two", 600, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 600, nullptr }, + { "Lacute", 600, nullptr }, + { "ocircumflex", 600, nullptr }, + { "oacute", 600, nullptr }, + { "Uring", 600, nullptr }, + { "Lcommaaccent", 600, nullptr }, + { "tcaron", 600, nullptr }, + { "eogonek", 600, nullptr }, + { "Delta", 600, nullptr }, + { "Ohungarumlaut", 600, nullptr }, + { "asciicircum", 600, nullptr }, + { "aring", 600, nullptr }, + { "grave", 600, nullptr }, + { "uogonek", 600, nullptr }, + { "bracketright", 600, nullptr }, + { "Iacute", 600, nullptr }, + { "ampersand", 600, nullptr }, + { "igrave", 600, nullptr }, + { "lacute", 600, nullptr }, + { "Ncaron", 600, nullptr }, + { "plus", 600, nullptr }, + { "uring", 600, nullptr }, + { "quotesinglbase", 600, nullptr }, + { "lcommaaccent", 600, nullptr }, + { "Yacute", 600, nullptr }, + { "ohungarumlaut", 600, nullptr }, + { "threesuperior", 600, nullptr }, + { "acute", 600, nullptr }, + { "section", 600, nullptr }, + { "dieresis", 600, nullptr }, + { "iacute", 600, nullptr }, + { "quotedblbase", 600, nullptr }, + { "ncaron", 600, nullptr }, + { "florin", 600, nullptr }, + { "yacute", 600, nullptr }, + { "Rcommaaccent", 600, nullptr }, + { "fi", 600, nullptr }, + { "fl", 600, nullptr }, + { "Acircumflex", 600, nullptr }, + { "Cacute", 600, nullptr }, + { "Icircumflex", 600, nullptr }, + { "guillemotleft", 600, nullptr }, + { "germandbls", 600, nullptr }, + { "Amacron", 600, nullptr }, + { "seven", 600, nullptr }, + { "Sacute", 600, nullptr }, + { "ordmasculine", 600, nullptr }, + { "dotlessi", 600, nullptr }, + { "sterling", 600, nullptr }, + { "notequal", 600, nullptr }, + { "Imacron", 600, nullptr }, + { "rcommaaccent", 600, nullptr }, + { "Zdotaccent", 600, nullptr }, + { "acircumflex", 600, nullptr }, + { "cacute", 600, nullptr }, + { "Ecaron", 600, nullptr }, + { "icircumflex", 600, nullptr }, + { "braceright", 600, nullptr }, + { "quotedblright", 600, nullptr }, + { "amacron", 600, nullptr }, + { "sacute", 600, nullptr }, + { "imacron", 600, nullptr }, + { "cent", 600, nullptr }, + { "currency", 600, nullptr }, + { "logicalnot", 600, nullptr }, + { "zdotaccent", 600, nullptr }, + { "Atilde", 600, nullptr }, + { "breve", 600, nullptr }, + { "bar", 600, nullptr }, + { "fraction", 600, nullptr }, + { "less", 600, nullptr }, + { "ecaron", 600, nullptr }, + { "guilsinglleft", 600, nullptr }, + { "exclam", 600, nullptr }, + { "period", 600, nullptr }, + { "Rcaron", 600, nullptr }, + { "Kcommaaccent", 600, nullptr }, + { "greater", 600, nullptr }, + { "atilde", 600, nullptr }, + { "brokenbar", 600, nullptr }, + { "quoteleft", 600, nullptr }, + { "Edotaccent", 600, nullptr }, + { "onesuperior", 600, nullptr } }; static BuiltinFontWidth helveticaWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 333, NULL }, - { "kcommaaccent", 500, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 278, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 584, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 556, NULL }, - { "asciitilde", 584, NULL }, - { "colon", 278, NULL }, - { "onehalf", 834, NULL }, - { "dollar", 556, NULL }, - { "Lcaron", 556, NULL }, - { "ntilde", 556, NULL }, - { "Aogonek", 667, NULL }, - { "ncommaaccent", 556, NULL }, - { "minus", 584, NULL }, - { "Iogonek", 278, NULL }, - { "zacute", 500, NULL }, - { "yen", 556, NULL }, - { "space", 278, NULL }, - { "Omacron", 778, NULL }, - { "questiondown", 611, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 667, NULL }, - { "three", 556, NULL }, - { "numbersign", 556, NULL }, - { "lcaron", 299, NULL }, - { "A", 667, NULL }, - { "B", 667, NULL }, - { "C", 722, NULL }, - { "aogonek", 556, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 834, NULL }, - { "F", 611, NULL }, - { "G", 778, NULL }, - { "H", 722, NULL }, - { "I", 278, NULL }, - { "J", 500, NULL }, - { "K", 667, NULL }, - { "iogonek", 222, NULL }, - { "backslash", 278, NULL }, - { "L", 556, NULL }, - { "periodcentered", 278, NULL }, - { "M", 833, NULL }, - { "N", 722, NULL }, - { "omacron", 556, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 778, NULL }, - { "P", 667, NULL }, - { "Q", 778, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 722, NULL }, - { "Aacute", 667, NULL }, - { "caron", 333, NULL }, - { "S", 667, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 556, NULL }, - { "V", 667, NULL }, - { "W", 944, NULL }, - { "X", 667, NULL }, - { "question", 556, NULL }, - { "equal", 584, NULL }, - { "Y", 667, NULL }, - { "Z", 611, NULL }, - { "four", 556, NULL }, - { "a", 556, NULL }, - { "Gcommaaccent", 778, NULL }, - { "b", 556, NULL }, - { "c", 500, NULL }, - { "d", 556, NULL }, - { "e", 556, NULL }, - { "f", 278, NULL }, - { "g", 556, NULL }, - { "bullet", 350, NULL }, - { "h", 556, NULL }, - { "i", 222, NULL }, - { "Oslash", 778, NULL }, - { "dagger", 556, NULL }, - { "j", 222, NULL }, - { "k", 500, NULL }, - { "l", 222, NULL }, - { "m", 833, NULL }, - { "n", 556, NULL }, - { "tcommaaccent", 278, NULL }, - { "o", 556, NULL }, - { "ordfeminine", 370, NULL }, - { "ring", 333, NULL }, - { "p", 556, NULL }, - { "q", 556, NULL }, - { "uhungarumlaut", 556, NULL }, - { "r", 333, NULL }, - { "twosuperior", 333, NULL }, - { "aacute", 556, NULL }, - { "s", 500, NULL }, - { "OE", 1000, NULL }, - { "t", 278, NULL }, - { "divide", 584, NULL }, - { "u", 556, NULL }, - { "Ccaron", 722, NULL }, - { "v", 500, NULL }, - { "w", 722, NULL }, - { "x", 500, NULL }, - { "y", 500, NULL }, - { "z", 500, NULL }, - { "Gbreve", 778, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 278, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 355, NULL }, - { "gcommaaccent", 556, NULL }, - { "mu", 556, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 667, NULL }, - { "Lslash", 556, NULL }, - { "semicolon", 278, NULL }, - { "oslash", 611, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 471, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 500, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 556, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 556, NULL }, - { "nacute", 556, NULL }, - { "macron", 333, NULL }, - { "Otilde", 778, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 500, NULL }, - { "AE", 1000, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 222, NULL }, - { "quotedblleft", 333, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 191, NULL }, - { "eight", 556, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 556, NULL }, - { "oe", 944, NULL }, - { "Abreve", 667, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 556, NULL }, - { "Adieresis", 667, NULL }, - { "copyright", 737, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 556, NULL }, - { "Idieresis", 278, NULL }, - { "parenleft", 333, NULL }, - { "one", 556, NULL }, - { "emacron", 556, NULL }, - { "Odieresis", 778, NULL }, - { "ucircumflex", 556, NULL }, - { "bracketleft", 278, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 222, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 667, NULL }, - { "umacron", 556, NULL }, - { "abreve", 556, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 556, NULL }, - { "egrave", 556, NULL }, - { "edieresis", 556, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 889, NULL }, - { "asterisk", 389, NULL }, - { "odieresis", 556, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 556, NULL }, - { "nine", 556, NULL }, - { "five", 556, NULL }, - { "udieresis", 556, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 667, NULL }, - { "threequarters", 834, NULL }, - { "guillemotright", 556, NULL }, - { "Ccedilla", 722, NULL }, - { "ydieresis", 500, NULL }, - { "tilde", 333, NULL }, - { "at", 1015, NULL }, - { "eacute", 556, NULL }, - { "underscore", 556, NULL }, - { "Euro", 556, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 584, NULL }, - { "zero", 556, NULL }, - { "eth", 556, NULL }, - { "Scedilla", 667, NULL }, - { "Ograve", 778, NULL }, - { "Racute", 722, NULL }, - { "partialdiff", 476, NULL }, - { "uacute", 556, NULL }, - { "braceleft", 334, NULL }, - { "Thorn", 667, NULL }, - { "zcaron", 500, NULL }, - { "scommaaccent", 500, NULL }, - { "ccedilla", 500, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 556, NULL }, - { "Ocircumflex", 778, NULL }, - { "Oacute", 778, NULL }, - { "scedilla", 500, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 556, NULL }, - { "racute", 333, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 556, NULL }, - { "degree", 400, NULL }, - { "registered", 737, NULL }, - { "radical", 453, NULL }, - { "Aring", 667, NULL }, - { "percent", 889, NULL }, - { "six", 556, NULL }, - { "paragraph", 537, NULL }, - { "dcaron", 643, NULL }, - { "Uogonek", 722, NULL }, - { "two", 556, NULL }, - { "summation", 600, NULL }, - { "Igrave", 278, NULL }, - { "Lacute", 556, NULL }, - { "ocircumflex", 556, NULL }, - { "oacute", 556, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 556, NULL }, - { "tcaron", 317, NULL }, - { "eogonek", 556, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 778, NULL }, - { "asciicircum", 469, NULL }, - { "aring", 556, NULL }, - { "grave", 333, NULL }, - { "uogonek", 556, NULL }, - { "bracketright", 278, NULL }, - { "Iacute", 278, NULL }, - { "ampersand", 667, NULL }, - { "igrave", 278, NULL }, - { "lacute", 222, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 584, NULL }, - { "uring", 556, NULL }, - { "quotesinglbase", 222, NULL }, - { "lcommaaccent", 222, NULL }, - { "Yacute", 667, NULL }, - { "ohungarumlaut", 556, NULL }, - { "threesuperior", 333, NULL }, - { "acute", 333, NULL }, - { "section", 556, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 333, NULL }, - { "ncaron", 556, NULL }, - { "florin", 556, NULL }, - { "yacute", 500, NULL }, - { "Rcommaaccent", 722, NULL }, - { "fi", 500, NULL }, - { "fl", 500, NULL }, - { "Acircumflex", 667, NULL }, - { "Cacute", 722, NULL }, - { "Icircumflex", 278, NULL }, - { "guillemotleft", 556, NULL }, - { "germandbls", 611, NULL }, - { "Amacron", 667, NULL }, - { "seven", 556, NULL }, - { "Sacute", 667, NULL }, - { "ordmasculine", 365, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 556, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 278, NULL }, - { "rcommaaccent", 333, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 556, NULL }, - { "cacute", 500, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 334, NULL }, - { "quotedblright", 333, NULL }, - { "amacron", 556, NULL }, - { "sacute", 500, NULL }, - { "imacron", 278, NULL }, - { "cent", 556, NULL }, - { "currency", 556, NULL }, - { "logicalnot", 584, NULL }, - { "zdotaccent", 500, NULL }, - { "Atilde", 667, NULL }, - { "breve", 333, NULL }, - { "bar", 260, NULL }, - { "fraction", 167, NULL }, - { "less", 584, NULL }, - { "ecaron", 556, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 278, NULL }, - { "period", 278, NULL }, - { "Rcaron", 722, NULL }, - { "Kcommaaccent", 667, NULL }, - { "greater", 584, NULL }, - { "atilde", 556, NULL }, - { "brokenbar", 260, NULL }, - { "quoteleft", 222, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 333, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 333, nullptr }, + { "kcommaaccent", 500, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 278, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 584, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 556, nullptr }, + { "asciitilde", 584, nullptr }, + { "colon", 278, nullptr }, + { "onehalf", 834, nullptr }, + { "dollar", 556, nullptr }, + { "Lcaron", 556, nullptr }, + { "ntilde", 556, nullptr }, + { "Aogonek", 667, nullptr }, + { "ncommaaccent", 556, nullptr }, + { "minus", 584, nullptr }, + { "Iogonek", 278, nullptr }, + { "zacute", 500, nullptr }, + { "yen", 556, nullptr }, + { "space", 278, nullptr }, + { "Omacron", 778, nullptr }, + { "questiondown", 611, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 667, nullptr }, + { "three", 556, nullptr }, + { "numbersign", 556, nullptr }, + { "lcaron", 299, nullptr }, + { "A", 667, nullptr }, + { "B", 667, nullptr }, + { "C", 722, nullptr }, + { "aogonek", 556, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 834, nullptr }, + { "F", 611, nullptr }, + { "G", 778, nullptr }, + { "H", 722, nullptr }, + { "I", 278, nullptr }, + { "J", 500, nullptr }, + { "K", 667, nullptr }, + { "iogonek", 222, nullptr }, + { "backslash", 278, nullptr }, + { "L", 556, nullptr }, + { "periodcentered", 278, nullptr }, + { "M", 833, nullptr }, + { "N", 722, nullptr }, + { "omacron", 556, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 778, nullptr }, + { "P", 667, nullptr }, + { "Q", 778, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 722, nullptr }, + { "Aacute", 667, nullptr }, + { "caron", 333, nullptr }, + { "S", 667, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 556, nullptr }, + { "V", 667, nullptr }, + { "W", 944, nullptr }, + { "X", 667, nullptr }, + { "question", 556, nullptr }, + { "equal", 584, nullptr }, + { "Y", 667, nullptr }, + { "Z", 611, nullptr }, + { "four", 556, nullptr }, + { "a", 556, nullptr }, + { "Gcommaaccent", 778, nullptr }, + { "b", 556, nullptr }, + { "c", 500, nullptr }, + { "d", 556, nullptr }, + { "e", 556, nullptr }, + { "f", 278, nullptr }, + { "g", 556, nullptr }, + { "bullet", 350, nullptr }, + { "h", 556, nullptr }, + { "i", 222, nullptr }, + { "Oslash", 778, nullptr }, + { "dagger", 556, nullptr }, + { "j", 222, nullptr }, + { "k", 500, nullptr }, + { "l", 222, nullptr }, + { "m", 833, nullptr }, + { "n", 556, nullptr }, + { "tcommaaccent", 278, nullptr }, + { "o", 556, nullptr }, + { "ordfeminine", 370, nullptr }, + { "ring", 333, nullptr }, + { "p", 556, nullptr }, + { "q", 556, nullptr }, + { "uhungarumlaut", 556, nullptr }, + { "r", 333, nullptr }, + { "twosuperior", 333, nullptr }, + { "aacute", 556, nullptr }, + { "s", 500, nullptr }, + { "OE", 1000, nullptr }, + { "t", 278, nullptr }, + { "divide", 584, nullptr }, + { "u", 556, nullptr }, + { "Ccaron", 722, nullptr }, + { "v", 500, nullptr }, + { "w", 722, nullptr }, + { "x", 500, nullptr }, + { "y", 500, nullptr }, + { "z", 500, nullptr }, + { "Gbreve", 778, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 278, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 355, nullptr }, + { "gcommaaccent", 556, nullptr }, + { "mu", 556, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 667, nullptr }, + { "Lslash", 556, nullptr }, + { "semicolon", 278, nullptr }, + { "oslash", 611, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 471, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 500, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 556, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 556, nullptr }, + { "nacute", 556, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 778, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 500, nullptr }, + { "AE", 1000, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 222, nullptr }, + { "quotedblleft", 333, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 191, nullptr }, + { "eight", 556, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 556, nullptr }, + { "oe", 944, nullptr }, + { "Abreve", 667, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 556, nullptr }, + { "Adieresis", 667, nullptr }, + { "copyright", 737, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 556, nullptr }, + { "Idieresis", 278, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 556, nullptr }, + { "emacron", 556, nullptr }, + { "Odieresis", 778, nullptr }, + { "ucircumflex", 556, nullptr }, + { "bracketleft", 278, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 222, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 667, nullptr }, + { "umacron", 556, nullptr }, + { "abreve", 556, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 556, nullptr }, + { "egrave", 556, nullptr }, + { "edieresis", 556, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 889, nullptr }, + { "asterisk", 389, nullptr }, + { "odieresis", 556, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 556, nullptr }, + { "nine", 556, nullptr }, + { "five", 556, nullptr }, + { "udieresis", 556, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 667, nullptr }, + { "threequarters", 834, nullptr }, + { "guillemotright", 556, nullptr }, + { "Ccedilla", 722, nullptr }, + { "ydieresis", 500, nullptr }, + { "tilde", 333, nullptr }, + { "at", 1015, nullptr }, + { "eacute", 556, nullptr }, + { "underscore", 556, nullptr }, + { "Euro", 556, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 584, nullptr }, + { "zero", 556, nullptr }, + { "eth", 556, nullptr }, + { "Scedilla", 667, nullptr }, + { "Ograve", 778, nullptr }, + { "Racute", 722, nullptr }, + { "partialdiff", 476, nullptr }, + { "uacute", 556, nullptr }, + { "braceleft", 334, nullptr }, + { "Thorn", 667, nullptr }, + { "zcaron", 500, nullptr }, + { "scommaaccent", 500, nullptr }, + { "ccedilla", 500, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 556, nullptr }, + { "Ocircumflex", 778, nullptr }, + { "Oacute", 778, nullptr }, + { "scedilla", 500, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 556, nullptr }, + { "racute", 333, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 556, nullptr }, + { "degree", 400, nullptr }, + { "registered", 737, nullptr }, + { "radical", 453, nullptr }, + { "Aring", 667, nullptr }, + { "percent", 889, nullptr }, + { "six", 556, nullptr }, + { "paragraph", 537, nullptr }, + { "dcaron", 643, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 556, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 278, nullptr }, + { "Lacute", 556, nullptr }, + { "ocircumflex", 556, nullptr }, + { "oacute", 556, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 556, nullptr }, + { "tcaron", 317, nullptr }, + { "eogonek", 556, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 778, nullptr }, + { "asciicircum", 469, nullptr }, + { "aring", 556, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 556, nullptr }, + { "bracketright", 278, nullptr }, + { "Iacute", 278, nullptr }, + { "ampersand", 667, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 222, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 584, nullptr }, + { "uring", 556, nullptr }, + { "quotesinglbase", 222, nullptr }, + { "lcommaaccent", 222, nullptr }, + { "Yacute", 667, nullptr }, + { "ohungarumlaut", 556, nullptr }, + { "threesuperior", 333, nullptr }, + { "acute", 333, nullptr }, + { "section", 556, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 333, nullptr }, + { "ncaron", 556, nullptr }, + { "florin", 556, nullptr }, + { "yacute", 500, nullptr }, + { "Rcommaaccent", 722, nullptr }, + { "fi", 500, nullptr }, + { "fl", 500, nullptr }, + { "Acircumflex", 667, nullptr }, + { "Cacute", 722, nullptr }, + { "Icircumflex", 278, nullptr }, + { "guillemotleft", 556, nullptr }, + { "germandbls", 611, nullptr }, + { "Amacron", 667, nullptr }, + { "seven", 556, nullptr }, + { "Sacute", 667, nullptr }, + { "ordmasculine", 365, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 556, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 278, nullptr }, + { "rcommaaccent", 333, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 556, nullptr }, + { "cacute", 500, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 334, nullptr }, + { "quotedblright", 333, nullptr }, + { "amacron", 556, nullptr }, + { "sacute", 500, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 556, nullptr }, + { "currency", 556, nullptr }, + { "logicalnot", 584, nullptr }, + { "zdotaccent", 500, nullptr }, + { "Atilde", 667, nullptr }, + { "breve", 333, nullptr }, + { "bar", 260, nullptr }, + { "fraction", 167, nullptr }, + { "less", 584, nullptr }, + { "ecaron", 556, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 278, nullptr }, + { "period", 278, nullptr }, + { "Rcaron", 722, nullptr }, + { "Kcommaaccent", 667, nullptr }, + { "greater", 584, nullptr }, + { "atilde", 556, nullptr }, + { "brokenbar", 260, nullptr }, + { "quoteleft", 222, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 333, nullptr } }; static BuiltinFontWidth helveticaBoldWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 389, NULL }, - { "kcommaaccent", 556, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 278, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 584, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 556, NULL }, - { "asciitilde", 584, NULL }, - { "colon", 333, NULL }, - { "onehalf", 834, NULL }, - { "dollar", 556, NULL }, - { "Lcaron", 611, NULL }, - { "ntilde", 611, NULL }, - { "Aogonek", 722, NULL }, - { "ncommaaccent", 611, NULL }, - { "minus", 584, NULL }, - { "Iogonek", 278, NULL }, - { "zacute", 500, NULL }, - { "yen", 556, NULL }, - { "space", 278, NULL }, - { "Omacron", 778, NULL }, - { "questiondown", 611, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 722, NULL }, - { "three", 556, NULL }, - { "numbersign", 556, NULL }, - { "lcaron", 400, NULL }, - { "A", 722, NULL }, - { "B", 722, NULL }, - { "C", 722, NULL }, - { "aogonek", 556, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 834, NULL }, - { "F", 611, NULL }, - { "G", 778, NULL }, - { "H", 722, NULL }, - { "I", 278, NULL }, - { "J", 556, NULL }, - { "K", 722, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 611, NULL }, - { "periodcentered", 278, NULL }, - { "M", 833, NULL }, - { "N", 722, NULL }, - { "omacron", 611, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 778, NULL }, - { "P", 667, NULL }, - { "Q", 778, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 722, NULL }, - { "Aacute", 722, NULL }, - { "caron", 333, NULL }, - { "S", 667, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 556, NULL }, - { "V", 667, NULL }, - { "W", 944, NULL }, - { "X", 667, NULL }, - { "question", 611, NULL }, - { "equal", 584, NULL }, - { "Y", 667, NULL }, - { "Z", 611, NULL }, - { "four", 556, NULL }, - { "a", 556, NULL }, - { "Gcommaaccent", 778, NULL }, - { "b", 611, NULL }, - { "c", 556, NULL }, - { "d", 611, NULL }, - { "e", 556, NULL }, - { "f", 333, NULL }, - { "g", 611, NULL }, - { "bullet", 350, NULL }, - { "h", 611, NULL }, - { "i", 278, NULL }, - { "Oslash", 778, NULL }, - { "dagger", 556, NULL }, - { "j", 278, NULL }, - { "k", 556, NULL }, - { "l", 278, NULL }, - { "m", 889, NULL }, - { "n", 611, NULL }, - { "tcommaaccent", 333, NULL }, - { "o", 611, NULL }, - { "ordfeminine", 370, NULL }, - { "ring", 333, NULL }, - { "p", 611, NULL }, - { "q", 611, NULL }, - { "uhungarumlaut", 611, NULL }, - { "r", 389, NULL }, - { "twosuperior", 333, NULL }, - { "aacute", 556, NULL }, - { "s", 556, NULL }, - { "OE", 1000, NULL }, - { "t", 333, NULL }, - { "divide", 584, NULL }, - { "u", 611, NULL }, - { "Ccaron", 722, NULL }, - { "v", 556, NULL }, - { "w", 778, NULL }, - { "x", 556, NULL }, - { "y", 556, NULL }, - { "z", 500, NULL }, - { "Gbreve", 778, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 278, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 474, NULL }, - { "gcommaaccent", 611, NULL }, - { "mu", 611, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 667, NULL }, - { "Lslash", 611, NULL }, - { "semicolon", 333, NULL }, - { "oslash", 611, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 494, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 556, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 611, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 556, NULL }, - { "nacute", 611, NULL }, - { "macron", 333, NULL }, - { "Otilde", 778, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 556, NULL }, - { "AE", 1000, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 500, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 238, NULL }, - { "eight", 556, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 556, NULL }, - { "oe", 944, NULL }, - { "Abreve", 722, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 556, NULL }, - { "Adieresis", 722, NULL }, - { "copyright", 737, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 611, NULL }, - { "Idieresis", 278, NULL }, - { "parenleft", 333, NULL }, - { "one", 556, NULL }, - { "emacron", 556, NULL }, - { "Odieresis", 778, NULL }, - { "ucircumflex", 611, NULL }, - { "bracketleft", 333, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 278, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 667, NULL }, - { "umacron", 611, NULL }, - { "abreve", 556, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 556, NULL }, - { "egrave", 556, NULL }, - { "edieresis", 556, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 889, NULL }, - { "asterisk", 389, NULL }, - { "odieresis", 611, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 611, NULL }, - { "nine", 556, NULL }, - { "five", 556, NULL }, - { "udieresis", 611, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 667, NULL }, - { "threequarters", 834, NULL }, - { "guillemotright", 556, NULL }, - { "Ccedilla", 722, NULL }, - { "ydieresis", 556, NULL }, - { "tilde", 333, NULL }, - { "dbldaggerumlaut", 556, NULL }, - { "at", 975, NULL }, - { "eacute", 556, NULL }, - { "underscore", 556, NULL }, - { "Euro", 556, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 584, NULL }, - { "zero", 556, NULL }, - { "eth", 611, NULL }, - { "Scedilla", 667, NULL }, - { "Ograve", 778, NULL }, - { "Racute", 722, NULL }, - { "partialdiff", 494, NULL }, - { "uacute", 611, NULL }, - { "braceleft", 389, NULL }, - { "Thorn", 667, NULL }, - { "zcaron", 500, NULL }, - { "scommaaccent", 556, NULL }, - { "ccedilla", 556, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 611, NULL }, - { "Ocircumflex", 778, NULL }, - { "Oacute", 778, NULL }, - { "scedilla", 556, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 611, NULL }, - { "racute", 389, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 611, NULL }, - { "degree", 400, NULL }, - { "registered", 737, NULL }, - { "radical", 549, NULL }, - { "Aring", 722, NULL }, - { "percent", 889, NULL }, - { "six", 556, NULL }, - { "paragraph", 556, NULL }, - { "dcaron", 743, NULL }, - { "Uogonek", 722, NULL }, - { "two", 556, NULL }, - { "summation", 600, NULL }, - { "Igrave", 278, NULL }, - { "Lacute", 611, NULL }, - { "ocircumflex", 611, NULL }, - { "oacute", 611, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 611, NULL }, - { "tcaron", 389, NULL }, - { "eogonek", 556, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 778, NULL }, - { "asciicircum", 584, NULL }, - { "aring", 556, NULL }, - { "grave", 333, NULL }, - { "uogonek", 611, NULL }, - { "bracketright", 333, NULL }, - { "Iacute", 278, NULL }, - { "ampersand", 722, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 584, NULL }, - { "uring", 611, NULL }, - { "quotesinglbase", 278, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 667, NULL }, - { "ohungarumlaut", 611, NULL }, - { "threesuperior", 333, NULL }, - { "acute", 333, NULL }, - { "section", 556, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 500, NULL }, - { "ncaron", 611, NULL }, - { "florin", 556, NULL }, - { "yacute", 556, NULL }, - { "Rcommaaccent", 722, NULL }, - { "fi", 611, NULL }, - { "fl", 611, NULL }, - { "Acircumflex", 722, NULL }, - { "Cacute", 722, NULL }, - { "Icircumflex", 278, NULL }, - { "guillemotleft", 556, NULL }, - { "germandbls", 611, NULL }, - { "Amacron", 722, NULL }, - { "seven", 556, NULL }, - { "Sacute", 667, NULL }, - { "ordmasculine", 365, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 556, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 278, NULL }, - { "rcommaaccent", 389, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 556, NULL }, - { "cacute", 556, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 389, NULL }, - { "quotedblright", 500, NULL }, - { "amacron", 556, NULL }, - { "sacute", 556, NULL }, - { "imacron", 278, NULL }, - { "cent", 556, NULL }, - { "currency", 556, NULL }, - { "logicalnot", 584, NULL }, - { "zdotaccent", 500, NULL }, - { "Atilde", 722, NULL }, - { "breve", 333, NULL }, - { "bar", 280, NULL }, - { "fraction", 167, NULL }, - { "less", 584, NULL }, - { "ecaron", 556, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 333, NULL }, - { "period", 278, NULL }, - { "Rcaron", 722, NULL }, - { "Kcommaaccent", 722, NULL }, - { "greater", 584, NULL }, - { "atilde", 556, NULL }, - { "brokenbar", 280, NULL }, - { "quoteleft", 278, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 333, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 389, nullptr }, + { "kcommaaccent", 556, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 278, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 584, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 556, nullptr }, + { "asciitilde", 584, nullptr }, + { "colon", 333, nullptr }, + { "onehalf", 834, nullptr }, + { "dollar", 556, nullptr }, + { "Lcaron", 611, nullptr }, + { "ntilde", 611, nullptr }, + { "Aogonek", 722, nullptr }, + { "ncommaaccent", 611, nullptr }, + { "minus", 584, nullptr }, + { "Iogonek", 278, nullptr }, + { "zacute", 500, nullptr }, + { "yen", 556, nullptr }, + { "space", 278, nullptr }, + { "Omacron", 778, nullptr }, + { "questiondown", 611, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 722, nullptr }, + { "three", 556, nullptr }, + { "numbersign", 556, nullptr }, + { "lcaron", 400, nullptr }, + { "A", 722, nullptr }, + { "B", 722, nullptr }, + { "C", 722, nullptr }, + { "aogonek", 556, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 834, nullptr }, + { "F", 611, nullptr }, + { "G", 778, nullptr }, + { "H", 722, nullptr }, + { "I", 278, nullptr }, + { "J", 556, nullptr }, + { "K", 722, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 611, nullptr }, + { "periodcentered", 278, nullptr }, + { "M", 833, nullptr }, + { "N", 722, nullptr }, + { "omacron", 611, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 778, nullptr }, + { "P", 667, nullptr }, + { "Q", 778, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 722, nullptr }, + { "Aacute", 722, nullptr }, + { "caron", 333, nullptr }, + { "S", 667, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 556, nullptr }, + { "V", 667, nullptr }, + { "W", 944, nullptr }, + { "X", 667, nullptr }, + { "question", 611, nullptr }, + { "equal", 584, nullptr }, + { "Y", 667, nullptr }, + { "Z", 611, nullptr }, + { "four", 556, nullptr }, + { "a", 556, nullptr }, + { "Gcommaaccent", 778, nullptr }, + { "b", 611, nullptr }, + { "c", 556, nullptr }, + { "d", 611, nullptr }, + { "e", 556, nullptr }, + { "f", 333, nullptr }, + { "g", 611, nullptr }, + { "bullet", 350, nullptr }, + { "h", 611, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 778, nullptr }, + { "dagger", 556, nullptr }, + { "j", 278, nullptr }, + { "k", 556, nullptr }, + { "l", 278, nullptr }, + { "m", 889, nullptr }, + { "n", 611, nullptr }, + { "tcommaaccent", 333, nullptr }, + { "o", 611, nullptr }, + { "ordfeminine", 370, nullptr }, + { "ring", 333, nullptr }, + { "p", 611, nullptr }, + { "q", 611, nullptr }, + { "uhungarumlaut", 611, nullptr }, + { "r", 389, nullptr }, + { "twosuperior", 333, nullptr }, + { "aacute", 556, nullptr }, + { "s", 556, nullptr }, + { "OE", 1000, nullptr }, + { "t", 333, nullptr }, + { "divide", 584, nullptr }, + { "u", 611, nullptr }, + { "Ccaron", 722, nullptr }, + { "v", 556, nullptr }, + { "w", 778, nullptr }, + { "x", 556, nullptr }, + { "y", 556, nullptr }, + { "z", 500, nullptr }, + { "Gbreve", 778, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 278, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 474, nullptr }, + { "gcommaaccent", 611, nullptr }, + { "mu", 611, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 667, nullptr }, + { "Lslash", 611, nullptr }, + { "semicolon", 333, nullptr }, + { "oslash", 611, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 494, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 556, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 611, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 556, nullptr }, + { "nacute", 611, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 778, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 556, nullptr }, + { "AE", 1000, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 500, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 238, nullptr }, + { "eight", 556, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 556, nullptr }, + { "oe", 944, nullptr }, + { "Abreve", 722, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 556, nullptr }, + { "Adieresis", 722, nullptr }, + { "copyright", 737, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 611, nullptr }, + { "Idieresis", 278, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 556, nullptr }, + { "emacron", 556, nullptr }, + { "Odieresis", 778, nullptr }, + { "ucircumflex", 611, nullptr }, + { "bracketleft", 333, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 278, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 667, nullptr }, + { "umacron", 611, nullptr }, + { "abreve", 556, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 556, nullptr }, + { "egrave", 556, nullptr }, + { "edieresis", 556, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 889, nullptr }, + { "asterisk", 389, nullptr }, + { "odieresis", 611, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 611, nullptr }, + { "nine", 556, nullptr }, + { "five", 556, nullptr }, + { "udieresis", 611, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 667, nullptr }, + { "threequarters", 834, nullptr }, + { "guillemotright", 556, nullptr }, + { "Ccedilla", 722, nullptr }, + { "ydieresis", 556, nullptr }, + { "tilde", 333, nullptr }, + { "dbldaggerumlaut", 556, nullptr }, + { "at", 975, nullptr }, + { "eacute", 556, nullptr }, + { "underscore", 556, nullptr }, + { "Euro", 556, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 584, nullptr }, + { "zero", 556, nullptr }, + { "eth", 611, nullptr }, + { "Scedilla", 667, nullptr }, + { "Ograve", 778, nullptr }, + { "Racute", 722, nullptr }, + { "partialdiff", 494, nullptr }, + { "uacute", 611, nullptr }, + { "braceleft", 389, nullptr }, + { "Thorn", 667, nullptr }, + { "zcaron", 500, nullptr }, + { "scommaaccent", 556, nullptr }, + { "ccedilla", 556, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 611, nullptr }, + { "Ocircumflex", 778, nullptr }, + { "Oacute", 778, nullptr }, + { "scedilla", 556, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 611, nullptr }, + { "racute", 389, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 611, nullptr }, + { "degree", 400, nullptr }, + { "registered", 737, nullptr }, + { "radical", 549, nullptr }, + { "Aring", 722, nullptr }, + { "percent", 889, nullptr }, + { "six", 556, nullptr }, + { "paragraph", 556, nullptr }, + { "dcaron", 743, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 556, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 278, nullptr }, + { "Lacute", 611, nullptr }, + { "ocircumflex", 611, nullptr }, + { "oacute", 611, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 611, nullptr }, + { "tcaron", 389, nullptr }, + { "eogonek", 556, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 778, nullptr }, + { "asciicircum", 584, nullptr }, + { "aring", 556, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 611, nullptr }, + { "bracketright", 333, nullptr }, + { "Iacute", 278, nullptr }, + { "ampersand", 722, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 584, nullptr }, + { "uring", 611, nullptr }, + { "quotesinglbase", 278, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 667, nullptr }, + { "ohungarumlaut", 611, nullptr }, + { "threesuperior", 333, nullptr }, + { "acute", 333, nullptr }, + { "section", 556, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 500, nullptr }, + { "ncaron", 611, nullptr }, + { "florin", 556, nullptr }, + { "yacute", 556, nullptr }, + { "Rcommaaccent", 722, nullptr }, + { "fi", 611, nullptr }, + { "fl", 611, nullptr }, + { "Acircumflex", 722, nullptr }, + { "Cacute", 722, nullptr }, + { "Icircumflex", 278, nullptr }, + { "guillemotleft", 556, nullptr }, + { "germandbls", 611, nullptr }, + { "Amacron", 722, nullptr }, + { "seven", 556, nullptr }, + { "Sacute", 667, nullptr }, + { "ordmasculine", 365, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 556, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 278, nullptr }, + { "rcommaaccent", 389, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 556, nullptr }, + { "cacute", 556, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 389, nullptr }, + { "quotedblright", 500, nullptr }, + { "amacron", 556, nullptr }, + { "sacute", 556, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 556, nullptr }, + { "currency", 556, nullptr }, + { "logicalnot", 584, nullptr }, + { "zdotaccent", 500, nullptr }, + { "Atilde", 722, nullptr }, + { "breve", 333, nullptr }, + { "bar", 280, nullptr }, + { "fraction", 167, nullptr }, + { "less", 584, nullptr }, + { "ecaron", 556, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 333, nullptr }, + { "period", 278, nullptr }, + { "Rcaron", 722, nullptr }, + { "Kcommaaccent", 722, nullptr }, + { "greater", 584, nullptr }, + { "atilde", 556, nullptr }, + { "brokenbar", 280, nullptr }, + { "quoteleft", 278, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 333, nullptr } }; static BuiltinFontWidth helveticaBoldObliqueWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 389, NULL }, - { "kcommaaccent", 556, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 278, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 584, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 556, NULL }, - { "asciitilde", 584, NULL }, - { "colon", 333, NULL }, - { "onehalf", 834, NULL }, - { "dollar", 556, NULL }, - { "Lcaron", 611, NULL }, - { "ntilde", 611, NULL }, - { "Aogonek", 722, NULL }, - { "ncommaaccent", 611, NULL }, - { "minus", 584, NULL }, - { "Iogonek", 278, NULL }, - { "zacute", 500, NULL }, - { "yen", 556, NULL }, - { "space", 278, NULL }, - { "Omacron", 778, NULL }, - { "questiondown", 611, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 722, NULL }, - { "three", 556, NULL }, - { "numbersign", 556, NULL }, - { "lcaron", 400, NULL }, - { "A", 722, NULL }, - { "B", 722, NULL }, - { "C", 722, NULL }, - { "aogonek", 556, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 834, NULL }, - { "F", 611, NULL }, - { "G", 778, NULL }, - { "H", 722, NULL }, - { "I", 278, NULL }, - { "J", 556, NULL }, - { "K", 722, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 611, NULL }, - { "periodcentered", 278, NULL }, - { "M", 833, NULL }, - { "N", 722, NULL }, - { "omacron", 611, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 778, NULL }, - { "P", 667, NULL }, - { "Q", 778, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 722, NULL }, - { "Aacute", 722, NULL }, - { "caron", 333, NULL }, - { "S", 667, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 556, NULL }, - { "V", 667, NULL }, - { "W", 944, NULL }, - { "X", 667, NULL }, - { "question", 611, NULL }, - { "equal", 584, NULL }, - { "Y", 667, NULL }, - { "Z", 611, NULL }, - { "four", 556, NULL }, - { "a", 556, NULL }, - { "Gcommaaccent", 778, NULL }, - { "b", 611, NULL }, - { "c", 556, NULL }, - { "d", 611, NULL }, - { "e", 556, NULL }, - { "f", 333, NULL }, - { "g", 611, NULL }, - { "bullet", 350, NULL }, - { "h", 611, NULL }, - { "i", 278, NULL }, - { "Oslash", 778, NULL }, - { "dagger", 556, NULL }, - { "j", 278, NULL }, - { "k", 556, NULL }, - { "l", 278, NULL }, - { "m", 889, NULL }, - { "n", 611, NULL }, - { "tcommaaccent", 333, NULL }, - { "o", 611, NULL }, - { "ordfeminine", 370, NULL }, - { "ring", 333, NULL }, - { "p", 611, NULL }, - { "q", 611, NULL }, - { "uhungarumlaut", 611, NULL }, - { "r", 389, NULL }, - { "twosuperior", 333, NULL }, - { "aacute", 556, NULL }, - { "s", 556, NULL }, - { "OE", 1000, NULL }, - { "t", 333, NULL }, - { "divide", 584, NULL }, - { "u", 611, NULL }, - { "Ccaron", 722, NULL }, - { "v", 556, NULL }, - { "w", 778, NULL }, - { "x", 556, NULL }, - { "y", 556, NULL }, - { "z", 500, NULL }, - { "Gbreve", 778, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 278, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 474, NULL }, - { "gcommaaccent", 611, NULL }, - { "mu", 611, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 667, NULL }, - { "Lslash", 611, NULL }, - { "semicolon", 333, NULL }, - { "oslash", 611, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 494, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 556, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 611, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 556, NULL }, - { "nacute", 611, NULL }, - { "macron", 333, NULL }, - { "Otilde", 778, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 556, NULL }, - { "AE", 1000, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 500, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 238, NULL }, - { "eight", 556, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 556, NULL }, - { "oe", 944, NULL }, - { "Abreve", 722, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 556, NULL }, - { "Adieresis", 722, NULL }, - { "copyright", 737, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 611, NULL }, - { "Idieresis", 278, NULL }, - { "parenleft", 333, NULL }, - { "one", 556, NULL }, - { "emacron", 556, NULL }, - { "Odieresis", 778, NULL }, - { "ucircumflex", 611, NULL }, - { "bracketleft", 333, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 278, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 667, NULL }, - { "umacron", 611, NULL }, - { "abreve", 556, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 556, NULL }, - { "egrave", 556, NULL }, - { "edieresis", 556, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 889, NULL }, - { "asterisk", 389, NULL }, - { "odieresis", 611, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 611, NULL }, - { "nine", 556, NULL }, - { "five", 556, NULL }, - { "udieresis", 611, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 667, NULL }, - { "threequarters", 834, NULL }, - { "guillemotright", 556, NULL }, - { "Ccedilla", 722, NULL }, - { "ydieresis", 556, NULL }, - { "tilde", 333, NULL }, - { "at", 975, NULL }, - { "eacute", 556, NULL }, - { "underscore", 556, NULL }, - { "Euro", 556, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 584, NULL }, - { "zero", 556, NULL }, - { "eth", 611, NULL }, - { "Scedilla", 667, NULL }, - { "Ograve", 778, NULL }, - { "Racute", 722, NULL }, - { "partialdiff", 494, NULL }, - { "uacute", 611, NULL }, - { "braceleft", 389, NULL }, - { "Thorn", 667, NULL }, - { "zcaron", 500, NULL }, - { "scommaaccent", 556, NULL }, - { "ccedilla", 556, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 611, NULL }, - { "Ocircumflex", 778, NULL }, - { "Oacute", 778, NULL }, - { "scedilla", 556, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 611, NULL }, - { "racute", 389, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 611, NULL }, - { "degree", 400, NULL }, - { "registered", 737, NULL }, - { "radical", 549, NULL }, - { "Aring", 722, NULL }, - { "percent", 889, NULL }, - { "six", 556, NULL }, - { "paragraph", 556, NULL }, - { "dcaron", 743, NULL }, - { "Uogonek", 722, NULL }, - { "two", 556, NULL }, - { "summation", 600, NULL }, - { "Igrave", 278, NULL }, - { "Lacute", 611, NULL }, - { "ocircumflex", 611, NULL }, - { "oacute", 611, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 611, NULL }, - { "tcaron", 389, NULL }, - { "eogonek", 556, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 778, NULL }, - { "asciicircum", 584, NULL }, - { "aring", 556, NULL }, - { "grave", 333, NULL }, - { "uogonek", 611, NULL }, - { "bracketright", 333, NULL }, - { "Iacute", 278, NULL }, - { "ampersand", 722, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 584, NULL }, - { "uring", 611, NULL }, - { "quotesinglbase", 278, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 667, NULL }, - { "ohungarumlaut", 611, NULL }, - { "threesuperior", 333, NULL }, - { "acute", 333, NULL }, - { "section", 556, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 500, NULL }, - { "ncaron", 611, NULL }, - { "florin", 556, NULL }, - { "yacute", 556, NULL }, - { "Rcommaaccent", 722, NULL }, - { "fi", 611, NULL }, - { "fl", 611, NULL }, - { "Acircumflex", 722, NULL }, - { "Cacute", 722, NULL }, - { "Icircumflex", 278, NULL }, - { "guillemotleft", 556, NULL }, - { "germandbls", 611, NULL }, - { "Amacron", 722, NULL }, - { "seven", 556, NULL }, - { "Sacute", 667, NULL }, - { "ordmasculine", 365, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 556, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 278, NULL }, - { "rcommaaccent", 389, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 556, NULL }, - { "cacute", 556, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 389, NULL }, - { "quotedblright", 500, NULL }, - { "amacron", 556, NULL }, - { "sacute", 556, NULL }, - { "imacron", 278, NULL }, - { "cent", 556, NULL }, - { "currency", 556, NULL }, - { "logicalnot", 584, NULL }, - { "zdotaccent", 500, NULL }, - { "Atilde", 722, NULL }, - { "breve", 333, NULL }, - { "bar", 280, NULL }, - { "fraction", 167, NULL }, - { "less", 584, NULL }, - { "ecaron", 556, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 333, NULL }, - { "period", 278, NULL }, - { "Rcaron", 722, NULL }, - { "Kcommaaccent", 722, NULL }, - { "greater", 584, NULL }, - { "atilde", 556, NULL }, - { "brokenbar", 280, NULL }, - { "quoteleft", 278, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 333, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 389, nullptr }, + { "kcommaaccent", 556, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 278, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 584, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 556, nullptr }, + { "asciitilde", 584, nullptr }, + { "colon", 333, nullptr }, + { "onehalf", 834, nullptr }, + { "dollar", 556, nullptr }, + { "Lcaron", 611, nullptr }, + { "ntilde", 611, nullptr }, + { "Aogonek", 722, nullptr }, + { "ncommaaccent", 611, nullptr }, + { "minus", 584, nullptr }, + { "Iogonek", 278, nullptr }, + { "zacute", 500, nullptr }, + { "yen", 556, nullptr }, + { "space", 278, nullptr }, + { "Omacron", 778, nullptr }, + { "questiondown", 611, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 722, nullptr }, + { "three", 556, nullptr }, + { "numbersign", 556, nullptr }, + { "lcaron", 400, nullptr }, + { "A", 722, nullptr }, + { "B", 722, nullptr }, + { "C", 722, nullptr }, + { "aogonek", 556, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 834, nullptr }, + { "F", 611, nullptr }, + { "G", 778, nullptr }, + { "H", 722, nullptr }, + { "I", 278, nullptr }, + { "J", 556, nullptr }, + { "K", 722, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 611, nullptr }, + { "periodcentered", 278, nullptr }, + { "M", 833, nullptr }, + { "N", 722, nullptr }, + { "omacron", 611, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 778, nullptr }, + { "P", 667, nullptr }, + { "Q", 778, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 722, nullptr }, + { "Aacute", 722, nullptr }, + { "caron", 333, nullptr }, + { "S", 667, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 556, nullptr }, + { "V", 667, nullptr }, + { "W", 944, nullptr }, + { "X", 667, nullptr }, + { "question", 611, nullptr }, + { "equal", 584, nullptr }, + { "Y", 667, nullptr }, + { "Z", 611, nullptr }, + { "four", 556, nullptr }, + { "a", 556, nullptr }, + { "Gcommaaccent", 778, nullptr }, + { "b", 611, nullptr }, + { "c", 556, nullptr }, + { "d", 611, nullptr }, + { "e", 556, nullptr }, + { "f", 333, nullptr }, + { "g", 611, nullptr }, + { "bullet", 350, nullptr }, + { "h", 611, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 778, nullptr }, + { "dagger", 556, nullptr }, + { "j", 278, nullptr }, + { "k", 556, nullptr }, + { "l", 278, nullptr }, + { "m", 889, nullptr }, + { "n", 611, nullptr }, + { "tcommaaccent", 333, nullptr }, + { "o", 611, nullptr }, + { "ordfeminine", 370, nullptr }, + { "ring", 333, nullptr }, + { "p", 611, nullptr }, + { "q", 611, nullptr }, + { "uhungarumlaut", 611, nullptr }, + { "r", 389, nullptr }, + { "twosuperior", 333, nullptr }, + { "aacute", 556, nullptr }, + { "s", 556, nullptr }, + { "OE", 1000, nullptr }, + { "t", 333, nullptr }, + { "divide", 584, nullptr }, + { "u", 611, nullptr }, + { "Ccaron", 722, nullptr }, + { "v", 556, nullptr }, + { "w", 778, nullptr }, + { "x", 556, nullptr }, + { "y", 556, nullptr }, + { "z", 500, nullptr }, + { "Gbreve", 778, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 278, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 474, nullptr }, + { "gcommaaccent", 611, nullptr }, + { "mu", 611, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 667, nullptr }, + { "Lslash", 611, nullptr }, + { "semicolon", 333, nullptr }, + { "oslash", 611, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 494, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 556, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 611, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 556, nullptr }, + { "nacute", 611, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 778, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 556, nullptr }, + { "AE", 1000, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 500, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 238, nullptr }, + { "eight", 556, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 556, nullptr }, + { "oe", 944, nullptr }, + { "Abreve", 722, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 556, nullptr }, + { "Adieresis", 722, nullptr }, + { "copyright", 737, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 611, nullptr }, + { "Idieresis", 278, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 556, nullptr }, + { "emacron", 556, nullptr }, + { "Odieresis", 778, nullptr }, + { "ucircumflex", 611, nullptr }, + { "bracketleft", 333, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 278, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 667, nullptr }, + { "umacron", 611, nullptr }, + { "abreve", 556, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 556, nullptr }, + { "egrave", 556, nullptr }, + { "edieresis", 556, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 889, nullptr }, + { "asterisk", 389, nullptr }, + { "odieresis", 611, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 611, nullptr }, + { "nine", 556, nullptr }, + { "five", 556, nullptr }, + { "udieresis", 611, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 667, nullptr }, + { "threequarters", 834, nullptr }, + { "guillemotright", 556, nullptr }, + { "Ccedilla", 722, nullptr }, + { "ydieresis", 556, nullptr }, + { "tilde", 333, nullptr }, + { "at", 975, nullptr }, + { "eacute", 556, nullptr }, + { "underscore", 556, nullptr }, + { "Euro", 556, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 584, nullptr }, + { "zero", 556, nullptr }, + { "eth", 611, nullptr }, + { "Scedilla", 667, nullptr }, + { "Ograve", 778, nullptr }, + { "Racute", 722, nullptr }, + { "partialdiff", 494, nullptr }, + { "uacute", 611, nullptr }, + { "braceleft", 389, nullptr }, + { "Thorn", 667, nullptr }, + { "zcaron", 500, nullptr }, + { "scommaaccent", 556, nullptr }, + { "ccedilla", 556, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 611, nullptr }, + { "Ocircumflex", 778, nullptr }, + { "Oacute", 778, nullptr }, + { "scedilla", 556, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 611, nullptr }, + { "racute", 389, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 611, nullptr }, + { "degree", 400, nullptr }, + { "registered", 737, nullptr }, + { "radical", 549, nullptr }, + { "Aring", 722, nullptr }, + { "percent", 889, nullptr }, + { "six", 556, nullptr }, + { "paragraph", 556, nullptr }, + { "dcaron", 743, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 556, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 278, nullptr }, + { "Lacute", 611, nullptr }, + { "ocircumflex", 611, nullptr }, + { "oacute", 611, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 611, nullptr }, + { "tcaron", 389, nullptr }, + { "eogonek", 556, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 778, nullptr }, + { "asciicircum", 584, nullptr }, + { "aring", 556, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 611, nullptr }, + { "bracketright", 333, nullptr }, + { "Iacute", 278, nullptr }, + { "ampersand", 722, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 584, nullptr }, + { "uring", 611, nullptr }, + { "quotesinglbase", 278, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 667, nullptr }, + { "ohungarumlaut", 611, nullptr }, + { "threesuperior", 333, nullptr }, + { "acute", 333, nullptr }, + { "section", 556, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 500, nullptr }, + { "ncaron", 611, nullptr }, + { "florin", 556, nullptr }, + { "yacute", 556, nullptr }, + { "Rcommaaccent", 722, nullptr }, + { "fi", 611, nullptr }, + { "fl", 611, nullptr }, + { "Acircumflex", 722, nullptr }, + { "Cacute", 722, nullptr }, + { "Icircumflex", 278, nullptr }, + { "guillemotleft", 556, nullptr }, + { "germandbls", 611, nullptr }, + { "Amacron", 722, nullptr }, + { "seven", 556, nullptr }, + { "Sacute", 667, nullptr }, + { "ordmasculine", 365, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 556, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 278, nullptr }, + { "rcommaaccent", 389, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 556, nullptr }, + { "cacute", 556, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 389, nullptr }, + { "quotedblright", 500, nullptr }, + { "amacron", 556, nullptr }, + { "sacute", 556, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 556, nullptr }, + { "currency", 556, nullptr }, + { "logicalnot", 584, nullptr }, + { "zdotaccent", 500, nullptr }, + { "Atilde", 722, nullptr }, + { "breve", 333, nullptr }, + { "bar", 280, nullptr }, + { "fraction", 167, nullptr }, + { "less", 584, nullptr }, + { "ecaron", 556, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 333, nullptr }, + { "period", 278, nullptr }, + { "Rcaron", 722, nullptr }, + { "Kcommaaccent", 722, nullptr }, + { "greater", 584, nullptr }, + { "atilde", 556, nullptr }, + { "brokenbar", 280, nullptr }, + { "quoteleft", 278, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 333, nullptr } }; static BuiltinFontWidth helveticaObliqueWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 333, NULL }, - { "kcommaaccent", 500, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 278, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 584, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 556, NULL }, - { "asciitilde", 584, NULL }, - { "colon", 278, NULL }, - { "onehalf", 834, NULL }, - { "dollar", 556, NULL }, - { "Lcaron", 556, NULL }, - { "ntilde", 556, NULL }, - { "Aogonek", 667, NULL }, - { "ncommaaccent", 556, NULL }, - { "minus", 584, NULL }, - { "Iogonek", 278, NULL }, - { "zacute", 500, NULL }, - { "yen", 556, NULL }, - { "space", 278, NULL }, - { "Omacron", 778, NULL }, - { "questiondown", 611, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 667, NULL }, - { "three", 556, NULL }, - { "numbersign", 556, NULL }, - { "lcaron", 299, NULL }, - { "A", 667, NULL }, - { "B", 667, NULL }, - { "C", 722, NULL }, - { "aogonek", 556, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 834, NULL }, - { "F", 611, NULL }, - { "G", 778, NULL }, - { "H", 722, NULL }, - { "I", 278, NULL }, - { "J", 500, NULL }, - { "K", 667, NULL }, - { "iogonek", 222, NULL }, - { "backslash", 278, NULL }, - { "L", 556, NULL }, - { "periodcentered", 278, NULL }, - { "M", 833, NULL }, - { "N", 722, NULL }, - { "omacron", 556, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 778, NULL }, - { "P", 667, NULL }, - { "Q", 778, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 722, NULL }, - { "Aacute", 667, NULL }, - { "caron", 333, NULL }, - { "S", 667, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 556, NULL }, - { "V", 667, NULL }, - { "W", 944, NULL }, - { "X", 667, NULL }, - { "question", 556, NULL }, - { "equal", 584, NULL }, - { "Y", 667, NULL }, - { "Z", 611, NULL }, - { "four", 556, NULL }, - { "a", 556, NULL }, - { "Gcommaaccent", 778, NULL }, - { "b", 556, NULL }, - { "c", 500, NULL }, - { "d", 556, NULL }, - { "e", 556, NULL }, - { "f", 278, NULL }, - { "g", 556, NULL }, - { "bullet", 350, NULL }, - { "h", 556, NULL }, - { "i", 222, NULL }, - { "Oslash", 778, NULL }, - { "dagger", 556, NULL }, - { "j", 222, NULL }, - { "k", 500, NULL }, - { "l", 222, NULL }, - { "m", 833, NULL }, - { "n", 556, NULL }, - { "tcommaaccent", 278, NULL }, - { "o", 556, NULL }, - { "ordfeminine", 370, NULL }, - { "ring", 333, NULL }, - { "p", 556, NULL }, - { "q", 556, NULL }, - { "uhungarumlaut", 556, NULL }, - { "r", 333, NULL }, - { "twosuperior", 333, NULL }, - { "aacute", 556, NULL }, - { "s", 500, NULL }, - { "OE", 1000, NULL }, - { "t", 278, NULL }, - { "divide", 584, NULL }, - { "u", 556, NULL }, - { "Ccaron", 722, NULL }, - { "v", 500, NULL }, - { "w", 722, NULL }, - { "x", 500, NULL }, - { "y", 500, NULL }, - { "z", 500, NULL }, - { "Gbreve", 778, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 278, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 355, NULL }, - { "gcommaaccent", 556, NULL }, - { "mu", 556, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 667, NULL }, - { "Lslash", 556, NULL }, - { "semicolon", 278, NULL }, - { "oslash", 611, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 471, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 500, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 556, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 556, NULL }, - { "nacute", 556, NULL }, - { "macron", 333, NULL }, - { "Otilde", 778, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 500, NULL }, - { "AE", 1000, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 222, NULL }, - { "quotedblleft", 333, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 191, NULL }, - { "eight", 556, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 556, NULL }, - { "oe", 944, NULL }, - { "Abreve", 667, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 556, NULL }, - { "Adieresis", 667, NULL }, - { "copyright", 737, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 556, NULL }, - { "Idieresis", 278, NULL }, - { "parenleft", 333, NULL }, - { "one", 556, NULL }, - { "emacron", 556, NULL }, - { "Odieresis", 778, NULL }, - { "ucircumflex", 556, NULL }, - { "bracketleft", 278, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 222, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 667, NULL }, - { "umacron", 556, NULL }, - { "abreve", 556, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 556, NULL }, - { "egrave", 556, NULL }, - { "edieresis", 556, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 889, NULL }, - { "asterisk", 389, NULL }, - { "odieresis", 556, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 556, NULL }, - { "nine", 556, NULL }, - { "five", 556, NULL }, - { "udieresis", 556, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 667, NULL }, - { "threequarters", 834, NULL }, - { "guillemotright", 556, NULL }, - { "Ccedilla", 722, NULL }, - { "ydieresis", 500, NULL }, - { "tilde", 333, NULL }, - { "at", 1015, NULL }, - { "eacute", 556, NULL }, - { "underscore", 556, NULL }, - { "Euro", 556, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 584, NULL }, - { "zero", 556, NULL }, - { "eth", 556, NULL }, - { "Scedilla", 667, NULL }, - { "Ograve", 778, NULL }, - { "Racute", 722, NULL }, - { "partialdiff", 476, NULL }, - { "uacute", 556, NULL }, - { "braceleft", 334, NULL }, - { "Thorn", 667, NULL }, - { "zcaron", 500, NULL }, - { "scommaaccent", 500, NULL }, - { "ccedilla", 500, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 556, NULL }, - { "Ocircumflex", 778, NULL }, - { "Oacute", 778, NULL }, - { "scedilla", 500, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 556, NULL }, - { "racute", 333, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 556, NULL }, - { "degree", 400, NULL }, - { "registered", 737, NULL }, - { "radical", 453, NULL }, - { "Aring", 667, NULL }, - { "percent", 889, NULL }, - { "six", 556, NULL }, - { "paragraph", 537, NULL }, - { "dcaron", 643, NULL }, - { "Uogonek", 722, NULL }, - { "two", 556, NULL }, - { "summation", 600, NULL }, - { "Igrave", 278, NULL }, - { "Lacute", 556, NULL }, - { "ocircumflex", 556, NULL }, - { "oacute", 556, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 556, NULL }, - { "tcaron", 317, NULL }, - { "eogonek", 556, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 778, NULL }, - { "asciicircum", 469, NULL }, - { "aring", 556, NULL }, - { "grave", 333, NULL }, - { "uogonek", 556, NULL }, - { "bracketright", 278, NULL }, - { "Iacute", 278, NULL }, - { "ampersand", 667, NULL }, - { "igrave", 278, NULL }, - { "lacute", 222, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 584, NULL }, - { "uring", 556, NULL }, - { "quotesinglbase", 222, NULL }, - { "lcommaaccent", 222, NULL }, - { "Yacute", 667, NULL }, - { "ohungarumlaut", 556, NULL }, - { "threesuperior", 333, NULL }, - { "acute", 333, NULL }, - { "section", 556, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 333, NULL }, - { "ncaron", 556, NULL }, - { "florin", 556, NULL }, - { "yacute", 500, NULL }, - { "Rcommaaccent", 722, NULL }, - { "fi", 500, NULL }, - { "fl", 500, NULL }, - { "Acircumflex", 667, NULL }, - { "Cacute", 722, NULL }, - { "Icircumflex", 278, NULL }, - { "guillemotleft", 556, NULL }, - { "germandbls", 611, NULL }, - { "Amacron", 667, NULL }, - { "seven", 556, NULL }, - { "Sacute", 667, NULL }, - { "ordmasculine", 365, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 556, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 278, NULL }, - { "rcommaaccent", 333, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 556, NULL }, - { "cacute", 500, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 334, NULL }, - { "quotedblright", 333, NULL }, - { "amacron", 556, NULL }, - { "sacute", 500, NULL }, - { "imacron", 278, NULL }, - { "cent", 556, NULL }, - { "currency", 556, NULL }, - { "logicalnot", 584, NULL }, - { "zdotaccent", 500, NULL }, - { "Atilde", 667, NULL }, - { "breve", 333, NULL }, - { "bar", 260, NULL }, - { "fraction", 167, NULL }, - { "less", 584, NULL }, - { "ecaron", 556, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 278, NULL }, - { "period", 278, NULL }, - { "Rcaron", 722, NULL }, - { "Kcommaaccent", 667, NULL }, - { "greater", 584, NULL }, - { "atilde", 556, NULL }, - { "brokenbar", 260, NULL }, - { "quoteleft", 222, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 333, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 333, nullptr }, + { "kcommaaccent", 500, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 278, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 584, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 556, nullptr }, + { "asciitilde", 584, nullptr }, + { "colon", 278, nullptr }, + { "onehalf", 834, nullptr }, + { "dollar", 556, nullptr }, + { "Lcaron", 556, nullptr }, + { "ntilde", 556, nullptr }, + { "Aogonek", 667, nullptr }, + { "ncommaaccent", 556, nullptr }, + { "minus", 584, nullptr }, + { "Iogonek", 278, nullptr }, + { "zacute", 500, nullptr }, + { "yen", 556, nullptr }, + { "space", 278, nullptr }, + { "Omacron", 778, nullptr }, + { "questiondown", 611, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 667, nullptr }, + { "three", 556, nullptr }, + { "numbersign", 556, nullptr }, + { "lcaron", 299, nullptr }, + { "A", 667, nullptr }, + { "B", 667, nullptr }, + { "C", 722, nullptr }, + { "aogonek", 556, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 834, nullptr }, + { "F", 611, nullptr }, + { "G", 778, nullptr }, + { "H", 722, nullptr }, + { "I", 278, nullptr }, + { "J", 500, nullptr }, + { "K", 667, nullptr }, + { "iogonek", 222, nullptr }, + { "backslash", 278, nullptr }, + { "L", 556, nullptr }, + { "periodcentered", 278, nullptr }, + { "M", 833, nullptr }, + { "N", 722, nullptr }, + { "omacron", 556, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 778, nullptr }, + { "P", 667, nullptr }, + { "Q", 778, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 722, nullptr }, + { "Aacute", 667, nullptr }, + { "caron", 333, nullptr }, + { "S", 667, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 556, nullptr }, + { "V", 667, nullptr }, + { "W", 944, nullptr }, + { "X", 667, nullptr }, + { "question", 556, nullptr }, + { "equal", 584, nullptr }, + { "Y", 667, nullptr }, + { "Z", 611, nullptr }, + { "four", 556, nullptr }, + { "a", 556, nullptr }, + { "Gcommaaccent", 778, nullptr }, + { "b", 556, nullptr }, + { "c", 500, nullptr }, + { "d", 556, nullptr }, + { "e", 556, nullptr }, + { "f", 278, nullptr }, + { "g", 556, nullptr }, + { "bullet", 350, nullptr }, + { "h", 556, nullptr }, + { "i", 222, nullptr }, + { "Oslash", 778, nullptr }, + { "dagger", 556, nullptr }, + { "j", 222, nullptr }, + { "k", 500, nullptr }, + { "l", 222, nullptr }, + { "m", 833, nullptr }, + { "n", 556, nullptr }, + { "tcommaaccent", 278, nullptr }, + { "o", 556, nullptr }, + { "ordfeminine", 370, nullptr }, + { "ring", 333, nullptr }, + { "p", 556, nullptr }, + { "q", 556, nullptr }, + { "uhungarumlaut", 556, nullptr }, + { "r", 333, nullptr }, + { "twosuperior", 333, nullptr }, + { "aacute", 556, nullptr }, + { "s", 500, nullptr }, + { "OE", 1000, nullptr }, + { "t", 278, nullptr }, + { "divide", 584, nullptr }, + { "u", 556, nullptr }, + { "Ccaron", 722, nullptr }, + { "v", 500, nullptr }, + { "w", 722, nullptr }, + { "x", 500, nullptr }, + { "y", 500, nullptr }, + { "z", 500, nullptr }, + { "Gbreve", 778, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 278, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 355, nullptr }, + { "gcommaaccent", 556, nullptr }, + { "mu", 556, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 667, nullptr }, + { "Lslash", 556, nullptr }, + { "semicolon", 278, nullptr }, + { "oslash", 611, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 471, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 500, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 556, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 556, nullptr }, + { "nacute", 556, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 778, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 500, nullptr }, + { "AE", 1000, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 222, nullptr }, + { "quotedblleft", 333, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 191, nullptr }, + { "eight", 556, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 556, nullptr }, + { "oe", 944, nullptr }, + { "Abreve", 667, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 556, nullptr }, + { "Adieresis", 667, nullptr }, + { "copyright", 737, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 556, nullptr }, + { "Idieresis", 278, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 556, nullptr }, + { "emacron", 556, nullptr }, + { "Odieresis", 778, nullptr }, + { "ucircumflex", 556, nullptr }, + { "bracketleft", 278, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 222, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 667, nullptr }, + { "umacron", 556, nullptr }, + { "abreve", 556, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 556, nullptr }, + { "egrave", 556, nullptr }, + { "edieresis", 556, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 889, nullptr }, + { "asterisk", 389, nullptr }, + { "odieresis", 556, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 556, nullptr }, + { "nine", 556, nullptr }, + { "five", 556, nullptr }, + { "udieresis", 556, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 667, nullptr }, + { "threequarters", 834, nullptr }, + { "guillemotright", 556, nullptr }, + { "Ccedilla", 722, nullptr }, + { "ydieresis", 500, nullptr }, + { "tilde", 333, nullptr }, + { "at", 1015, nullptr }, + { "eacute", 556, nullptr }, + { "underscore", 556, nullptr }, + { "Euro", 556, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 584, nullptr }, + { "zero", 556, nullptr }, + { "eth", 556, nullptr }, + { "Scedilla", 667, nullptr }, + { "Ograve", 778, nullptr }, + { "Racute", 722, nullptr }, + { "partialdiff", 476, nullptr }, + { "uacute", 556, nullptr }, + { "braceleft", 334, nullptr }, + { "Thorn", 667, nullptr }, + { "zcaron", 500, nullptr }, + { "scommaaccent", 500, nullptr }, + { "ccedilla", 500, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 556, nullptr }, + { "Ocircumflex", 778, nullptr }, + { "Oacute", 778, nullptr }, + { "scedilla", 500, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 556, nullptr }, + { "racute", 333, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 556, nullptr }, + { "degree", 400, nullptr }, + { "registered", 737, nullptr }, + { "radical", 453, nullptr }, + { "Aring", 667, nullptr }, + { "percent", 889, nullptr }, + { "six", 556, nullptr }, + { "paragraph", 537, nullptr }, + { "dcaron", 643, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 556, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 278, nullptr }, + { "Lacute", 556, nullptr }, + { "ocircumflex", 556, nullptr }, + { "oacute", 556, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 556, nullptr }, + { "tcaron", 317, nullptr }, + { "eogonek", 556, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 778, nullptr }, + { "asciicircum", 469, nullptr }, + { "aring", 556, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 556, nullptr }, + { "bracketright", 278, nullptr }, + { "Iacute", 278, nullptr }, + { "ampersand", 667, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 222, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 584, nullptr }, + { "uring", 556, nullptr }, + { "quotesinglbase", 222, nullptr }, + { "lcommaaccent", 222, nullptr }, + { "Yacute", 667, nullptr }, + { "ohungarumlaut", 556, nullptr }, + { "threesuperior", 333, nullptr }, + { "acute", 333, nullptr }, + { "section", 556, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 333, nullptr }, + { "ncaron", 556, nullptr }, + { "florin", 556, nullptr }, + { "yacute", 500, nullptr }, + { "Rcommaaccent", 722, nullptr }, + { "fi", 500, nullptr }, + { "fl", 500, nullptr }, + { "Acircumflex", 667, nullptr }, + { "Cacute", 722, nullptr }, + { "Icircumflex", 278, nullptr }, + { "guillemotleft", 556, nullptr }, + { "germandbls", 611, nullptr }, + { "Amacron", 667, nullptr }, + { "seven", 556, nullptr }, + { "Sacute", 667, nullptr }, + { "ordmasculine", 365, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 556, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 278, nullptr }, + { "rcommaaccent", 333, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 556, nullptr }, + { "cacute", 500, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 334, nullptr }, + { "quotedblright", 333, nullptr }, + { "amacron", 556, nullptr }, + { "sacute", 500, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 556, nullptr }, + { "currency", 556, nullptr }, + { "logicalnot", 584, nullptr }, + { "zdotaccent", 500, nullptr }, + { "Atilde", 667, nullptr }, + { "breve", 333, nullptr }, + { "bar", 260, nullptr }, + { "fraction", 167, nullptr }, + { "less", 584, nullptr }, + { "ecaron", 556, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 278, nullptr }, + { "period", 278, nullptr }, + { "Rcaron", 722, nullptr }, + { "Kcommaaccent", 667, nullptr }, + { "greater", 584, nullptr }, + { "atilde", 556, nullptr }, + { "brokenbar", 260, nullptr }, + { "quoteleft", 222, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 333, nullptr } }; static BuiltinFontWidth symbolWidthsTab[] = { - { "bracketleftex", 384, NULL }, - { "alpha", 631, NULL }, - { "union", 768, NULL }, - { "infinity", 713, NULL }, - { "comma", 250, NULL }, - { "copyrightsans", 790, NULL }, - { "plusminus", 549, NULL }, - { "arrowup", 603, NULL }, - { "apple", 790, NULL }, - { "parenleftbt", 384, NULL }, - { "notelement", 713, NULL }, - { "colon", 278, NULL }, - { "beta", 549, NULL }, - { "braceleftbt", 494, NULL }, - { "Lambda", 686, NULL }, - { "Phi", 763, NULL }, - { "minus", 549, NULL }, - { "space", 250, NULL }, - { "Sigma", 592, NULL }, - { "approxequal", 549, NULL }, - { "minute", 247, NULL }, - { "circleplus", 768, NULL }, - { "Omicron", 722, NULL }, - { "three", 500, NULL }, - { "numbersign", 500, NULL }, - { "lambda", 549, NULL }, - { "phi", 521, NULL }, - { "aleph", 823, NULL }, - { "Tau", 611, NULL }, - { "spade", 753, NULL }, - { "logicaland", 603, NULL }, - { "sigma", 603, NULL }, - { "propersuperset", 713, NULL }, - { "omicron", 549, NULL }, - { "question", 444, NULL }, - { "equal", 549, NULL }, - { "Epsilon", 611, NULL }, - { "emptyset", 823, NULL }, - { "diamond", 753, NULL }, - { "four", 500, NULL }, - { "Mu", 889, NULL }, - { "parenlefttp", 384, NULL }, - { "club", 753, NULL }, - { "bullet", 460, NULL }, - { "Omega", 768, NULL }, - { "tau", 439, NULL }, - { "Upsilon", 690, NULL }, - { "bracelefttp", 494, NULL }, - { "heart", 753, NULL }, - { "divide", 549, NULL }, - { "epsilon", 439, NULL }, - { "logicalor", 603, NULL }, - { "parenleftex", 384, NULL }, - { "greaterequal", 549, NULL }, - { "mu", 576, NULL }, - { "Nu", 722, NULL }, - { "therefore", 863, NULL }, - { "notsubset", 713, NULL }, - { "omega", 686, NULL }, - { "semicolon", 278, NULL }, - { "element", 713, NULL }, - { "upsilon", 576, NULL }, - { "existential", 549, NULL }, - { "integralbt", 686, NULL }, - { "lessequal", 549, NULL }, - { "phi1", 603, NULL }, - { "lozenge", 494, NULL }, - { "trademarkserif", 890, NULL }, - { "parenright", 333, NULL }, - { "reflexsuperset", 713, NULL }, - { "sigma1", 439, NULL }, - { "nu", 521, NULL }, - { "Gamma", 603, NULL }, - { "angleright", 329, NULL }, - { "ellipsis", 1000, NULL }, - { "Rho", 556, NULL }, - { "parenrightbt", 384, NULL }, - { "radicalex", 500, NULL }, - { "eight", 500, NULL }, - { "angleleft", 329, NULL }, - { "arrowdbldown", 603, NULL }, - { "congruent", 549, NULL }, - { "Theta", 741, NULL }, - { "intersection", 768, NULL }, - { "Pi", 768, NULL }, - { "slash", 278, NULL }, - { "registerserif", 790, NULL }, - { "parenleft", 333, NULL }, - { "one", 500, NULL }, - { "gamma", 411, NULL }, - { "bracketleft", 333, NULL }, - { "rho", 549, NULL }, - { "circlemultiply", 768, NULL }, - { "Chi", 722, NULL }, - { "theta", 521, NULL }, - { "pi", 549, NULL }, - { "integraltp", 686, NULL }, - { "Eta", 722, NULL }, - { "product", 823, NULL }, - { "nine", 500, NULL }, - { "five", 500, NULL }, - { "propersubset", 713, NULL }, - { "bracketrightbt", 384, NULL }, - { "trademarksans", 786, NULL }, - { "dotmath", 250, NULL }, - { "integralex", 686, NULL }, - { "chi", 549, NULL }, - { "parenrighttp", 384, NULL }, - { "eta", 603, NULL }, - { "underscore", 500, NULL }, - { "Euro", 750, NULL }, - { "multiply", 549, NULL }, - { "zero", 500, NULL }, - { "partialdiff", 494, NULL }, - { "angle", 768, NULL }, - { "arrowdblleft", 987, NULL }, - { "braceleft", 480, NULL }, - { "parenrightex", 384, NULL }, - { "Rfraktur", 795, NULL }, - { "Zeta", 611, NULL }, - { "braceex", 494, NULL }, - { "arrowdblup", 603, NULL }, - { "arrowdown", 603, NULL }, - { "Ifraktur", 686, NULL }, - { "degree", 400, NULL }, - { "Iota", 333, NULL }, - { "perpendicular", 658, NULL }, - { "radical", 549, NULL }, - { "asteriskmath", 500, NULL }, - { "percent", 833, NULL }, - { "zeta", 494, NULL }, - { "six", 500, NULL }, - { "two", 500, NULL }, - { "weierstrass", 987, NULL }, - { "summation", 713, NULL }, - { "bracketrighttp", 384, NULL }, - { "carriagereturn", 658, NULL }, - { "suchthat", 439, NULL }, - { "arrowvertex", 603, NULL }, - { "Delta", 612, NULL }, - { "iota", 329, NULL }, - { "arrowhorizex", 1000, NULL }, - { "bracketrightex", 384, NULL }, - { "bracketright", 333, NULL }, - { "ampersand", 778, NULL }, - { "plus", 549, NULL }, - { "proportional", 713, NULL }, - { "delta", 494, NULL }, - { "copyrightserif", 790, NULL }, - { "bracerightmid", 494, NULL }, - { "arrowleft", 987, NULL }, - { "second", 411, NULL }, - { "arrowdblboth", 1042, NULL }, - { "florin", 500, NULL }, - { "Psi", 795, NULL }, - { "bracerightbt", 494, NULL }, - { "bracketleftbt", 384, NULL }, - { "seven", 500, NULL }, - { "braceleftmid", 494, NULL }, - { "notequal", 549, NULL }, - { "psi", 686, NULL }, - { "equivalence", 549, NULL }, - { "universal", 713, NULL }, - { "arrowdblright", 987, NULL }, - { "braceright", 480, NULL }, - { "reflexsubset", 713, NULL }, - { "Xi", 645, NULL }, - { "theta1", 631, NULL }, - { "logicalnot", 713, NULL }, - { "Kappa", 722, NULL }, - { "similar", 549, NULL }, - { "bar", 200, NULL }, - { "fraction", 167, NULL }, - { "less", 549, NULL }, - { "registersans", 790, NULL }, - { "omega1", 713, NULL }, - { "exclam", 333, NULL }, - { "Upsilon1", 620, NULL }, - { "bracerighttp", 494, NULL }, - { "xi", 493, NULL }, - { "period", 250, NULL }, - { "Alpha", 722, NULL }, - { "arrowright", 987, NULL }, - { "greater", 549, NULL }, - { "bracketlefttp", 384, NULL }, - { "kappa", 549, NULL }, - { "gradient", 713, NULL }, - { "integral", 274, NULL }, - { "arrowboth", 1042, NULL }, - { "Beta", 667, NULL } + { "bracketleftex", 384, nullptr }, + { "alpha", 631, nullptr }, + { "union", 768, nullptr }, + { "infinity", 713, nullptr }, + { "comma", 250, nullptr }, + { "copyrightsans", 790, nullptr }, + { "plusminus", 549, nullptr }, + { "arrowup", 603, nullptr }, + { "apple", 790, nullptr }, + { "parenleftbt", 384, nullptr }, + { "notelement", 713, nullptr }, + { "colon", 278, nullptr }, + { "beta", 549, nullptr }, + { "braceleftbt", 494, nullptr }, + { "Lambda", 686, nullptr }, + { "Phi", 763, nullptr }, + { "minus", 549, nullptr }, + { "space", 250, nullptr }, + { "Sigma", 592, nullptr }, + { "approxequal", 549, nullptr }, + { "minute", 247, nullptr }, + { "circleplus", 768, nullptr }, + { "Omicron", 722, nullptr }, + { "three", 500, nullptr }, + { "numbersign", 500, nullptr }, + { "lambda", 549, nullptr }, + { "phi", 521, nullptr }, + { "aleph", 823, nullptr }, + { "Tau", 611, nullptr }, + { "spade", 753, nullptr }, + { "logicaland", 603, nullptr }, + { "sigma", 603, nullptr }, + { "propersuperset", 713, nullptr }, + { "omicron", 549, nullptr }, + { "question", 444, nullptr }, + { "equal", 549, nullptr }, + { "Epsilon", 611, nullptr }, + { "emptyset", 823, nullptr }, + { "diamond", 753, nullptr }, + { "four", 500, nullptr }, + { "Mu", 889, nullptr }, + { "parenlefttp", 384, nullptr }, + { "club", 753, nullptr }, + { "bullet", 460, nullptr }, + { "Omega", 768, nullptr }, + { "tau", 439, nullptr }, + { "Upsilon", 690, nullptr }, + { "bracelefttp", 494, nullptr }, + { "heart", 753, nullptr }, + { "divide", 549, nullptr }, + { "epsilon", 439, nullptr }, + { "logicalor", 603, nullptr }, + { "parenleftex", 384, nullptr }, + { "greaterequal", 549, nullptr }, + { "mu", 576, nullptr }, + { "Nu", 722, nullptr }, + { "therefore", 863, nullptr }, + { "notsubset", 713, nullptr }, + { "omega", 686, nullptr }, + { "semicolon", 278, nullptr }, + { "element", 713, nullptr }, + { "upsilon", 576, nullptr }, + { "existential", 549, nullptr }, + { "integralbt", 686, nullptr }, + { "lessequal", 549, nullptr }, + { "phi1", 603, nullptr }, + { "lozenge", 494, nullptr }, + { "trademarkserif", 890, nullptr }, + { "parenright", 333, nullptr }, + { "reflexsuperset", 713, nullptr }, + { "sigma1", 439, nullptr }, + { "nu", 521, nullptr }, + { "Gamma", 603, nullptr }, + { "angleright", 329, nullptr }, + { "ellipsis", 1000, nullptr }, + { "Rho", 556, nullptr }, + { "parenrightbt", 384, nullptr }, + { "radicalex", 500, nullptr }, + { "eight", 500, nullptr }, + { "angleleft", 329, nullptr }, + { "arrowdbldown", 603, nullptr }, + { "congruent", 549, nullptr }, + { "Theta", 741, nullptr }, + { "intersection", 768, nullptr }, + { "Pi", 768, nullptr }, + { "slash", 278, nullptr }, + { "registerserif", 790, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 500, nullptr }, + { "gamma", 411, nullptr }, + { "bracketleft", 333, nullptr }, + { "rho", 549, nullptr }, + { "circlemultiply", 768, nullptr }, + { "Chi", 722, nullptr }, + { "theta", 521, nullptr }, + { "pi", 549, nullptr }, + { "integraltp", 686, nullptr }, + { "Eta", 722, nullptr }, + { "product", 823, nullptr }, + { "nine", 500, nullptr }, + { "five", 500, nullptr }, + { "propersubset", 713, nullptr }, + { "bracketrightbt", 384, nullptr }, + { "trademarksans", 786, nullptr }, + { "dotmath", 250, nullptr }, + { "integralex", 686, nullptr }, + { "chi", 549, nullptr }, + { "parenrighttp", 384, nullptr }, + { "eta", 603, nullptr }, + { "underscore", 500, nullptr }, + { "Euro", 750, nullptr }, + { "multiply", 549, nullptr }, + { "zero", 500, nullptr }, + { "partialdiff", 494, nullptr }, + { "angle", 768, nullptr }, + { "arrowdblleft", 987, nullptr }, + { "braceleft", 480, nullptr }, + { "parenrightex", 384, nullptr }, + { "Rfraktur", 795, nullptr }, + { "Zeta", 611, nullptr }, + { "braceex", 494, nullptr }, + { "arrowdblup", 603, nullptr }, + { "arrowdown", 603, nullptr }, + { "Ifraktur", 686, nullptr }, + { "degree", 400, nullptr }, + { "Iota", 333, nullptr }, + { "perpendicular", 658, nullptr }, + { "radical", 549, nullptr }, + { "asteriskmath", 500, nullptr }, + { "percent", 833, nullptr }, + { "zeta", 494, nullptr }, + { "six", 500, nullptr }, + { "two", 500, nullptr }, + { "weierstrass", 987, nullptr }, + { "summation", 713, nullptr }, + { "bracketrighttp", 384, nullptr }, + { "carriagereturn", 658, nullptr }, + { "suchthat", 439, nullptr }, + { "arrowvertex", 603, nullptr }, + { "Delta", 612, nullptr }, + { "iota", 329, nullptr }, + { "arrowhorizex", 1000, nullptr }, + { "bracketrightex", 384, nullptr }, + { "bracketright", 333, nullptr }, + { "ampersand", 778, nullptr }, + { "plus", 549, nullptr }, + { "proportional", 713, nullptr }, + { "delta", 494, nullptr }, + { "copyrightserif", 790, nullptr }, + { "bracerightmid", 494, nullptr }, + { "arrowleft", 987, nullptr }, + { "second", 411, nullptr }, + { "arrowdblboth", 1042, nullptr }, + { "florin", 500, nullptr }, + { "Psi", 795, nullptr }, + { "bracerightbt", 494, nullptr }, + { "bracketleftbt", 384, nullptr }, + { "seven", 500, nullptr }, + { "braceleftmid", 494, nullptr }, + { "notequal", 549, nullptr }, + { "psi", 686, nullptr }, + { "equivalence", 549, nullptr }, + { "universal", 713, nullptr }, + { "arrowdblright", 987, nullptr }, + { "braceright", 480, nullptr }, + { "reflexsubset", 713, nullptr }, + { "Xi", 645, nullptr }, + { "theta1", 631, nullptr }, + { "logicalnot", 713, nullptr }, + { "Kappa", 722, nullptr }, + { "similar", 549, nullptr }, + { "bar", 200, nullptr }, + { "fraction", 167, nullptr }, + { "less", 549, nullptr }, + { "registersans", 790, nullptr }, + { "omega1", 713, nullptr }, + { "exclam", 333, nullptr }, + { "Upsilon1", 620, nullptr }, + { "bracerighttp", 494, nullptr }, + { "xi", 493, nullptr }, + { "period", 250, nullptr }, + { "Alpha", 722, nullptr }, + { "arrowright", 987, nullptr }, + { "greater", 549, nullptr }, + { "bracketlefttp", 384, nullptr }, + { "kappa", 549, nullptr }, + { "gradient", 713, nullptr }, + { "integral", 274, nullptr }, + { "arrowboth", 1042, nullptr }, + { "Beta", 667, nullptr } }; static BuiltinFontWidth timesBoldWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 444, NULL }, - { "kcommaaccent", 556, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 667, NULL }, - { "comma", 250, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 570, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 444, NULL }, - { "asciitilde", 520, NULL }, - { "colon", 333, NULL }, - { "onehalf", 750, NULL }, - { "dollar", 500, NULL }, - { "Lcaron", 667, NULL }, - { "ntilde", 556, NULL }, - { "Aogonek", 722, NULL }, - { "ncommaaccent", 556, NULL }, - { "minus", 570, NULL }, - { "Iogonek", 389, NULL }, - { "zacute", 444, NULL }, - { "yen", 500, NULL }, - { "space", 250, NULL }, - { "Omacron", 778, NULL }, - { "questiondown", 500, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 722, NULL }, - { "three", 500, NULL }, - { "numbersign", 500, NULL }, - { "lcaron", 394, NULL }, - { "A", 722, NULL }, - { "B", 667, NULL }, - { "C", 722, NULL }, - { "aogonek", 500, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 750, NULL }, - { "F", 611, NULL }, - { "G", 778, NULL }, - { "H", 778, NULL }, - { "I", 389, NULL }, - { "J", 500, NULL }, - { "K", 778, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 667, NULL }, - { "periodcentered", 250, NULL }, - { "M", 944, NULL }, - { "N", 722, NULL }, - { "omacron", 500, NULL }, - { "Tcommaaccent", 667, NULL }, - { "O", 778, NULL }, - { "P", 611, NULL }, - { "Q", 778, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 722, NULL }, - { "Aacute", 722, NULL }, - { "caron", 333, NULL }, - { "S", 556, NULL }, - { "T", 667, NULL }, - { "U", 722, NULL }, - { "agrave", 500, NULL }, - { "V", 722, NULL }, - { "W", 1000, NULL }, - { "X", 722, NULL }, - { "question", 500, NULL }, - { "equal", 570, NULL }, - { "Y", 722, NULL }, - { "Z", 667, NULL }, - { "four", 500, NULL }, - { "a", 500, NULL }, - { "Gcommaaccent", 778, NULL }, - { "b", 556, NULL }, - { "c", 444, NULL }, - { "d", 556, NULL }, - { "e", 444, NULL }, - { "f", 333, NULL }, - { "g", 500, NULL }, - { "bullet", 350, NULL }, - { "h", 556, NULL }, - { "i", 278, NULL }, - { "Oslash", 778, NULL }, - { "dagger", 500, NULL }, - { "j", 333, NULL }, - { "k", 556, NULL }, - { "l", 278, NULL }, - { "m", 833, NULL }, - { "n", 556, NULL }, - { "tcommaaccent", 333, NULL }, - { "o", 500, NULL }, - { "ordfeminine", 300, NULL }, - { "ring", 333, NULL }, - { "p", 556, NULL }, - { "q", 556, NULL }, - { "uhungarumlaut", 556, NULL }, - { "r", 444, NULL }, - { "twosuperior", 300, NULL }, - { "aacute", 500, NULL }, - { "s", 389, NULL }, - { "OE", 1000, NULL }, - { "t", 333, NULL }, - { "divide", 570, NULL }, - { "u", 556, NULL }, - { "Ccaron", 722, NULL }, - { "v", 500, NULL }, - { "w", 722, NULL }, - { "x", 500, NULL }, - { "y", 500, NULL }, - { "z", 444, NULL }, - { "Gbreve", 778, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 389, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 555, NULL }, - { "gcommaaccent", 500, NULL }, - { "mu", 556, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 556, NULL }, - { "Lslash", 667, NULL }, - { "semicolon", 333, NULL }, - { "oslash", 500, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 494, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 444, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 500, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 500, NULL }, - { "nacute", 556, NULL }, - { "macron", 333, NULL }, - { "Otilde", 778, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 389, NULL }, - { "AE", 1000, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 500, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 278, NULL }, - { "eight", 500, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 500, NULL }, - { "oe", 722, NULL }, - { "Abreve", 722, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 444, NULL }, - { "Adieresis", 722, NULL }, - { "copyright", 747, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 500, NULL }, - { "Idieresis", 389, NULL }, - { "parenleft", 333, NULL }, - { "one", 500, NULL }, - { "emacron", 444, NULL }, - { "Odieresis", 778, NULL }, - { "ucircumflex", 556, NULL }, - { "bracketleft", 333, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 333, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 722, NULL }, - { "umacron", 556, NULL }, - { "abreve", 500, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 500, NULL }, - { "egrave", 444, NULL }, - { "edieresis", 444, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 722, NULL }, - { "asterisk", 500, NULL }, - { "odieresis", 500, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 556, NULL }, - { "nine", 500, NULL }, - { "five", 500, NULL }, - { "udieresis", 556, NULL }, - { "Zcaron", 667, NULL }, - { "Scommaaccent", 556, NULL }, - { "threequarters", 750, NULL }, - { "guillemotright", 500, NULL }, - { "Ccedilla", 722, NULL }, - { "ydieresis", 500, NULL }, - { "tilde", 333, NULL }, - { "at", 930, NULL }, - { "eacute", 444, NULL }, - { "underscore", 500, NULL }, - { "Euro", 500, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 570, NULL }, - { "zero", 500, NULL }, - { "eth", 500, NULL }, - { "Scedilla", 556, NULL }, - { "Ograve", 778, NULL }, - { "Racute", 722, NULL }, - { "partialdiff", 494, NULL }, - { "uacute", 556, NULL }, - { "braceleft", 394, NULL }, - { "Thorn", 611, NULL }, - { "zcaron", 444, NULL }, - { "scommaaccent", 389, NULL }, - { "ccedilla", 444, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 556, NULL }, - { "Ocircumflex", 778, NULL }, - { "Oacute", 778, NULL }, - { "scedilla", 389, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 500, NULL }, - { "racute", 444, NULL }, - { "Tcaron", 667, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 556, NULL }, - { "degree", 400, NULL }, - { "registered", 747, NULL }, - { "radical", 549, NULL }, - { "Aring", 722, NULL }, - { "percent", 1000, NULL }, - { "six", 500, NULL }, - { "paragraph", 540, NULL }, - { "dcaron", 672, NULL }, - { "Uogonek", 722, NULL }, - { "two", 500, NULL }, - { "summation", 600, NULL }, - { "Igrave", 389, NULL }, - { "Lacute", 667, NULL }, - { "ocircumflex", 500, NULL }, - { "oacute", 500, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 667, NULL }, - { "tcaron", 416, NULL }, - { "eogonek", 444, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 778, NULL }, - { "asciicircum", 581, NULL }, - { "aring", 500, NULL }, - { "grave", 333, NULL }, - { "uogonek", 556, NULL }, - { "bracketright", 333, NULL }, - { "Iacute", 389, NULL }, - { "ampersand", 833, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 570, NULL }, - { "uring", 556, NULL }, - { "quotesinglbase", 333, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 722, NULL }, - { "ohungarumlaut", 500, NULL }, - { "threesuperior", 300, NULL }, - { "acute", 333, NULL }, - { "section", 500, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 500, NULL }, - { "ncaron", 556, NULL }, - { "florin", 500, NULL }, - { "yacute", 500, NULL }, - { "Rcommaaccent", 722, NULL }, - { "fi", 556, NULL }, - { "fl", 556, NULL }, - { "Acircumflex", 722, NULL }, - { "Cacute", 722, NULL }, - { "Icircumflex", 389, NULL }, - { "guillemotleft", 500, NULL }, - { "germandbls", 556, NULL }, - { "Amacron", 722, NULL }, - { "seven", 500, NULL }, - { "Sacute", 556, NULL }, - { "ordmasculine", 330, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 500, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 389, NULL }, - { "rcommaaccent", 444, NULL }, - { "Zdotaccent", 667, NULL }, - { "acircumflex", 500, NULL }, - { "cacute", 444, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 394, NULL }, - { "quotedblright", 500, NULL }, - { "amacron", 500, NULL }, - { "sacute", 389, NULL }, - { "imacron", 278, NULL }, - { "cent", 500, NULL }, - { "currency", 500, NULL }, - { "logicalnot", 570, NULL }, - { "zdotaccent", 444, NULL }, - { "Atilde", 722, NULL }, - { "breve", 333, NULL }, - { "bar", 220, NULL }, - { "fraction", 167, NULL }, - { "less", 570, NULL }, - { "ecaron", 444, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 333, NULL }, - { "period", 250, NULL }, - { "Rcaron", 722, NULL }, - { "Kcommaaccent", 778, NULL }, - { "greater", 570, NULL }, - { "atilde", 500, NULL }, - { "brokenbar", 220, NULL }, - { "quoteleft", 333, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 300, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 444, nullptr }, + { "kcommaaccent", 556, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 667, nullptr }, + { "comma", 250, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 570, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 444, nullptr }, + { "asciitilde", 520, nullptr }, + { "colon", 333, nullptr }, + { "onehalf", 750, nullptr }, + { "dollar", 500, nullptr }, + { "Lcaron", 667, nullptr }, + { "ntilde", 556, nullptr }, + { "Aogonek", 722, nullptr }, + { "ncommaaccent", 556, nullptr }, + { "minus", 570, nullptr }, + { "Iogonek", 389, nullptr }, + { "zacute", 444, nullptr }, + { "yen", 500, nullptr }, + { "space", 250, nullptr }, + { "Omacron", 778, nullptr }, + { "questiondown", 500, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 722, nullptr }, + { "three", 500, nullptr }, + { "numbersign", 500, nullptr }, + { "lcaron", 394, nullptr }, + { "A", 722, nullptr }, + { "B", 667, nullptr }, + { "C", 722, nullptr }, + { "aogonek", 500, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 750, nullptr }, + { "F", 611, nullptr }, + { "G", 778, nullptr }, + { "H", 778, nullptr }, + { "I", 389, nullptr }, + { "J", 500, nullptr }, + { "K", 778, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 667, nullptr }, + { "periodcentered", 250, nullptr }, + { "M", 944, nullptr }, + { "N", 722, nullptr }, + { "omacron", 500, nullptr }, + { "Tcommaaccent", 667, nullptr }, + { "O", 778, nullptr }, + { "P", 611, nullptr }, + { "Q", 778, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 722, nullptr }, + { "Aacute", 722, nullptr }, + { "caron", 333, nullptr }, + { "S", 556, nullptr }, + { "T", 667, nullptr }, + { "U", 722, nullptr }, + { "agrave", 500, nullptr }, + { "V", 722, nullptr }, + { "W", 1000, nullptr }, + { "X", 722, nullptr }, + { "question", 500, nullptr }, + { "equal", 570, nullptr }, + { "Y", 722, nullptr }, + { "Z", 667, nullptr }, + { "four", 500, nullptr }, + { "a", 500, nullptr }, + { "Gcommaaccent", 778, nullptr }, + { "b", 556, nullptr }, + { "c", 444, nullptr }, + { "d", 556, nullptr }, + { "e", 444, nullptr }, + { "f", 333, nullptr }, + { "g", 500, nullptr }, + { "bullet", 350, nullptr }, + { "h", 556, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 778, nullptr }, + { "dagger", 500, nullptr }, + { "j", 333, nullptr }, + { "k", 556, nullptr }, + { "l", 278, nullptr }, + { "m", 833, nullptr }, + { "n", 556, nullptr }, + { "tcommaaccent", 333, nullptr }, + { "o", 500, nullptr }, + { "ordfeminine", 300, nullptr }, + { "ring", 333, nullptr }, + { "p", 556, nullptr }, + { "q", 556, nullptr }, + { "uhungarumlaut", 556, nullptr }, + { "r", 444, nullptr }, + { "twosuperior", 300, nullptr }, + { "aacute", 500, nullptr }, + { "s", 389, nullptr }, + { "OE", 1000, nullptr }, + { "t", 333, nullptr }, + { "divide", 570, nullptr }, + { "u", 556, nullptr }, + { "Ccaron", 722, nullptr }, + { "v", 500, nullptr }, + { "w", 722, nullptr }, + { "x", 500, nullptr }, + { "y", 500, nullptr }, + { "z", 444, nullptr }, + { "Gbreve", 778, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 389, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 555, nullptr }, + { "gcommaaccent", 500, nullptr }, + { "mu", 556, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 556, nullptr }, + { "Lslash", 667, nullptr }, + { "semicolon", 333, nullptr }, + { "oslash", 500, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 494, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 444, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 500, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 500, nullptr }, + { "nacute", 556, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 778, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 389, nullptr }, + { "AE", 1000, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 500, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 278, nullptr }, + { "eight", 500, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 500, nullptr }, + { "oe", 722, nullptr }, + { "Abreve", 722, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 444, nullptr }, + { "Adieresis", 722, nullptr }, + { "copyright", 747, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 500, nullptr }, + { "Idieresis", 389, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 500, nullptr }, + { "emacron", 444, nullptr }, + { "Odieresis", 778, nullptr }, + { "ucircumflex", 556, nullptr }, + { "bracketleft", 333, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 333, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 722, nullptr }, + { "umacron", 556, nullptr }, + { "abreve", 500, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 500, nullptr }, + { "egrave", 444, nullptr }, + { "edieresis", 444, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 722, nullptr }, + { "asterisk", 500, nullptr }, + { "odieresis", 500, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 556, nullptr }, + { "nine", 500, nullptr }, + { "five", 500, nullptr }, + { "udieresis", 556, nullptr }, + { "Zcaron", 667, nullptr }, + { "Scommaaccent", 556, nullptr }, + { "threequarters", 750, nullptr }, + { "guillemotright", 500, nullptr }, + { "Ccedilla", 722, nullptr }, + { "ydieresis", 500, nullptr }, + { "tilde", 333, nullptr }, + { "at", 930, nullptr }, + { "eacute", 444, nullptr }, + { "underscore", 500, nullptr }, + { "Euro", 500, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 570, nullptr }, + { "zero", 500, nullptr }, + { "eth", 500, nullptr }, + { "Scedilla", 556, nullptr }, + { "Ograve", 778, nullptr }, + { "Racute", 722, nullptr }, + { "partialdiff", 494, nullptr }, + { "uacute", 556, nullptr }, + { "braceleft", 394, nullptr }, + { "Thorn", 611, nullptr }, + { "zcaron", 444, nullptr }, + { "scommaaccent", 389, nullptr }, + { "ccedilla", 444, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 556, nullptr }, + { "Ocircumflex", 778, nullptr }, + { "Oacute", 778, nullptr }, + { "scedilla", 389, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 500, nullptr }, + { "racute", 444, nullptr }, + { "Tcaron", 667, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 556, nullptr }, + { "degree", 400, nullptr }, + { "registered", 747, nullptr }, + { "radical", 549, nullptr }, + { "Aring", 722, nullptr }, + { "percent", 1000, nullptr }, + { "six", 500, nullptr }, + { "paragraph", 540, nullptr }, + { "dcaron", 672, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 500, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 389, nullptr }, + { "Lacute", 667, nullptr }, + { "ocircumflex", 500, nullptr }, + { "oacute", 500, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 667, nullptr }, + { "tcaron", 416, nullptr }, + { "eogonek", 444, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 778, nullptr }, + { "asciicircum", 581, nullptr }, + { "aring", 500, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 556, nullptr }, + { "bracketright", 333, nullptr }, + { "Iacute", 389, nullptr }, + { "ampersand", 833, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 570, nullptr }, + { "uring", 556, nullptr }, + { "quotesinglbase", 333, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 722, nullptr }, + { "ohungarumlaut", 500, nullptr }, + { "threesuperior", 300, nullptr }, + { "acute", 333, nullptr }, + { "section", 500, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 500, nullptr }, + { "ncaron", 556, nullptr }, + { "florin", 500, nullptr }, + { "yacute", 500, nullptr }, + { "Rcommaaccent", 722, nullptr }, + { "fi", 556, nullptr }, + { "fl", 556, nullptr }, + { "Acircumflex", 722, nullptr }, + { "Cacute", 722, nullptr }, + { "Icircumflex", 389, nullptr }, + { "guillemotleft", 500, nullptr }, + { "germandbls", 556, nullptr }, + { "Amacron", 722, nullptr }, + { "seven", 500, nullptr }, + { "Sacute", 556, nullptr }, + { "ordmasculine", 330, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 500, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 389, nullptr }, + { "rcommaaccent", 444, nullptr }, + { "Zdotaccent", 667, nullptr }, + { "acircumflex", 500, nullptr }, + { "cacute", 444, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 394, nullptr }, + { "quotedblright", 500, nullptr }, + { "amacron", 500, nullptr }, + { "sacute", 389, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 500, nullptr }, + { "currency", 500, nullptr }, + { "logicalnot", 570, nullptr }, + { "zdotaccent", 444, nullptr }, + { "Atilde", 722, nullptr }, + { "breve", 333, nullptr }, + { "bar", 220, nullptr }, + { "fraction", 167, nullptr }, + { "less", 570, nullptr }, + { "ecaron", 444, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 333, nullptr }, + { "period", 250, nullptr }, + { "Rcaron", 722, nullptr }, + { "Kcommaaccent", 778, nullptr }, + { "greater", 570, nullptr }, + { "atilde", 500, nullptr }, + { "brokenbar", 220, nullptr }, + { "quoteleft", 333, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 300, nullptr } }; static BuiltinFontWidth timesBoldItalicWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 389, NULL }, - { "kcommaaccent", 500, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 250, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 570, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 444, NULL }, - { "asciitilde", 570, NULL }, - { "colon", 333, NULL }, - { "onehalf", 750, NULL }, - { "dollar", 500, NULL }, - { "Lcaron", 611, NULL }, - { "ntilde", 556, NULL }, - { "Aogonek", 667, NULL }, - { "ncommaaccent", 556, NULL }, - { "minus", 606, NULL }, - { "Iogonek", 389, NULL }, - { "zacute", 389, NULL }, - { "yen", 500, NULL }, - { "space", 250, NULL }, - { "Omacron", 722, NULL }, - { "questiondown", 500, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 667, NULL }, - { "three", 500, NULL }, - { "numbersign", 500, NULL }, - { "lcaron", 382, NULL }, - { "A", 667, NULL }, - { "B", 667, NULL }, - { "C", 667, NULL }, - { "aogonek", 500, NULL }, - { "D", 722, NULL }, - { "E", 667, NULL }, - { "onequarter", 750, NULL }, - { "F", 667, NULL }, - { "G", 722, NULL }, - { "H", 778, NULL }, - { "I", 389, NULL }, - { "J", 500, NULL }, - { "K", 667, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 611, NULL }, - { "periodcentered", 250, NULL }, - { "M", 889, NULL }, - { "N", 722, NULL }, - { "omacron", 500, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 722, NULL }, - { "P", 611, NULL }, - { "Q", 722, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 667, NULL }, - { "Aacute", 667, NULL }, - { "caron", 333, NULL }, - { "S", 556, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 500, NULL }, - { "V", 667, NULL }, - { "W", 889, NULL }, - { "X", 667, NULL }, - { "question", 500, NULL }, - { "equal", 570, NULL }, - { "Y", 611, NULL }, - { "Z", 611, NULL }, - { "four", 500, NULL }, - { "a", 500, NULL }, - { "Gcommaaccent", 722, NULL }, - { "b", 500, NULL }, - { "c", 444, NULL }, - { "d", 500, NULL }, - { "e", 444, NULL }, - { "f", 333, NULL }, - { "g", 500, NULL }, - { "bullet", 350, NULL }, - { "h", 556, NULL }, - { "i", 278, NULL }, - { "Oslash", 722, NULL }, - { "dagger", 500, NULL }, - { "j", 278, NULL }, - { "k", 500, NULL }, - { "l", 278, NULL }, - { "m", 778, NULL }, - { "n", 556, NULL }, - { "tcommaaccent", 278, NULL }, - { "o", 500, NULL }, - { "ordfeminine", 266, NULL }, - { "ring", 333, NULL }, - { "p", 500, NULL }, - { "q", 500, NULL }, - { "uhungarumlaut", 556, NULL }, - { "r", 389, NULL }, - { "twosuperior", 300, NULL }, - { "aacute", 500, NULL }, - { "s", 389, NULL }, - { "OE", 944, NULL }, - { "t", 278, NULL }, - { "divide", 570, NULL }, - { "u", 556, NULL }, - { "Ccaron", 667, NULL }, - { "v", 444, NULL }, - { "w", 667, NULL }, - { "x", 500, NULL }, - { "y", 444, NULL }, - { "z", 389, NULL }, - { "Gbreve", 722, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 389, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 555, NULL }, - { "gcommaaccent", 500, NULL }, - { "mu", 576, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 556, NULL }, - { "Lslash", 611, NULL }, - { "semicolon", 333, NULL }, - { "oslash", 500, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 494, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 444, NULL }, - { "Ecircumflex", 667, NULL }, - { "gbreve", 500, NULL }, - { "trademark", 1000, NULL }, - { "daggerdbl", 500, NULL }, - { "nacute", 556, NULL }, - { "macron", 333, NULL }, - { "Otilde", 722, NULL }, - { "Emacron", 667, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 389, NULL }, - { "AE", 944, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 500, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 278, NULL }, - { "eight", 500, NULL }, - { "exclamdown", 389, NULL }, - { "endash", 500, NULL }, - { "oe", 722, NULL }, - { "Abreve", 667, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 444, NULL }, - { "Adieresis", 667, NULL }, - { "copyright", 747, NULL }, - { "Egrave", 667, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 667, NULL }, - { "otilde", 500, NULL }, - { "Idieresis", 389, NULL }, - { "parenleft", 333, NULL }, - { "one", 500, NULL }, - { "emacron", 444, NULL }, - { "Odieresis", 722, NULL }, - { "ucircumflex", 556, NULL }, - { "bracketleft", 333, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 333, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 611, NULL }, - { "umacron", 556, NULL }, - { "abreve", 500, NULL }, - { "Eacute", 667, NULL }, - { "adieresis", 500, NULL }, - { "egrave", 444, NULL }, - { "edieresis", 444, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 722, NULL }, - { "asterisk", 500, NULL }, - { "odieresis", 500, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 556, NULL }, - { "nine", 500, NULL }, - { "five", 500, NULL }, - { "udieresis", 556, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 556, NULL }, - { "threequarters", 750, NULL }, - { "guillemotright", 500, NULL }, - { "Ccedilla", 667, NULL }, - { "ydieresis", 444, NULL }, - { "tilde", 333, NULL }, - { "at", 832, NULL }, - { "eacute", 444, NULL }, - { "underscore", 500, NULL }, - { "Euro", 500, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 570, NULL }, - { "zero", 500, NULL }, - { "eth", 500, NULL }, - { "Scedilla", 556, NULL }, - { "Ograve", 722, NULL }, - { "Racute", 667, NULL }, - { "partialdiff", 494, NULL }, - { "uacute", 556, NULL }, - { "braceleft", 348, NULL }, - { "Thorn", 611, NULL }, - { "zcaron", 389, NULL }, - { "scommaaccent", 389, NULL }, - { "ccedilla", 444, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 500, NULL }, - { "Ocircumflex", 722, NULL }, - { "Oacute", 722, NULL }, - { "scedilla", 389, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 500, NULL }, - { "racute", 389, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 667, NULL }, - { "thorn", 500, NULL }, - { "degree", 400, NULL }, - { "registered", 747, NULL }, - { "radical", 549, NULL }, - { "Aring", 667, NULL }, - { "percent", 833, NULL }, - { "six", 500, NULL }, - { "paragraph", 500, NULL }, - { "dcaron", 608, NULL }, - { "Uogonek", 722, NULL }, - { "two", 500, NULL }, - { "summation", 600, NULL }, - { "Igrave", 389, NULL }, - { "Lacute", 611, NULL }, - { "ocircumflex", 500, NULL }, - { "oacute", 500, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 611, NULL }, - { "tcaron", 366, NULL }, - { "eogonek", 444, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 722, NULL }, - { "asciicircum", 570, NULL }, - { "aring", 500, NULL }, - { "grave", 333, NULL }, - { "uogonek", 556, NULL }, - { "bracketright", 333, NULL }, - { "Iacute", 389, NULL }, - { "ampersand", 778, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 570, NULL }, - { "uring", 556, NULL }, - { "quotesinglbase", 333, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 611, NULL }, - { "ohungarumlaut", 500, NULL }, - { "threesuperior", 300, NULL }, - { "acute", 333, NULL }, - { "section", 500, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 500, NULL }, - { "ncaron", 556, NULL }, - { "florin", 500, NULL }, - { "yacute", 444, NULL }, - { "Rcommaaccent", 667, NULL }, - { "fi", 556, NULL }, - { "fl", 556, NULL }, - { "Acircumflex", 667, NULL }, - { "Cacute", 667, NULL }, - { "Icircumflex", 389, NULL }, - { "guillemotleft", 500, NULL }, - { "germandbls", 500, NULL }, - { "Amacron", 667, NULL }, - { "seven", 500, NULL }, - { "Sacute", 556, NULL }, - { "ordmasculine", 300, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 500, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 389, NULL }, - { "rcommaaccent", 389, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 500, NULL }, - { "cacute", 444, NULL }, - { "Ecaron", 667, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 348, NULL }, - { "quotedblright", 500, NULL }, - { "amacron", 500, NULL }, - { "sacute", 389, NULL }, - { "imacron", 278, NULL }, - { "cent", 500, NULL }, - { "currency", 500, NULL }, - { "logicalnot", 606, NULL }, - { "zdotaccent", 389, NULL }, - { "Atilde", 667, NULL }, - { "breve", 333, NULL }, - { "bar", 220, NULL }, - { "fraction", 167, NULL }, - { "less", 570, NULL }, - { "ecaron", 444, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 389, NULL }, - { "period", 250, NULL }, - { "Rcaron", 667, NULL }, - { "Kcommaaccent", 667, NULL }, - { "greater", 570, NULL }, - { "atilde", 500, NULL }, - { "brokenbar", 220, NULL }, - { "quoteleft", 333, NULL }, - { "Edotaccent", 667, NULL }, - { "onesuperior", 300, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 389, nullptr }, + { "kcommaaccent", 500, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 250, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 570, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 444, nullptr }, + { "asciitilde", 570, nullptr }, + { "colon", 333, nullptr }, + { "onehalf", 750, nullptr }, + { "dollar", 500, nullptr }, + { "Lcaron", 611, nullptr }, + { "ntilde", 556, nullptr }, + { "Aogonek", 667, nullptr }, + { "ncommaaccent", 556, nullptr }, + { "minus", 606, nullptr }, + { "Iogonek", 389, nullptr }, + { "zacute", 389, nullptr }, + { "yen", 500, nullptr }, + { "space", 250, nullptr }, + { "Omacron", 722, nullptr }, + { "questiondown", 500, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 667, nullptr }, + { "three", 500, nullptr }, + { "numbersign", 500, nullptr }, + { "lcaron", 382, nullptr }, + { "A", 667, nullptr }, + { "B", 667, nullptr }, + { "C", 667, nullptr }, + { "aogonek", 500, nullptr }, + { "D", 722, nullptr }, + { "E", 667, nullptr }, + { "onequarter", 750, nullptr }, + { "F", 667, nullptr }, + { "G", 722, nullptr }, + { "H", 778, nullptr }, + { "I", 389, nullptr }, + { "J", 500, nullptr }, + { "K", 667, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 611, nullptr }, + { "periodcentered", 250, nullptr }, + { "M", 889, nullptr }, + { "N", 722, nullptr }, + { "omacron", 500, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 722, nullptr }, + { "P", 611, nullptr }, + { "Q", 722, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 667, nullptr }, + { "Aacute", 667, nullptr }, + { "caron", 333, nullptr }, + { "S", 556, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 500, nullptr }, + { "V", 667, nullptr }, + { "W", 889, nullptr }, + { "X", 667, nullptr }, + { "question", 500, nullptr }, + { "equal", 570, nullptr }, + { "Y", 611, nullptr }, + { "Z", 611, nullptr }, + { "four", 500, nullptr }, + { "a", 500, nullptr }, + { "Gcommaaccent", 722, nullptr }, + { "b", 500, nullptr }, + { "c", 444, nullptr }, + { "d", 500, nullptr }, + { "e", 444, nullptr }, + { "f", 333, nullptr }, + { "g", 500, nullptr }, + { "bullet", 350, nullptr }, + { "h", 556, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 722, nullptr }, + { "dagger", 500, nullptr }, + { "j", 278, nullptr }, + { "k", 500, nullptr }, + { "l", 278, nullptr }, + { "m", 778, nullptr }, + { "n", 556, nullptr }, + { "tcommaaccent", 278, nullptr }, + { "o", 500, nullptr }, + { "ordfeminine", 266, nullptr }, + { "ring", 333, nullptr }, + { "p", 500, nullptr }, + { "q", 500, nullptr }, + { "uhungarumlaut", 556, nullptr }, + { "r", 389, nullptr }, + { "twosuperior", 300, nullptr }, + { "aacute", 500, nullptr }, + { "s", 389, nullptr }, + { "OE", 944, nullptr }, + { "t", 278, nullptr }, + { "divide", 570, nullptr }, + { "u", 556, nullptr }, + { "Ccaron", 667, nullptr }, + { "v", 444, nullptr }, + { "w", 667, nullptr }, + { "x", 500, nullptr }, + { "y", 444, nullptr }, + { "z", 389, nullptr }, + { "Gbreve", 722, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 389, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 555, nullptr }, + { "gcommaaccent", 500, nullptr }, + { "mu", 576, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 556, nullptr }, + { "Lslash", 611, nullptr }, + { "semicolon", 333, nullptr }, + { "oslash", 500, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 494, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 444, nullptr }, + { "Ecircumflex", 667, nullptr }, + { "gbreve", 500, nullptr }, + { "trademark", 1000, nullptr }, + { "daggerdbl", 500, nullptr }, + { "nacute", 556, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 722, nullptr }, + { "Emacron", 667, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 389, nullptr }, + { "AE", 944, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 500, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 278, nullptr }, + { "eight", 500, nullptr }, + { "exclamdown", 389, nullptr }, + { "endash", 500, nullptr }, + { "oe", 722, nullptr }, + { "Abreve", 667, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 444, nullptr }, + { "Adieresis", 667, nullptr }, + { "copyright", 747, nullptr }, + { "Egrave", 667, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 667, nullptr }, + { "otilde", 500, nullptr }, + { "Idieresis", 389, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 500, nullptr }, + { "emacron", 444, nullptr }, + { "Odieresis", 722, nullptr }, + { "ucircumflex", 556, nullptr }, + { "bracketleft", 333, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 333, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 611, nullptr }, + { "umacron", 556, nullptr }, + { "abreve", 500, nullptr }, + { "Eacute", 667, nullptr }, + { "adieresis", 500, nullptr }, + { "egrave", 444, nullptr }, + { "edieresis", 444, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 722, nullptr }, + { "asterisk", 500, nullptr }, + { "odieresis", 500, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 556, nullptr }, + { "nine", 500, nullptr }, + { "five", 500, nullptr }, + { "udieresis", 556, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 556, nullptr }, + { "threequarters", 750, nullptr }, + { "guillemotright", 500, nullptr }, + { "Ccedilla", 667, nullptr }, + { "ydieresis", 444, nullptr }, + { "tilde", 333, nullptr }, + { "at", 832, nullptr }, + { "eacute", 444, nullptr }, + { "underscore", 500, nullptr }, + { "Euro", 500, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 570, nullptr }, + { "zero", 500, nullptr }, + { "eth", 500, nullptr }, + { "Scedilla", 556, nullptr }, + { "Ograve", 722, nullptr }, + { "Racute", 667, nullptr }, + { "partialdiff", 494, nullptr }, + { "uacute", 556, nullptr }, + { "braceleft", 348, nullptr }, + { "Thorn", 611, nullptr }, + { "zcaron", 389, nullptr }, + { "scommaaccent", 389, nullptr }, + { "ccedilla", 444, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 500, nullptr }, + { "Ocircumflex", 722, nullptr }, + { "Oacute", 722, nullptr }, + { "scedilla", 389, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 500, nullptr }, + { "racute", 389, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 667, nullptr }, + { "thorn", 500, nullptr }, + { "degree", 400, nullptr }, + { "registered", 747, nullptr }, + { "radical", 549, nullptr }, + { "Aring", 667, nullptr }, + { "percent", 833, nullptr }, + { "six", 500, nullptr }, + { "paragraph", 500, nullptr }, + { "dcaron", 608, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 500, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 389, nullptr }, + { "Lacute", 611, nullptr }, + { "ocircumflex", 500, nullptr }, + { "oacute", 500, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 611, nullptr }, + { "tcaron", 366, nullptr }, + { "eogonek", 444, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 722, nullptr }, + { "asciicircum", 570, nullptr }, + { "aring", 500, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 556, nullptr }, + { "bracketright", 333, nullptr }, + { "Iacute", 389, nullptr }, + { "ampersand", 778, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 570, nullptr }, + { "uring", 556, nullptr }, + { "quotesinglbase", 333, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 611, nullptr }, + { "ohungarumlaut", 500, nullptr }, + { "threesuperior", 300, nullptr }, + { "acute", 333, nullptr }, + { "section", 500, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 500, nullptr }, + { "ncaron", 556, nullptr }, + { "florin", 500, nullptr }, + { "yacute", 444, nullptr }, + { "Rcommaaccent", 667, nullptr }, + { "fi", 556, nullptr }, + { "fl", 556, nullptr }, + { "Acircumflex", 667, nullptr }, + { "Cacute", 667, nullptr }, + { "Icircumflex", 389, nullptr }, + { "guillemotleft", 500, nullptr }, + { "germandbls", 500, nullptr }, + { "Amacron", 667, nullptr }, + { "seven", 500, nullptr }, + { "Sacute", 556, nullptr }, + { "ordmasculine", 300, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 500, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 389, nullptr }, + { "rcommaaccent", 389, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 500, nullptr }, + { "cacute", 444, nullptr }, + { "Ecaron", 667, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 348, nullptr }, + { "quotedblright", 500, nullptr }, + { "amacron", 500, nullptr }, + { "sacute", 389, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 500, nullptr }, + { "currency", 500, nullptr }, + { "logicalnot", 606, nullptr }, + { "zdotaccent", 389, nullptr }, + { "Atilde", 667, nullptr }, + { "breve", 333, nullptr }, + { "bar", 220, nullptr }, + { "fraction", 167, nullptr }, + { "less", 570, nullptr }, + { "ecaron", 444, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 389, nullptr }, + { "period", 250, nullptr }, + { "Rcaron", 667, nullptr }, + { "Kcommaaccent", 667, nullptr }, + { "greater", 570, nullptr }, + { "atilde", 500, nullptr }, + { "brokenbar", 220, nullptr }, + { "quoteleft", 333, nullptr }, + { "Edotaccent", 667, nullptr }, + { "onesuperior", 300, nullptr } }; static BuiltinFontWidth timesItalicWidthsTab[] = { - { "Ntilde", 667, NULL }, - { "rcaron", 389, NULL }, - { "kcommaaccent", 444, NULL }, - { "Ncommaaccent", 667, NULL }, - { "Zacute", 556, NULL }, - { "comma", 250, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 675, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 444, NULL }, - { "asciitilde", 541, NULL }, - { "colon", 333, NULL }, - { "onehalf", 750, NULL }, - { "dollar", 500, NULL }, - { "Lcaron", 611, NULL }, - { "ntilde", 500, NULL }, - { "Aogonek", 611, NULL }, - { "ncommaaccent", 500, NULL }, - { "minus", 675, NULL }, - { "Iogonek", 333, NULL }, - { "zacute", 389, NULL }, - { "yen", 500, NULL }, - { "space", 250, NULL }, - { "Omacron", 722, NULL }, - { "questiondown", 500, NULL }, - { "emdash", 889, NULL }, - { "Agrave", 611, NULL }, - { "three", 500, NULL }, - { "numbersign", 500, NULL }, - { "lcaron", 300, NULL }, - { "A", 611, NULL }, - { "B", 611, NULL }, - { "C", 667, NULL }, - { "aogonek", 500, NULL }, - { "D", 722, NULL }, - { "E", 611, NULL }, - { "onequarter", 750, NULL }, - { "F", 611, NULL }, - { "G", 722, NULL }, - { "H", 722, NULL }, - { "I", 333, NULL }, - { "J", 444, NULL }, - { "K", 667, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 556, NULL }, - { "periodcentered", 250, NULL }, - { "M", 833, NULL }, - { "N", 667, NULL }, - { "omacron", 500, NULL }, - { "Tcommaaccent", 556, NULL }, - { "O", 722, NULL }, - { "P", 611, NULL }, - { "Q", 722, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 611, NULL }, - { "Aacute", 611, NULL }, - { "caron", 333, NULL }, - { "S", 500, NULL }, - { "T", 556, NULL }, - { "U", 722, NULL }, - { "agrave", 500, NULL }, - { "V", 611, NULL }, - { "W", 833, NULL }, - { "X", 611, NULL }, - { "question", 500, NULL }, - { "equal", 675, NULL }, - { "Y", 556, NULL }, - { "Z", 556, NULL }, - { "four", 500, NULL }, - { "a", 500, NULL }, - { "Gcommaaccent", 722, NULL }, - { "b", 500, NULL }, - { "c", 444, NULL }, - { "d", 500, NULL }, - { "e", 444, NULL }, - { "f", 278, NULL }, - { "g", 500, NULL }, - { "bullet", 350, NULL }, - { "h", 500, NULL }, - { "i", 278, NULL }, - { "Oslash", 722, NULL }, - { "dagger", 500, NULL }, - { "j", 278, NULL }, - { "k", 444, NULL }, - { "l", 278, NULL }, - { "m", 722, NULL }, - { "n", 500, NULL }, - { "tcommaaccent", 278, NULL }, - { "o", 500, NULL }, - { "ordfeminine", 276, NULL }, - { "ring", 333, NULL }, - { "p", 500, NULL }, - { "q", 500, NULL }, - { "uhungarumlaut", 500, NULL }, - { "r", 389, NULL }, - { "twosuperior", 300, NULL }, - { "aacute", 500, NULL }, - { "s", 389, NULL }, - { "OE", 944, NULL }, - { "t", 278, NULL }, - { "divide", 675, NULL }, - { "u", 500, NULL }, - { "Ccaron", 667, NULL }, - { "v", 444, NULL }, - { "w", 667, NULL }, - { "x", 444, NULL }, - { "y", 444, NULL }, - { "z", 389, NULL }, - { "Gbreve", 722, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 333, NULL }, - { "Nacute", 667, NULL }, - { "quotedbl", 420, NULL }, - { "gcommaaccent", 500, NULL }, - { "mu", 500, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 500, NULL }, - { "Lslash", 556, NULL }, - { "semicolon", 333, NULL }, - { "oslash", 500, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 471, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 444, NULL }, - { "Ecircumflex", 611, NULL }, - { "gbreve", 500, NULL }, - { "trademark", 980, NULL }, - { "daggerdbl", 500, NULL }, - { "nacute", 500, NULL }, - { "macron", 333, NULL }, - { "Otilde", 722, NULL }, - { "Emacron", 611, NULL }, - { "ellipsis", 889, NULL }, - { "scaron", 389, NULL }, - { "AE", 889, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 556, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 214, NULL }, - { "eight", 500, NULL }, - { "exclamdown", 389, NULL }, - { "endash", 500, NULL }, - { "oe", 667, NULL }, - { "Abreve", 611, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 444, NULL }, - { "Adieresis", 611, NULL }, - { "copyright", 760, NULL }, - { "Egrave", 611, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 611, NULL }, - { "otilde", 500, NULL }, - { "Idieresis", 333, NULL }, - { "parenleft", 333, NULL }, - { "one", 500, NULL }, - { "emacron", 444, NULL }, - { "Odieresis", 722, NULL }, - { "ucircumflex", 500, NULL }, - { "bracketleft", 389, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 333, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 556, NULL }, - { "umacron", 500, NULL }, - { "abreve", 500, NULL }, - { "Eacute", 611, NULL }, - { "adieresis", 500, NULL }, - { "egrave", 444, NULL }, - { "edieresis", 444, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 667, NULL }, - { "asterisk", 500, NULL }, - { "odieresis", 500, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 500, NULL }, - { "nine", 500, NULL }, - { "five", 500, NULL }, - { "udieresis", 500, NULL }, - { "Zcaron", 556, NULL }, - { "Scommaaccent", 500, NULL }, - { "threequarters", 750, NULL }, - { "guillemotright", 500, NULL }, - { "Ccedilla", 667, NULL }, - { "ydieresis", 444, NULL }, - { "tilde", 333, NULL }, - { "at", 920, NULL }, - { "eacute", 444, NULL }, - { "underscore", 500, NULL }, - { "Euro", 500, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 675, NULL }, - { "zero", 500, NULL }, - { "eth", 500, NULL }, - { "Scedilla", 500, NULL }, - { "Ograve", 722, NULL }, - { "Racute", 611, NULL }, - { "partialdiff", 476, NULL }, - { "uacute", 500, NULL }, - { "braceleft", 400, NULL }, - { "Thorn", 611, NULL }, - { "zcaron", 389, NULL }, - { "scommaaccent", 389, NULL }, - { "ccedilla", 444, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 500, NULL }, - { "Ocircumflex", 722, NULL }, - { "Oacute", 722, NULL }, - { "scedilla", 389, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 500, NULL }, - { "racute", 389, NULL }, - { "Tcaron", 556, NULL }, - { "Eogonek", 611, NULL }, - { "thorn", 500, NULL }, - { "degree", 400, NULL }, - { "registered", 760, NULL }, - { "radical", 453, NULL }, - { "Aring", 611, NULL }, - { "percent", 833, NULL }, - { "six", 500, NULL }, - { "paragraph", 523, NULL }, - { "dcaron", 544, NULL }, - { "Uogonek", 722, NULL }, - { "two", 500, NULL }, - { "summation", 600, NULL }, - { "Igrave", 333, NULL }, - { "Lacute", 556, NULL }, - { "ocircumflex", 500, NULL }, - { "oacute", 500, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 556, NULL }, - { "tcaron", 300, NULL }, - { "eogonek", 444, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 722, NULL }, - { "asciicircum", 422, NULL }, - { "aring", 500, NULL }, - { "grave", 333, NULL }, - { "uogonek", 500, NULL }, - { "bracketright", 389, NULL }, - { "Iacute", 333, NULL }, - { "ampersand", 778, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 667, NULL }, - { "plus", 675, NULL }, - { "uring", 500, NULL }, - { "quotesinglbase", 333, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 556, NULL }, - { "ohungarumlaut", 500, NULL }, - { "threesuperior", 300, NULL }, - { "acute", 333, NULL }, - { "section", 500, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 556, NULL }, - { "ncaron", 500, NULL }, - { "florin", 500, NULL }, - { "yacute", 444, NULL }, - { "Rcommaaccent", 611, NULL }, - { "fi", 500, NULL }, - { "fl", 500, NULL }, - { "Acircumflex", 611, NULL }, - { "Cacute", 667, NULL }, - { "Icircumflex", 333, NULL }, - { "guillemotleft", 500, NULL }, - { "germandbls", 500, NULL }, - { "Amacron", 611, NULL }, - { "seven", 500, NULL }, - { "Sacute", 500, NULL }, - { "ordmasculine", 310, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 500, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 333, NULL }, - { "rcommaaccent", 389, NULL }, - { "Zdotaccent", 556, NULL }, - { "acircumflex", 500, NULL }, - { "cacute", 444, NULL }, - { "Ecaron", 611, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 400, NULL }, - { "quotedblright", 556, NULL }, - { "amacron", 500, NULL }, - { "sacute", 389, NULL }, - { "imacron", 278, NULL }, - { "cent", 500, NULL }, - { "currency", 500, NULL }, - { "logicalnot", 675, NULL }, - { "zdotaccent", 389, NULL }, - { "Atilde", 611, NULL }, - { "breve", 333, NULL }, - { "bar", 275, NULL }, - { "fraction", 167, NULL }, - { "less", 675, NULL }, - { "ecaron", 444, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 333, NULL }, - { "period", 250, NULL }, - { "Rcaron", 611, NULL }, - { "Kcommaaccent", 667, NULL }, - { "greater", 675, NULL }, - { "atilde", 500, NULL }, - { "brokenbar", 275, NULL }, - { "quoteleft", 333, NULL }, - { "Edotaccent", 611, NULL }, - { "onesuperior", 300, NULL } + { "Ntilde", 667, nullptr }, + { "rcaron", 389, nullptr }, + { "kcommaaccent", 444, nullptr }, + { "Ncommaaccent", 667, nullptr }, + { "Zacute", 556, nullptr }, + { "comma", 250, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 675, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 444, nullptr }, + { "asciitilde", 541, nullptr }, + { "colon", 333, nullptr }, + { "onehalf", 750, nullptr }, + { "dollar", 500, nullptr }, + { "Lcaron", 611, nullptr }, + { "ntilde", 500, nullptr }, + { "Aogonek", 611, nullptr }, + { "ncommaaccent", 500, nullptr }, + { "minus", 675, nullptr }, + { "Iogonek", 333, nullptr }, + { "zacute", 389, nullptr }, + { "yen", 500, nullptr }, + { "space", 250, nullptr }, + { "Omacron", 722, nullptr }, + { "questiondown", 500, nullptr }, + { "emdash", 889, nullptr }, + { "Agrave", 611, nullptr }, + { "three", 500, nullptr }, + { "numbersign", 500, nullptr }, + { "lcaron", 300, nullptr }, + { "A", 611, nullptr }, + { "B", 611, nullptr }, + { "C", 667, nullptr }, + { "aogonek", 500, nullptr }, + { "D", 722, nullptr }, + { "E", 611, nullptr }, + { "onequarter", 750, nullptr }, + { "F", 611, nullptr }, + { "G", 722, nullptr }, + { "H", 722, nullptr }, + { "I", 333, nullptr }, + { "J", 444, nullptr }, + { "K", 667, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 556, nullptr }, + { "periodcentered", 250, nullptr }, + { "M", 833, nullptr }, + { "N", 667, nullptr }, + { "omacron", 500, nullptr }, + { "Tcommaaccent", 556, nullptr }, + { "O", 722, nullptr }, + { "P", 611, nullptr }, + { "Q", 722, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 611, nullptr }, + { "Aacute", 611, nullptr }, + { "caron", 333, nullptr }, + { "S", 500, nullptr }, + { "T", 556, nullptr }, + { "U", 722, nullptr }, + { "agrave", 500, nullptr }, + { "V", 611, nullptr }, + { "W", 833, nullptr }, + { "X", 611, nullptr }, + { "question", 500, nullptr }, + { "equal", 675, nullptr }, + { "Y", 556, nullptr }, + { "Z", 556, nullptr }, + { "four", 500, nullptr }, + { "a", 500, nullptr }, + { "Gcommaaccent", 722, nullptr }, + { "b", 500, nullptr }, + { "c", 444, nullptr }, + { "d", 500, nullptr }, + { "e", 444, nullptr }, + { "f", 278, nullptr }, + { "g", 500, nullptr }, + { "bullet", 350, nullptr }, + { "h", 500, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 722, nullptr }, + { "dagger", 500, nullptr }, + { "j", 278, nullptr }, + { "k", 444, nullptr }, + { "l", 278, nullptr }, + { "m", 722, nullptr }, + { "n", 500, nullptr }, + { "tcommaaccent", 278, nullptr }, + { "o", 500, nullptr }, + { "ordfeminine", 276, nullptr }, + { "ring", 333, nullptr }, + { "p", 500, nullptr }, + { "q", 500, nullptr }, + { "uhungarumlaut", 500, nullptr }, + { "r", 389, nullptr }, + { "twosuperior", 300, nullptr }, + { "aacute", 500, nullptr }, + { "s", 389, nullptr }, + { "OE", 944, nullptr }, + { "t", 278, nullptr }, + { "divide", 675, nullptr }, + { "u", 500, nullptr }, + { "Ccaron", 667, nullptr }, + { "v", 444, nullptr }, + { "w", 667, nullptr }, + { "x", 444, nullptr }, + { "y", 444, nullptr }, + { "z", 389, nullptr }, + { "Gbreve", 722, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 333, nullptr }, + { "Nacute", 667, nullptr }, + { "quotedbl", 420, nullptr }, + { "gcommaaccent", 500, nullptr }, + { "mu", 500, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 500, nullptr }, + { "Lslash", 556, nullptr }, + { "semicolon", 333, nullptr }, + { "oslash", 500, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 471, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 444, nullptr }, + { "Ecircumflex", 611, nullptr }, + { "gbreve", 500, nullptr }, + { "trademark", 980, nullptr }, + { "daggerdbl", 500, nullptr }, + { "nacute", 500, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 722, nullptr }, + { "Emacron", 611, nullptr }, + { "ellipsis", 889, nullptr }, + { "scaron", 389, nullptr }, + { "AE", 889, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 556, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 214, nullptr }, + { "eight", 500, nullptr }, + { "exclamdown", 389, nullptr }, + { "endash", 500, nullptr }, + { "oe", 667, nullptr }, + { "Abreve", 611, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 444, nullptr }, + { "Adieresis", 611, nullptr }, + { "copyright", 760, nullptr }, + { "Egrave", 611, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 611, nullptr }, + { "otilde", 500, nullptr }, + { "Idieresis", 333, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 500, nullptr }, + { "emacron", 444, nullptr }, + { "Odieresis", 722, nullptr }, + { "ucircumflex", 500, nullptr }, + { "bracketleft", 389, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 333, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 556, nullptr }, + { "umacron", 500, nullptr }, + { "abreve", 500, nullptr }, + { "Eacute", 611, nullptr }, + { "adieresis", 500, nullptr }, + { "egrave", 444, nullptr }, + { "edieresis", 444, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 667, nullptr }, + { "asterisk", 500, nullptr }, + { "odieresis", 500, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 500, nullptr }, + { "nine", 500, nullptr }, + { "five", 500, nullptr }, + { "udieresis", 500, nullptr }, + { "Zcaron", 556, nullptr }, + { "Scommaaccent", 500, nullptr }, + { "threequarters", 750, nullptr }, + { "guillemotright", 500, nullptr }, + { "Ccedilla", 667, nullptr }, + { "ydieresis", 444, nullptr }, + { "tilde", 333, nullptr }, + { "at", 920, nullptr }, + { "eacute", 444, nullptr }, + { "underscore", 500, nullptr }, + { "Euro", 500, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 675, nullptr }, + { "zero", 500, nullptr }, + { "eth", 500, nullptr }, + { "Scedilla", 500, nullptr }, + { "Ograve", 722, nullptr }, + { "Racute", 611, nullptr }, + { "partialdiff", 476, nullptr }, + { "uacute", 500, nullptr }, + { "braceleft", 400, nullptr }, + { "Thorn", 611, nullptr }, + { "zcaron", 389, nullptr }, + { "scommaaccent", 389, nullptr }, + { "ccedilla", 444, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 500, nullptr }, + { "Ocircumflex", 722, nullptr }, + { "Oacute", 722, nullptr }, + { "scedilla", 389, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 500, nullptr }, + { "racute", 389, nullptr }, + { "Tcaron", 556, nullptr }, + { "Eogonek", 611, nullptr }, + { "thorn", 500, nullptr }, + { "degree", 400, nullptr }, + { "registered", 760, nullptr }, + { "radical", 453, nullptr }, + { "Aring", 611, nullptr }, + { "percent", 833, nullptr }, + { "six", 500, nullptr }, + { "paragraph", 523, nullptr }, + { "dcaron", 544, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 500, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 333, nullptr }, + { "Lacute", 556, nullptr }, + { "ocircumflex", 500, nullptr }, + { "oacute", 500, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 556, nullptr }, + { "tcaron", 300, nullptr }, + { "eogonek", 444, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 722, nullptr }, + { "asciicircum", 422, nullptr }, + { "aring", 500, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 500, nullptr }, + { "bracketright", 389, nullptr }, + { "Iacute", 333, nullptr }, + { "ampersand", 778, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 667, nullptr }, + { "plus", 675, nullptr }, + { "uring", 500, nullptr }, + { "quotesinglbase", 333, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 556, nullptr }, + { "ohungarumlaut", 500, nullptr }, + { "threesuperior", 300, nullptr }, + { "acute", 333, nullptr }, + { "section", 500, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 556, nullptr }, + { "ncaron", 500, nullptr }, + { "florin", 500, nullptr }, + { "yacute", 444, nullptr }, + { "Rcommaaccent", 611, nullptr }, + { "fi", 500, nullptr }, + { "fl", 500, nullptr }, + { "Acircumflex", 611, nullptr }, + { "Cacute", 667, nullptr }, + { "Icircumflex", 333, nullptr }, + { "guillemotleft", 500, nullptr }, + { "germandbls", 500, nullptr }, + { "Amacron", 611, nullptr }, + { "seven", 500, nullptr }, + { "Sacute", 500, nullptr }, + { "ordmasculine", 310, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 500, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 333, nullptr }, + { "rcommaaccent", 389, nullptr }, + { "Zdotaccent", 556, nullptr }, + { "acircumflex", 500, nullptr }, + { "cacute", 444, nullptr }, + { "Ecaron", 611, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 400, nullptr }, + { "quotedblright", 556, nullptr }, + { "amacron", 500, nullptr }, + { "sacute", 389, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 500, nullptr }, + { "currency", 500, nullptr }, + { "logicalnot", 675, nullptr }, + { "zdotaccent", 389, nullptr }, + { "Atilde", 611, nullptr }, + { "breve", 333, nullptr }, + { "bar", 275, nullptr }, + { "fraction", 167, nullptr }, + { "less", 675, nullptr }, + { "ecaron", 444, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 333, nullptr }, + { "period", 250, nullptr }, + { "Rcaron", 611, nullptr }, + { "Kcommaaccent", 667, nullptr }, + { "greater", 675, nullptr }, + { "atilde", 500, nullptr }, + { "brokenbar", 275, nullptr }, + { "quoteleft", 333, nullptr }, + { "Edotaccent", 611, nullptr }, + { "onesuperior", 300, nullptr } }; static BuiltinFontWidth timesRomanWidthsTab[] = { - { "Ntilde", 722, NULL }, - { "rcaron", 333, NULL }, - { "kcommaaccent", 500, NULL }, - { "Ncommaaccent", 722, NULL }, - { "Zacute", 611, NULL }, - { "comma", 250, NULL }, - { "cedilla", 333, NULL }, - { "plusminus", 564, NULL }, - { "circumflex", 333, NULL }, - { "dotaccent", 333, NULL }, - { "edotaccent", 444, NULL }, - { "asciitilde", 541, NULL }, - { "colon", 278, NULL }, - { "onehalf", 750, NULL }, - { "dollar", 500, NULL }, - { "Lcaron", 611, NULL }, - { "ntilde", 500, NULL }, - { "Aogonek", 722, NULL }, - { "ncommaaccent", 500, NULL }, - { "minus", 564, NULL }, - { "Iogonek", 333, NULL }, - { "zacute", 444, NULL }, - { "yen", 500, NULL }, - { "space", 250, NULL }, - { "Omacron", 722, NULL }, - { "questiondown", 444, NULL }, - { "emdash", 1000, NULL }, - { "Agrave", 722, NULL }, - { "three", 500, NULL }, - { "numbersign", 500, NULL }, - { "lcaron", 344, NULL }, - { "A", 722, NULL }, - { "B", 667, NULL }, - { "C", 667, NULL }, - { "aogonek", 444, NULL }, - { "D", 722, NULL }, - { "E", 611, NULL }, - { "onequarter", 750, NULL }, - { "F", 556, NULL }, - { "G", 722, NULL }, - { "H", 722, NULL }, - { "I", 333, NULL }, - { "J", 389, NULL }, - { "K", 722, NULL }, - { "iogonek", 278, NULL }, - { "backslash", 278, NULL }, - { "L", 611, NULL }, - { "periodcentered", 250, NULL }, - { "M", 889, NULL }, - { "N", 722, NULL }, - { "omacron", 500, NULL }, - { "Tcommaaccent", 611, NULL }, - { "O", 722, NULL }, - { "P", 556, NULL }, - { "Q", 722, NULL }, - { "Uhungarumlaut", 722, NULL }, - { "R", 667, NULL }, - { "Aacute", 722, NULL }, - { "caron", 333, NULL }, - { "S", 556, NULL }, - { "T", 611, NULL }, - { "U", 722, NULL }, - { "agrave", 444, NULL }, - { "V", 722, NULL }, - { "W", 944, NULL }, - { "X", 722, NULL }, - { "question", 444, NULL }, - { "equal", 564, NULL }, - { "Y", 722, NULL }, - { "Z", 611, NULL }, - { "four", 500, NULL }, - { "a", 444, NULL }, - { "Gcommaaccent", 722, NULL }, - { "b", 500, NULL }, - { "c", 444, NULL }, - { "d", 500, NULL }, - { "e", 444, NULL }, - { "f", 333, NULL }, - { "g", 500, NULL }, - { "bullet", 350, NULL }, - { "h", 500, NULL }, - { "i", 278, NULL }, - { "Oslash", 722, NULL }, - { "dagger", 500, NULL }, - { "j", 278, NULL }, - { "k", 500, NULL }, - { "l", 278, NULL }, - { "m", 778, NULL }, - { "n", 500, NULL }, - { "tcommaaccent", 278, NULL }, - { "o", 500, NULL }, - { "ordfeminine", 276, NULL }, - { "ring", 333, NULL }, - { "p", 500, NULL }, - { "q", 500, NULL }, - { "uhungarumlaut", 500, NULL }, - { "r", 333, NULL }, - { "twosuperior", 300, NULL }, - { "aacute", 444, NULL }, - { "s", 389, NULL }, - { "OE", 889, NULL }, - { "t", 278, NULL }, - { "divide", 564, NULL }, - { "u", 500, NULL }, - { "Ccaron", 667, NULL }, - { "v", 500, NULL }, - { "w", 722, NULL }, - { "x", 500, NULL }, - { "y", 500, NULL }, - { "z", 444, NULL }, - { "Gbreve", 722, NULL }, - { "commaaccent", 250, NULL }, - { "hungarumlaut", 333, NULL }, - { "Idotaccent", 333, NULL }, - { "Nacute", 722, NULL }, - { "quotedbl", 408, NULL }, - { "gcommaaccent", 500, NULL }, - { "mu", 500, NULL }, - { "greaterequal", 549, NULL }, - { "Scaron", 556, NULL }, - { "Lslash", 611, NULL }, - { "semicolon", 278, NULL }, - { "oslash", 500, NULL }, - { "lessequal", 549, NULL }, - { "lozenge", 471, NULL }, - { "parenright", 333, NULL }, - { "ccaron", 444, NULL }, - { "Ecircumflex", 611, NULL }, - { "gbreve", 500, NULL }, - { "trademark", 980, NULL }, - { "daggerdbl", 500, NULL }, - { "nacute", 500, NULL }, - { "macron", 333, NULL }, - { "Otilde", 722, NULL }, - { "Emacron", 611, NULL }, - { "ellipsis", 1000, NULL }, - { "scaron", 389, NULL }, - { "AE", 889, NULL }, - { "Ucircumflex", 722, NULL }, - { "lslash", 278, NULL }, - { "quotedblleft", 444, NULL }, - { "guilsinglright", 333, NULL }, - { "hyphen", 333, NULL }, - { "quotesingle", 180, NULL }, - { "eight", 500, NULL }, - { "exclamdown", 333, NULL }, - { "endash", 500, NULL }, - { "oe", 722, NULL }, - { "Abreve", 722, NULL }, - { "Umacron", 722, NULL }, - { "ecircumflex", 444, NULL }, - { "Adieresis", 722, NULL }, - { "copyright", 760, NULL }, - { "Egrave", 611, NULL }, - { "slash", 278, NULL }, - { "Edieresis", 611, NULL }, - { "otilde", 500, NULL }, - { "Idieresis", 333, NULL }, - { "parenleft", 333, NULL }, - { "one", 500, NULL }, - { "emacron", 444, NULL }, - { "Odieresis", 722, NULL }, - { "ucircumflex", 500, NULL }, - { "bracketleft", 333, NULL }, - { "Ugrave", 722, NULL }, - { "quoteright", 333, NULL }, - { "Udieresis", 722, NULL }, - { "perthousand", 1000, NULL }, - { "Ydieresis", 722, NULL }, - { "umacron", 500, NULL }, - { "abreve", 444, NULL }, - { "Eacute", 611, NULL }, - { "adieresis", 444, NULL }, - { "egrave", 444, NULL }, - { "edieresis", 444, NULL }, - { "idieresis", 278, NULL }, - { "Eth", 722, NULL }, - { "ae", 667, NULL }, - { "asterisk", 500, NULL }, - { "odieresis", 500, NULL }, - { "Uacute", 722, NULL }, - { "ugrave", 500, NULL }, - { "nine", 500, NULL }, - { "five", 500, NULL }, - { "udieresis", 500, NULL }, - { "Zcaron", 611, NULL }, - { "Scommaaccent", 556, NULL }, - { "threequarters", 750, NULL }, - { "guillemotright", 500, NULL }, - { "Ccedilla", 667, NULL }, - { "ydieresis", 500, NULL }, - { "tilde", 333, NULL }, - { "at", 921, NULL }, - { "eacute", 444, NULL }, - { "underscore", 500, NULL }, - { "Euro", 500, NULL }, - { "Dcroat", 722, NULL }, - { "multiply", 564, NULL }, - { "zero", 500, NULL }, - { "eth", 500, NULL }, - { "Scedilla", 556, NULL }, - { "Ograve", 722, NULL }, - { "Racute", 667, NULL }, - { "partialdiff", 476, NULL }, - { "uacute", 500, NULL }, - { "braceleft", 480, NULL }, - { "Thorn", 556, NULL }, - { "zcaron", 444, NULL }, - { "scommaaccent", 389, NULL }, - { "ccedilla", 444, NULL }, - { "Dcaron", 722, NULL }, - { "dcroat", 500, NULL }, - { "Ocircumflex", 722, NULL }, - { "Oacute", 722, NULL }, - { "scedilla", 389, NULL }, - { "ogonek", 333, NULL }, - { "ograve", 500, NULL }, - { "racute", 333, NULL }, - { "Tcaron", 611, NULL }, - { "Eogonek", 611, NULL }, - { "thorn", 500, NULL }, - { "degree", 400, NULL }, - { "registered", 760, NULL }, - { "radical", 453, NULL }, - { "Aring", 722, NULL }, - { "percent", 833, NULL }, - { "six", 500, NULL }, - { "paragraph", 453, NULL }, - { "dcaron", 588, NULL }, - { "Uogonek", 722, NULL }, - { "two", 500, NULL }, - { "summation", 600, NULL }, - { "Igrave", 333, NULL }, - { "Lacute", 611, NULL }, - { "ocircumflex", 500, NULL }, - { "oacute", 500, NULL }, - { "Uring", 722, NULL }, - { "Lcommaaccent", 611, NULL }, - { "tcaron", 326, NULL }, - { "eogonek", 444, NULL }, - { "Delta", 612, NULL }, - { "Ohungarumlaut", 722, NULL }, - { "asciicircum", 469, NULL }, - { "aring", 444, NULL }, - { "grave", 333, NULL }, - { "uogonek", 500, NULL }, - { "bracketright", 333, NULL }, - { "Iacute", 333, NULL }, - { "ampersand", 778, NULL }, - { "igrave", 278, NULL }, - { "lacute", 278, NULL }, - { "Ncaron", 722, NULL }, - { "plus", 564, NULL }, - { "uring", 500, NULL }, - { "quotesinglbase", 333, NULL }, - { "lcommaaccent", 278, NULL }, - { "Yacute", 722, NULL }, - { "ohungarumlaut", 500, NULL }, - { "threesuperior", 300, NULL }, - { "acute", 333, NULL }, - { "section", 500, NULL }, - { "dieresis", 333, NULL }, - { "iacute", 278, NULL }, - { "quotedblbase", 444, NULL }, - { "ncaron", 500, NULL }, - { "florin", 500, NULL }, - { "yacute", 500, NULL }, - { "Rcommaaccent", 667, NULL }, - { "fi", 556, NULL }, - { "fl", 556, NULL }, - { "Acircumflex", 722, NULL }, - { "Cacute", 667, NULL }, - { "Icircumflex", 333, NULL }, - { "guillemotleft", 500, NULL }, - { "germandbls", 500, NULL }, - { "Amacron", 722, NULL }, - { "seven", 500, NULL }, - { "Sacute", 556, NULL }, - { "ordmasculine", 310, NULL }, - { "dotlessi", 278, NULL }, - { "sterling", 500, NULL }, - { "notequal", 549, NULL }, - { "Imacron", 333, NULL }, - { "rcommaaccent", 333, NULL }, - { "Zdotaccent", 611, NULL }, - { "acircumflex", 444, NULL }, - { "cacute", 444, NULL }, - { "Ecaron", 611, NULL }, - { "icircumflex", 278, NULL }, - { "braceright", 480, NULL }, - { "quotedblright", 444, NULL }, - { "amacron", 444, NULL }, - { "sacute", 389, NULL }, - { "imacron", 278, NULL }, - { "cent", 500, NULL }, - { "currency", 500, NULL }, - { "logicalnot", 564, NULL }, - { "zdotaccent", 444, NULL }, - { "Atilde", 722, NULL }, - { "breve", 333, NULL }, - { "bar", 200, NULL }, - { "fraction", 167, NULL }, - { "less", 564, NULL }, - { "ecaron", 444, NULL }, - { "guilsinglleft", 333, NULL }, - { "exclam", 333, NULL }, - { "period", 250, NULL }, - { "Rcaron", 667, NULL }, - { "Kcommaaccent", 722, NULL }, - { "greater", 564, NULL }, - { "atilde", 444, NULL }, - { "brokenbar", 200, NULL }, - { "quoteleft", 333, NULL }, - { "Edotaccent", 611, NULL }, - { "onesuperior", 300, NULL } + { "Ntilde", 722, nullptr }, + { "rcaron", 333, nullptr }, + { "kcommaaccent", 500, nullptr }, + { "Ncommaaccent", 722, nullptr }, + { "Zacute", 611, nullptr }, + { "comma", 250, nullptr }, + { "cedilla", 333, nullptr }, + { "plusminus", 564, nullptr }, + { "circumflex", 333, nullptr }, + { "dotaccent", 333, nullptr }, + { "edotaccent", 444, nullptr }, + { "asciitilde", 541, nullptr }, + { "colon", 278, nullptr }, + { "onehalf", 750, nullptr }, + { "dollar", 500, nullptr }, + { "Lcaron", 611, nullptr }, + { "ntilde", 500, nullptr }, + { "Aogonek", 722, nullptr }, + { "ncommaaccent", 500, nullptr }, + { "minus", 564, nullptr }, + { "Iogonek", 333, nullptr }, + { "zacute", 444, nullptr }, + { "yen", 500, nullptr }, + { "space", 250, nullptr }, + { "Omacron", 722, nullptr }, + { "questiondown", 444, nullptr }, + { "emdash", 1000, nullptr }, + { "Agrave", 722, nullptr }, + { "three", 500, nullptr }, + { "numbersign", 500, nullptr }, + { "lcaron", 344, nullptr }, + { "A", 722, nullptr }, + { "B", 667, nullptr }, + { "C", 667, nullptr }, + { "aogonek", 444, nullptr }, + { "D", 722, nullptr }, + { "E", 611, nullptr }, + { "onequarter", 750, nullptr }, + { "F", 556, nullptr }, + { "G", 722, nullptr }, + { "H", 722, nullptr }, + { "I", 333, nullptr }, + { "J", 389, nullptr }, + { "K", 722, nullptr }, + { "iogonek", 278, nullptr }, + { "backslash", 278, nullptr }, + { "L", 611, nullptr }, + { "periodcentered", 250, nullptr }, + { "M", 889, nullptr }, + { "N", 722, nullptr }, + { "omacron", 500, nullptr }, + { "Tcommaaccent", 611, nullptr }, + { "O", 722, nullptr }, + { "P", 556, nullptr }, + { "Q", 722, nullptr }, + { "Uhungarumlaut", 722, nullptr }, + { "R", 667, nullptr }, + { "Aacute", 722, nullptr }, + { "caron", 333, nullptr }, + { "S", 556, nullptr }, + { "T", 611, nullptr }, + { "U", 722, nullptr }, + { "agrave", 444, nullptr }, + { "V", 722, nullptr }, + { "W", 944, nullptr }, + { "X", 722, nullptr }, + { "question", 444, nullptr }, + { "equal", 564, nullptr }, + { "Y", 722, nullptr }, + { "Z", 611, nullptr }, + { "four", 500, nullptr }, + { "a", 444, nullptr }, + { "Gcommaaccent", 722, nullptr }, + { "b", 500, nullptr }, + { "c", 444, nullptr }, + { "d", 500, nullptr }, + { "e", 444, nullptr }, + { "f", 333, nullptr }, + { "g", 500, nullptr }, + { "bullet", 350, nullptr }, + { "h", 500, nullptr }, + { "i", 278, nullptr }, + { "Oslash", 722, nullptr }, + { "dagger", 500, nullptr }, + { "j", 278, nullptr }, + { "k", 500, nullptr }, + { "l", 278, nullptr }, + { "m", 778, nullptr }, + { "n", 500, nullptr }, + { "tcommaaccent", 278, nullptr }, + { "o", 500, nullptr }, + { "ordfeminine", 276, nullptr }, + { "ring", 333, nullptr }, + { "p", 500, nullptr }, + { "q", 500, nullptr }, + { "uhungarumlaut", 500, nullptr }, + { "r", 333, nullptr }, + { "twosuperior", 300, nullptr }, + { "aacute", 444, nullptr }, + { "s", 389, nullptr }, + { "OE", 889, nullptr }, + { "t", 278, nullptr }, + { "divide", 564, nullptr }, + { "u", 500, nullptr }, + { "Ccaron", 667, nullptr }, + { "v", 500, nullptr }, + { "w", 722, nullptr }, + { "x", 500, nullptr }, + { "y", 500, nullptr }, + { "z", 444, nullptr }, + { "Gbreve", 722, nullptr }, + { "commaaccent", 250, nullptr }, + { "hungarumlaut", 333, nullptr }, + { "Idotaccent", 333, nullptr }, + { "Nacute", 722, nullptr }, + { "quotedbl", 408, nullptr }, + { "gcommaaccent", 500, nullptr }, + { "mu", 500, nullptr }, + { "greaterequal", 549, nullptr }, + { "Scaron", 556, nullptr }, + { "Lslash", 611, nullptr }, + { "semicolon", 278, nullptr }, + { "oslash", 500, nullptr }, + { "lessequal", 549, nullptr }, + { "lozenge", 471, nullptr }, + { "parenright", 333, nullptr }, + { "ccaron", 444, nullptr }, + { "Ecircumflex", 611, nullptr }, + { "gbreve", 500, nullptr }, + { "trademark", 980, nullptr }, + { "daggerdbl", 500, nullptr }, + { "nacute", 500, nullptr }, + { "macron", 333, nullptr }, + { "Otilde", 722, nullptr }, + { "Emacron", 611, nullptr }, + { "ellipsis", 1000, nullptr }, + { "scaron", 389, nullptr }, + { "AE", 889, nullptr }, + { "Ucircumflex", 722, nullptr }, + { "lslash", 278, nullptr }, + { "quotedblleft", 444, nullptr }, + { "guilsinglright", 333, nullptr }, + { "hyphen", 333, nullptr }, + { "quotesingle", 180, nullptr }, + { "eight", 500, nullptr }, + { "exclamdown", 333, nullptr }, + { "endash", 500, nullptr }, + { "oe", 722, nullptr }, + { "Abreve", 722, nullptr }, + { "Umacron", 722, nullptr }, + { "ecircumflex", 444, nullptr }, + { "Adieresis", 722, nullptr }, + { "copyright", 760, nullptr }, + { "Egrave", 611, nullptr }, + { "slash", 278, nullptr }, + { "Edieresis", 611, nullptr }, + { "otilde", 500, nullptr }, + { "Idieresis", 333, nullptr }, + { "parenleft", 333, nullptr }, + { "one", 500, nullptr }, + { "emacron", 444, nullptr }, + { "Odieresis", 722, nullptr }, + { "ucircumflex", 500, nullptr }, + { "bracketleft", 333, nullptr }, + { "Ugrave", 722, nullptr }, + { "quoteright", 333, nullptr }, + { "Udieresis", 722, nullptr }, + { "perthousand", 1000, nullptr }, + { "Ydieresis", 722, nullptr }, + { "umacron", 500, nullptr }, + { "abreve", 444, nullptr }, + { "Eacute", 611, nullptr }, + { "adieresis", 444, nullptr }, + { "egrave", 444, nullptr }, + { "edieresis", 444, nullptr }, + { "idieresis", 278, nullptr }, + { "Eth", 722, nullptr }, + { "ae", 667, nullptr }, + { "asterisk", 500, nullptr }, + { "odieresis", 500, nullptr }, + { "Uacute", 722, nullptr }, + { "ugrave", 500, nullptr }, + { "nine", 500, nullptr }, + { "five", 500, nullptr }, + { "udieresis", 500, nullptr }, + { "Zcaron", 611, nullptr }, + { "Scommaaccent", 556, nullptr }, + { "threequarters", 750, nullptr }, + { "guillemotright", 500, nullptr }, + { "Ccedilla", 667, nullptr }, + { "ydieresis", 500, nullptr }, + { "tilde", 333, nullptr }, + { "at", 921, nullptr }, + { "eacute", 444, nullptr }, + { "underscore", 500, nullptr }, + { "Euro", 500, nullptr }, + { "Dcroat", 722, nullptr }, + { "multiply", 564, nullptr }, + { "zero", 500, nullptr }, + { "eth", 500, nullptr }, + { "Scedilla", 556, nullptr }, + { "Ograve", 722, nullptr }, + { "Racute", 667, nullptr }, + { "partialdiff", 476, nullptr }, + { "uacute", 500, nullptr }, + { "braceleft", 480, nullptr }, + { "Thorn", 556, nullptr }, + { "zcaron", 444, nullptr }, + { "scommaaccent", 389, nullptr }, + { "ccedilla", 444, nullptr }, + { "Dcaron", 722, nullptr }, + { "dcroat", 500, nullptr }, + { "Ocircumflex", 722, nullptr }, + { "Oacute", 722, nullptr }, + { "scedilla", 389, nullptr }, + { "ogonek", 333, nullptr }, + { "ograve", 500, nullptr }, + { "racute", 333, nullptr }, + { "Tcaron", 611, nullptr }, + { "Eogonek", 611, nullptr }, + { "thorn", 500, nullptr }, + { "degree", 400, nullptr }, + { "registered", 760, nullptr }, + { "radical", 453, nullptr }, + { "Aring", 722, nullptr }, + { "percent", 833, nullptr }, + { "six", 500, nullptr }, + { "paragraph", 453, nullptr }, + { "dcaron", 588, nullptr }, + { "Uogonek", 722, nullptr }, + { "two", 500, nullptr }, + { "summation", 600, nullptr }, + { "Igrave", 333, nullptr }, + { "Lacute", 611, nullptr }, + { "ocircumflex", 500, nullptr }, + { "oacute", 500, nullptr }, + { "Uring", 722, nullptr }, + { "Lcommaaccent", 611, nullptr }, + { "tcaron", 326, nullptr }, + { "eogonek", 444, nullptr }, + { "Delta", 612, nullptr }, + { "Ohungarumlaut", 722, nullptr }, + { "asciicircum", 469, nullptr }, + { "aring", 444, nullptr }, + { "grave", 333, nullptr }, + { "uogonek", 500, nullptr }, + { "bracketright", 333, nullptr }, + { "Iacute", 333, nullptr }, + { "ampersand", 778, nullptr }, + { "igrave", 278, nullptr }, + { "lacute", 278, nullptr }, + { "Ncaron", 722, nullptr }, + { "plus", 564, nullptr }, + { "uring", 500, nullptr }, + { "quotesinglbase", 333, nullptr }, + { "lcommaaccent", 278, nullptr }, + { "Yacute", 722, nullptr }, + { "ohungarumlaut", 500, nullptr }, + { "threesuperior", 300, nullptr }, + { "acute", 333, nullptr }, + { "section", 500, nullptr }, + { "dieresis", 333, nullptr }, + { "iacute", 278, nullptr }, + { "quotedblbase", 444, nullptr }, + { "ncaron", 500, nullptr }, + { "florin", 500, nullptr }, + { "yacute", 500, nullptr }, + { "Rcommaaccent", 667, nullptr }, + { "fi", 556, nullptr }, + { "fl", 556, nullptr }, + { "Acircumflex", 722, nullptr }, + { "Cacute", 667, nullptr }, + { "Icircumflex", 333, nullptr }, + { "guillemotleft", 500, nullptr }, + { "germandbls", 500, nullptr }, + { "Amacron", 722, nullptr }, + { "seven", 500, nullptr }, + { "Sacute", 556, nullptr }, + { "ordmasculine", 310, nullptr }, + { "dotlessi", 278, nullptr }, + { "sterling", 500, nullptr }, + { "notequal", 549, nullptr }, + { "Imacron", 333, nullptr }, + { "rcommaaccent", 333, nullptr }, + { "Zdotaccent", 611, nullptr }, + { "acircumflex", 444, nullptr }, + { "cacute", 444, nullptr }, + { "Ecaron", 611, nullptr }, + { "icircumflex", 278, nullptr }, + { "braceright", 480, nullptr }, + { "quotedblright", 444, nullptr }, + { "amacron", 444, nullptr }, + { "sacute", 389, nullptr }, + { "imacron", 278, nullptr }, + { "cent", 500, nullptr }, + { "currency", 500, nullptr }, + { "logicalnot", 564, nullptr }, + { "zdotaccent", 444, nullptr }, + { "Atilde", 722, nullptr }, + { "breve", 333, nullptr }, + { "bar", 200, nullptr }, + { "fraction", 167, nullptr }, + { "less", 564, nullptr }, + { "ecaron", 444, nullptr }, + { "guilsinglleft", 333, nullptr }, + { "exclam", 333, nullptr }, + { "period", 250, nullptr }, + { "Rcaron", 667, nullptr }, + { "Kcommaaccent", 722, nullptr }, + { "greater", 564, nullptr }, + { "atilde", 444, nullptr }, + { "brokenbar", 200, nullptr }, + { "quoteleft", 333, nullptr }, + { "Edotaccent", 611, nullptr }, + { "onesuperior", 300, nullptr } }; static BuiltinFontWidth zapfDingbatsWidthsTab[] = { - { "a81", 438, NULL }, - { "a82", 138, NULL }, - { "a83", 277, NULL }, - { "a84", 415, NULL }, - { "a85", 509, NULL }, - { "a86", 410, NULL }, - { "a87", 234, NULL }, - { "a88", 234, NULL }, - { "a89", 390, NULL }, - { "a140", 788, NULL }, - { "a141", 788, NULL }, - { "a142", 788, NULL }, - { "a143", 788, NULL }, - { "a144", 788, NULL }, - { "a145", 788, NULL }, - { "a146", 788, NULL }, - { "a147", 788, NULL }, - { "a148", 788, NULL }, - { "a149", 788, NULL }, - { "a90", 390, NULL }, - { "a91", 276, NULL }, - { "a92", 276, NULL }, - { "space", 278, NULL }, - { "a93", 317, NULL }, - { "a94", 317, NULL }, - { "a95", 334, NULL }, - { "a96", 334, NULL }, - { "a97", 392, NULL }, - { "a98", 392, NULL }, - { "a99", 668, NULL }, - { "a150", 788, NULL }, - { "a151", 788, NULL }, - { "a152", 788, NULL }, - { "a153", 788, NULL }, - { "a154", 788, NULL }, - { "a155", 788, NULL }, - { "a156", 788, NULL }, - { "a157", 788, NULL }, - { "a158", 788, NULL }, - { "a159", 788, NULL }, - { "a160", 894, NULL }, - { "a161", 838, NULL }, - { "a162", 924, NULL }, - { "a163", 1016, NULL }, - { "a164", 458, NULL }, - { "a165", 924, NULL }, - { "a166", 918, NULL }, - { "a167", 927, NULL }, - { "a168", 928, NULL }, - { "a169", 928, NULL }, - { "a170", 834, NULL }, - { "a171", 873, NULL }, - { "a172", 828, NULL }, - { "a173", 924, NULL }, - { "a174", 917, NULL }, - { "a175", 930, NULL }, - { "a176", 931, NULL }, - { "a177", 463, NULL }, - { "a178", 883, NULL }, - { "a179", 836, NULL }, - { "a180", 867, NULL }, - { "a181", 696, NULL }, - { "a182", 874, NULL }, - { "a183", 760, NULL }, - { "a184", 946, NULL }, - { "a185", 865, NULL }, - { "a186", 967, NULL }, - { "a187", 831, NULL }, - { "a188", 873, NULL }, - { "a189", 927, NULL }, - { "a1", 974, NULL }, - { "a2", 961, NULL }, - { "a3", 980, NULL }, - { "a4", 719, NULL }, - { "a5", 789, NULL }, - { "a6", 494, NULL }, - { "a7", 552, NULL }, - { "a8", 537, NULL }, - { "a9", 577, NULL }, - { "a190", 970, NULL }, - { "a191", 918, NULL }, - { "a192", 748, NULL }, - { "a193", 836, NULL }, - { "a194", 771, NULL }, - { "a195", 888, NULL }, - { "a196", 748, NULL }, - { "a197", 771, NULL }, - { "a198", 888, NULL }, - { "a199", 867, NULL }, - { "a10", 692, NULL }, - { "a11", 960, NULL }, - { "a12", 939, NULL }, - { "a13", 549, NULL }, - { "a14", 855, NULL }, - { "a15", 911, NULL }, - { "a16", 933, NULL }, - { "a17", 945, NULL }, - { "a18", 974, NULL }, - { "a19", 755, NULL }, - { "a20", 846, NULL }, - { "a21", 762, NULL }, - { "a22", 761, NULL }, - { "a23", 571, NULL }, - { "a24", 677, NULL }, - { "a25", 763, NULL }, - { "a26", 760, NULL }, - { "a27", 759, NULL }, - { "a28", 754, NULL }, - { "a29", 786, NULL }, - { "a30", 788, NULL }, - { "a31", 788, NULL }, - { "a32", 790, NULL }, - { "a33", 793, NULL }, - { "a34", 794, NULL }, - { "a35", 816, NULL }, - { "a36", 823, NULL }, - { "a37", 789, NULL }, - { "a38", 841, NULL }, - { "a39", 823, NULL }, - { "a40", 833, NULL }, - { "a41", 816, NULL }, - { "a42", 831, NULL }, - { "a43", 923, NULL }, - { "a44", 744, NULL }, - { "a45", 723, NULL }, - { "a46", 749, NULL }, - { "a47", 790, NULL }, - { "a48", 792, NULL }, - { "a49", 695, NULL }, - { "a100", 668, NULL }, - { "a101", 732, NULL }, - { "a102", 544, NULL }, - { "a103", 544, NULL }, - { "a104", 910, NULL }, - { "a105", 911, NULL }, - { "a106", 667, NULL }, - { "a107", 760, NULL }, - { "a108", 760, NULL }, - { "a109", 626, NULL }, - { "a50", 776, NULL }, - { "a51", 768, NULL }, - { "a52", 792, NULL }, - { "a53", 759, NULL }, - { "a54", 707, NULL }, - { "a55", 708, NULL }, - { "a56", 682, NULL }, - { "a57", 701, NULL }, - { "a58", 826, NULL }, - { "a59", 815, NULL }, - { "a110", 694, NULL }, - { "a111", 595, NULL }, - { "a112", 776, NULL }, - { "a117", 690, NULL }, - { "a118", 791, NULL }, - { "a119", 790, NULL }, - { "a60", 789, NULL }, - { "a61", 789, NULL }, - { "a62", 707, NULL }, - { "a63", 687, NULL }, - { "a64", 696, NULL }, - { "a65", 689, NULL }, - { "a66", 786, NULL }, - { "a67", 787, NULL }, - { "a68", 713, NULL }, - { "a69", 791, NULL }, - { "a200", 696, NULL }, - { "a201", 874, NULL }, - { "a120", 788, NULL }, - { "a121", 788, NULL }, - { "a202", 974, NULL }, - { "a122", 788, NULL }, - { "a203", 762, NULL }, - { "a123", 788, NULL }, - { "a204", 759, NULL }, - { "a124", 788, NULL }, - { "a205", 509, NULL }, - { "a125", 788, NULL }, - { "a206", 410, NULL }, - { "a126", 788, NULL }, - { "a127", 788, NULL }, - { "a128", 788, NULL }, - { "a129", 788, NULL }, - { "a70", 785, NULL }, - { "a71", 791, NULL }, - { "a72", 873, NULL }, - { "a73", 761, NULL }, - { "a74", 762, NULL }, - { "a75", 759, NULL }, - { "a76", 892, NULL }, - { "a77", 892, NULL }, - { "a78", 788, NULL }, - { "a79", 784, NULL }, - { "a130", 788, NULL }, - { "a131", 788, NULL }, - { "a132", 788, NULL }, - { "a133", 788, NULL }, - { "a134", 788, NULL }, - { "a135", 788, NULL }, - { "a136", 788, NULL }, - { "a137", 788, NULL }, - { "a138", 788, NULL }, - { "a139", 788, NULL } + { "a81", 438, nullptr }, + { "a82", 138, nullptr }, + { "a83", 277, nullptr }, + { "a84", 415, nullptr }, + { "a85", 509, nullptr }, + { "a86", 410, nullptr }, + { "a87", 234, nullptr }, + { "a88", 234, nullptr }, + { "a89", 390, nullptr }, + { "a140", 788, nullptr }, + { "a141", 788, nullptr }, + { "a142", 788, nullptr }, + { "a143", 788, nullptr }, + { "a144", 788, nullptr }, + { "a145", 788, nullptr }, + { "a146", 788, nullptr }, + { "a147", 788, nullptr }, + { "a148", 788, nullptr }, + { "a149", 788, nullptr }, + { "a90", 390, nullptr }, + { "a91", 276, nullptr }, + { "a92", 276, nullptr }, + { "space", 278, nullptr }, + { "a93", 317, nullptr }, + { "a94", 317, nullptr }, + { "a95", 334, nullptr }, + { "a96", 334, nullptr }, + { "a97", 392, nullptr }, + { "a98", 392, nullptr }, + { "a99", 668, nullptr }, + { "a150", 788, nullptr }, + { "a151", 788, nullptr }, + { "a152", 788, nullptr }, + { "a153", 788, nullptr }, + { "a154", 788, nullptr }, + { "a155", 788, nullptr }, + { "a156", 788, nullptr }, + { "a157", 788, nullptr }, + { "a158", 788, nullptr }, + { "a159", 788, nullptr }, + { "a160", 894, nullptr }, + { "a161", 838, nullptr }, + { "a162", 924, nullptr }, + { "a163", 1016, nullptr }, + { "a164", 458, nullptr }, + { "a165", 924, nullptr }, + { "a166", 918, nullptr }, + { "a167", 927, nullptr }, + { "a168", 928, nullptr }, + { "a169", 928, nullptr }, + { "a170", 834, nullptr }, + { "a171", 873, nullptr }, + { "a172", 828, nullptr }, + { "a173", 924, nullptr }, + { "a174", 917, nullptr }, + { "a175", 930, nullptr }, + { "a176", 931, nullptr }, + { "a177", 463, nullptr }, + { "a178", 883, nullptr }, + { "a179", 836, nullptr }, + { "a180", 867, nullptr }, + { "a181", 696, nullptr }, + { "a182", 874, nullptr }, + { "a183", 760, nullptr }, + { "a184", 946, nullptr }, + { "a185", 865, nullptr }, + { "a186", 967, nullptr }, + { "a187", 831, nullptr }, + { "a188", 873, nullptr }, + { "a189", 927, nullptr }, + { "a1", 974, nullptr }, + { "a2", 961, nullptr }, + { "a3", 980, nullptr }, + { "a4", 719, nullptr }, + { "a5", 789, nullptr }, + { "a6", 494, nullptr }, + { "a7", 552, nullptr }, + { "a8", 537, nullptr }, + { "a9", 577, nullptr }, + { "a190", 970, nullptr }, + { "a191", 918, nullptr }, + { "a192", 748, nullptr }, + { "a193", 836, nullptr }, + { "a194", 771, nullptr }, + { "a195", 888, nullptr }, + { "a196", 748, nullptr }, + { "a197", 771, nullptr }, + { "a198", 888, nullptr }, + { "a199", 867, nullptr }, + { "a10", 692, nullptr }, + { "a11", 960, nullptr }, + { "a12", 939, nullptr }, + { "a13", 549, nullptr }, + { "a14", 855, nullptr }, + { "a15", 911, nullptr }, + { "a16", 933, nullptr }, + { "a17", 945, nullptr }, + { "a18", 974, nullptr }, + { "a19", 755, nullptr }, + { "a20", 846, nullptr }, + { "a21", 762, nullptr }, + { "a22", 761, nullptr }, + { "a23", 571, nullptr }, + { "a24", 677, nullptr }, + { "a25", 763, nullptr }, + { "a26", 760, nullptr }, + { "a27", 759, nullptr }, + { "a28", 754, nullptr }, + { "a29", 786, nullptr }, + { "a30", 788, nullptr }, + { "a31", 788, nullptr }, + { "a32", 790, nullptr }, + { "a33", 793, nullptr }, + { "a34", 794, nullptr }, + { "a35", 816, nullptr }, + { "a36", 823, nullptr }, + { "a37", 789, nullptr }, + { "a38", 841, nullptr }, + { "a39", 823, nullptr }, + { "a40", 833, nullptr }, + { "a41", 816, nullptr }, + { "a42", 831, nullptr }, + { "a43", 923, nullptr }, + { "a44", 744, nullptr }, + { "a45", 723, nullptr }, + { "a46", 749, nullptr }, + { "a47", 790, nullptr }, + { "a48", 792, nullptr }, + { "a49", 695, nullptr }, + { "a100", 668, nullptr }, + { "a101", 732, nullptr }, + { "a102", 544, nullptr }, + { "a103", 544, nullptr }, + { "a104", 910, nullptr }, + { "a105", 911, nullptr }, + { "a106", 667, nullptr }, + { "a107", 760, nullptr }, + { "a108", 760, nullptr }, + { "a109", 626, nullptr }, + { "a50", 776, nullptr }, + { "a51", 768, nullptr }, + { "a52", 792, nullptr }, + { "a53", 759, nullptr }, + { "a54", 707, nullptr }, + { "a55", 708, nullptr }, + { "a56", 682, nullptr }, + { "a57", 701, nullptr }, + { "a58", 826, nullptr }, + { "a59", 815, nullptr }, + { "a110", 694, nullptr }, + { "a111", 595, nullptr }, + { "a112", 776, nullptr }, + { "a117", 690, nullptr }, + { "a118", 791, nullptr }, + { "a119", 790, nullptr }, + { "a60", 789, nullptr }, + { "a61", 789, nullptr }, + { "a62", 707, nullptr }, + { "a63", 687, nullptr }, + { "a64", 696, nullptr }, + { "a65", 689, nullptr }, + { "a66", 786, nullptr }, + { "a67", 787, nullptr }, + { "a68", 713, nullptr }, + { "a69", 791, nullptr }, + { "a200", 696, nullptr }, + { "a201", 874, nullptr }, + { "a120", 788, nullptr }, + { "a121", 788, nullptr }, + { "a202", 974, nullptr }, + { "a122", 788, nullptr }, + { "a203", 762, nullptr }, + { "a123", 788, nullptr }, + { "a204", 759, nullptr }, + { "a124", 788, nullptr }, + { "a205", 509, nullptr }, + { "a125", 788, nullptr }, + { "a206", 410, nullptr }, + { "a126", 788, nullptr }, + { "a127", 788, nullptr }, + { "a128", 788, nullptr }, + { "a129", 788, nullptr }, + { "a70", 785, nullptr }, + { "a71", 791, nullptr }, + { "a72", 873, nullptr }, + { "a73", 761, nullptr }, + { "a74", 762, nullptr }, + { "a75", 759, nullptr }, + { "a76", 892, nullptr }, + { "a77", 892, nullptr }, + { "a78", 788, nullptr }, + { "a79", 784, nullptr }, + { "a130", 788, nullptr }, + { "a131", 788, nullptr }, + { "a132", 788, nullptr }, + { "a133", 788, nullptr }, + { "a134", 788, nullptr }, + { "a135", 788, nullptr }, + { "a136", 788, nullptr }, + { "a137", 788, nullptr }, + { "a138", 788, nullptr }, + { "a139", 788, nullptr } }; BuiltinFont builtinFonts[] = { - { "Courier", standardEncoding, 629, -157, { -23, -250, 715, 805}, NULL }, - { "Courier-Bold", standardEncoding, 629, -157, {-113, -250, 749, 801}, NULL }, - { "Courier-BoldOblique", standardEncoding, 629, -157, { -57, -250, 869, 801}, NULL }, - { "Courier-Oblique", standardEncoding, 629, -157, { -27, -250, 849, 805}, NULL }, - { "Helvetica", standardEncoding, 718, -207, {-166, -225, 1000, 931}, NULL }, - { "Helvetica-Bold", standardEncoding, 718, -207, {-170, -228, 1003, 962}, NULL }, - { "Helvetica-BoldOblique", standardEncoding, 718, -207, {-174, -228, 1114, 962}, NULL }, - { "Helvetica-Oblique", standardEncoding, 718, -207, {-170, -225, 1116, 931}, NULL }, - { "Symbol", symbolEncoding, 1010, -293, {-180, -293, 1090, 1010}, NULL }, - { "Times-Bold", standardEncoding, 683, -217, {-168, -218, 1000, 935}, NULL }, - { "Times-BoldItalic", standardEncoding, 683, -217, {-200, -218, 996, 921}, NULL }, - { "Times-Italic", standardEncoding, 683, -217, {-169, -217, 1010, 883}, NULL }, - { "Times-Roman", standardEncoding, 683, -217, {-168, -218, 1000, 898}, NULL }, - { "ZapfDingbats", zapfDingbatsEncoding, 820, -143, { -1, -143, 981, 820}, NULL } + { "Courier", standardEncoding, 629, -157, { -23, -250, 715, 805}, nullptr }, + { "Courier-Bold", standardEncoding, 629, -157, {-113, -250, 749, 801}, nullptr }, + { "Courier-BoldOblique", standardEncoding, 629, -157, { -57, -250, 869, 801}, nullptr }, + { "Courier-Oblique", standardEncoding, 629, -157, { -27, -250, 849, 805}, nullptr }, + { "Helvetica", standardEncoding, 718, -207, {-166, -225, 1000, 931}, nullptr }, + { "Helvetica-Bold", standardEncoding, 718, -207, {-170, -228, 1003, 962}, nullptr }, + { "Helvetica-BoldOblique", standardEncoding, 718, -207, {-174, -228, 1114, 962}, nullptr }, + { "Helvetica-Oblique", standardEncoding, 718, -207, {-170, -225, 1116, 931}, nullptr }, + { "Symbol", symbolEncoding, 1010, -293, {-180, -293, 1090, 1010}, nullptr }, + { "Times-Bold", standardEncoding, 683, -217, {-168, -218, 1000, 935}, nullptr }, + { "Times-BoldItalic", standardEncoding, 683, -217, {-200, -218, 996, 921}, nullptr }, + { "Times-Italic", standardEncoding, 683, -217, {-169, -217, 1010, 883}, nullptr }, + { "Times-Roman", standardEncoding, 683, -217, {-168, -218, 1000, 898}, nullptr }, + { "ZapfDingbats", zapfDingbatsEncoding, 820, -143, { -1, -143, 981, 820}, nullptr } }; BuiltinFont *builtinFontSubst[] = { diff --git a/Build/source/libs/poppler/poppler-src/poppler/CMap.cc b/Build/source/libs/poppler/poppler-src/poppler/CMap.cc index 2d2a7d75754..45b4502eb79 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CMap.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CMap.cc @@ -77,12 +77,12 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA, Object *obj) { } delete cMapNameA; } else if (obj->isStream()) { - if (!(cMap = CMap::parse(NULL, collectionA, obj->getStream()))) { + if (!(cMap = CMap::parse(nullptr, collectionA, obj->getStream()))) { error(errSyntaxError, -1, "Invalid CMap in Type 0 font"); } } else { error(errSyntaxError, -1, "Invalid Encoding in Type 0 font"); - return NULL; + return nullptr; } return cMap; } @@ -105,7 +105,7 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA, error(errSyntaxError, -1, "Couldn't find '{0:t}' CMap file for '{1:t}' collection", cMapNameA, collectionA); - return NULL; + return nullptr; } cMap = new CMap(collectionA->copy(), cMapNameA->copy()); @@ -117,7 +117,7 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA, } CMap *CMap::parse(CMapCache *cache, GooString *collectionA, Stream *str) { - CMap *cMap = new CMap(collectionA->copy(), NULL); + CMap *cMap = new CMap(collectionA->copy(), nullptr); Object obj1 = str->getDict()->lookup("UseCMap"); if (!obj1.isNull()) { cMap->useCMap(cache, &obj1); @@ -131,7 +131,7 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA, Stream *str) { CMap *CMap::parse(CMapCache *cache, GooString *collectionA, GooString *cMapNameA, Stream *stream) { - FILE *f = NULL; + FILE *f = nullptr; CMap *cmap; PSTokenizer *pst; char tok1[256], tok2[256], tok3[256]; @@ -154,7 +154,7 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA, error(errSyntaxError, -1, "Couldn't find '{0:t}' CMap file for '{1:t}' collection", cMapNameA, collectionA); - return NULL; + return nullptr; } pst = new PSTokenizer(&getCharFromFile, f); } @@ -323,7 +323,7 @@ CMap::CMap(GooString *collectionA, GooString *cMapNameA, int wModeA) { cMapName = cMapNameA; isIdent = gTrue; wMode = wModeA; - vector = NULL; + vector = nullptr; refCnt = 1; #ifdef MULTITHREADED gInitMutex(&mutex); @@ -340,7 +340,7 @@ void CMap::useCMap(CMapCache *cache, char *useName) { // GlobalParams::getCMap() in order to acqure the lock need to use // GlobalParams::getCMap if (cache) { - subCMap = cache->getCMap(collection, useNameStr, NULL); + subCMap = cache->getCMap(collection, useNameStr, nullptr); } else { subCMap = globalParams->getCMap(collection, useNameStr); } @@ -511,7 +511,7 @@ void CMap::setReverseMapVector(Guint startCode, CMapVectorEntry *vec, Guint *rmap, Guint rmapSize, Guint ncand) { int i; - if (vec == 0) return; + if (vec == nullptr) return; for (i = 0;i < 256;i++) { if (vec[i].isVector) { setReverseMapVector((startCode+i) << 8, @@ -547,7 +547,7 @@ CMapCache::CMapCache() { int i; for (i = 0; i < cMapCacheSize; ++i) { - cache[i] = NULL; + cache[i] = nullptr; } } @@ -591,5 +591,5 @@ CMap *CMapCache::getCMap(GooString *collection, GooString *cMapName, Stream *str cmap->incRefCnt(); return cmap; } - return NULL; + return nullptr; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/CMap.h b/Build/source/libs/poppler/poppler-src/poppler/CMap.h index e85c086a56d..d1a47e0744d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CMap.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CMap.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2008 Koji Otani -// Copyright (C) 2009 Albert Astals Cid +// Copyright (C) 2009, 2018 Albert Astals Cid // Copyright (C) 2012, 2017 Adrian Johnson // // To see a description of the changes please see the Changelog file that @@ -71,6 +71,9 @@ public: ~CMap(); + CMap(const CMap &) = delete; + CMap& operator=(const CMap &) = delete; + void incRefCnt(); void decRefCnt(); @@ -129,6 +132,9 @@ public: CMapCache(); ~CMapCache(); + CMapCache(const CMapCache &) = delete; + CMapCache& operator=(const CMapCache &) = delete; + // Get the CMap for the specified character collection. // Increments its reference count; there will be one reference for // the cache plus one for the caller of this function. diff --git a/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc b/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc index b0ae8388113..1e76d913b99 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CachedFile.cc @@ -6,7 +6,7 @@ // // Copyright 2009 Stefan Thomas // Copyright 2010, 2011 Hib Eris -// Copyright 2010 Albert Astals Cid +// Copyright 2010, 2018 Albert Astals Cid // Copyright (C) 2013 Julien Nabet // //======================================================================== @@ -172,12 +172,12 @@ size_t CachedFile::read(void *ptr, size_t unitsize, size_t count) return bytes; } -int CachedFile::cache(size_t offset, size_t length) +int CachedFile::cache(size_t rangeOffset, size_t rangeLength) { std::vector r; ByteRange range; - range.offset = offset; - range.length = length; + range.offset = rangeOffset; + range.length = rangeLength; r.push_back(range); return cache(r); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h b/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h index b99ea1ecad4..51edec8ec95 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CachedFile.h @@ -8,7 +8,7 @@ // // Copyright 2009 Stefan Thomas // Copyright 2010 Hib Eris -// Copyright 2010 Albert Astals Cid +// Copyright 2010, 2018 Albert Astals Cid // //======================================================================== @@ -47,6 +47,9 @@ public: CachedFile(CachedFileLoader *cacheLoader, GooString *uri); + CachedFile(const CachedFile &) = delete; + CachedFile& operator=(const CachedFile &) = delete; + Guint getLength() { return length; } long int tell(); int seek(long int offset, int origin); @@ -127,8 +130,12 @@ class CachedFileLoader { public: + CachedFileLoader() = default; virtual ~CachedFileLoader() {}; + CachedFileLoader(const CachedFileLoader &) = delete; + CachedFileLoader& operator=(const CachedFileLoader &) = delete; + // Initializes the file load. // Returns the length of the file. // The caller is responsible for deleting uri and cachedFile. diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc b/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc index a375e0afc6a..91deac465d5 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.cc @@ -17,7 +17,7 @@ // Copyright (C) 2005-2007 Jeff Muizelaar // Copyright (C) 2005, 2006 Kristian Høgsberg // Copyright (C) 2005 Martin Kretzschmar -// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2009, 2012, 2013, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2006, 2007, 2010, 2011 Carlos Garcia Campos // Copyright (C) 2007 Koji Otani // Copyright (C) 2008, 2009 Chris Wilson @@ -70,17 +70,17 @@ // CairoFont //------------------------------------------------------------------------ -CairoFont::CairoFont(Ref ref, - cairo_font_face_t *cairo_font_face, - int *codeToGID, - Guint codeToGIDLen, - GBool substitute, - GBool printing) : ref(ref), - cairo_font_face(cairo_font_face), - codeToGID(codeToGID), - codeToGIDLen(codeToGIDLen), - substitute(substitute), - printing(printing) { } +CairoFont::CairoFont(Ref refA, + cairo_font_face_t *cairo_font_faceA, + int *codeToGIDA, + Guint codeToGIDLenA, + GBool substituteA, + GBool printingA) : ref(refA), + cairo_font_face(cairo_font_faceA), + codeToGID(codeToGIDA), + codeToGIDLen(codeToGIDLenA), + substitute(substituteA), + printing(printingA) { } CairoFont::~CairoFont() { cairo_font_face_destroy (cairo_font_face); @@ -181,7 +181,7 @@ _ft_new_face_uncached (FT_Library lib, FT_Face face; cairo_font_face_t *font_face; - if (font_data == NULL) { + if (font_data == nullptr) { if (FT_New_Face (lib, filename, 0, &face)) return gFalse; } else { @@ -287,7 +287,7 @@ _ft_new_face (FT_Library lib, tmpl.fd = -1; - if (font_data == NULL) { + if (font_data == nullptr) { /* if we fail to mmap the file, just pass it to FreeType instead */ tmpl.fd = open (filename, O_RDONLY); if (tmpl.fd == -1) @@ -298,7 +298,7 @@ _ft_new_face (FT_Library lib, return _ft_new_face_uncached (lib, filename, font_data, font_data_len, face_out, font_face_out); } - tmpl.bytes = (unsigned char *) mmap (NULL, st.st_size, + tmpl.bytes = (unsigned char *) mmap (nullptr, st.st_size, PROT_READ, MAP_PRIVATE, tmpl.fd, 0); if (tmpl.bytes == MAP_FAILED) { @@ -352,7 +352,7 @@ _ft_new_face (FT_Library lib, l = (struct _ft_face_data *) gmallocn (1, sizeof (struct _ft_face_data)); *l = tmpl; - l->prev = NULL; + l->prev = nullptr; l->next = _ft_open_faces; if (_ft_open_faces) _ft_open_faces->prev = l; @@ -379,22 +379,21 @@ _ft_new_face (FT_Library lib, #define _ft_new_face _ft_new_face_uncached #endif -CairoFreeTypeFont::CairoFreeTypeFont(Ref ref, - cairo_font_face_t *cairo_font_face, - int *codeToGID, - Guint codeToGIDLen, - GBool substitute) : CairoFont(ref, - cairo_font_face, - codeToGID, - codeToGIDLen, - substitute, +CairoFreeTypeFont::CairoFreeTypeFont(Ref refA, + cairo_font_face_t *cairo_font_faceA, + int *codeToGIDA, + Guint codeToGIDLenA, + GBool substituteA) : CairoFont(refA, + cairo_font_faceA, + codeToGIDA, + codeToGIDLenA, + substituteA, gTrue) { } CairoFreeTypeFont::~CairoFreeTypeFont() { } CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Library lib, GBool useCIDs) { - Object refObj, strObj; GooString *fileName; char *fileNameC; char *font_data; @@ -413,19 +412,19 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, int *codeToGID; Guint codeToGIDLen; - codeToGID = NULL; + codeToGID = nullptr; codeToGIDLen = 0; - font_data = NULL; + font_data = nullptr; font_data_len = 0; - fileName = NULL; - fileNameC = NULL; + fileName = nullptr; + fileNameC = nullptr; GBool substitute = gFalse; ref = *gfxFont->getID(); fontType = gfxFont->getType(); - if (!(fontLoc = gfxFont->locateFont(xref, NULL))) { + if (!(fontLoc = gfxFont->locateFont(xref, nullptr))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); @@ -435,7 +434,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, // embedded font if (fontLoc->locType == gfxFontLocEmbedded) { font_data = gfxFont->readEmbFontFile(xref, &font_data_len); - if (NULL == font_data) + if (nullptr == font_data) goto err2; // external font @@ -445,7 +444,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, substitute = gTrue; } - if (fileName != NULL) { + if (fileName != nullptr) { fileNameC = fileName->getCString(); } @@ -482,7 +481,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, break; case fontCIDType2: case fontCIDType2OT: - codeToGID = NULL; + codeToGID = nullptr; n = 0; if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); @@ -492,7 +491,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, n * sizeof(int)); } } else { - if (font_data != NULL) { + if (font_data != nullptr) { ff = FoFiTrueType::make(font_data, font_data_len); } else { ff = FoFiTrueType::load(fileNameC); @@ -506,7 +505,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, /* Fall through */ case fontTrueType: case fontTrueTypeOT: - if (font_data != NULL) { + if (font_data != nullptr) { ff = FoFiTrueType::make(font_data, font_data_len); } else { ff = FoFiTrueType::load(fileNameC); @@ -530,12 +529,12 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, case fontCIDType0: case fontCIDType0C: - codeToGID = NULL; + codeToGID = nullptr; codeToGIDLen = 0; if (!useCIDs) { - if (font_data != NULL) { + if (font_data != nullptr) { ff1c = FoFiType1C::make(font_data, font_data_len); } else { ff1c = FoFiType1C::load(fileNameC); @@ -553,7 +552,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, break; case fontCIDType0COT: - codeToGID = NULL; + codeToGID = nullptr; n = 0; if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); @@ -567,7 +566,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, if (!codeToGID) { if (!useCIDs) { - if (font_data != NULL) { + if (font_data != nullptr) { ff = FoFiTrueType::make(font_data, font_data_len); } else { ff = FoFiTrueType::load(fileNameC); @@ -604,7 +603,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, gfree (codeToGID); gfree (font_data); fprintf (stderr, "some font thing failed\n"); - return NULL; + return nullptr; } //------------------------------------------------------------------------ @@ -704,7 +703,7 @@ _render_type3_glyph (cairo_scaled_font_t *scaled_font, box.y1 = mat[1]; box.x2 = mat[2]; box.y2 = mat[3]; - gfx = new Gfx(info->doc, output_dev, resDict, &box, NULL); + gfx = new Gfx(info->doc, output_dev, resDict, &box, nullptr); output_dev->startDoc(info->doc, info->fontEngine); output_dev->startPage (1, gfx->getState(), gfx->getXRef()); output_dev->setInType3Char(gTrue); @@ -736,7 +735,6 @@ _render_type3_glyph (cairo_scaled_font_t *scaled_font, CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, PDFDoc *doc, CairoFontEngine *fontEngine, GBool printing, XRef *xref) { - Object refObj, strObj; type3_font_info_t *info; cairo_font_face_t *font_face; Ref ref; @@ -779,18 +777,18 @@ CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, PDFDoc *doc, return new CairoType3Font(ref, doc, font_face, codeToGID, codeToGIDLen, printing, xref); } -CairoType3Font::CairoType3Font(Ref ref, - PDFDoc *doc, - cairo_font_face_t *cairo_font_face, - int *codeToGID, - Guint codeToGIDLen, - GBool printing, XRef *xref) : CairoFont(ref, - cairo_font_face, - codeToGID, - codeToGIDLen, +CairoType3Font::CairoType3Font(Ref refA, + PDFDoc *docA, + cairo_font_face_t *cairo_font_faceA, + int *codeToGIDA, + Guint codeToGIDLenA, + GBool printingA, XRef *xref) : CairoFont(refA, + cairo_font_faceA, + codeToGIDA, + codeToGIDLenA, gFalse, - printing), - doc(doc) { } + printingA), + doc(docA) { } CairoType3Font::~CairoType3Font() { } @@ -809,7 +807,7 @@ CairoFontEngine::CairoFontEngine(FT_Library libA) { lib = libA; for (i = 0; i < cairoFontCacheSize; ++i) { - fontCache[i] = NULL; + fontCache[i] = nullptr; } FT_Int major, minor, patch; diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h b/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h index 12fa598f152..601fbae84c3 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoFontEngine.h @@ -15,7 +15,7 @@ // under GPL version 2 or later // // Copyright (C) 2005, 2006 Kristian Høgsberg -// Copyright (C) 2005 Albert Astals Cid +// Copyright (C) 2005, 2018 Albert Astals Cid // Copyright (C) 2006, 2007 Jeff Muizelaar // Copyright (C) 2006, 2010 Carlos Garcia Campos // Copyright (C) 2008, 2017 Adrian Johnson @@ -51,6 +51,8 @@ public: GBool substitute, GBool printing); virtual ~CairoFont(); + CairoFont(const CairoFont &) = delete; + CairoFont& operator=(const CairoFont &other) = delete; virtual GBool matches(Ref &other, GBool printing); cairo_font_face_t *getFontFace(void); @@ -114,6 +116,8 @@ public: // Create a font engine. CairoFontEngine(FT_Library libA); ~CairoFontEngine(); + CairoFontEngine(const CairoFontEngine &) = delete; + CairoFontEngine& operator=(const CairoFontEngine &other) = delete; CairoFont *getFont(GfxFont *gfxFont, PDFDoc *doc, GBool printing, XRef *xref); diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc index cc8a161bee3..f0c4b040ab1 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.cc @@ -16,9 +16,9 @@ // // Copyright (C) 2005-2008 Jeff Muizelaar // Copyright (C) 2005, 2006 Kristian Høgsberg -// Copyright (C) 2005, 2009, 2012, 2017 Albert Astals Cid +// Copyright (C) 2005, 2009, 2012, 2017, 2018 Albert Astals Cid // Copyright (C) 2005 Nickolay V. Shmyrev -// Copyright (C) 2006-2011, 2013, 2014, 2017 Carlos Garcia Campos +// Copyright (C) 2006-2011, 2013, 2014, 2017, 2018 Carlos Garcia Campos // Copyright (C) 2008 Carl Worth // Copyright (C) 2008-2017 Adrian Johnson // Copyright (C) 2008 Michael Vrable @@ -69,6 +69,11 @@ // #define LOG_CAIRO +// To limit memory usage and improve performance when printing, limit +// cairo images to this size. 8192 is sufficient for an A2 sized +// 300ppi image. +#define MAX_PRINT_IMAGE_SIZE 8192 + #ifdef LOG_CAIRO #define LOG(x) (x) #else @@ -91,7 +96,7 @@ static inline void printMatrix(cairo_matrix_t *matrix){ //------------------------------------------------------------------------ CairoImage::CairoImage (double x1, double y1, double x2, double y2) { - this->image = NULL; + this->image = nullptr; this->x1 = x1; this->y1 = y1; this->x2 = x2; @@ -123,26 +128,26 @@ FT_Library CairoOutputDev::ft_lib; GBool CairoOutputDev::ft_lib_initialized = gFalse; CairoOutputDev::CairoOutputDev() { - doc = NULL; + doc = nullptr; if (!ft_lib_initialized) { FT_Init_FreeType(&ft_lib); ft_lib_initialized = gTrue; } - fontEngine = NULL; + fontEngine = nullptr; fontEngine_owner = gFalse; - glyphs = NULL; - fill_pattern = NULL; + glyphs = nullptr; + fill_pattern = nullptr; fill_color.r = fill_color.g = fill_color.b = 0; - stroke_pattern = NULL; + stroke_pattern = nullptr; stroke_color.r = stroke_color.g = stroke_color.b = 0; stroke_opacity = 1.0; fill_opacity = 1.0; - textClipPath = NULL; - strokePathClip = NULL; - cairo = NULL; - currentFont = NULL; + textClipPath = nullptr; + strokePathClip = nullptr; + cairo = nullptr; + currentFont = nullptr; #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) prescaleImages = gFalse; #else @@ -156,23 +161,23 @@ CairoOutputDev::CairoOutputDev() { text_matrix_valid = gTrue; antialias = CAIRO_ANTIALIAS_DEFAULT; - groupColorSpaceStack = NULL; - maskStack = NULL; - group = NULL; - mask = NULL; - shape = NULL; - cairo_shape = NULL; + groupColorSpaceStack = nullptr; + maskStack = nullptr; + group = nullptr; + mask = nullptr; + shape = nullptr; + cairo_shape = nullptr; knockoutCount = 0; - text = NULL; - actualText = NULL; + text = nullptr; + actualText = nullptr; // the SA parameter supposedly defaults to false, but Acrobat // apparently hardwires it to true stroke_adjust = gTrue; align_stroke_coords = gFalse; adjusted_stroke_width = gFalse; - xref = NULL; + xref = nullptr; } CairoOutputDev::~CairoOutputDev() { @@ -198,7 +203,7 @@ CairoOutputDev::~CairoOutputDev() { void CairoOutputDev::setCairo(cairo_t *cairo) { - if (this->cairo != NULL) { + if (this->cairo != nullptr) { cairo_status_t status = cairo_status (this->cairo); if (status) { error(errInternal, -1, "cairo context error: {0:s}\n", cairo_status_to_string(status)); @@ -206,15 +211,15 @@ void CairoOutputDev::setCairo(cairo_t *cairo) cairo_destroy (this->cairo); assert(!cairo_shape); } - if (cairo != NULL) { + if (cairo != nullptr) { this->cairo = cairo_reference (cairo); /* save the initial matrix so that we can use it for type3 fonts. */ //XXX: is this sufficient? could we miss changes to the matrix somehow? cairo_get_matrix(cairo, &orig_matrix); setContextAntialias(cairo, antialias); } else { - this->cairo = NULL; - this->cairo_shape = NULL; + this->cairo = nullptr; + this->cairo_shape = nullptr; } } @@ -229,8 +234,8 @@ void CairoOutputDev::setTextPage(TextPage *text) this->text->incRefCnt(); actualText = new ActualText(text); } else { - this->text = NULL; - actualText = NULL; + this->text = nullptr; + actualText = nullptr; } } @@ -281,7 +286,7 @@ void CairoOutputDev::startPage(int pageNum, GfxState *state, XRef *xrefA) { if (text) text->startPage(state); - if (xrefA != NULL) { + if (xrefA != nullptr) { xref = xrefA; } } @@ -340,7 +345,7 @@ void CairoOutputDev::restoreState(GfxState *state) { if (strokePathClip->dashes) gfree (strokePathClip->dashes); gfree (strokePathClip); - strokePathClip = NULL; + strokePathClip = nullptr; } } @@ -950,11 +955,11 @@ GBool CairoOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat cairo_translate (cairo, -box.x1, -box.y1); strokePathTmp = strokePathClip; - strokePathClip = NULL; + strokePathClip = nullptr; adjusted_stroke_width_tmp = adjusted_stroke_width; maskTmp = mask; - mask = NULL; - gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef()); + mask = nullptr; + gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef()); if (paintType == 2) inUncoloredPattern = gTrue; gfx->display(str); @@ -1351,7 +1356,7 @@ void CairoOutputDev::clipToStrokePath(GfxState *state) { strokePathClip->dashes = (double*) gmallocn (sizeof(double), strokePathClip->dash_count); cairo_get_dash (cairo, strokePathClip->dashes, &strokePathClip->dash_offset); } else { - strokePathClip->dashes = NULL; + strokePathClip->dashes = nullptr; } strokePathClip->cap = cairo_get_line_cap (cairo); strokePathClip->join = cairo_get_line_join (cairo); @@ -1503,12 +1508,12 @@ void CairoOutputDev::endString(GfxState *state) finish: gfree (glyphs); - glyphs = NULL; + glyphs = nullptr; if (use_show_text_glyphs) { gfree (clusters); - clusters = NULL; + clusters = nullptr; gfree (utf8); - utf8 = NULL; + utf8 = nullptr; } } @@ -1579,7 +1584,7 @@ void CairoOutputDev::endTextObject(GfxState *state) { cairo_clip (cairo_shape); } cairo_path_destroy (textClipPath); - textClipPath = NULL; + textClipPath = nullptr; } } @@ -1611,7 +1616,7 @@ static cairo_surface_t *cairo_surface_create_similar_clip (cairo_t *cairo, cairo_content_t content) { cairo_pattern_t *pattern; - cairo_surface_t *surface = NULL; + cairo_surface_t *surface = nullptr; cairo_push_group_with_content (cairo, content); pattern = cairo_pop_group (cairo); @@ -1723,7 +1728,7 @@ void CairoOutputDev::paintTransparencyGroup(GfxState * /*state*/, double * /*bbo cairo_paint_with_alpha (cairo, fill_opacity); } cairo_pattern_destroy(mask); - mask = NULL; + mask = nullptr; } if (shape) { @@ -1733,7 +1738,7 @@ void CairoOutputDev::paintTransparencyGroup(GfxState * /*state*/, double * /*bbo cairo_set_source_rgb (cairo_shape, 0, 0, 0); } cairo_pattern_destroy (shape); - shape = NULL; + shape = nullptr; } popTransparencyGroup(); @@ -1881,7 +1886,7 @@ void CairoOutputDev::popTransparencyGroup() { /* we don't need to track the shape anymore because * we are not above any knockout groups */ cairo_destroy(cairo_shape); - cairo_shape = NULL; + cairo_shape = nullptr; } } groupColorSpaceStack = css->next; @@ -1892,7 +1897,7 @@ void CairoOutputDev::popTransparencyGroup() { void CairoOutputDev::clearSoftMask(GfxState * /*state*/) { if (mask) cairo_pattern_destroy(mask); - mask = NULL; + mask = nullptr; } /* Taken from cairo/doc/tutorial/src/singular.c */ @@ -1965,7 +1970,7 @@ CairoOutputDev::getFilterForSurface(cairo_surface_t *image, GBool interpolate) { if (interpolate) - return CAIRO_FILTER_BEST; + return CAIRO_FILTER_GOOD; int orig_width = cairo_image_surface_get_width (image); int orig_height = cairo_image_surface_get_height (image); @@ -1985,7 +1990,7 @@ CairoOutputDev::getFilterForSurface(cairo_surface_t *image, if (scaled_width / orig_width >= 4 || scaled_height / orig_height >= 4) return CAIRO_FILTER_NEAREST; - return CAIRO_FILTER_BEST; + return CAIRO_FILTER_GOOD; } void CairoOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, @@ -2453,7 +2458,7 @@ void CairoOutputDev::drawImageMaskPrescaled(GfxState *state, Object *ref, Stream * cairo doesn't yet do minifaction filtering causing scaled down * images with CAIRO_FILTER_NEAREST to look really bad */ cairo_pattern_set_filter (pattern, - interpolate ? CAIRO_FILTER_BEST : CAIRO_FILTER_FAST); + interpolate ? CAIRO_FILTER_GOOD : CAIRO_FILTER_FAST); if (state->getFillColorSpace()->getMode() == csPattern) { cairo_matrix_init_translate (&matrix, 0, scaledHeight); @@ -2761,7 +2766,7 @@ void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *s cairo_surface_mark_dirty (image); - setMimeData(state, str, ref, colorMap, image); + setMimeData(state, str, ref, colorMap, image, height); pattern = cairo_pattern_create_for_surface (image); cairo_surface_destroy (image); @@ -2915,7 +2920,7 @@ GBool CairoOutputDev::setMimeDataForJBIG2Globals(Stream *str, if (!globalsStr->isStream()) return gTrue; - if (setMimeIdFromRef(image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, NULL, + if (setMimeIdFromRef(image, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, nullptr, jb2Str->getGlobalsStreamRef())) return gFalse; @@ -2935,8 +2940,38 @@ GBool CairoOutputDev::setMimeDataForJBIG2Globals(Stream *str, } #endif +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10) +GBool CairoOutputDev::setMimeDataForCCITTParams(Stream *str, + cairo_surface_t *image, int height) +{ + CCITTFaxStream *ccittStr = static_cast(str); + + GooString params; + params.appendf("Columns={0:d}", ccittStr->getColumns()); + params.appendf(" Rows={0:d}", height); + params.appendf(" K={0:d}", ccittStr->getEncoding()); + params.appendf(" EndOfLine={0:d}", ccittStr->getEndOfLine() ? 1 : 0); + params.appendf(" EncodedByteAlign={0:d}", ccittStr->getEncodedByteAlign() ? 1 : 0); + params.appendf(" EndOfBlock={0:d}", ccittStr->getEndOfBlock() ? 1 : 0); + params.appendf(" BlackIs1={0:d}", ccittStr->getBlackIs1() ? 1 : 0); + params.appendf(" DamagedRowsBeforeError={0:d}", ccittStr->getDamagedRowsBeforeError()); + + char *p = strdup(params.getCString()); + if (cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + (const unsigned char*)p, + params.getLength(), + gfree, (void*)p)) + { + gfree (p); + return gFalse; + } + + return gTrue; +} +#endif + void CairoOutputDev::setMimeData(GfxState *state, Stream *str, Object *ref, - GfxImageColorMap *colorMap, cairo_surface_t *image) + GfxImageColorMap *colorMap, cairo_surface_t *image, int height) { char *strBuffer; int len; @@ -2959,13 +2994,18 @@ void CairoOutputDev::setMimeData(GfxState *state, Stream *str, Object *ref, case strJBIG2: mime_type = CAIRO_MIME_TYPE_JBIG2; break; +#endif +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10) + case strCCITTFax: + mime_type = CAIRO_MIME_TYPE_CCITT_FAX; + break; #endif default: return; } obj = str->getDict()->lookup("ColorSpace"); - colorSpace = GfxColorSpace::parse(NULL, &obj, this, state); + colorSpace = GfxColorSpace::parse(nullptr, &obj, this, state); // colorspace in stream dict may be different from colorspace in jpx // data @@ -3002,6 +3042,11 @@ void CairoOutputDev::setMimeData(GfxState *state, Stream *str, Object *ref, return; #endif +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10) + if (strKind == strCCITTFax && !setMimeDataForCCITTParams(str, image, height)) + return; +#endif + if (getStreamData (str->getNextStream(), &strBuffer, &len)) { cairo_status_t status = CAIRO_STATUS_SUCCESS; @@ -3039,10 +3084,10 @@ public: GBool printing, GfxImageColorMap *colorMapA, int *maskColorsA) { - cairo_surface_t *image = NULL; + cairo_surface_t *image = nullptr; int i; - lookup = NULL; + lookup = nullptr; colorMap = colorMapA; maskColors = maskColorsA; width = widthA; @@ -3085,7 +3130,22 @@ public: bool needsCustomDownscaling = true; #endif - if (!needsCustomDownscaling || printing || scaledWidth >= width || scaledHeight >= height) { + if (printing) { + if (width > MAX_PRINT_IMAGE_SIZE || height > MAX_PRINT_IMAGE_SIZE) { + if (width > height) { + scaledWidth = MAX_PRINT_IMAGE_SIZE; + scaledHeight = MAX_PRINT_IMAGE_SIZE * (double)height/width; + } else { + scaledHeight = MAX_PRINT_IMAGE_SIZE; + scaledWidth = MAX_PRINT_IMAGE_SIZE * (double)width/height; + } + needsCustomDownscaling = true; + } else { + needsCustomDownscaling = false; + } + } + + if (!needsCustomDownscaling || scaledWidth >= width || scaledHeight >= height) { // No downscaling. Create cairo image containing the source image data. unsigned char *buffer; ptrdiff_t stride; @@ -3133,7 +3193,6 @@ public: } void getRow(int row_num, uint32_t *row_data) override { - int i; Guchar *pix; if (row_num <= current_row) @@ -3144,7 +3203,7 @@ public: current_row++; } - if (unlikely(pix == NULL)) { + if (unlikely(pix == nullptr)) { memset(row_data, 0, width*4); if (!imageError) { error(errInternal, -1, "Bad image stream"); @@ -3154,7 +3213,7 @@ public: Guchar *p = pix; GfxRGB rgb; - for (i = 0; i < width; i++) { + for (int i = 0; i < width; i++) { rgb = lookup[*p]; row_data[i] = ((int) colToByte(rgb.r) << 16) | @@ -3199,7 +3258,7 @@ void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, cairo_matrix_t matrix; int width, height; int scaledWidth, scaledHeight; - cairo_filter_t filter = CAIRO_FILTER_BEST; + cairo_filter_t filter = CAIRO_FILTER_GOOD; RescaleDrawImage rescale; LOG (printf ("drawImage %dx%d\n", widthA, heightA)); @@ -3215,8 +3274,17 @@ void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, if (width == widthA && height == heightA) filter = getFilterForSurface (image, interpolate); - if (!inlineImg) /* don't read stream twice if it is an inline image */ - setMimeData(state, str, ref, colorMap, image); + if (!inlineImg) { /* don't read stream twice if it is an inline image */ + // cairo 1.15.10 allows mime image data to have different size to cairo image + // mime image size will be scaled to same size as cairo image +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10) + bool requireSameSize = false; +#else + bool requireSameSize = true; +#endif + if (!requireSameSize || (width == widthA && height == heightA)) + setMimeData(state, str, ref, colorMap, image, heightA); + } pattern = cairo_pattern_create_for_surface (image); cairo_surface_destroy (image); @@ -3241,7 +3309,7 @@ void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, } else if (mask) { maskPattern = cairo_pattern_reference (mask); } else { - maskPattern = NULL; + maskPattern = nullptr; } cairo_save (cairo); @@ -3286,11 +3354,11 @@ void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, CairoImageOutputDev::CairoImageOutputDev() { - images = NULL; + images = nullptr; numImages = 0; size = 0; - imgDrawCbk = NULL; - imgDrawCbkData = NULL; + imgDrawCbk = nullptr; + imgDrawCbkData = nullptr; } CairoImageOutputDev::~CairoImageOutputDev() @@ -3363,7 +3431,7 @@ void CairoImageOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *st CairoOutputDev::drawImageMask(state, ref, str, width, height, invert, interpolate, inlineImg); image->setImage (surface); - setCairo (NULL); + setCairo (nullptr); cairo_surface_destroy (surface); cairo_destroy (cr); } @@ -3396,7 +3464,7 @@ void CairoImageOutputDev::setSoftMaskFromImageMask(GfxState *state, Object *ref, } image->setImage (surface); - setCairo (NULL); + setCairo (nullptr); cairo_surface_destroy (surface); cairo_destroy (cr); } @@ -3426,7 +3494,7 @@ void CairoImageOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, CairoOutputDev::drawImage(state, ref, str, width, height, colorMap, interpolate, maskColors, inlineImg); image->setImage (surface); - setCairo (NULL); + setCairo (nullptr); cairo_surface_destroy (surface); cairo_destroy (cr); } @@ -3462,7 +3530,7 @@ void CairoImageOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stre maskStr, maskWidth, maskHeight, maskColorMap, maskInterpolate); image->setImage (surface); - setCairo (NULL); + setCairo (nullptr); cairo_surface_destroy (surface); cairo_destroy (cr); } @@ -3497,7 +3565,7 @@ void CairoImageOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream * maskStr, maskWidth, maskHeight, maskInvert, maskInterpolate); image->setImage (surface); - setCairo (NULL); + setCairo (nullptr); cairo_surface_destroy (surface); cairo_destroy (cr); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h index 1fee8121719..ffcb5151e55 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoOutputDev.h @@ -18,11 +18,12 @@ // Copyright (C) 2005, 2006 Kristian Høgsberg // Copyright (C) 2005 Nickolay V. Shmyrev // Copyright (C) 2006-2011, 2013 Carlos Garcia Campos -// Copyright (C) 2008, 2009, 2011-2016 Adrian Johnson +// Copyright (C) 2008, 2009, 2011-2017 Adrian Johnson // Copyright (C) 2008 Michael Vrable // Copyright (C) 2010-2013 Thomas Freitag // Copyright (C) 2015 Suzuki Toshiya // Copyright (C) 2016 Jason Crain +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -63,6 +64,9 @@ public: // Destructor. ~CairoImage (); + CairoImage(const CairoImage &) = delete; + CairoImage& operator=(const CairoImage &) = delete; + // Set the image cairo surface void setImage (cairo_surface_t *image); @@ -265,10 +269,10 @@ public: void setCairo (cairo_t *cr); void setTextPage (TextPage *text); - void setPrinting (GBool printing) { this->printing = printing; needFontUpdate = gTrue; } + void setPrinting (GBool printingA) { printing = printingA; needFontUpdate = gTrue; } void setAntialias(cairo_antialias_t antialias); - void setInType3Char(GBool inType3Char) { this->inType3Char = inType3Char; } + void setInType3Char(GBool inType3CharA) { inType3Char = inType3CharA; } void getType3GlyphWidth (double *wx, double *wy) { *wx = t3_glyph_wx; *wy = t3_glyph_wy; } GBool hasType3GlyphBBox () { return t3_glyph_has_bbox; } double *getType3GlyphBBox () { return t3_glyph_bbox; } @@ -283,11 +287,14 @@ protected: GBool interpolate); GBool getStreamData (Stream *str, char **buffer, int *length); void setMimeData(GfxState *state, Stream *str, Object *ref, - GfxImageColorMap *colorMap, cairo_surface_t *image); + GfxImageColorMap *colorMap, cairo_surface_t *image, int height); void fillToStrokePathClip(GfxState *state); void alignStrokeCoords(GfxSubpath *subpath, int i, double *x, double *y); #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) GBool setMimeDataForJBIG2Globals (Stream *str, cairo_surface_t *image); +#endif +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 15, 10) + GBool setMimeDataForCCITTParams(Stream *str, cairo_surface_t *image, int height); #endif static void setContextAntialias(cairo_t *cr, cairo_antialias_t antialias); @@ -328,7 +335,6 @@ protected: GBool printing; GBool use_show_text_glyphs; GBool text_matrix_valid; - cairo_surface_t *surface; cairo_glyph_t *glyphs; int glyphCount; cairo_text_cluster_t *clusters; @@ -352,7 +358,6 @@ protected: cairo_pattern_t *shape; cairo_pattern_t *mask; cairo_matrix_t mask_matrix; - cairo_surface_t *cairo_shape_surface; cairo_t *cairo_shape; int knockoutCount; struct ColorSpaceStack { diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc b/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc index aa9e9e7d517..f34b1e1c79c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.cc @@ -271,9 +271,9 @@ GBool CairoRescaleBox::downScaleImage(unsigned orig_width, unsigned orig_height, int dest_y; int src_y = 0; uint32_t *scanline; - int *x_coverage = NULL; - int *y_coverage = NULL; - uint32_t *temp_buf = NULL; + int *x_coverage = nullptr; + int *y_coverage = nullptr; + uint32_t *temp_buf = nullptr; GBool retval = gFalse; unsigned int *dest; int dst_stride; diff --git a/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h b/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h index 072e8a9c80c..ca307cb7dc8 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CairoRescaleBox.h @@ -30,6 +30,7 @@ // under GPL version 2 or later // // Copyright (C) 2012 Adrian Johnson +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -48,6 +49,9 @@ public: CairoRescaleBox() {}; virtual ~CairoRescaleBox() {}; + CairoRescaleBox(const CairoRescaleBox &) = delete; + CairoRescaleBox& operator=(const CairoRescaleBox &) = delete; + virtual GBool downScaleImage(unsigned orig_width, unsigned orig_height, signed scaled_width, signed scaled_height, unsigned short int start_column, unsigned short int start_row, diff --git a/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc b/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc index eebbbb42407..c423dea28f0 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Catalog.cc @@ -80,26 +80,26 @@ Catalog::Catalog(PDFDoc *docA) { ok = gTrue; doc = docA; xref = doc->getXRef(); - pages = NULL; - pageRefs = NULL; + pages = nullptr; + pageRefs = nullptr; numPages = -1; pagesSize = 0; - baseURI = NULL; - pageLabelInfo = NULL; - form = NULL; - optContent = NULL; + baseURI = nullptr; + pageLabelInfo = nullptr; + form = nullptr; + optContent = nullptr; pageMode = pageModeNull; pageLayout = pageLayoutNull; - destNameTree = NULL; - embeddedFileNameTree = NULL; - jsNameTree = NULL; - viewerPrefs = NULL; - structTreeRoot = NULL; - - pagesList = NULL; - pagesRefList = NULL; - attrsList = NULL; - kidsIdxList = NULL; + destNameTree = nullptr; + embeddedFileNameTree = nullptr; + jsNameTree = nullptr; + viewerPrefs = nullptr; + structTreeRoot = nullptr; + + pagesList = nullptr; + pagesRefList = nullptr; + attrsList = nullptr; + kidsIdxList = nullptr; lastCachedPage = 0; markInfo = markInfoNull; @@ -127,7 +127,7 @@ Catalog::Catalog(PDFDoc *docA) { optContent = new OCGs(&optContentProps, xref); if (!optContent->isOk ()) { delete optContent; - optContent = NULL; + optContent = nullptr; } } @@ -202,13 +202,13 @@ GooString *Catalog::readMetadata() { Page *Catalog::getPage(int i) { - if (i < 1) return NULL; + if (i < 1) return nullptr; catalogLocker(); if (i > lastCachedPage) { GBool cached = cachePageTree(i); if ( cached == gFalse) { - return NULL; + return nullptr; } } return pages[i-1]; @@ -216,13 +216,13 @@ Page *Catalog::getPage(int i) Ref *Catalog::getPageRef(int i) { - if (i < 1) return NULL; + if (i < 1) return nullptr; catalogLocker(); if (i > lastCachedPage) { GBool cached = cachePageTree(i); if ( cached == gFalse) { - return NULL; + return nullptr; } } return &pageRefs[i-1]; @@ -230,7 +230,7 @@ Ref *Catalog::getPageRef(int i) GBool Catalog::cachePageTree(int page) { - if (pagesList == NULL) { + if (pagesList == nullptr) { Ref pagesRef; @@ -262,19 +262,19 @@ GBool Catalog::cachePageTree(int page) pagesSize = getNumPages(); pages = (Page **)gmallocn_checkoverflow(pagesSize, sizeof(Page *)); pageRefs = (Ref *)gmallocn_checkoverflow(pagesSize, sizeof(Ref)); - if (pages == NULL || pageRefs == NULL ) { + if (pages == nullptr || pageRefs == nullptr ) { error(errSyntaxError, -1, "Cannot allocate page cache"); pagesSize = 0; return gFalse; } for (int i = 0; i < pagesSize; ++i) { - pages[i] = NULL; + pages[i] = nullptr; pageRefs[i].num = -1; pageRefs[i].gen = -1; } attrsList = new std::vector(); - attrsList->push_back(new PageAttrs(NULL, obj.getDict())); + attrsList->push_back(new PageAttrs(nullptr, obj.getDict())); pagesList = new std::vector(); pagesList->push_back(std::move(obj)); pagesRefList = new std::vector(); @@ -343,6 +343,7 @@ GBool Catalog::cachePageTree(int page) if (lastCachedPage >= numPages) { error(errSyntaxError, -1, "Page count in top-level pages object is incorrect"); + delete p; return gFalse; } @@ -375,7 +376,7 @@ int Catalog::findPage(int num, int gen) { for (i = 0; i < getNumPages(); ++i) { Ref *ref = getPageRef(i+1); - if (ref != NULL && ref->num == num && ref->gen == gen) + if (ref != nullptr && ref->num == num && ref->gen == gen) return i + 1; } return 0; @@ -409,7 +410,7 @@ LinkDest *Catalog::createLinkDest(Object *obj) } if (dest && !dest->isOk()) { delete dest; - dest = NULL; + dest = nullptr; } return dest; @@ -432,7 +433,7 @@ char *Catalog::getDestsName(int i) obj= getDests(); if (!obj->isDict()) { - return NULL; + return nullptr; } return obj->dictGetKey(i); } @@ -441,7 +442,7 @@ LinkDest *Catalog::getDestsDest(int i) { Object *obj = getDests(); if (!obj->isDict()) { - return NULL; + return nullptr; } Object obj1 = obj->dictGetVal(i); return createLinkDest(&obj1); @@ -461,10 +462,9 @@ LinkDest *Catalog::getDestNameTreeDest(int i) FileSpec *Catalog::embeddedFile(int i) { - Object efDict; catalogLocker(); Object *obj = getEmbeddedFileNameTree()->getValue(i); - FileSpec *embeddedFile = 0; + FileSpec *embeddedFile = nullptr; if (obj->isRef()) { Object fsDict = obj->fetch(xref); embeddedFile = new FileSpec(&fsDict); @@ -580,7 +580,7 @@ NameTree::NameTree() { size = 0; length = 0; - entries = NULL; + entries = nullptr; } NameTree::~NameTree() @@ -690,7 +690,7 @@ Object NameTree::lookup(GooString *name) entry = (Entry **) bsearch(name, entries, length, sizeof(Entry *), Entry::cmp); - if (entry != NULL) { + if (entry != nullptr) { return (*entry)->value.fetch(xref); } else { error(errSyntaxError, -1, "failed to look up ({0:s})", name->getCString()); @@ -712,7 +712,7 @@ GooString *NameTree::getName(int index) if (index < length) { return &entries[index]->name; } else { - return NULL; + return nullptr; } } @@ -721,7 +721,7 @@ GBool Catalog::labelToIndex(GooString *label, int *index) char *end; PageLabelInfo *pli = getPageLabelInfo(); - if (pli != NULL) { + if (pli != nullptr) { if (!pli->labelToIndex(label, index)) return gFalse; } else { @@ -744,7 +744,7 @@ GBool Catalog::indexToLabel(int index, GooString *label) return gFalse; PageLabelInfo *pli = getPageLabelInfo(); - if (pli != NULL) { + if (pli != nullptr) { return pli->indexToLabel(index, label); } else { snprintf(buffer, sizeof (buffer), "%d", index + 1); @@ -784,7 +784,7 @@ int Catalog::getNumPages() Dict *pageDict = pagesDict.getDict(); if (pageRootRef.isRef()) { const Ref pageRef = pageRootRef.getRef(); - Page *p = new Page(doc, 1, &pagesDict, pageRef, new PageAttrs(NULL, pageDict), form); + Page *p = new Page(doc, 1, &pagesDict, pageRef, new PageAttrs(nullptr, pageDict), form); if (p->isOk()) { pages = (Page **)gmallocn(1, sizeof(Page *)); pageRefs = (Ref *)gmallocn(1, sizeof(Ref)); @@ -853,7 +853,7 @@ StructTreeRoot *Catalog::getStructTreeRoot() Object catalog = xref->getCatalog(); if (!catalog.isDict()) { error(errSyntaxError, -1, "Catalog object is wrong type ({0:s})", catalog.getTypeName()); - return NULL; + return nullptr; } Object root = catalog.dictLookup("StructTreeRoot"); @@ -1051,7 +1051,7 @@ LinkAction* Catalog::getAdditionalAction(DocumentAdditionalActionsType type) { type == actionSaveDocumentStart ? "WS" : type == actionSaveDocumentFinish ? "DS" : type == actionPrintDocumentStart ? "WP" : - type == actionPrintDocumentFinish ? "DP" : NULL); + type == actionPrintDocumentFinish ? "DP" : nullptr); Object actionObject = additionalActionsObject.dictLookup(key); if (actionObject.isDict()) diff --git a/Build/source/libs/poppler/poppler-src/poppler/Catalog.h b/Build/source/libs/poppler/poppler-src/poppler/Catalog.h index a2dd7fded48..4acb67fcf1d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Catalog.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Catalog.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Kristian Høgsberg -// Copyright (C) 2005, 2007, 2009-2011, 2013, 2017 Albert Astals Cid +// Copyright (C) 2005, 2007, 2009-2011, 2013, 2017, 2018 Albert Astals Cid // Copyright (C) 2005 Jonathan Blandford // Copyright (C) 2005, 2006, 2008 Brad Hards // Copyright (C) 2007 Julien Rebetez @@ -68,6 +68,10 @@ class NameTree { public: NameTree(); ~NameTree(); + + NameTree(const NameTree &) = delete; + NameTree& operator=(const NameTree &) = delete; + void init(XRef *xref, Object *tree); Object lookup(GooString *name); int numEntries() { return length; }; @@ -110,6 +114,9 @@ public: // Destructor. ~Catalog(); + Catalog(const Catalog &) = delete; + Catalog& operator=(const Catalog &) = delete; + // Is catalog valid? GBool isOk() { return ok; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc b/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc index abf5d51c8fc..17df0292c69 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.cc @@ -137,7 +137,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseCIDToUnicode(GooString *fileName, if (!(f = openFile(fileName->getCString(), "r"))) { error(errIO, -1, "Couldn't open cidToUnicode file '{0:t}'", fileName); - return NULL; + return nullptr; } size = 32768; @@ -161,7 +161,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseCIDToUnicode(GooString *fileName, fclose(f); ctu = new CharCodeToUnicode(collection->copy(), mapA, mapLenA, gTrue, - NULL, 0, 0); + nullptr, 0, 0); gfree(mapA); return ctu; } @@ -185,14 +185,14 @@ CharCodeToUnicode *CharCodeToUnicode::parseUnicodeToUnicode( gfree(uBuf); error(errIO, -1, "Couldn't open unicodeToUnicode file '{0:t}'", fileName); - return NULL; + return nullptr; } size = 4096; mapA = (Unicode *)gmallocn(size, sizeof(Unicode)); memset(mapA, 0, size * sizeof(Unicode)); len = 0; - sMapA = NULL; + sMapA = nullptr; sMapSizeA = sMapLenA = 0; line = 0; @@ -205,7 +205,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseUnicodeToUnicode( continue; } n = 0; - while ((tok = strtok_r(NULL, " \t\r\n", &tokptr))) { + while ((tok = strtok_r(nullptr, " \t\r\n", &tokptr))) { if (n >= uBufSize) { uBufSize += 8; @@ -262,14 +262,14 @@ CharCodeToUnicode *CharCodeToUnicode::parseUnicodeToUnicode( } CharCodeToUnicode *CharCodeToUnicode::make8BitToUnicode(Unicode *toUnicode) { - return new CharCodeToUnicode(NULL, toUnicode, 256, gTrue, NULL, 0, 0); + return new CharCodeToUnicode(nullptr, toUnicode, 256, gTrue, nullptr, 0, 0); } CharCodeToUnicode *CharCodeToUnicode::parseCMap(GooString *buf, int nBits) { CharCodeToUnicode *ctu; char *p; - ctu = new CharCodeToUnicode(NULL); + ctu = new CharCodeToUnicode(nullptr); p = buf->getCString(); ctu->parseCMap1(&getCharFromString, &p, nBits); return ctu; @@ -280,7 +280,7 @@ CharCodeToUnicode *CharCodeToUnicode::parseCMapFromFile(GooString *fileName, CharCodeToUnicode *ctu; FILE *f; - ctu = new CharCodeToUnicode(NULL); + ctu = new CharCodeToUnicode(nullptr); if ((f = globalParams->findToUnicodeFile(fileName))) { ctu->parseCMap1(&getCharFromFile, f, nBits); fclose(f); @@ -479,10 +479,10 @@ void CharCodeToUnicode::addMapping(CharCode code, char *uStr, int n, } CharCodeToUnicode::CharCodeToUnicode() { - tag = NULL; - map = NULL; + tag = nullptr; + map = nullptr; mapLen = 0; - sMap = NULL; + sMap = nullptr; sMapLen = sMapSize = 0; refCnt = 1; isIdentity = gFalse; @@ -500,7 +500,7 @@ CharCodeToUnicode::CharCodeToUnicode(GooString *tagA) { for (i = 0; i < mapLen; ++i) { map[i] = 0; } - sMap = NULL; + sMap = nullptr; sMapLen = sMapSize = 0; refCnt = 1; isIdentity = gFalse; @@ -681,7 +681,7 @@ CharCodeToUnicodeCache::CharCodeToUnicodeCache(int sizeA) { size = sizeA; cache = (CharCodeToUnicode **)gmallocn(size, sizeof(CharCodeToUnicode *)); for (i = 0; i < size; ++i) { - cache[i] = NULL; + cache[i] = nullptr; } } @@ -715,7 +715,7 @@ CharCodeToUnicode *CharCodeToUnicodeCache::getCharCodeToUnicode(GooString *tag) return ctu; } } - return NULL; + return nullptr; } void CharCodeToUnicodeCache::add(CharCodeToUnicode *ctu) { diff --git a/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h b/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h index e2b12ae3dd6..13572217aed 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h +++ b/Build/source/libs/poppler/poppler-src/poppler/CharCodeToUnicode.h @@ -17,7 +17,7 @@ // // Copyright (C) 2007 Julien Rebetez // Copyright (C) 2007 Koji Otani -// Copyright (C) 2008, 2011, 2012 Albert Astals Cid +// Copyright (C) 2008, 2011, 2012, 2018 Albert Astals Cid // Copyright (C) 2017 Adrian Johnson // // To see a description of the changes please see the Changelog file that @@ -78,6 +78,9 @@ public: ~CharCodeToUnicode(); + CharCodeToUnicode(const CharCodeToUnicode &) = delete; + CharCodeToUnicode& operator=(const CharCodeToUnicode &) = delete; + void incRefCnt(); void decRefCnt(); @@ -130,6 +133,9 @@ public: CharCodeToUnicodeCache(int sizeA); ~CharCodeToUnicodeCache(); + CharCodeToUnicodeCache(const CharCodeToUnicodeCache &) = delete; + CharCodeToUnicodeCache& operator=(const CharCodeToUnicodeCache &) = delete; + // Get the CharCodeToUnicode object for . Increments its // reference count; there will be one reference for the cache plus // one for the caller of this function. Returns NULL on failure. diff --git a/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc b/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc index af4c2b60322..907baafe5af 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/CurlCachedFile.cc @@ -20,9 +20,9 @@ CurlCachedFileLoader::CurlCachedFileLoader() { - url = NULL; - cachedFile = NULL; - curl = NULL; + url = nullptr; + cachedFile = nullptr; + curl = nullptr; } CurlCachedFileLoader::~CurlCachedFileLoader() { diff --git a/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc b/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc index 7a4d5930ade..4665ca83889 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc @@ -64,7 +64,7 @@ static void str_term_source(j_decompress_ptr cinfo) DCTStream::DCTStream(Stream *strA, int colorXformA, Dict *dict, int recursion) : FilterStream(strA) { colorXform = colorXformA; - if (dict != NULL) { + if (dict != nullptr) { Object obj = dict->lookup("Width", recursion); err.width = (obj.isInt() && obj.getInt() <= JPEG_MAX_DIMENSION) ? obj.getInt() : 0; obj = dict->lookup("Height", recursion); @@ -100,18 +100,18 @@ void DCTStream::init() src.pub.resync_to_restart = jpeg_resync_to_restart; src.pub.term_source = str_term_source; src.pub.bytes_in_buffer = 0; - src.pub.next_input_byte = NULL; + src.pub.next_input_byte = nullptr; src.str = str; src.index = 0; - current = NULL; - limit = NULL; + current = nullptr; + limit = nullptr; cinfo.err = &err.pub; if (!setjmp(err.setjmp_buffer)) { jpeg_create_decompress(&cinfo); cinfo.src = (jpeg_source_mgr *)&src; } - row_buffer = NULL; + row_buffer = nullptr; } void DCTStream::reset() { @@ -241,7 +241,7 @@ int DCTStream::getChars(int nChars, Guchar *buffer) { } int DCTStream::lookChar() { - if (unlikely(current == NULL)) { + if (unlikely(current == nullptr)) { return EOF; } return *current; @@ -251,10 +251,10 @@ GooString *DCTStream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 2) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("<< >> /DCTDecode filter\n"); return s; diff --git a/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc b/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc index fef3f00a658..532e0070f07 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/DateInfo.cc @@ -32,7 +32,7 @@ /* See PDF Reference 1.3, Section 3.8.2 for PDF Date representation */ GBool parseDateString(const char *dateString, int *year, int *month, int *day, int *hour, int *minute, int *second, char *tz, int *tzHour, int *tzMinute) { - if ( dateString == NULL ) return gFalse; + if ( dateString == nullptr ) return gFalse; if ( strlen(dateString) < 2 ) return gFalse; if ( dateString[0] == 'D' && dateString[1] == ':' ) @@ -82,7 +82,7 @@ GooString *timeToDateString(time_t *timet) { char s[5]; struct tm *gt; size_t len; - time_t timep = timet ? *timet : time(NULL); + time_t timep = timet ? *timet : time(nullptr); struct tm t; gt = gmtime_r (&timep, &t); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc b/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc index db755812713..bf858cecaf1 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Decrypt.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2008 Julien Rebetez -// Copyright (C) 2008, 2010, 2016, 2017 Albert Astals Cid +// Copyright (C) 2008, 2010, 2016-2018 Albert Astals Cid // Copyright (C) 2009 Matthias Franz // Copyright (C) 2009 David Benjamin // Copyright (C) 2012 Fabio D'Urso @@ -143,7 +143,7 @@ GBool Decrypt::makeFileKey(int encVersion, int encRevision, int keyLength, if(encRevision == 6) { // test contains the initial SHA-256 hash input K. // user key is not used in checking user password. - revision6Hash(userPassword, test, NULL); + revision6Hash(userPassword, test, nullptr); } if (!memcmp(test, userKey->getCString(), 32)) { @@ -154,7 +154,7 @@ GBool Decrypt::makeFileKey(int encVersion, int encRevision, int keyLength, if(encRevision == 6) { //test contains the initial SHA-256 hash input K. //user key is not used in computing intermediate user key. - revision6Hash(userPassword, test, NULL); + revision6Hash(userPassword, test, nullptr); } aes256KeyExpansion(&state, test, 32, gTrue); for (i = 0; i < 16; ++i) { @@ -1454,7 +1454,7 @@ static void sha256(Guchar *msg, int msgLen, Guchar *hash) { // SHA-512 hash (see FIPS 180-4) //------------------------------------------------------------------------ // SHA 384 and SHA 512 use the same sequence of eighty constant 64 bit words. -static const uint64_t K[80] = { +static const uint64_t shaK[80] = { 0x428a2f98d728ae22ull, 0x7137449123ef65cdull, 0xb5c0fbcfec4d3b2full, 0xe9b5dba58189dbbcull, 0x3956c25bf348b538ull, 0x59f111f1b605d019ull, 0x923f82a4af194f9bull, 0xab1c5ed5da6d8118ull, 0xd807aa98a3030242ull, 0x12835b0145706fbeull, 0x243185be4ee4b28cull, 0x550c7dc3d5ffb4e2ull, 0x72be5d74f27b896full, 0x80deb1fe3b1696b1ull, 0x9bdc06a725c71235ull, @@ -1531,7 +1531,7 @@ static void sha512HashBlock(Guchar *blk, uint64_t *H) { // 3. for (t = 0; t < 80; ++t) { - T1 = h + sha512Sigma1(e) + sha512Ch(e,f,g) + K[t] + W[t]; + T1 = h + sha512Sigma1(e) + sha512Ch(e,f,g) + shaK[t] + W[t]; T2 = sha512Sigma0(a) + sha512Maj(a,b,c); h = g; g = f; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Dict.cc b/Build/source/libs/poppler/poppler-src/poppler/Dict.cc index 89814708859..a431f7ebf68 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Dict.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Dict.cc @@ -78,7 +78,7 @@ static int binarySearch(const char *key, DictEntry *entries, int length) Dict::Dict(XRef *xrefA) { xref = xrefA; - entries = NULL; + entries = nullptr; size = length = 0; ref = 1; sorted = gFalse; @@ -185,11 +185,11 @@ inline DictEntry *Dict::find(const char *key) const { return &entries[i]; } } - return NULL; + return nullptr; } GBool Dict::hasKey(const char *key) const { - return find(key) != NULL; + return find(key) != nullptr; } void Dict::remove(const char *key) { @@ -270,7 +270,7 @@ GBool Dict::lookupInt(const char *key, const char *alt_key, int *value) const { GBool success = gFalse; Object obj1 = lookup ((char *) key); - if (obj1.isNull () && alt_key != NULL) { + if (obj1.isNull () && alt_key != nullptr) { obj1.free (); obj1 = lookup ((char *) alt_key); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Dict.h b/Build/source/libs/poppler/poppler-src/poppler/Dict.h index 328f422c8e6..9fd732a1561 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Dict.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Dict.h @@ -16,7 +16,7 @@ // Copyright (C) 2005 Kristian Høgsberg // Copyright (C) 2006 Krzysztof Kowalczyk // Copyright (C) 2007-2008 Julien Rebetez -// Copyright (C) 2010, 2017 Albert Astals Cid +// Copyright (C) 2010, 2017, 2018 Albert Astals Cid // Copyright (C) 2010 PaweÅ‚ Wiejacha // Copyright (C) 2013 Thomas Freitag // Copyright (C) 2017 Adrian Johnson @@ -57,6 +57,9 @@ public: // Destructor. ~Dict(); + Dict(const Dict &) = delete; + Dict& operator=(const Dict &) = delete; + // Get number of entries. int getLength() const { return length; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Error.cc b/Build/source/libs/poppler/poppler-src/poppler/Error.cc index ab43654dbeb..356f797260e 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Error.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Error.cc @@ -50,8 +50,8 @@ static const char *errorCategoryNames[] = { }; static void (*errorCbk)(void *data, ErrorCategory category, - Goffset pos, char *msg) = NULL; -static void *errorCbkData = NULL; + Goffset pos, char *msg) = nullptr; +static void *errorCbkData = nullptr; void setErrorCallback(void (*cbk)(void *data, ErrorCategory category, Goffset pos, char *msg), diff --git a/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h b/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h index b28528df564..15b172a7ea0 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h +++ b/Build/source/libs/poppler/poppler-src/poppler/ErrorCodes.h @@ -6,6 +6,20 @@ // //======================================================================== +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2017 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + #ifndef ERRORCODES_H #define ERRORCODES_H @@ -33,4 +47,6 @@ #define errFileIO 10 // file I/O error +#define errFileChangedSinceOpen 11 // file has changed since opening and save can't be done + #endif diff --git a/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc b/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc index 5ebef9777f8..89894e238dc 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/FileSpec.cc @@ -30,10 +30,10 @@ EmbFile::EmbFile(Object *efStream) { m_size = -1; - m_createDate = NULL; - m_modDate = NULL; - m_checksum = NULL; - m_mimetype = NULL; + m_createDate = nullptr; + m_modDate = nullptr; + m_checksum = nullptr; + m_mimetype = nullptr; m_objStr = efStream->copy(); @@ -102,10 +102,10 @@ GBool EmbFile::save2(FILE *f) { FileSpec::FileSpec(Object *fileSpecA) { ok = gTrue; - fileName = NULL; - platformFileName = NULL; - embFile = NULL; - desc = NULL; + fileName = nullptr; + platformFileName = nullptr; + embFile = nullptr; + desc = nullptr; fileSpec = fileSpecA->copy(); Object obj1 = getFileSpecName(fileSpecA); @@ -146,7 +146,7 @@ FileSpec::~FileSpec() EmbFile *FileSpec::getEmbeddedFile() { if(!ok) - return NULL; + return nullptr; if (embFile) return embFile; diff --git a/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h b/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h index 6133117b12c..28394650543 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h +++ b/Build/source/libs/poppler/poppler-src/poppler/FileSpec.h @@ -6,7 +6,7 @@ // under GPL version 2 or later // // Copyright (C) 2008 Carlos Garcia Campos -// Copyright (C) 2017 Albert Astals Cid +// Copyright (C) 2017, 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -27,6 +27,9 @@ public: EmbFile(Object *efStream); ~EmbFile(); + EmbFile(const EmbFile &) = delete; + EmbFile& operator=(const EmbFile &) = delete; + int size() { return m_size; } GooString *modDate() { return m_modDate; } GooString *createDate() { return m_createDate; } @@ -53,6 +56,9 @@ public: FileSpec(Object *fileSpec); ~FileSpec(); + FileSpec(const FileSpec &) = delete; + FileSpec& operator=(const FileSpec &) = delete; + GBool isOk() { return ok; } GooString *getFileName() const { return fileName; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc b/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc index 6ebef787421..4a1f64a6464 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/FontEncodingTables.cc @@ -11,38 +11,38 @@ #include "FontEncodingTables.h" const char *macRomanEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclam", "quotedbl", @@ -138,7 +138,7 @@ const char *macRomanEncoding[256] = { "bar", "braceright", "asciitilde", - NULL, + nullptr, "Adieresis", "Aring", "Ccedilla", @@ -270,38 +270,38 @@ const char *macRomanEncoding[256] = { }; const char *macExpertEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclamsmall", "Hungarumlautsmall", @@ -330,17 +330,17 @@ const char *macExpertEncoding[256] = { "nineoldstyle", "colon", "semicolon", - NULL, + nullptr, "threequartersemdash", - NULL, + nullptr, "questionsmall", - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, "Ethsmall", - NULL, - NULL, + nullptr, + nullptr, "onequarter", "onehalf", "threequarters", @@ -350,19 +350,19 @@ const char *macExpertEncoding[256] = { "seveneighths", "onethird", "twothirds", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", - NULL, + nullptr, "parenrightinferior", "Circumflexsmall", "hypheninferior", @@ -397,14 +397,14 @@ const char *macExpertEncoding[256] = { "onefitted", "rupiah", "Tildesmall", - NULL, - NULL, + nullptr, + nullptr, "asuperior", "centsuperior", - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, "Aacutesmall", "Agravesmall", "Acircumflexsmall", @@ -430,7 +430,7 @@ const char *macExpertEncoding[256] = { "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", - NULL, + nullptr, "eightsuperior", "fourinferior", "threeinferior", @@ -438,25 +438,25 @@ const char *macExpertEncoding[256] = { "eightinferior", "seveninferior", "Scaronsmall", - NULL, + nullptr, "centinferior", "twoinferior", - NULL, + nullptr, "Dieresissmall", - NULL, + nullptr, "Caronsmall", "osuperior", "fiveinferior", - NULL, + nullptr, "commainferior", "periodinferior", "Yacutesmall", - NULL, + nullptr, "dollarinferior", - NULL, - NULL, + nullptr, + nullptr, "Thornsmall", - NULL, + nullptr, "nineinferior", "zeroinferior", "Zcaronsmall", @@ -465,29 +465,29 @@ const char *macExpertEncoding[256] = { "questiondownsmall", "oneinferior", "Lslashsmall", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "Cedillasmall", - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "OEsmall", "figuredash", "hyphensuperior", - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, "exclamdownsmall", - NULL, + nullptr, "Ydieresissmall", - NULL, + nullptr, "onesuperior", "twosuperior", "threesuperior", @@ -497,20 +497,20 @@ const char *macExpertEncoding[256] = { "sevensuperior", "ninesuperior", "zerosuperior", - NULL, + nullptr, "esuperior", "rsuperior", "tsuperior", - NULL, - NULL, + nullptr, + nullptr, "isuperior", "ssuperior", "dsuperior", - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "lsuperior", "Ogoneksmall", "Brevesmall", @@ -522,45 +522,45 @@ const char *macExpertEncoding[256] = { "periodsuperior", "Dotaccentsmall", "Ringsmall", - NULL, - NULL, - NULL, - NULL + nullptr, + nullptr, + nullptr, + nullptr }; const char *winAnsiEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclam", "quotedbl", @@ -788,38 +788,38 @@ const char *winAnsiEncoding[256] = { }; const char *standardEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclam", "quotedbl", @@ -915,40 +915,40 @@ const char *standardEncoding[256] = { "bar", "braceright", "asciitilde", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "exclamdown", "cent", "sterling", @@ -964,12 +964,12 @@ const char *standardEncoding[256] = { "guilsinglright", "fi", "fl", - NULL, + nullptr, "endash", "dagger", "daggerdbl", "periodcentered", - NULL, + nullptr, "paragraph", "bullet", "quotesinglbase", @@ -978,9 +978,9 @@ const char *standardEncoding[256] = { "guillemotright", "ellipsis", "perthousand", - NULL, + nullptr, "questiondown", - NULL, + nullptr, "grave", "acute", "circumflex", @@ -989,100 +989,100 @@ const char *standardEncoding[256] = { "breve", "dotaccent", "dieresis", - NULL, + nullptr, "ring", "cedilla", - NULL, + nullptr, "hungarumlaut", "ogonek", "caron", "emdash", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "AE", - NULL, + nullptr, "ordfeminine", - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, "Lslash", "Oslash", "OE", "ordmasculine", - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "ae", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "dotlessi", - NULL, - NULL, + nullptr, + nullptr, "lslash", "oslash", "oe", "germandbls", - NULL, - NULL, - NULL, - NULL + nullptr, + nullptr, + nullptr, + nullptr }; const char *expertEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclamsmall", "Hungarumlautsmall", - NULL, + nullptr, "dollaroldstyle", "dollarsuperior", "ampersandsmall", @@ -1111,35 +1111,35 @@ const char *expertEncoding[256] = { "threequartersemdash", "periodsuperior", "questionsmall", - NULL, + nullptr, "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "isuperior", - NULL, - NULL, + nullptr, + nullptr, "lsuperior", "msuperior", "nsuperior", "osuperior", - NULL, - NULL, + nullptr, + nullptr, "rsuperior", "ssuperior", "tsuperior", - NULL, + nullptr, "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", - NULL, + nullptr, "parenrightinferior", "Circumflexsmall", "hyphensuperior", @@ -1174,67 +1174,67 @@ const char *expertEncoding[256] = { "onefitted", "rupiah", "Tildesmall", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "exclamdownsmall", "centoldstyle", "Lslashsmall", - NULL, - NULL, + nullptr, + nullptr, "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", - NULL, + nullptr, "Dotaccentsmall", - NULL, - NULL, + nullptr, + nullptr, "Macronsmall", - NULL, - NULL, + nullptr, + nullptr, "figuredash", "hypheninferior", - NULL, - NULL, + nullptr, + nullptr, "Ogoneksmall", "Ringsmall", "Cedillasmall", - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, "onequarter", "onehalf", "threequarters", @@ -1245,8 +1245,8 @@ const char *expertEncoding[256] = { "seveneighths", "onethird", "twothirds", - NULL, - NULL, + nullptr, + nullptr, "zerosuperior", "onesuperior", "twosuperior", @@ -1306,38 +1306,38 @@ const char *expertEncoding[256] = { }; const char *symbolEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "exclam", "universal", @@ -1433,40 +1433,40 @@ const char *symbolEncoding[256] = { "bar", "braceright", "similar", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "Upsilon1", "minute", "lessequal", @@ -1546,7 +1546,7 @@ const char *symbolEncoding[256] = { "braceleftmid", "braceleftbt", "braceex", - NULL, + nullptr, "angleright", "integral", "integraltp", @@ -1561,42 +1561,42 @@ const char *symbolEncoding[256] = { "bracerighttp", "bracerightmid", "bracerightbt", - NULL + nullptr }; const char *zapfDingbatsEncoding[256] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "space", "a1", "a2", @@ -1692,40 +1692,40 @@ const char *zapfDingbatsEncoding[256] = { "a98", "a99", "a100", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, "a101", "a102", "a103", @@ -1805,7 +1805,7 @@ const char *zapfDingbatsEncoding[256] = { "a181", "a200", "a182", - NULL, + nullptr, "a201", "a183", "a184", @@ -1820,5 +1820,5 @@ const char *zapfDingbatsEncoding[256] = { "a189", "a190", "a191", - NULL + nullptr }; diff --git a/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc b/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc index 3730f529b30..15019eba55c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/FontInfo.cc @@ -3,7 +3,7 @@ // FontInfo.cc // // Copyright (C) 2005, 2006 Kristian Høgsberg -// Copyright (C) 2005-2008, 2010, 2017 Albert Astals Cid +// Copyright (C) 2005-2008, 2010, 2017, 2018 Albert Astals Cid // Copyright (C) 2005 Brad Hards // Copyright (C) 2006 Kouhei Sutou // Copyright (C) 2009 Pino Toscano @@ -57,7 +57,7 @@ GooList *FontInfoScanner::scan(int nPages) { int lastPage; if (currentPage > doc->getNumPages()) { - return NULL; + return nullptr; } result = new GooList(); @@ -92,21 +92,20 @@ GooList *FontInfoScanner::scan(int nPages) { } void FontInfoScanner::scanFonts(XRef *xrefA, Dict *resDict, GooList *fontsList) { - Ref r; GfxFontDict *gfxFontDict; GfxFont *font; // scan the fonts in this resource dictionary - gfxFontDict = NULL; + gfxFontDict = nullptr; Object obj1 = resDict->lookupNF("Font"); if (obj1.isRef()) { Object obj2 = obj1.fetch(xrefA); if (obj2.isDict()) { - r = obj1.getRef(); + Ref r = obj1.getRef(); gfxFontDict = new GfxFontDict(xrefA, &r, obj2.getDict()); } } else if (obj1.isDict()) { - gfxFontDict = new GfxFontDict(xrefA, NULL, obj1.getDict()); + gfxFontDict = new GfxFontDict(xrefA, nullptr, obj1.getDict()); } if (gfxFontDict) { for (int i = 0; i < gfxFontDict->getNumFonts(); ++i) { @@ -160,10 +159,10 @@ FontInfo::FontInfo(GfxFont *font, XRef *xref) { // font name origName = font->getName(); - if (origName != NULL) { + if (origName != nullptr) { name = font->getName()->copy(); } else { - name = NULL; + name = nullptr; } // font type @@ -176,8 +175,8 @@ FontInfo::FontInfo(GfxFont *font, XRef *xref) { emb = font->getEmbeddedFontID(&embRef); } - file = NULL; - substituteName = NULL; + file = nullptr; + substituteName = nullptr; if (!emb) { SysFontType dummy; @@ -211,10 +210,10 @@ FontInfo::FontInfo(GfxFont *font, XRef *xref) { } FontInfo::FontInfo(FontInfo& f) { - name = f.name ? f.name->copy() : NULL; - file = f.file ? f.file->copy() : NULL; - encoding = f.encoding ? f.encoding->copy() : NULL; - substituteName = f.substituteName ? f.substituteName->copy() : NULL; + name = f.name ? f.name->copy() : nullptr; + file = f.file ? f.file->copy() : nullptr; + encoding = f.encoding ? f.encoding->copy() : nullptr; + substituteName = f.substituteName ? f.substituteName->copy() : nullptr; type = f.type; emb = f.emb; subset = f.subset; diff --git a/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h b/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h index 615b6793de3..f6501466b52 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h +++ b/Build/source/libs/poppler/poppler-src/poppler/FontInfo.h @@ -3,7 +3,7 @@ // FontInfo.h // // Copyright (C) 2005 Kristian Høgsberg -// Copyright (C) 2005-2008, 2010, 2011 Albert Astals Cid +// Copyright (C) 2005-2008, 2010, 2011, 2018 Albert Astals Cid // Copyright (C) 2005 Brad Hards // Copyright (C) 2009 Pino Toscano // Copyright (C) 2012 Adrian Johnson @@ -56,6 +56,8 @@ public: // Destructor. ~FontInfo(); + FontInfo& operator=(const FontInfo &) = delete; + GooString *getName() { return name; }; GooString *getSubstituteName() { return substituteName; }; GooString *getFile() { return file; }; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Form.cc b/Build/source/libs/poppler/poppler-src/poppler/Form.cc index 3c23dd3f651..11b16c9158b 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Form.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Form.cc @@ -94,7 +94,7 @@ FormWidget::FormWidget(PDFDoc *docA, Object *aobj, unsigned num, Ref aref, FormF obj = aobj->copy(); type = formUndef; field = fieldA; - widget = NULL; + widget = nullptr; } FormWidget::~FormWidget() @@ -168,18 +168,18 @@ GooString *FormWidget::getFullyQualifiedName() { } LinkAction *FormWidget::getActivationAction() { - return widget ? widget->getAction() : NULL; + return widget ? widget->getAction() : nullptr; } LinkAction *FormWidget::getAdditionalAction(Annot::FormAdditionalActionsType type) { - return widget ? widget->getFormAdditionalAction(type) : NULL; + return widget ? widget->getFormAdditionalAction(type) : nullptr; } FormWidgetButton::FormWidgetButton (PDFDoc *docA, Object *aobj, unsigned num, Ref ref, FormField *p) : FormWidget(docA, aobj, num, ref, p) { type = formButton; - onStr = NULL; + onStr = nullptr; // Find the name of the ON state in the AP dictionnary // The reference say the Off state, if it existe, _must_ be stored in the AP dict under the name /Off @@ -205,7 +205,7 @@ char *FormWidgetButton::getOnStr() { // 12.7.4.2.3 Check Boxes // Yes should be used as the name for the on state - return parent()->getButtonType() == formButtonCheck ? (char *)"Yes" : NULL; + return parent()->getButtonType() == formButtonCheck ? (char *)"Yes" : nullptr; } FormWidgetButton::~FormWidgetButton () @@ -376,7 +376,7 @@ GooString* FormWidgetChoice::getEditChoice () { if (!hasEdit()) { error(errInternal, -1, "FormFieldChoice::getEditChoice called on a non-editable choice\n"); - return NULL; + return nullptr; } return parent()->getEditChoice(); } @@ -618,12 +618,12 @@ FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *par type = ty; parent = parentA; numChildren = 0; - children = NULL; + children = nullptr; terminal = false; - widgets = NULL; + widgets = nullptr; readOnly = false; - defaultAppearance = NULL; - fullyQualifiedName = NULL; + defaultAppearance = nullptr; + fullyQualifiedName = nullptr; quadding = quaddingLeftJustified; hasQuadding = gFalse; @@ -715,21 +715,21 @@ FormField::FormField(PDFDoc *docA, Object *aobj, const Ref& aref, FormField *par if (obj1.isString()) { partialName = obj1.getString()->copy(); } else { - partialName = NULL; + partialName = nullptr; } obj1 = dict->lookup("TU"); if (obj1.isString()) { alternateUiName = obj1.getString()->copy(); } else { - alternateUiName = NULL; + alternateUiName = nullptr; } obj1 = dict->lookup("TM"); if(obj1.isString()) { mappingName = obj1.getString()->copy(); } else { - mappingName = NULL; + mappingName = nullptr; } } @@ -841,7 +841,7 @@ FormWidget* FormField::findWidgetByRef (Ref aref) if(result) return result; } } - return NULL; + return nullptr; } GooString* FormField::getFullyQualifiedName() { @@ -948,7 +948,7 @@ FormFieldButton::FormFieldButton(PDFDoc *docA, Object *aobj, const Ref& ref, For Dict* dict = obj.getDict(); active_child = -1; noAllOff = false; - siblings = NULL; + siblings = nullptr; numSiblings = 0; appearanceState.setToNull(); @@ -1011,7 +1011,7 @@ void FormFieldButton::fillChildrenSiblingsID() if (!terminal) { for(int i=0; i(children[i]); - if (child != NULL) { + if (child != nullptr) { // Fill the siblings of this node childs child->setNumSiblings(numChildren-1); for(int j=0, counter=0; jcopy(); @@ -1286,8 +1286,8 @@ FormFieldChoice::FormFieldChoice(PDFDoc *docA, Object *aobj, const Ref& ref, For : FormField(docA, aobj, ref, parent, usedParents, formChoice) { numChoices = 0; - choices = NULL; - editedChoice = NULL; + choices = nullptr; + editedChoice = nullptr; topIdx = 0; Dict* dict = obj.getDict(); @@ -1433,7 +1433,7 @@ void FormFieldChoice::print(int indent) #endif void FormFieldChoice::updateSelection() { - Object objV, obj1; + Object objV; Object objI(objNull); if (edit && editedChoice) { @@ -1501,7 +1501,7 @@ void FormFieldChoice::unselectAll () void FormFieldChoice::deselectAll () { delete editedChoice; - editedChoice = NULL; + editedChoice = nullptr; unselectAll(); updateSelection(); @@ -1510,7 +1510,7 @@ void FormFieldChoice::deselectAll () { void FormFieldChoice::toggle (int i) { delete editedChoice; - editedChoice = NULL; + editedChoice = nullptr; choices[i].selected = !choices[i].selected; updateSelection(); @@ -1519,7 +1519,7 @@ void FormFieldChoice::toggle (int i) void FormFieldChoice::select (int i) { delete editedChoice; - editedChoice = NULL; + editedChoice = nullptr; if (!multiselect) unselectAll(); @@ -1531,7 +1531,7 @@ void FormFieldChoice::select (int i) void FormFieldChoice::setEditChoice (GooString* new_content) { delete editedChoice; - editedChoice = NULL; + editedChoice = nullptr; unselectAll(); @@ -1570,7 +1570,7 @@ GooString *FormFieldChoice::getSelectedChoice() { return choices[i].optionName; } - return NULL; + return nullptr; } //------------------------------------------------------------------------ @@ -1581,7 +1581,7 @@ FormFieldSignature::FormFieldSignature(PDFDoc *docA, Object *dict, const Ref& re signature_type(adbe_pkcs7_detached), signature(nullptr), signature_info(nullptr) { - signature = NULL; + signature = nullptr; signature_info = new SignatureInfo(); parseInfo(); @@ -1677,7 +1677,7 @@ SignatureInfo *FormFieldSignature::validateSignature(bool doVerifyCert, bool for return signature_info; } - if (signature == NULL) { + if (signature == nullptr) { error(errSyntaxError, 0, "Invalid or missing Signature string"); return signature_info; } @@ -1766,10 +1766,10 @@ Form::Form(PDFDoc *docA, Object* acroFormA) size = 0; numFields = 0; - rootFields = NULL; + rootFields = nullptr; quadding = quaddingLeftJustified; - defaultAppearance = NULL; - defaultResources = NULL; + defaultAppearance = nullptr; + defaultResources = nullptr; obj1 = acroForm->dictLookup("NeedAppearances"); needAppearances = (obj1.isBool() && obj1.getBool()); @@ -1787,7 +1787,7 @@ Form::Form(PDFDoc *docA, Object* acroFormA) // At a minimum, this dictionary shall contain a Font entry obj1 = resDict.dictLookup("Font"); if (obj1.isDict()) - defaultResources = new GfxResources(xref, resDict.getDict(), NULL); + defaultResources = new GfxResources(xref, resDict.getDict(), nullptr); } if (!defaultResources) { resDict.setToNull(); @@ -1815,7 +1815,7 @@ Form::Form(PDFDoc *docA, Object* acroFormA) } std::set usedParents; - rootFields[numFields++] = createFieldFromDict (&obj2, doc, oref.getRef(), NULL, &usedParents); + rootFields[numFields++] = createFieldFromDict (&obj2, doc, oref.getRef(), nullptr, &usedParents); } } else { @@ -1918,7 +1918,7 @@ FormWidget* Form::findWidgetByRef (Ref aref) FormWidget *result = rootFields[i]->findWidgetByRef(aref); if(result) return result; } - return NULL; + return nullptr; } //------------------------------------------------------------------------ @@ -1928,7 +1928,7 @@ FormWidget* Form::findWidgetByRef (Ref aref) FormPageWidgets::FormPageWidgets (Annots *annots, unsigned int page, Form *form) { numWidgets = 0; - widgets = NULL; + widgets = nullptr; if (annots && annots->getNumAnnots() > 0 && form) { size = annots->getNumAnnots(); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Form.h b/Build/source/libs/poppler/poppler-src/poppler/Form.h index f12590fc0db..297929b5d1c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Form.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Form.h @@ -6,7 +6,7 @@ // // Copyright 2006 Julien Rebetez // Copyright 2007, 2008, 2011 Carlos Garcia Campos -// Copyright 2007-2010, 2012, 2015-2017 Albert Astals Cid +// Copyright 2007-2010, 2012, 2015-2018 Albert Astals Cid // Copyright 2010 Mark Riedesel // Copyright 2011 Pino Toscano // Copyright 2012 Fabio D'Urso @@ -29,6 +29,8 @@ #include "Object.h" #include "Annot.h" +#include + #include #include #include @@ -564,6 +566,9 @@ public: ~Form(); + Form(const Form &) = delete; + Form& operator=(const Form &) = delete; + // Look up an inheritable field dictionary entry. static Object fieldLookup(Dict *field, const char *key); @@ -612,6 +617,9 @@ public: FormPageWidgets (Annots* annots, unsigned int page, Form *form); ~FormPageWidgets(); + FormPageWidgets(const FormPageWidgets &) = delete; + FormPageWidgets& operator=(const FormPageWidgets &) = delete; + int getNumWidgets() const { return numWidgets; } FormWidget* getWidget(int i) const { return widgets[i]; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Function.cc b/Build/source/libs/poppler/poppler-src/poppler/Function.cc index 92ba5f74f5c..5437de35616 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Function.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Function.cc @@ -76,7 +76,7 @@ Function *Function::parse(Object *funcObj, std::set *usedParents) { return new IdentityFunction(); } else { error(errSyntaxError, -1, "Expected function dictionary or stream"); - return NULL; + return nullptr; } Object obj1 = dict->lookup("FunctionType"); @@ -96,11 +96,11 @@ Function *Function::parse(Object *funcObj, std::set *usedParents) { func = new PostScriptFunction(funcObj, dict); } else { error(errSyntaxError, -1, "Unimplemented function type ({0:d})", funcType); - return NULL; + return nullptr; } if (!func->isOk()) { delete func; - return NULL; + return nullptr; } return func; @@ -222,9 +222,9 @@ SampledFunction::SampledFunction(Object *funcObj, Dict *dict) { double in[funcMaxInputs]; int i, j, t, bit, idx; - idxOffset = NULL; - samples = NULL; - sBuf = NULL; + idxOffset = nullptr; + samples = nullptr; + sBuf = nullptr; ok = gFalse; //----- initialize the generic stuff @@ -651,10 +651,10 @@ StitchingFunction::StitchingFunction(Object *funcObj, Dict *dict, std::set int i; ok = gFalse; - funcs = NULL; - bounds = NULL; - encode = NULL; - scale = NULL; + funcs = nullptr; + bounds = nullptr; + encode = nullptr; + scale = nullptr; //----- initialize the generic stuff if (!init(dict)) { @@ -677,7 +677,7 @@ StitchingFunction::StitchingFunction(Object *funcObj, Dict *dict, std::set encode = (double *)gmallocn(2 * k, sizeof(double)); scale = (double *)gmallocn(k, sizeof(double)); for (i = 0; i < k; ++i) { - funcs[i] = NULL; + funcs[i] = nullptr; } for (i = 0; i < k; ++i) { std::set usedParentsAux = *usedParents; @@ -1131,8 +1131,8 @@ PostScriptFunction::PostScriptFunction(Object *funcObj, Dict *dict) { double in[funcMaxInputs]; int i; - code = NULL; - codeString = NULL; + code = nullptr; + codeString = nullptr; codeSize = 0; ok = gFalse; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Function.h b/Build/source/libs/poppler/poppler-src/poppler/Function.h index 56e5495d958..65b532518c2 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Function.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Function.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2009, 2010 Albert Astals Cid +// Copyright (C) 2009, 2010, 2018 Albert Astals Cid // Copyright (C) 2010 Christian Feuersänger // Copyright (C) 2011 Andrea Canciani // Copyright (C) 2012 Thomas Freitag @@ -56,6 +56,9 @@ public: virtual ~Function(); + Function(const Function &) = delete; + Function& operator=(const Function &other) = delete; + // Construct a function. Returns NULL if unsuccessful. static Function *parse(Object *funcObj); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc b/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc index 531acbd41a2..4f6c33f8e50 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Gfx.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Jonathan Blandford -// Copyright (C) 2005-2013, 2015-2017 Albert Astals Cid +// Copyright (C) 2005-2013, 2015-2018 Albert Astals Cid // Copyright (C) 2006 Thorkild Stray // Copyright (C) 2006 Kristian Høgsberg // Copyright (C) 2006-2011 Carlos Garcia Campos @@ -38,6 +38,7 @@ // Copyright (C) 2012, 2013 Fabio D'Urso // Copyright (C) 2012 Lu Wang // Copyright (C) 2014 Jason Crain +// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, . Work sponsored by the LiMux project of the city of Munich // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -326,7 +327,7 @@ GfxResources::GfxResources(XRef *xref, Dict *resDictA, GfxResources *nextA) : // build font dictionary Dict *resDict = resDictA->copy(xref); - fonts = NULL; + fonts = nullptr; obj1 = resDict->lookupNF("Font"); if (obj1.isRef()) { obj2 = obj1.fetch(xref); @@ -335,7 +336,7 @@ GfxResources::GfxResources(XRef *xref, Dict *resDictA, GfxResources *nextA) : fonts = new GfxFontDict(xref, &r, obj2.getDict()); } } else if (obj1.isDict()) { - fonts = new GfxFontDict(xref, NULL, obj1.getDict()); + fonts = new GfxFontDict(xref, nullptr, obj1.getDict()); } // get XObject dictionary @@ -358,7 +359,7 @@ GfxResources::GfxResources(XRef *xref, Dict *resDictA, GfxResources *nextA) : delete resDict; } else { - fonts = NULL; + fonts = nullptr; xObjDict.setToNull(); colorSpaceDict.setToNull(); patternDict.setToNull(); @@ -385,7 +386,7 @@ GfxFont *GfxResources::lookupFont(char *name) { } } error(errSyntaxError, -1, "Unknown font tag '{0:s}'", name); - return NULL; + return nullptr; } Object GfxResources::lookupXObject(char *name) { @@ -464,7 +465,7 @@ GfxPattern *GfxResources::lookupPattern(char *name, OutputDev *out, GfxState *st } } error(errSyntaxError, -1, "Unknown pattern '{0:s}'", name); - return NULL; + return nullptr; } GfxShading *GfxResources::lookupShading(char *name, OutputDev *out, GfxState *state) { @@ -481,7 +482,7 @@ GfxShading *GfxResources::lookupShading(char *name, OutputDev *out, GfxState *st } } error(errSyntaxError, -1, "ExtGState '{0:s}' is unknown", name); - return NULL; + return nullptr; } Object GfxResources::lookupGState(char *name) { @@ -529,16 +530,16 @@ Gfx::Gfx(PDFDoc *docA, OutputDev *outA, int pageNum, Dict *resDict, int i; doc = docA; - xref = (xrefA == NULL) ? doc->getXRef() : xrefA; + xref = (xrefA == nullptr) ? doc->getXRef() : xrefA; catalog = doc->getCatalog(); subPage = gFalse; printCommands = globalParams->getPrintCommands(); profileCommands = globalParams->getProfileCommands(); - mcStack = NULL; - parser = NULL; + mcStack = nullptr; + parser = nullptr; // start the resource stack - res = new GfxResources(xref, resDict, NULL); + res = new GfxResources(xref, resDict, nullptr); // initialize out = outA; @@ -556,7 +557,7 @@ Gfx::Gfx(PDFDoc *docA, OutputDev *outA, int pageNum, Dict *resDict, } formDepth = 0; ocState = gTrue; - parser = NULL; + parser = nullptr; abortCheckCbk = abortCheckCbkA; abortCheckCbkData = abortCheckCbkDataA; @@ -584,16 +585,16 @@ Gfx::Gfx(PDFDoc *docA, OutputDev *outA, Dict *resDict, int i; doc = docA; - xref = (xrefA == NULL) ? doc->getXRef() : xrefA; + xref = (xrefA == nullptr) ? doc->getXRef() : xrefA; catalog = doc->getCatalog(); subPage = gTrue; printCommands = globalParams->getPrintCommands(); profileCommands = globalParams->getProfileCommands(); - mcStack = NULL; - parser = NULL; + mcStack = nullptr; + parser = nullptr; // start the resource stack - res = new GfxResources(xref, resDict, NULL); + res = new GfxResources(xref, resDict, nullptr); // initialize out = outA; @@ -608,7 +609,7 @@ Gfx::Gfx(PDFDoc *docA, OutputDev *outA, Dict *resDict, } formDepth = 0; ocState = gTrue; - parser = NULL; + parser = nullptr; abortCheckCbk = abortCheckCbkA; abortCheckCbkData = abortCheckCbkDataA; @@ -645,7 +646,7 @@ void Gfx::initDisplayProfile() { int length = 0; Guchar *profBuf = iccStream->toUnsignedChars(&length, 65536, 65536); cmsHPROFILE hp = cmsOpenProfileFromMem(profBuf,length); - if (hp == 0) { + if (hp == nullptr) { error(errSyntaxWarning, -1, "read ICCBased color space profile error"); } else { state->setDisplayProfile(hp); @@ -698,7 +699,7 @@ void Gfx::display(Object *obj, GBool topLevel) { parser = new Parser(xref, new Lexer(xref, obj), gFalse); go(topLevel); delete parser; - parser = NULL; + parser = nullptr; } void Gfx::go(GBool topLevel) { @@ -747,7 +748,7 @@ void Gfx::go(GBool topLevel) { cmd_g = new GooString (obj.getCmd()); data_p = (ProfileData *)hash->lookup (cmd_g); - if (data_p == NULL) { + if (data_p == nullptr) { data_p = new ProfileData(); hash->add (cmd_g, data_p); } @@ -764,6 +765,7 @@ void Gfx::go(GBool topLevel) { if (++updateLevel >= 20000) { out->dump(); updateLevel = 0; + lastAbortCheck = 0; } // did the command throw an exception @@ -891,7 +893,7 @@ Operator *Gfx::findOp(char *name) { a = b = m; } if (cmp != 0) - return NULL; + return nullptr; return &opTab[a]; } @@ -945,7 +947,7 @@ void Gfx::opSetDash(Object args[], int numArgs) { a = args[0].getArray(); length = a->getLength(); if (length == 0) { - dash = NULL; + dash = nullptr; } else { dash = (double *)gmallocn(length, sizeof(double)); for (i = 0; i < length; ++i) { @@ -1113,7 +1115,7 @@ void Gfx::opSetExtGState(Object args[], int numArgs) { } if (obj2.isName("Default") || obj2.isName("Identity")) { - funcs[0] = funcs[1] = funcs[2] = funcs[3] = NULL; + funcs[0] = funcs[1] = funcs[2] = funcs[3] = nullptr; state->setTransfer(funcs); out->updateTransfer(state); } else if (obj2.isArray() && obj2.arrayGetLength() == 4) { @@ -1130,7 +1132,7 @@ void Gfx::opSetExtGState(Object args[], int numArgs) { } } else if (obj2.isName() || obj2.isDict() || obj2.isStream()) { if ((funcs[0] = Function::parse(&obj2))) { - funcs[1] = funcs[2] = funcs[3] = NULL; + funcs[1] = funcs[2] = funcs[3] = nullptr; state->setTransfer(funcs); out->updateTransfer(state); } @@ -1164,21 +1166,21 @@ void Gfx::opSetExtGState(Object args[], int numArgs) { } else { // "Luminosity" alpha = gFalse; } - funcs[0] = NULL; + funcs[0] = nullptr; obj3 = obj2.dictLookup("TR"); if (!obj3.isNull()) { if (obj3.isName("Default") || obj3.isName("Identity")) { - funcs[0] = NULL; + funcs[0] = nullptr; } else { funcs[0] = Function::parse(&obj3); - if (funcs[0] == NULL || + if (funcs[0] == nullptr || funcs[0]->getInputSize() != 1 || funcs[0]->getOutputSize() != 1) { error(errSyntaxError, getPos(), "Invalid transfer function in soft mask in ExtGState"); delete funcs[0]; - funcs[0] = NULL; + funcs[0] = nullptr; } } } @@ -1198,7 +1200,7 @@ void Gfx::opSetExtGState(Object args[], int numArgs) { if (obj3.isStream()) { Object obj4 = obj3.streamGetDict()->lookup("Group"); if (obj4.isDict()) { - blendingColorSpace = NULL; + blendingColorSpace = nullptr; isolated = knockout = gFalse; Object obj5 = obj4.dictLookup("CS"); if (!obj5.isNull()) { @@ -1350,7 +1352,7 @@ void Gfx::doSoftMask(Object *str, GBool alpha, // get resources obj1 = dict->lookup("Resources"); - resDict = obj1.isDict() ? obj1.getDict() : (Dict *)NULL; + resDict = obj1.isDict() ? obj1.getDict() : (Dict *)nullptr; // draw it ++formDepth; @@ -1374,14 +1376,14 @@ void Gfx::opSetRenderingIntent(Object args[], int numArgs) { void Gfx::opSetFillGray(Object args[], int numArgs) { GfxColor color; - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; - state->setFillPattern(NULL); + state->setFillPattern(nullptr); Object obj = res->lookupColorSpace("DefaultGray"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceGrayColorSpace(); } state->setFillColorSpace(colorSpace); @@ -1393,14 +1395,14 @@ void Gfx::opSetFillGray(Object args[], int numArgs) { void Gfx::opSetStrokeGray(Object args[], int numArgs) { GfxColor color; - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); Object obj = res->lookupColorSpace("DefaultGray"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceGrayColorSpace(); } state->setStrokeColorSpace(colorSpace); @@ -1412,17 +1414,17 @@ void Gfx::opSetStrokeGray(Object args[], int numArgs) { void Gfx::opSetFillCMYKColor(Object args[], int numArgs) { GfxColor color; - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; int i; Object obj = res->lookupColorSpace("DefaultCMYK"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceCMYKColorSpace(); } - state->setFillPattern(NULL); + state->setFillPattern(nullptr); state->setFillColorSpace(colorSpace); out->updateFillColorSpace(state); for (i = 0; i < 4; ++i) { @@ -1434,15 +1436,15 @@ void Gfx::opSetFillCMYKColor(Object args[], int numArgs) { void Gfx::opSetStrokeCMYKColor(Object args[], int numArgs) { GfxColor color; - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; int i; - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); Object obj = res->lookupColorSpace("DefaultCMYK"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceCMYKColorSpace(); } state->setStrokeColorSpace(colorSpace); @@ -1455,16 +1457,16 @@ void Gfx::opSetStrokeCMYKColor(Object args[], int numArgs) { } void Gfx::opSetFillRGBColor(Object args[], int numArgs) { - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; GfxColor color; int i; - state->setFillPattern(NULL); + state->setFillPattern(nullptr); Object obj = res->lookupColorSpace("DefaultRGB"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceRGBColorSpace(); } state->setFillColorSpace(colorSpace); @@ -1477,16 +1479,16 @@ void Gfx::opSetFillRGBColor(Object args[], int numArgs) { } void Gfx::opSetStrokeRGBColor(Object args[], int numArgs) { - GfxColorSpace *colorSpace = NULL; + GfxColorSpace *colorSpace = nullptr; GfxColor color; int i; - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); Object obj = res->lookupColorSpace("DefaultRGB"); if (!obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } - if (colorSpace == NULL) { + if (colorSpace == nullptr) { colorSpace = new GfxDeviceRGBColorSpace(); } state->setStrokeColorSpace(colorSpace); @@ -1509,7 +1511,7 @@ void Gfx::opSetFillColorSpace(Object args[], int numArgs) { colorSpace = GfxColorSpace::parse(res, &obj, out, state); } if (colorSpace) { - state->setFillPattern(NULL); + state->setFillPattern(nullptr); state->setFillColorSpace(colorSpace); out->updateFillColorSpace(state); colorSpace->getDefaultColor(&color); @@ -1524,7 +1526,7 @@ void Gfx::opSetStrokeColorSpace(Object args[], int numArgs) { GfxColorSpace *colorSpace; GfxColor color; - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); Object obj = res->lookupColorSpace(args[0].getName()); if (obj.isNull()) { colorSpace = GfxColorSpace::parse(res, &args[0], out, state); @@ -1550,7 +1552,7 @@ void Gfx::opSetFillColor(Object args[], int numArgs) { error(errSyntaxError, getPos(), "Incorrect number of arguments in 'sc' command"); return; } - state->setFillPattern(NULL); + state->setFillPattern(nullptr); for (i = 0; i < numArgs; ++i) { color.c[i] = dblToCol(args[i].getNum()); } @@ -1566,7 +1568,7 @@ void Gfx::opSetStrokeColor(Object args[], int numArgs) { error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SC' command"); return; } - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); for (i = 0; i < numArgs; ++i) { color.c[i] = dblToCol(args[i].getNum()); } @@ -1609,7 +1611,7 @@ void Gfx::opSetFillColorN(Object args[], int numArgs) { error(errSyntaxError, getPos(), "Incorrect number of arguments in 'scn' command"); return; } - state->setFillPattern(NULL); + state->setFillPattern(nullptr); for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) { if (args[i].isNum()) { color.c[i] = dblToCol(args[i].getNum()); @@ -1660,7 +1662,7 @@ void Gfx::opSetStrokeColorN(Object args[], int numArgs) { error(errSyntaxError, getPos(), "Incorrect number of arguments in 'SCN' command"); return; } - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); for (i = 0; i < numArgs && i < gfxColorMaxComps; ++i) { if (args[i].isNum()) { color.c[i] = dblToCol(args[i].getNum()); @@ -2097,8 +2099,8 @@ void Gfx::doTilingPatternFill(GfxTilingPattern *tPat, // set underlying color space (for uncolored tiling patterns); set // various other parameters (stroke color, line width) to match // Adobe's behavior - state->setFillPattern(NULL); - state->setStrokePattern(NULL); + state->setFillPattern(nullptr); + state->setStrokePattern(nullptr); if (tPat->getPaintType() == 2 && (cs = patCS->getUnder())) { state->setFillColorSpace(cs->copy()); out->updateFillColorSpace(state); @@ -3663,7 +3665,7 @@ void Gfx::opSetFont(Object args[], int numArgs) { if (!(font = res->lookupFont(args[0].getName()))) { // unsetting the font (drawing no text) is better than using the // previous one and drawing random glyphs from it - state->setFont(NULL, args[1].getNum()); + state->setFont(nullptr, args[1].getNum()); fontChanged = gTrue; return; } @@ -3873,7 +3875,7 @@ void Gfx::doShowText(GooString *s) { int wMode; double riseX, riseY; CharCode code; - Unicode *u = NULL; + Unicode *u = nullptr; double x, y, dx, dy, dx2, dy2, curX, curY, tdx, tdy, ddx, ddy; double originX, originY, tOriginX, tOriginY; double x0, y0, x1, y1; @@ -4184,7 +4186,7 @@ void Gfx::opXObject(Object args[], int numArgs) { } else if (obj2.isName("PS")) { Object obj3 = obj1.streamGetDict()->lookup("Level1"); out->psXObject(obj1.getStream(), - obj3.isStream() ? obj3.getStream() : (Stream *)NULL); + obj3.isStream() ? obj3.getStream() : (Stream *)nullptr); } else if (obj2.isName()) { error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName()); } else { @@ -4349,11 +4351,11 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) { } } if (!obj1.isNull()) { - char *tempIntent = NULL; + char *tempIntent = nullptr; Object objIntent = dict->lookup("Intent"); if (objIntent.isName()) { tempIntent = state->getRenderingIntent(); - if (tempIntent != NULL) { + if (tempIntent != nullptr) { tempIntent = strdup(tempIntent); } state->setRenderingIntent(objIntent.getName()); @@ -4385,7 +4387,7 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) { colorSpace = GfxColorSpace::parse(res, &objCS, out, state); } } else { - colorSpace = NULL; + colorSpace = nullptr; } if (!colorSpace) { goto err1; @@ -4401,7 +4403,7 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) { // get the mask haveColorKeyMask = haveExplicitMask = haveSoftMask = gFalse; - maskStr = NULL; // make gcc happy + maskStr = nullptr; // make gcc happy maskWidth = maskHeight = 0; // make gcc happy maskInvert = gFalse; // make gcc happy std::unique_ptr maskColorMap; @@ -4456,7 +4458,7 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) { obj1 = std::move(obj2); } } - maskColorSpace = GfxColorSpace::parse(NULL, &obj1, out, state); + maskColorSpace = GfxColorSpace::parse(nullptr, &obj1, out, state); if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) { goto err1; } @@ -4587,7 +4589,7 @@ void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) { maskStr, maskWidth, maskHeight, maskInvert, maskInterpolate); } else { out->drawImage(state, ref, str, width, height, &colorMap, interpolate, - haveColorKeyMask ? maskColors : (int *)NULL, inlineImg); + haveColorKeyMask ? maskColors : (int *)nullptr, inlineImg); } } } @@ -4609,7 +4611,7 @@ GBool Gfx::checkTransparencyGroup(Dict *resDict) { GBool transpGroup = gFalse; double opac; - if (resDict == NULL) + if (resDict == nullptr) return gFalse; pushResources(resDict); Object extGStates = resDict->lookup("ExtGState"); @@ -4730,11 +4732,11 @@ void Gfx::doForm(Object *str) { // get resources Object resObj = dict->lookup("Resources"); - resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL; + resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr; // check for a transparency group transpGroup = isolated = knockout = gFalse; - blendingColorSpace = NULL; + blendingColorSpace = nullptr; obj1 = dict->lookup("Group"); if (obj1.isDict()) { Object obj2 = obj1.dictLookup("S"); @@ -4890,7 +4892,7 @@ void Gfx::opBeginImage(Object args[], int numArgs) { // display the image if (str) { - doImage(NULL, str, gTrue); + doImage(nullptr, str, gTrue); // skip 'EI' tag c1 = str->getUndecodedStream()->getChar(); @@ -4926,7 +4928,7 @@ Stream *Gfx::buildImageStream() { } if (obj.isEOF()) { error(errSyntaxError, getPos(), "End of file in inline image"); - return NULL; + return nullptr; } // make stream @@ -4934,7 +4936,7 @@ Stream *Gfx::buildImageStream() { str = new EmbedStream(parser->getStream(), std::move(dict), gFalse, 0, gTrue); str = str->addFilters(str->getDict()); } else { - str = NULL; + str = nullptr; } return str; @@ -5023,18 +5025,19 @@ void Gfx::opBeginMarkedContent(Object args[], int numArgs) { char* name0 = args[0].getName(); if ( strncmp( name0, "OC", 2) == 0 && contentConfig) { if ( numArgs >= 2 ) { - if (!args[1].isName()) { - error(errSyntaxError, getPos(), "Unexpected MC Type: {0:d}", args[1].getType()); - } - char* name1 = args[1].getName(); - MarkedContentStack *mc = mcStack; - mc->kind = gfxMCOptionalContent; - Object markedContent = res->lookupMarkedContentNF( name1 ); - if (!markedContent.isNull()) { - bool visible = contentConfig->optContentIsVisible(&markedContent); - mc->ocSuppressed = !(visible); + if (args[1].isName()) { + char* name1 = args[1].getName(); + MarkedContentStack *mc = mcStack; + mc->kind = gfxMCOptionalContent; + Object markedContent = res->lookupMarkedContentNF( name1 ); + if (!markedContent.isNull()) { + bool visible = contentConfig->optContentIsVisible(&markedContent); + mc->ocSuppressed = !(visible); + } else { + error(errSyntaxError, getPos(), "DID NOT find {0:s}", name1); + } } else { - error(errSyntaxError, getPos(), "DID NOT find {0:s}", name1); + error(errSyntaxError, getPos(), "Unexpected MC Type: {0:d}", args[1].getType()); } } else { error(errSyntaxError, getPos(), "insufficient arguments for Marked Content"); @@ -5060,7 +5063,7 @@ void Gfx::opBeginMarkedContent(Object args[], int numArgs) { if (numArgs == 2 && args[1].isDict()) { out->beginMarkedContent(args[0].getName(), args[1].getDict()); } else if(numArgs == 1) { - out->beginMarkedContent(args[0].getName(), NULL); + out->beginMarkedContent(args[0].getName(), nullptr); } } @@ -5105,7 +5108,7 @@ void Gfx::opMarkPoint(Object args[], int numArgs) { //------------------------------------------------------------------------ struct GfxStackStateSaver { - GfxStackStateSaver(Gfx *gfx) : gfx(gfx) { + GfxStackStateSaver(Gfx *gfxA) : gfx(gfxA) { gfx->saveState(); } @@ -5113,6 +5116,9 @@ struct GfxStackStateSaver { gfx->restoreState(); } + GfxStackStateSaver(const GfxStackStateSaver &) = delete; + GfxStackStateSaver& operator=(const GfxStackStateSaver &) = delete; + Gfx * const gfx; }; @@ -5271,7 +5277,7 @@ void Gfx::drawAnnot(Object *str, AnnotBorder *border, AnnotColor *aColor, // get the resources Object resObj = dict->lookup("Resources"); - resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL; + resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr; // draw it drawForm(str, resDict, m, bbox); @@ -5280,7 +5286,7 @@ void Gfx::drawAnnot(Object *str, AnnotBorder *border, AnnotColor *aColor, // draw the border if (border && border->getWidth() > 0) { if (state->getStrokeColorSpace()->getMode() != csDeviceRGB) { - state->setStrokePattern(NULL); + state->setStrokePattern(nullptr); state->setStrokeColorSpace(new GfxDeviceRGBColorSpace()); out->updateStrokeColorSpace(state); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Gfx.h b/Build/source/libs/poppler/poppler-src/poppler/Gfx.h index 293f4551eaa..8e2f66ccfcb 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Gfx.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Gfx.h @@ -17,7 +17,7 @@ // Copyright (C) 2007 Iñigo Martínez // Copyright (C) 2008 Brad Hards // Copyright (C) 2008, 2010 Carlos Garcia Campos -// Copyright (C) 2009-2013, 2017 Albert Astals Cid +// Copyright (C) 2009-2013, 2017, 2018 Albert Astals Cid // Copyright (C) 2009, 2010, 2012, 2013 Thomas Freitag // Copyright (C) 2010 David Benjamin // Copyright (C) 2010 Christian Feuersänger @@ -112,6 +112,9 @@ public: GfxResources(XRef *xref, Dict *resDict, GfxResources *nextA); ~GfxResources(); + GfxResources(const GfxResources &) = delete; + GfxResources& operator=(const GfxResources &other) = delete; + GfxFont *lookupFont(char *name); Object lookupXObject(char *name); Object lookupXObjectNF(char *name); @@ -161,6 +164,9 @@ public: #endif ~Gfx(); + Gfx(const Gfx &) = delete; + Gfx& operator=(const Gfx &other) = delete; + XRef *getXRef() { return xref; } // Interpret a stream or array of streams. diff --git a/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc b/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc index d06eadffbe2..df0328b5297 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/GfxFont.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2005, 2006 Kristian Høgsberg // Copyright (C) 2006 Takashi Iwai // Copyright (C) 2007 Julien Rebetez @@ -30,7 +30,7 @@ // Copyright (C) 2012 Yi Yang // Copyright (C) 2012 Suzuki Toshiya // Copyright (C) 2012, 2017 Thomas Freitag -// Copyright (C) 2013-2016 Jason Crain +// Copyright (C) 2013-2016, 2018 Jason Crain // Copyright (C) 2014 Olly Betts // // To see a description of the changes please see the Changelog file that @@ -186,9 +186,9 @@ static int readFromStream(void *data) { //------------------------------------------------------------------------ GfxFontLoc::GfxFontLoc() { - path = NULL; + path = nullptr; fontNum = 0; - encoding = NULL; + encoding = nullptr; substIdx = -1; } @@ -212,7 +212,7 @@ GfxFont *GfxFont::makeFont(XRef *xref, const char *tagA, Ref idA, Dict *fontDict GfxFont *font; // get base font name - nameA = NULL; + nameA = nullptr; Object obj1 = fontDict->lookup("BaseFont"); if (obj1.isName()) { nameA = new GooString(obj1.getName()); @@ -222,7 +222,7 @@ GfxFont *GfxFont::makeFont(XRef *xref, const char *tagA, Ref idA, Dict *fontDict typeA = getFontType(xref, fontDict, &embFontIDA); // create the font object - font = NULL; + font = nullptr; if (typeA < fontCIDType0) { font = new Gfx8BitFont(xref, tagA, idA, nameA, typeA, embFontIDA, fontDict); @@ -242,8 +242,8 @@ GfxFont::GfxFont(const char *tagA, Ref idA, GooString *nameA, name = nameA; type = typeA; embFontID = embFontIDA; - embFontName = NULL; - family = NULL; + embFontName = nullptr; + family = nullptr; stretch = StretchNotDefined; weight = WeightNotDefined; refCnt = 1; @@ -480,7 +480,7 @@ void GfxFont::readFontDescriptor(XRef *xref, Dict *fontDict) { if (obj2.isName()) { embFontName = new GooString(obj2.getName()); } - if (embFontName == NULL) { + if (embFontName == nullptr) { // get name with typo obj2 = obj1.dictLookup("Fontname"); if (obj2.isName()) { @@ -575,7 +575,7 @@ CharCodeToUnicode *GfxFont::readToUnicodeCMap(Dict *fontDict, int nBits, Object obj1 = fontDict->lookup("ToUnicode"); if (!obj1.isStream()) { - return NULL; + return nullptr; } buf = new GooString(); obj1.getStream()->fillGooString(buf); @@ -598,7 +598,7 @@ GfxFontLoc *GfxFont::locateFont(XRef *xref, PSOutputDev *ps) { GBool embed; if (type == fontType3) { - return NULL; + return nullptr; } //----- embedded font @@ -753,11 +753,11 @@ GfxFontLoc *GfxFont::locateFont(XRef *xref, PSOutputDev *ps) { } // failed to find a substitute font - return NULL; + return nullptr; } // failed to find a substitute font - return NULL; + return nullptr; } GfxFontLoc *GfxFont::locateBase14Font(GooString *base14Name) { @@ -765,7 +765,7 @@ GfxFontLoc *GfxFont::locateBase14Font(GooString *base14Name) { path = globalParams->findFontFile(base14Name); if (!path) { - return NULL; + return nullptr; } return getExternalFont(path, gFalse); } @@ -807,7 +807,7 @@ GfxFontLoc *GfxFont::getExternalFont(GooString *path, GBool cid) { (cid ? (fontType < fontCIDType0) : (fontType >= fontCIDType0))) { delete path; - return NULL; + return nullptr; } fontLoc = new GfxFontLoc(); fontLoc->locType = gfxFontLocExternal; @@ -826,7 +826,7 @@ char *GfxFont::readEmbFontFile(XRef *xref, int *len) { error(errSyntaxError, -1, "Embedded font file is not a stream"); embFontID.num = -1; *len = 0; - return NULL; + return nullptr; } str = obj2.getStream(); @@ -849,7 +849,7 @@ static const AlternateNameMap alternateNameMap[] = { "ff", "f_f" }, { "ffi", "f_f_i" }, { "ffl", "f_f_l" }, - { 0, 0 } + { nullptr, nullptr } }; const char *GfxFont::getAlternateName(const char *name) { @@ -860,7 +860,7 @@ const char *GfxFont::getAlternateName(const char *name) { } map++; } - return 0; + return nullptr; } //------------------------------------------------------------------------ @@ -933,7 +933,7 @@ static GBool testForNumericNames(Dict *fontDict, GBool hex) { numeric = gFalse; } else if (obj.isName()) { // All character names must sucessfully parse. - if (!parseNumericName(obj.getName(), hex, NULL)) + if (!parseNumericName(obj.getName(), hex, nullptr)) numeric = gFalse; } else { numeric = gFalse; @@ -968,11 +968,11 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA int n, i, a, b, m; refCnt = 1; - ctu = NULL; + ctu = nullptr; // do font name substitution for various aliases of the Base 14 font // names - base14 = NULL; + base14 = nullptr; if (name) { name2 = name->copy(); i = 0; @@ -1001,7 +1001,7 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA } // is it a built-in font? - builtinFont = NULL; + builtinFont = nullptr; if (base14) { for (i = 0; i < nBuiltinFonts; ++i) { if (!strcmp(base14->base14Name, builtinFonts[i].name)) { @@ -1092,7 +1092,7 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA // check FontDict for base encoding hasEncoding = gFalse; usesMacRomanEnc = gFalse; - baseEnc = NULL; + baseEnc = nullptr; baseEncFromFontFile = gFalse; obj1 = fontDict->lookup("Encoding"); if (obj1.isDict()) { @@ -1123,9 +1123,9 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA // check embedded font file for base encoding // (only for Type 1 fonts - trying to get an encoding out of a // TrueType font is a losing proposition) - ffT1 = NULL; - ffT1C = NULL; - buf = NULL; + ffT1 = nullptr; + ffT1C = nullptr; + buf = nullptr; if (type == fontType1 && embFontID.num >= 0) { if ((buf = readEmbFontFile(xref, &len))) { if ((ffT1 = FoFiType1::make(buf, len))) { @@ -1288,7 +1288,7 @@ Gfx8BitFont::Gfx8BitFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA // block (eg "fi", "ffi") to normal form for (code = 0; code < 256; ++code) { if (unicodeIsAlphabeticPresentationForm(toUnicode[code])) { - Unicode *normalized = unicodeNormalizeNFKC(&toUnicode[code], 1, &len, NULL); + Unicode *normalized = unicodeNormalizeNFKC(&toUnicode[code], 1, &len, nullptr); if (len > 1) ctu->setMapping((CharCode)code, normalized, len); gfree(normalized); @@ -1458,7 +1458,7 @@ static int parseCharName(char *charName, Unicode *uBuf, int uLen, char *var_part = strchr(charName, '.'); if (var_part == charName) { return 0; // .notdef or similar - } else if (var_part != NULL) { + } else if (var_part != nullptr) { // parse names of the form 7.oldstyle, P.swash, s.sc, etc. char *main_part = gstrndup(charName, var_part - charName); GBool namesRecurse = gTrue, variantsRecurse = gFalse; @@ -1696,7 +1696,7 @@ int *Gfx8BitFont::getCodeToGIDMap(FoFiTrueType *ff) { } Dict *Gfx8BitFont::getCharProcs() { - return charProcs.isDict() ? charProcs.getDict() : (Dict *)NULL; + return charProcs.isDict() ? charProcs.getDict() : (Dict *)nullptr; } Object Gfx8BitFont::getCharProc(int code) { @@ -1716,7 +1716,7 @@ Object Gfx8BitFont::getCharProcNF(int code) { } Dict *Gfx8BitFont::getResources() { - return resources.isDict() ? resources.getDict() : (Dict *)NULL; + return resources.isDict() ? resources.getDict() : (Dict *)nullptr; } //------------------------------------------------------------------------ @@ -1748,24 +1748,24 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, CharCode c; Unicode *uBuf; int c1, c2; - int excepsSize, i, j, k, n; + int excepsSize, j, k, n; refCnt = 1; ascent = 0.95; descent = -0.35; fontBBox[0] = fontBBox[1] = fontBBox[2] = fontBBox[3] = 0; - collection = NULL; - cMap = NULL; - ctu = NULL; + collection = nullptr; + cMap = nullptr; + ctu = nullptr; ctuUsesCharCode = gTrue; widths.defWidth = 1.0; widths.defHeight = -1.0; widths.defVY = 0.880; - widths.exceps = NULL; + widths.exceps = nullptr; widths.nExceps = 0; - widths.excepsV = NULL; + widths.excepsV = nullptr; widths.nExcepsV = 0; - cidToGID = NULL; + cidToGID = nullptr; cidToGIDLen = 0; // get the descendant font @@ -1801,7 +1801,7 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, collection = obj2.getString()->copy()->append('-')->append(obj3.getString()); // look for a ToUnicode CMap - if (!(ctu = readToUnicodeCMap(fontDict, 16, NULL))) { + if (!(ctu = readToUnicodeCMap(fontDict, 16, nullptr))) { ctuUsesCharCode = gFalse; // use an identity mapping for the "Adobe-Identity" and @@ -1862,7 +1862,7 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, error(errSyntaxError, -1, "Missing Encoding entry in Type 0 font"); return; } - if (!(cMap = CMap::parse(NULL, collection, &obj1))) { + if (!(cMap = CMap::parse(nullptr, collection, &obj1))) { return; } if (cMap->getCMapName()) { @@ -1876,7 +1876,7 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, obj1 = desFontDict->lookup("CIDToGIDMap"); if (obj1.isStream()) { cidToGIDLen = 0; - i = 64; + int i = 64; cidToGID = (int *)gmallocn(i, sizeof(int)); obj1.streamReset(); while ((c1 = obj1.streamGetChar()) != EOF && @@ -1904,7 +1904,7 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, obj1 = desFontDict->lookup("W"); if (obj1.isArray()) { excepsSize = 0; - i = 0; + int i = 0; while (i + 1 < obj1.arrayGetLength()) { obj2 = obj1.arrayGet(i); obj3 = obj1.arrayGet(i + 1); @@ -1973,7 +1973,7 @@ GfxCIDFont::GfxCIDFont(XRef *xref, const char *tagA, Ref idA, GooString *nameA, obj1 = desFontDict->lookup("W2"); if (obj1.isArray()) { excepsSize = 0; - i = 0; + int i = 0; while (i + 1 < obj1.arrayGetLength()) { obj2 = obj1.arrayGet(i); obj3 = obj1.arrayGet(i+ 1); @@ -2055,7 +2055,7 @@ int GfxCIDFont::getNextChar(char *s, int len, CharCode *code, Unicode **u, int *uLen, double *dx, double *dy, double *ox, double *oy) { CID cid; - CharCode c; + CharCode dummy; double w, h, vx, vy; int n, a, b, m; @@ -2066,7 +2066,7 @@ int GfxCIDFont::getNextChar(char *s, int len, CharCode *code, return 1; } - *code = (CharCode)(cid = cMap->getCID(s, len, &c, &n)); + *code = (CharCode)(cid = cMap->getCID(s, len, &dummy, &n)); if (ctu) { if (hasToUnicode) { int i = 0, c = 0; @@ -2133,7 +2133,7 @@ CharCodeToUnicode *GfxCIDFont::getToUnicode() { } GooString *GfxCIDFont::getCollection() { - return cMap ? cMap->getCollection() : (GooString *)NULL; + return cMap ? cMap->getCollection() : (GooString *)nullptr; } int GfxCIDFont::mapCodeToGID(FoFiTrueType *ff, int cmapi, @@ -2159,35 +2159,35 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { "UniCNS-UCS2-V", "UniCNS-UTF32-H", "UniCNS-UCS2-H", - 0 + nullptr }; static const char *adobe_gb1_cmaps[] = { "UniGB-UTF32-V", "UniGB-UCS2-V", "UniGB-UTF32-H", "UniGB-UCS2-H", - 0 + nullptr }; static const char *adobe_japan1_cmaps[] = { "UniJIS-UTF32-V", "UniJIS-UCS2-V", "UniJIS-UTF32-H", "UniJIS-UCS2-H", - 0 + nullptr }; static const char *adobe_japan2_cmaps[] = { "UniHojo-UTF32-V", "UniHojo-UCS2-V", "UniHojo-UTF32-H", "UniHojo-UCS2-H", - 0 + nullptr }; static const char *adobe_korea1_cmaps[] = { "UniKS-UTF32-V", "UniKS-UCS2-V", "UniKS-UTF32-H", "UniKS-UCS2-H", - 0 + nullptr }; static struct CMapListEntry { const char *collection; @@ -2226,12 +2226,12 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { "Adobe-Korea1-UCS2", adobe_korea1_cmaps, }, - {0, 0, 0, 0} + {nullptr, nullptr, nullptr, nullptr, nullptr} }; - Unicode *humap = 0; - Unicode *vumap = 0; - Unicode *tumap = 0; - int *codeToGID = 0; + Unicode *humap = nullptr; + Unicode *vumap = nullptr; + Unicode *tumap = nullptr; + int *codeToGID = nullptr; unsigned long n; int i; unsigned long code; @@ -2244,8 +2244,8 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { Ref embID; *mapsizep = 0; - if (!ctu || !getCollection()) return NULL; - if (getCollection()->cmp("Adobe-Identity") == 0) return NULL; + if (!ctu || !getCollection()) return nullptr; + if (getCollection()->cmp("Adobe-Identity") == 0) return nullptr; if (getEmbeddedFontID(&embID)) { /* if this font is embedded font, * CIDToGIDMap should be embedded in PDF file @@ -2273,10 +2273,10 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { } } if (cmap < 0) - return NULL; + return nullptr; wmode = getWMode(); - for (lp = CMapList;lp->collection != 0;lp++) { + for (lp = CMapList;lp->collection != nullptr;lp++) { if (strcmp(lp->collection,getCollection()->getCString()) == 0) { break; } @@ -2285,11 +2285,11 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { tumap = new Unicode[n]; humap = new Unicode[n*N_UCS_CANDIDATES]; memset(humap,0,sizeof(Unicode)*n*N_UCS_CANDIDATES); - if (lp->collection != 0) { + if (lp->collection != nullptr) { CharCodeToUnicode *tctu; GooString tname(lp->toUnicodeMap); - if ((tctu = CharCodeToUnicode::parseCMapFromFile(&tname,16)) != 0) { + if ((tctu = CharCodeToUnicode::parseCMapFromFile(&tname,16)) != nullptr) { CharCode cid; for (cid = 0;cid < n ;cid++) { int len; @@ -2307,11 +2307,11 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { } vumap = new Unicode[n]; memset(vumap,0,sizeof(Unicode)*n); - for (cmapName = lp->CMaps;*cmapName != 0;cmapName++) { + for (cmapName = lp->CMaps;*cmapName != nullptr;cmapName++) { GooString cname(*cmapName); if ((cMap = globalParams->getCMap(getCollection(),&cname)) - != 0) { + != nullptr) { if (cMap->getWMode()) { cMap->setReverseMap(vumap,n,1); } else { @@ -2324,7 +2324,7 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { } else { error(errSyntaxError, -1, "Unknown character collection {0:t}\n", getCollection()); - if ((ctu = getToUnicode()) != 0) { + if ((ctu = getToUnicode()) != nullptr) { CharCode cid; for (cid = 0;cid < n ;cid++) { Unicode *ucode; @@ -2348,24 +2348,24 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { unicode = 0; gid = 0; - if (humap != 0) { + if (humap != nullptr) { for (i = 0;i < N_UCS_CANDIDATES && gid == 0 && (unicode = humap[code*N_UCS_CANDIDATES+i]) != 0;i++) { gid = mapCodeToGID(ff,cmap,unicode,gFalse); } } - if (gid == 0 && vumap != 0) { + if (gid == 0 && vumap != nullptr) { unicode = vumap[code]; if (unicode != 0) { gid = mapCodeToGID(ff,cmap,unicode,gTrue); - if (gid == 0 && tumap != 0) { + if (gid == 0 && tumap != nullptr) { if ((unicode = tumap[code]) != 0) { gid = mapCodeToGID(ff,cmap,unicode,gTrue); } } } } - if (gid == 0 && tumap != 0) { + if (gid == 0 && tumap != nullptr) { if ((unicode = tumap[code]) != 0) { gid = mapCodeToGID(ff,cmap,unicode,gFalse); } @@ -2374,7 +2374,7 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { /* special handling space characters */ const unsigned long *p; - if (humap != 0) unicode = humap[code]; + if (humap != nullptr) unicode = humap[code]; if (unicode != 0) { /* check if code is space character , so map code to 0x0020 */ for (p = spaces;*p != 0;p++) { @@ -2389,9 +2389,9 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { codeToGID[code] = gid; } *mapsizep = n; - if (humap != 0) delete[] humap; - if (tumap != 0) delete[] tumap; - if (vumap != 0) delete[] vumap; + if (humap != nullptr) delete[] humap; + if (tumap != nullptr) delete[] tumap; + if (vumap != nullptr) delete[] vumap; return codeToGID; } @@ -2443,16 +2443,16 @@ GfxFontDict::GfxFontDict(XRef *xref, Ref *fontDictRef, Dict *fontDict) { if (obj2.isDict()) { if (obj1.isRef()) { r = obj1.getRef(); - } else { - // no indirect reference for this font, so invent a unique one - // (legal generation numbers are five digits, so any 6-digit - // number would be safe) + } else if (fontDictRef) { + // legal generation numbers are five digits, so we use a + // 6-digit number here + r.gen = 100000 + fontDictRef->num; r.num = i; - if (fontDictRef) { - r.gen = 100000 + fontDictRef->num; - } else { - r.gen = 999999; - } + } else { + // no indirect reference for this font, or for the containing + // font dict, so hash the font and use that + r.gen = 100000; + r.num = hashFontObject(&obj2); } fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i), r, obj2.getDict()); @@ -2462,11 +2462,11 @@ GfxFontDict::GfxFontDict(XRef *xref, Ref *fontDictRef, Dict *fontDict) { // we can tell the difference between a missing font // and a font that is just !isOk() fonts[i]->decRefCnt(); - fonts[i] = NULL; + fonts[i] = nullptr; } } else { error(errSyntaxError, -1, "font resource is not a dictionary"); - fonts[i] = NULL; + fonts[i] = nullptr; } } } @@ -2490,5 +2490,112 @@ GfxFont *GfxFontDict::lookup(char *tag) { return fonts[i]; } } - return NULL; + return nullptr; +} + +// FNV-1a hash +class FNVHash { +public: + + FNVHash() { + h = 2166136261U; + } + + void hash(char c) { + h ^= c & 0xff; + h *= 16777619; + } + + void hash(char *p, int n) { + int i; + for (i = 0; i < n; ++i) { + hash(p[i]); + } + } + + int get31() { + return (h ^ (h >> 31)) & 0x7fffffff; + } + +private: + + Guint h; +}; + +int GfxFontDict::hashFontObject(Object *obj) { + FNVHash h; + + hashFontObject1(obj, &h); + return h.get31(); +} + +void GfxFontDict::hashFontObject1(Object *obj, FNVHash *h) { + Object obj2; + GooString *s; + char *p; + double r; + int n, i; + + switch (obj->getType()) { + case objBool: + h->hash('b'); + h->hash(obj->getBool() ? 1 : 0); + break; + case objInt: + h->hash('i'); + n = obj->getInt(); + h->hash((char *)&n, sizeof(int)); + break; + case objReal: + h->hash('r'); + r = obj->getReal(); + h->hash((char *)&r, sizeof(double)); + break; + case objString: + h->hash('s'); + s = obj->getString(); + h->hash(s->getCString(), s->getLength()); + break; + case objName: + h->hash('n'); + p = obj->getName(); + h->hash(p, (int)strlen(p)); + break; + case objNull: + h->hash('z'); + break; + case objArray: + h->hash('a'); + n = obj->arrayGetLength(); + h->hash((char *)&n, sizeof(int)); + for (i = 0; i < n; ++i) { + obj2 = obj->arrayGetNF(i); + hashFontObject1(&obj2, h); + } + break; + case objDict: + h->hash('d'); + n = obj->dictGetLength(); + h->hash((char *)&n, sizeof(int)); + for (i = 0; i < n; ++i) { + p = obj->dictGetKey(i); + h->hash(p, (int)strlen(p)); + obj2 = obj->dictGetValNF(i); + hashFontObject1(&obj2, h); + } + break; + case objStream: + // this should never happen - streams must be indirect refs + break; + case objRef: + h->hash('f'); + n = obj->getRefNum(); + h->hash((char *)&n, sizeof(int)); + n = obj->getRefGen(); + h->hash((char *)&n, sizeof(int)); + break; + default: + h->hash('u'); + break; + } } diff --git a/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h b/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h index 5985912a8c2..c2d881e7b59 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h +++ b/Build/source/libs/poppler/poppler-src/poppler/GfxFont.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005, 2008, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2008, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2006 Takashi Iwai // Copyright (C) 2006 Kristian Høgsberg // Copyright (C) 2007 Julien Rebetez @@ -21,7 +21,7 @@ // Copyright (C) 2007 Koji Otani // Copyright (C) 2011 Axel Strübing // Copyright (C) 2011, 2012, 2014 Adrian Johnson -// Copyright (C) 2015 Jason Crain +// Copyright (C) 2015, 2018 Jason Crain // Copyright (C) 2015 Thomas Freitag // // To see a description of the changes please see the Changelog file that @@ -48,6 +48,7 @@ class FoFiTrueType; class PSOutputDev; struct GfxFontCIDWidths; struct Base14FontMapEntry; +class FNVHash; //------------------------------------------------------------------------ // GfxFontType @@ -114,6 +115,9 @@ public: GfxFontLoc(); ~GfxFontLoc(); + GfxFontLoc(const GfxFontLoc &) = delete; + GfxFontLoc& operator=(const GfxFontLoc &) = delete; + GfxFontLocType locType; GfxFontType fontType; Ref embFontID; // embedded stream obj ID @@ -176,6 +180,9 @@ public: GfxFont(const char *tagA, Ref idA, GooString *nameA, GfxFontType typeA, Ref embFontIDA); + GfxFont(const GfxFont &) = delete; + GfxFont& operator=(const GfxFont &other) = delete; + GBool isOk() { return ok; } void incRefCnt(); @@ -440,6 +447,9 @@ public: // Destructor. ~GfxFontDict(); + GfxFontDict(const GfxFontDict &) = delete; + GfxFontDict& operator=(const GfxFontDict &) = delete; + // Get the specified font. GfxFont *lookup(char *tag); @@ -449,6 +459,9 @@ public: private: + int hashFontObject(Object *obj); + void hashFontObject1(Object *obj, FNVHash *h); + GfxFont **fonts; // list of fonts int numFonts; // number of fonts }; diff --git a/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc b/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc index 3ad10381ed8..4cf8d8e32e0 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/GfxState.cc @@ -16,7 +16,7 @@ // Copyright (C) 2005 Kristian Høgsberg // Copyright (C) 2006, 2007 Jeff Muizelaar // Copyright (C) 2006, 2010 Carlos Garcia Campos -// Copyright (C) 2006-2017 Albert Astals Cid +// Copyright (C) 2006-2018 Albert Astals Cid // Copyright (C) 2009, 2012 Koji Otani // Copyright (C) 2009, 2011-2016 Thomas Freitag // Copyright (C) 2009 Christian Persch @@ -210,11 +210,11 @@ unsigned int GfxColorTransform::unref() { return --refCount; } -static cmsHPROFILE RGBProfile = NULL; -static GooString *displayProfileName = NULL; // display profile file Name -static cmsHPROFILE displayProfile = NULL; // display profile +static cmsHPROFILE RGBProfile = nullptr; +static GooString *displayProfileName = nullptr; // display profile file Name +static cmsHPROFILE displayProfile = nullptr; // display profile static unsigned int displayPixelType = 0; -static GfxColorTransform *XYZ2DisplayTransform = NULL; +static GfxColorTransform *XYZ2DisplayTransform = nullptr; // convert color space signature to cmsColor type static unsigned int getCMSColorSpaceType(cmsColorSpaceSignature cs); @@ -223,7 +223,7 @@ static cmsHPROFILE loadColorProfile(const char *fileName); void GfxColorSpace::setDisplayProfile(void *displayProfileA) { displayProfile = displayProfileA; - if (displayProfile != NULL) { + if (displayProfile != nullptr) { cmsHTRANSFORM transform; unsigned int nChannels; @@ -235,7 +235,7 @@ void GfxColorSpace::setDisplayProfile(void *displayProfileA) { displayProfile, COLORSPACE_SH(displayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) { + INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransform = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, displayPixelType); @@ -264,7 +264,7 @@ cmsHPROFILE GfxColorSpace::getDisplayProfile() { GfxColorSpace::GfxColorSpace() { overprintMask = 0x0f; - mapping = NULL; + mapping = nullptr; } GfxColorSpace::~GfxColorSpace() { @@ -276,80 +276,80 @@ GfxColorSpace *GfxColorSpace::parse(GfxResources *res, Object *csObj, OutputDev if (recursion > colorSpaceRecursionLimit) { error(errSyntaxError, -1, "Loop detected in color space objects"); - return NULL; + return nullptr; } - cs = NULL; + cs = nullptr; if (csObj->isName()) { if (csObj->isName("DeviceGray") || csObj->isName("G")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultGray"); if (objCS.isNull()) { cs = new GfxDeviceGrayColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceGrayColorSpace(); } } else if (csObj->isName("DeviceRGB") || csObj->isName("RGB")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultRGB"); if (objCS.isNull()) { cs = new GfxDeviceRGBColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceRGBColorSpace(); } } else if (csObj->isName("DeviceCMYK") || csObj->isName("CMYK")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultCMYK"); if (objCS.isNull()) { cs = new GfxDeviceCMYKColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceCMYKColorSpace(); } } else if (csObj->isName("Pattern")) { - cs = new GfxPatternColorSpace(NULL); + cs = new GfxPatternColorSpace(nullptr); } else { error(errSyntaxWarning, -1, "Bad color space '{0:s}'", csObj->getName()); } } else if (csObj->isArray() && csObj->arrayGetLength() > 0) { obj1 = csObj->arrayGet(0); if (obj1.isName("DeviceGray") || obj1.isName("G")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultGray"); if (objCS.isNull()) { cs = new GfxDeviceGrayColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceGrayColorSpace(); } } else if (obj1.isName("DeviceRGB") || obj1.isName("RGB")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultRGB"); if (objCS.isNull()) { cs = new GfxDeviceRGBColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceRGBColorSpace(); } } else if (obj1.isName("DeviceCMYK") || obj1.isName("CMYK")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultCMYK"); if (objCS.isNull()) { cs = new GfxDeviceCMYKColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceCMYKColorSpace(); @@ -376,34 +376,34 @@ GfxColorSpace *GfxColorSpace::parse(GfxResources *res, Object *csObj, OutputDev } else if (csObj->isDict()) { obj1 = csObj->dictLookup("ColorSpace"); if (obj1.isName("DeviceGray")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultGray"); if (objCS.isNull()) { cs = new GfxDeviceGrayColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceGrayColorSpace(); } } else if (obj1.isName("DeviceRGB")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultRGB"); if (objCS.isNull()) { cs = new GfxDeviceRGBColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceRGBColorSpace(); } } else if (obj1.isName("DeviceCMYK")) { - if (res != NULL) { + if (res != nullptr) { Object objCS = res->lookupColorSpace("DefaultCMYK"); if (objCS.isNull()) { cs = new GfxDeviceCMYKColorSpace(); } else { - cs = GfxColorSpace::parse(NULL, &objCS, out, state); + cs = GfxColorSpace::parse(nullptr, &objCS, out, state); } } else { cs = new GfxDeviceCMYKColorSpace(); @@ -442,13 +442,13 @@ const char *GfxColorSpace::getColorSpaceModeName(int idx) { #ifdef USE_CMS cmsHPROFILE loadColorProfile(const char *fileName) { - cmsHPROFILE hp = NULL; + cmsHPROFILE hp = nullptr; FILE *fp; if (fileName[0] == '/') { // full path // check if open the file - if ((fp = fopen(fileName,"r")) != NULL) { + if ((fp = fopen(fileName,"r")) != nullptr) { fclose(fp); hp = cmsOpenProfileFromFile(fileName,"r"); } @@ -458,7 +458,7 @@ cmsHPROFILE loadColorProfile(const char *fileName) GooString *path = new GooString(GLOBAL_COLOR_PROFILE_DIR); path->append(fileName); // check if open the file - if ((fp = fopen(path->getCString(),"r")) != NULL) { + if ((fp = fopen(path->getCString(),"r")) != nullptr) { fclose(fp); hp = cmsOpenProfileFromFile(path->getCString(),"r"); } @@ -484,9 +484,9 @@ int GfxColorSpace::setupColorProfiles() // set error handlor cmsSetLogErrorHandler(CMSError); - if (displayProfile == NULL) { + if (displayProfile == nullptr) { // load display profile if it was not already loaded. - if (displayProfileName == NULL) { + if (displayProfileName == nullptr) { displayProfile = loadColorProfile("display.icc"); } else if (displayProfileName->getLength() > 0) { displayProfile = loadColorProfile(displayProfileName->getCString()); @@ -494,12 +494,12 @@ int GfxColorSpace::setupColorProfiles() } // load RGB profile RGBProfile = loadColorProfile("RGB.icc"); - if (RGBProfile == NULL) { + if (RGBProfile == nullptr) { /* use built in sRGB profile */ RGBProfile = cmsCreate_sRGBProfile(); } // create transforms - if (displayProfile != NULL) { + if (displayProfile != nullptr) { displayPixelType = getCMSColorSpaceType(cmsGetColorSpace(displayProfile)); nChannels = getCMSNChannels(cmsGetColorSpace(displayProfile)); // create transform from XYZ @@ -508,7 +508,7 @@ int GfxColorSpace::setupColorProfiles() displayProfile, COLORSPACE_SH(displayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) { + INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransform = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, displayPixelType); @@ -734,7 +734,7 @@ GfxCalGrayColorSpace::GfxCalGrayColorSpace() { GfxCalGrayColorSpace::~GfxCalGrayColorSpace() { #ifdef USE_CMS - if (transform != NULL) { + if (transform != nullptr) { if (transform->unref() == 0) delete transform; } #endif @@ -756,7 +756,7 @@ GfxColorSpace *GfxCalGrayColorSpace::copy() { cs->kb = kb; #ifdef USE_CMS cs->transform = transform; - if (transform != NULL) transform->ref(); + if (transform != nullptr) transform->ref(); #endif return cs; } @@ -776,7 +776,7 @@ GfxColorSpace *GfxCalGrayColorSpace::parse(Array *arr, GfxState *state) { obj1 = arr->get(1); if (!obj1.isDict()) { error(errSyntaxWarning, -1, "Bad CalGray color space"); - return NULL; + return nullptr; } cs = new GfxCalGrayColorSpace(); obj2 = obj1.dictLookup("WhitePoint"); @@ -818,8 +818,8 @@ GfxColorSpace *GfxCalGrayColorSpace::parse(Array *arr, GfxState *state) { xyzrgb[2][1] * cs->whiteY + xyzrgb[2][2] * cs->whiteZ); #ifdef USE_CMS - cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; - if (cs->transform != NULL) cs->transform->ref(); + cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; + if (cs->transform != nullptr) cs->transform->ref(); #endif return cs; } @@ -839,7 +839,7 @@ void GfxCalGrayColorSpace::getGray(GfxColor *color, GfxGray *gray) { GfxRGB rgb; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) { + if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; double X, Y, Z; @@ -865,7 +865,7 @@ void GfxCalGrayColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { getXYZ(color,&X,&Y,&Z); #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_RGB) { + if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; @@ -896,7 +896,7 @@ void GfxCalGrayColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { GfxColorComp c, m, y, k; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { double in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; double X, Y, Z; @@ -1105,7 +1105,7 @@ GfxCalRGBColorSpace::GfxCalRGBColorSpace() { GfxCalRGBColorSpace::~GfxCalRGBColorSpace() { #ifdef USE_CMS - if (transform != NULL) { + if (transform != nullptr) { if (transform->unref() == 0) delete transform; } #endif @@ -1133,7 +1133,7 @@ GfxColorSpace *GfxCalRGBColorSpace::copy() { } #ifdef USE_CMS cs->transform = transform; - if (transform != NULL) transform->ref(); + if (transform != nullptr) transform->ref(); #endif return cs; } @@ -1146,7 +1146,7 @@ GfxColorSpace *GfxCalRGBColorSpace::parse(Array *arr, GfxState *state) { obj1 = arr->get(1); if (!obj1.isDict()) { error(errSyntaxWarning, -1, "Bad CalRGB color space"); - return NULL; + return nullptr; } cs = new GfxCalRGBColorSpace(); obj2 = obj1.dictLookup("WhitePoint"); @@ -1205,8 +1205,8 @@ GfxColorSpace *GfxCalRGBColorSpace::parse(Array *arr, GfxState *state) { xyzrgb[2][2] * cs->whiteZ); #ifdef USE_CMS - cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; - if (cs->transform != NULL) cs->transform->ref(); + cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; + if (cs->transform != nullptr) cs->transform->ref(); #endif return cs; } @@ -1228,7 +1228,7 @@ void GfxCalRGBColorSpace::getGray(GfxColor *color, GfxGray *gray) { GfxRGB rgb; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) { + if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; double X, Y, Z; @@ -1254,7 +1254,7 @@ void GfxCalRGBColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { getXYZ(color,&X,&Y,&Z); #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_RGB) { + if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; @@ -1282,7 +1282,7 @@ void GfxCalRGBColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { GfxColorComp c, m, y, k; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { double in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; double X, Y, Z; @@ -1479,7 +1479,7 @@ GfxLabColorSpace::GfxLabColorSpace() { GfxLabColorSpace::~GfxLabColorSpace() { #ifdef USE_CMS - if (transform != NULL) { + if (transform != nullptr) { if (transform->unref() == 0) delete transform; } #endif @@ -1504,7 +1504,7 @@ GfxColorSpace *GfxLabColorSpace::copy() { cs->kb = kb; #ifdef USE_CMS cs->transform = transform; - if (transform != NULL) transform->ref(); + if (transform != nullptr) transform->ref(); #endif return cs; } @@ -1516,7 +1516,7 @@ GfxColorSpace *GfxLabColorSpace::parse(Array *arr, GfxState *state) { obj1 = arr->get(1); if (!obj1.isDict()) { error(errSyntaxWarning, -1, "Bad Lab color space"); - return NULL; + return nullptr; } cs = new GfxLabColorSpace(); bool ok = true; @@ -1570,8 +1570,8 @@ GfxColorSpace *GfxLabColorSpace::parse(Array *arr, GfxState *state) { xyzrgb[2][2] * cs->whiteZ); #ifdef USE_CMS - cs->transform = (state != NULL) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; - if (cs->transform != NULL) cs->transform->ref(); + cs->transform = (state != nullptr) ? state->getXYZ2DisplayTransform() : XYZ2DisplayTransform; + if (cs->transform != nullptr) cs->transform->ref(); #endif return cs; } @@ -1580,7 +1580,7 @@ void GfxLabColorSpace::getGray(GfxColor *color, GfxGray *gray) { GfxRGB rgb; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_GRAY) { + if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; @@ -1628,11 +1628,10 @@ void GfxLabColorSpace::getXYZ(GfxColor *color, void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { double X, Y, Z; - double r, g, b; getXYZ(color, &X, &Y, &Z); #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_RGB) { + if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; @@ -1644,7 +1643,7 @@ void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { rgb->g = byteToCol(out[1]); rgb->b = byteToCol(out[2]); return; - } else if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + } else if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { Guchar out[gfxColorMaxComps]; double in[gfxColorMaxComps]; double c, m, y, k, c1, m1, y1, k1, r, g, b; @@ -1672,9 +1671,9 @@ void GfxLabColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { Y *= whiteY; Z *= whiteZ; // convert XYZ to RGB, including gamut mapping and gamma correction - r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z; - g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z; - b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z; + const double r = xyzrgb[0][0] * X + xyzrgb[0][1] * Y + xyzrgb[0][2] * Z; + const double g = xyzrgb[1][0] * X + xyzrgb[1][1] * Y + xyzrgb[1][2] * Z; + const double b = xyzrgb[2][0] * X + xyzrgb[2][1] * Y + xyzrgb[2][2] * Z; rgb->r = dblToCol(sqrt(clip01(r * kr))); rgb->g = dblToCol(sqrt(clip01(g * kg))); rgb->b = dblToCol(sqrt(clip01(b * kb))); @@ -1685,7 +1684,7 @@ void GfxLabColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { GfxColorComp c, m, y, k; #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { double in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; @@ -1798,18 +1797,18 @@ GfxICCBasedColorSpace::GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA, rangeMin[0] = rangeMin[1] = rangeMin[2] = rangeMin[3] = 0; rangeMax[0] = rangeMax[1] = rangeMax[2] = rangeMax[3] = 1; #ifdef USE_CMS - transform = NULL; - lineTransform = NULL; + transform = nullptr; + lineTransform = nullptr; #endif } GfxICCBasedColorSpace::~GfxICCBasedColorSpace() { delete alt; #ifdef USE_CMS - if (transform != NULL) { + if (transform != nullptr) { if (transform->unref() == 0) delete transform; } - if (lineTransform != NULL) { + if (lineTransform != nullptr) { if (lineTransform->unref() == 0) delete lineTransform; } #endif @@ -1826,9 +1825,9 @@ GfxColorSpace *GfxICCBasedColorSpace::copy() { } #ifdef USE_CMS cs->transform = transform; - if (transform != NULL) transform->ref(); + if (transform != nullptr) transform->ref(); cs->lineTransform = lineTransform; - if (lineTransform != NULL) lineTransform->ref(); + if (lineTransform != nullptr) lineTransform->ref(); #endif return cs; } @@ -1844,7 +1843,7 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState if (arr->getLength() < 2) { error(errSyntaxError, -1, "Bad ICCBased color space"); - return NULL; + return nullptr; } obj1 = arr->getNF(1); if (obj1.isRef()) { @@ -1858,14 +1857,14 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState if (out && iccProfileStreamA.num > 0) { GfxICCBasedColorSpaceKey k(iccProfileStreamA.num, iccProfileStreamA.gen); GfxICCBasedColorSpaceItem *item = static_cast(out->getIccColorSpaceCache()->lookup(k)); - if (item != NULL) + if (item != nullptr) { cs = static_cast(item->cs->copy()); int transformIntent = cs->getIntent(); int cmsIntent = INTENT_RELATIVE_COLORIMETRIC; - if (state != NULL) { + if (state != nullptr) { const char *intent = state->getRenderingIntent(); - if (intent != NULL) { + if (intent != nullptr) { if (strcmp(intent, "AbsoluteColorimetric") == 0) { cmsIntent = INTENT_ABSOLUTE_COLORIMETRIC; } else if (strcmp(intent, "Saturation") == 0) { @@ -1885,7 +1884,7 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState obj1 = arr->get(1); if (!obj1.isStream()) { error(errSyntaxWarning, -1, "Bad ICCBased color space (stream)"); - return NULL; + return nullptr; } dict = obj1.streamGetDict(); obj2 = dict->lookup("N"); @@ -1902,7 +1901,7 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState } obj2 = dict->lookup("Alternate"); if (obj2.isNull() || - !(altA = GfxColorSpace::parse(NULL, &obj2, out, state, recursion + 1))) { + !(altA = GfxColorSpace::parse(nullptr, &obj2, out, state, recursion + 1))) { switch (nCompsA) { case 1: altA = new GfxDeviceGrayColorSpace(); @@ -1915,13 +1914,13 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState break; default: error(errSyntaxWarning, -1, "Bad ICCBased color space - invalid N"); - return NULL; + return nullptr; } } if (altA->getNComps() != nCompsA) { error(errSyntaxWarning, -1, "Bad ICCBased color space - N doesn't match alt color space"); delete altA; - return NULL; + return nullptr; } cs = new GfxICCBasedColorSpace(nCompsA, altA, &iccProfileStreamA); obj2 = dict->lookup("Range"); @@ -1946,12 +1945,12 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState profBuf = iccStream->toUnsignedChars(&length, 65536, 65536); cmsHPROFILE hp = cmsOpenProfileFromMem(profBuf,length); gfree(profBuf); - if (hp == 0) { + if (hp == nullptr) { error(errSyntaxWarning, -1, "read ICCBased color space profile error"); } else { - cmsHPROFILE dhp = (state != NULL && state->getDisplayProfile() != NULL) ? state->getDisplayProfile() : displayProfile; - if (dhp == NULL) { - if (unlikely(RGBProfile == NULL)) { + cmsHPROFILE dhp = (state != nullptr && state->getDisplayProfile() != nullptr) ? state->getDisplayProfile() : displayProfile; + if (dhp == nullptr) { + if (unlikely(RGBProfile == nullptr)) { GfxColorSpace::setupColorProfiles(); } dhp = RGBProfile; @@ -1962,9 +1961,9 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState cmsHTRANSFORM transform; int cmsIntent = INTENT_RELATIVE_COLORIMETRIC; - if (state != NULL) { + if (state != nullptr) { const char *intent = state->getRenderingIntent(); - if (intent != NULL) { + if (intent != nullptr) { if (strcmp(intent, "AbsoluteColorimetric") == 0) { cmsIntent = INTENT_ABSOLUTE_COLORIMETRIC; } else if (strcmp(intent, "Saturation") == 0) { @@ -1979,9 +1978,9 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState dhp, COLORSPACE_SH(dcst) | CHANNELS_SH(dNChannels) | BYTES_SH(1), - cmsIntent, LCMS_FLAGS)) == 0) { + cmsIntent, LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create transform"); - cs->transform = NULL; + cs->transform = nullptr; } else { cs->transform = new GfxColorTransform(transform, cmsIntent, cst, dcst); } @@ -1989,9 +1988,9 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState // create line transform only when the display is RGB type color space if ((transform = cmsCreateTransform(hp, CHANNELS_SH(nCompsA) | BYTES_SH(1),dhp, - (dcst == PT_RGB) ? TYPE_RGB_8 : TYPE_CMYK_8, cmsIntent, LCMS_FLAGS)) == 0) { + (dcst == PT_RGB) ? TYPE_RGB_8 : TYPE_CMYK_8, cmsIntent, LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create transform"); - cs->lineTransform = NULL; + cs->lineTransform = nullptr; } else { cs->lineTransform = new GfxColorTransform(transform, cmsIntent, cst, dcst); } @@ -2010,7 +2009,7 @@ GfxColorSpace *GfxICCBasedColorSpace::parse(Array *arr, OutputDev *out, GfxState void GfxICCBasedColorSpace::getGray(GfxColor *color, GfxGray *gray) { #ifdef USE_CMS - if (transform != 0 && transform->getTransformPixelType() == PT_GRAY) { + if (transform != nullptr && transform->getTransformPixelType() == PT_GRAY) { Guchar in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; @@ -2059,7 +2058,7 @@ void GfxICCBasedColorSpace::getGray(GfxColor *color, GfxGray *gray) { void GfxICCBasedColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { #ifdef USE_CMS - if (transform != 0 && transform->getTransformPixelType() == PT_RGB) { + if (transform != nullptr && transform->getTransformPixelType() == PT_RGB) { Guchar in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; @@ -2098,7 +2097,7 @@ void GfxICCBasedColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { unsigned int value = (out[0] << 16) + (out[1] << 8) + out[2]; cmsCache.insert(std::pair(key, value)); } - } else if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + } else if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { Guchar in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; double c, m, y, k, c1, m1, y1, k1, r, g, b; @@ -2158,7 +2157,7 @@ void GfxICCBasedColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { void GfxICCBasedColorSpace::getRGBLine(Guchar *in, unsigned int *out, int length) { #ifdef USE_CMS - if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) { + if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) { Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar)); lineTransform->doTransform(in, tmp, length); for (int i = 0; i < length; ++i) { @@ -2176,7 +2175,7 @@ void GfxICCBasedColorSpace::getRGBLine(Guchar *in, unsigned int *out, void GfxICCBasedColorSpace::getRGBLine(Guchar *in, Guchar *out, int length) { #ifdef USE_CMS - if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) { + if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) { Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar)); lineTransform->doTransform(in, tmp, length); Guchar *current = tmp; @@ -2186,7 +2185,7 @@ void GfxICCBasedColorSpace::getRGBLine(Guchar *in, Guchar *out, int length) { *out++ = *current++; } gfree(tmp); - } else if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) { + } else if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) { Guchar* tmp = (Guchar *)gmallocn(4 * length, sizeof(Guchar)); lineTransform->doTransform(in, tmp, length); Guchar *current = tmp; @@ -2216,7 +2215,7 @@ void GfxICCBasedColorSpace::getRGBLine(Guchar *in, Guchar *out, int length) { void GfxICCBasedColorSpace::getRGBXLine(Guchar *in, Guchar *out, int length) { #ifdef USE_CMS - if (lineTransform != 0 && lineTransform->getTransformPixelType() == PT_RGB) { + if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_RGB) { Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar)); lineTransform->doTransform(in, tmp, length); Guchar *current = tmp; @@ -2237,9 +2236,9 @@ void GfxICCBasedColorSpace::getRGBXLine(Guchar *in, Guchar *out, int length) { void GfxICCBasedColorSpace::getCMYKLine(Guchar *in, Guchar *out, int length) { #ifdef USE_CMS - if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) { + if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) { transform->doTransform(in,out,length); - } else if (lineTransform != NULL && nComps != 4) { + } else if (lineTransform != nullptr && nComps != 4) { GfxColorComp c, m, y, k; Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar)); getRGBLine(in, tmp, length); @@ -2271,7 +2270,7 @@ void GfxICCBasedColorSpace::getCMYKLine(Guchar *in, Guchar *out, int length) { void GfxICCBasedColorSpace::getDeviceNLine(Guchar *in, Guchar *out, int length) { #ifdef USE_CMS - if (lineTransform != NULL && lineTransform->getTransformPixelType() == PT_CMYK) { + if (lineTransform != nullptr && lineTransform->getTransformPixelType() == PT_CMYK) { Guchar* tmp = (Guchar *)gmallocn(4 * length, sizeof(Guchar)); transform->doTransform(in,tmp,length); Guchar *p = tmp; @@ -2282,7 +2281,7 @@ void GfxICCBasedColorSpace::getDeviceNLine(Guchar *in, Guchar *out, int length) *out++ = 0; } gfree(tmp); - } else if (lineTransform != NULL && nComps != 4) { + } else if (lineTransform != nullptr && nComps != 4) { GfxColorComp c, m, y, k; Guchar* tmp = (Guchar *)gmallocn(3 * length, sizeof(Guchar)); getRGBLine(in, tmp, length); @@ -2317,7 +2316,7 @@ void GfxICCBasedColorSpace::getDeviceNLine(Guchar *in, Guchar *out, int length) void GfxICCBasedColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { #ifdef USE_CMS - if (transform != NULL && transform->getTransformPixelType() == PT_CMYK) { + if (transform != nullptr && transform->getTransformPixelType() == PT_CMYK) { Guchar in[gfxColorMaxComps]; Guchar out[gfxColorMaxComps]; @@ -2358,7 +2357,7 @@ void GfxICCBasedColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { unsigned int value = (out[0] << 24) + (out[1] << 16) + (out[2] << 8) + out[3]; cmsCache.insert(std::pair(key, value)); } - } else if (nComps != 4 && transform != NULL && transform->getTransformPixelType() == PT_RGB) { + } else if (nComps != 4 && transform != nullptr && transform->getTransformPixelType() == PT_RGB) { GfxRGB rgb; GfxColorComp c, m, y, k; @@ -2387,7 +2386,7 @@ void GfxICCBasedColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { GBool GfxICCBasedColorSpace::useGetRGBLine() { #ifdef USE_CMS - return lineTransform != NULL || alt->useGetRGBLine(); + return lineTransform != nullptr || alt->useGetRGBLine(); #else return alt->useGetRGBLine(); #endif @@ -2395,7 +2394,7 @@ GBool GfxICCBasedColorSpace::useGetRGBLine() { GBool GfxICCBasedColorSpace::useGetCMYKLine() { #ifdef USE_CMS - return lineTransform != NULL || alt->useGetCMYKLine(); + return lineTransform != nullptr || alt->useGetCMYKLine(); #else return alt->useGetCMYKLine(); #endif @@ -2403,7 +2402,7 @@ GBool GfxICCBasedColorSpace::useGetCMYKLine() { GBool GfxICCBasedColorSpace::useGetDeviceNLine() { #ifdef USE_CMS - return lineTransform != NULL || alt->useGetDeviceNLine(); + return lineTransform != nullptr || alt->useGetDeviceNLine(); #else return alt->useGetDeviceNLine(); #endif @@ -2722,13 +2721,13 @@ GfxSeparationColorSpace::~GfxSeparationColorSpace() { delete name; delete alt; delete func; - if (mapping != NULL) + if (mapping != nullptr) gfree(mapping); } GfxColorSpace *GfxSeparationColorSpace::copy() { - int *mappingA = NULL; - if (mapping != NULL) { + int *mappingA = nullptr; + if (mapping != nullptr) { mappingA = (int *) gmalloc(sizeof(int)); *mappingA = *mapping; } @@ -2857,7 +2856,7 @@ void GfxSeparationColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { void GfxSeparationColorSpace::getDeviceN(GfxColor *color, GfxColor *deviceN) { for (int i = 0; i < gfxColorMaxComps; i++) deviceN->c[i] = 0; - if (mapping == NULL || mapping[0] == -1) { + if (mapping == nullptr || mapping[0] == -1) { GfxCMYK cmyk; getCMYK(color, &cmyk); @@ -2900,7 +2899,7 @@ void GfxSeparationColorSpace::createMapping(GooList *separationList, int maxSepC error(errSyntaxWarning, -1, "Different functions found for '{0:t}', convert immediately", name); gfree(mapping); - mapping = NULL; + mapping = nullptr; return; } *mapping = i+4; @@ -2913,7 +2912,7 @@ void GfxSeparationColorSpace::createMapping(GooList *separationList, int maxSepC error(errSyntaxWarning, -1, "Too many ({0:d}) spots, convert '{1:t}' immediately", maxSepComps, name); gfree(mapping); - mapping = NULL; + mapping = nullptr; return; } *mapping = separationList->getLength() + 4; @@ -2940,7 +2939,7 @@ GfxDeviceNColorSpace::GfxDeviceNColorSpace(int nCompsA, sepsCS = sepsCSA; nonMarking = gTrue; overprintMask = 0; - mapping = NULL; + mapping = nullptr; for (i = 0; i < nComps; ++i) { names[i] = namesA[i]; if (names[i]->cmp("None")) { @@ -2993,22 +2992,22 @@ GfxDeviceNColorSpace::~GfxDeviceNColorSpace() { delete alt; delete func; deleteGooList(sepsCS, GfxSeparationColorSpace); - if (mapping != NULL) + if (mapping != nullptr) gfree(mapping); } GfxColorSpace *GfxDeviceNColorSpace::copy() { int i; - int *mappingA = NULL; + int *mappingA = nullptr; GooList *sepsCSA = new GooList(sepsCS->getLength()); for (i = 0; i < sepsCS->getLength(); i++) { GfxSeparationColorSpace *scs = (GfxSeparationColorSpace *) sepsCS->get(i); - if (likely(scs != NULL)) { + if (likely(scs != nullptr)) { sepsCSA->append(scs->copy()); } } - if (mapping != NULL) { + if (mapping != nullptr) { mappingA = (int *)gmalloc(sizeof(int) * nComps); for (i = 0; i < nComps; i++) mappingA[i] = mapping[i]; @@ -3092,7 +3091,7 @@ GfxColorSpace *GfxDeviceNColorSpace::parse(GfxResources *res, Array *arr, Output } err1: delete separationList; - return NULL; + return nullptr; } void GfxDeviceNColorSpace::getGray(GfxColor *color, GfxGray *gray) { @@ -3143,7 +3142,7 @@ void GfxDeviceNColorSpace::getCMYK(GfxColor *color, GfxCMYK *cmyk) { void GfxDeviceNColorSpace::getDeviceN(GfxColor *color, GfxColor *deviceN) { for (int i = 0; i < gfxColorMaxComps; i++) deviceN->c[i] = 0; - if (mapping == NULL) { + if (mapping == nullptr) { GfxCMYK cmyk; getCMYK(color, &cmyk); @@ -3189,7 +3188,7 @@ void GfxDeviceNColorSpace::createMapping(GooList *separationList, int maxSepComp } else { Guint startOverprintMask = 0x10; GBool found = gFalse; - Function *sepFunc = NULL; + Function *sepFunc = nullptr; if (nComps == 1) sepFunc = func; else { @@ -3204,11 +3203,11 @@ void GfxDeviceNColorSpace::createMapping(GooList *separationList, int maxSepComp for (int j = 0; j < separationList->getLength(); j++) { GfxSeparationColorSpace *sepCS = (GfxSeparationColorSpace *)separationList->get(j); if (!sepCS->getName()->cmp(names[i])) { - if (sepFunc != NULL && sepCS->getFunc()->hasDifferentResultSet(sepFunc)) { + if (sepFunc != nullptr && sepCS->getFunc()->hasDifferentResultSet(sepFunc)) { error(errSyntaxWarning, -1, "Different functions found for '{0:t}', convert immediately", names[i]); gfree(mapping); - mapping = NULL; + mapping = nullptr; overprintMask = 0xffffffff; return; } @@ -3224,7 +3223,7 @@ void GfxDeviceNColorSpace::createMapping(GooList *separationList, int maxSepComp error(errSyntaxWarning, -1, "Too many ({0:d}) spots, convert '{1:t}' immediately", maxSepComps, names[i]); gfree(mapping); - mapping = NULL; + mapping = nullptr; overprintMask = 0xffffffff; return; } @@ -3244,7 +3243,7 @@ void GfxDeviceNColorSpace::createMapping(GooList *separationList, int maxSepComp if(!found) { error(errSyntaxWarning, -1, "DeviceN has no suitable colorant"); gfree(mapping); - mapping = NULL; + mapping = nullptr; overprintMask = 0xffffffff; return; } @@ -3271,7 +3270,7 @@ GfxPatternColorSpace::~GfxPatternColorSpace() { GfxColorSpace *GfxPatternColorSpace::copy() { return new GfxPatternColorSpace(under ? under->copy() : - (GfxColorSpace *)NULL); + (GfxColorSpace *)nullptr); } GfxColorSpace *GfxPatternColorSpace::parse(GfxResources *res, Array *arr, OutputDev *out, GfxState *state, int recursion) { @@ -3281,14 +3280,14 @@ GfxColorSpace *GfxPatternColorSpace::parse(GfxResources *res, Array *arr, Output if (arr->getLength() != 1 && arr->getLength() != 2) { error(errSyntaxWarning, -1, "Bad Pattern color space"); - return NULL; + return nullptr; } - underA = NULL; + underA = nullptr; if (arr->getLength() == 2) { obj1 = arr->get(1); if (!(underA = GfxColorSpace::parse(res, &obj1, out, state, recursion + 1))) { error(errSyntaxWarning, -1, "Bad Pattern color space (underlying color space)"); - return NULL; + return nullptr; } } cs = new GfxPatternColorSpace(underA); @@ -3343,7 +3342,7 @@ GfxPattern *GfxPattern::parse(GfxResources *res, Object *obj, OutputDev *out, Gf } else { return nullptr; } - pattern = NULL; + pattern = nullptr; if (obj1.isInt() && obj1.getInt() == 1) { pattern = GfxTilingPattern::parse(obj, patternRefNum); } else if (obj1.isInt() && obj1.getInt() == 2) { @@ -3366,7 +3365,7 @@ GfxTilingPattern *GfxTilingPattern::parse(Object *patObj, int patternRefNum) { int i; if (!patObj->isStream()) { - return NULL; + return nullptr; } dict = patObj->streamGetDict(); @@ -3474,14 +3473,14 @@ GfxShadingPattern *GfxShadingPattern::parse(GfxResources *res, Object *patObj, O int i; if (!patObj->isDict()) { - return NULL; + return nullptr; } dict = patObj->getDict(); obj1 = dict->lookup("Shading"); shadingA = GfxShading::parse(res, &obj1, out, state); if (!shadingA) { - return NULL; + return nullptr; } matrixA[0] = 1; matrixA[1] = 0; @@ -3525,7 +3524,7 @@ GfxPattern *GfxShadingPattern::copy() { GfxShading::GfxShading(int typeA) { type = typeA; - colorSpace = NULL; + colorSpace = nullptr; } GfxShading::GfxShading(GfxShading *shading) { @@ -3561,13 +3560,13 @@ GfxShading *GfxShading::parse(GfxResources *res, Object *obj, OutputDev *out, Gf } else if (obj->isStream()) { dict = obj->streamGetDict(); } else { - return NULL; + return nullptr; } obj1 = dict->lookup("ShadingType"); if (!obj1.isInt()) { error(errSyntaxWarning, -1, "Invalid ShadingType in shading dictionary"); - return NULL; + return nullptr; } typeA = obj1.getInt(); @@ -3621,7 +3620,7 @@ GfxShading *GfxShading::parse(GfxResources *res, Object *obj, OutputDev *out, Gf return shading; err1: - return NULL; + return nullptr; } GBool GfxShading::init(GfxResources *res, Dict *dict, OutputDev *out, GfxState *state) { @@ -3742,11 +3741,17 @@ GfxFunctionShading *GfxFunctionShading::parse(GfxResources *res, Dict *dict, Out x1A = y1A = 1; obj1 = dict->lookup("Domain"); if (obj1.isArray() && obj1.arrayGetLength() == 4) { + bool decodeOk = true; Object obj2; - x0A = (obj2 = obj1.arrayGet(0), obj2.getNum()); - x1A = (obj2 = obj1.arrayGet(1), obj2.getNum()); - y0A = (obj2 = obj1.arrayGet(2), obj2.getNum()); - y1A = (obj2 = obj1.arrayGet(3), obj2.getNum()); + x0A = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk)); + x1A = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk)); + y0A = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk)); + y1A = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk)); + + if (!decodeOk) { + error(errSyntaxWarning, -1, "Invalid Domain array in function shading dictionary"); + return nullptr; + } } matrixA[0] = 1; matrixA[1] = 0; @@ -3754,13 +3759,19 @@ GfxFunctionShading *GfxFunctionShading::parse(GfxResources *res, Dict *dict, Out matrixA[4] = 0; matrixA[5] = 0; obj1 = dict->lookup("Matrix"); if (obj1.isArray() && obj1.arrayGetLength() == 6) { + bool decodeOk = true; Object obj2; - matrixA[0] = (obj2 = obj1.arrayGet(0), obj2.getNum()); - matrixA[1] = (obj2 = obj1.arrayGet(1), obj2.getNum()); - matrixA[2] = (obj2 = obj1.arrayGet(2), obj2.getNum()); - matrixA[3] = (obj2 = obj1.arrayGet(3), obj2.getNum()); - matrixA[4] = (obj2 = obj1.arrayGet(4), obj2.getNum()); - matrixA[5] = (obj2 = obj1.arrayGet(5), obj2.getNum()); + matrixA[0] = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk)); + matrixA[1] = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk)); + matrixA[2] = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk)); + matrixA[3] = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk)); + matrixA[4] = (obj2 = obj1.arrayGet(4), obj2.getNum(&decodeOk)); + matrixA[5] = (obj2 = obj1.arrayGet(5), obj2.getNum(&decodeOk)); + + if (!decodeOk) { + error(errSyntaxWarning, -1, "Invalid Matrix array in function shading dictionary"); + return nullptr; + } } obj1 = dict->lookup("Function"); @@ -3787,7 +3798,7 @@ GfxFunctionShading *GfxFunctionShading::parse(GfxResources *res, Dict *dict, Out funcsA, nFuncsA); if (!shading->init(res, dict, out, state)) { delete shading; - return NULL; + return nullptr; } return shading; } @@ -3838,9 +3849,9 @@ GfxUnivariateShading::GfxUnivariateShading(int typeA, cacheSize = 0; lastMatch = 0; - cacheBounds = NULL; - cacheCoeff = NULL; - cacheValues = NULL; + cacheBounds = nullptr; + cacheCoeff = nullptr; + cacheValues = nullptr; } GfxUnivariateShading::GfxUnivariateShading(GfxUnivariateShading *shading): @@ -3859,9 +3870,9 @@ GfxUnivariateShading::GfxUnivariateShading(GfxUnivariateShading *shading): cacheSize = 0; lastMatch = 0; - cacheBounds = NULL; - cacheCoeff = NULL; - cacheValues = NULL; + cacheBounds = nullptr; + cacheCoeff = nullptr; + cacheValues = nullptr; } GfxUnivariateShading::~GfxUnivariateShading() { @@ -3876,7 +3887,6 @@ GfxUnivariateShading::~GfxUnivariateShading() { void GfxUnivariateShading::getColor(double t, GfxColor *color) { double out[gfxColorMaxComps]; - int i; // NB: there can be one function with n outputs or n functions with // one output each (where n = number of color components) @@ -3906,14 +3916,14 @@ void GfxUnivariateShading::getColor(double t, GfxColor *color) { u = cacheValues + lastMatch * nComps; l = u - nComps; - for (i = 0; i < nComps; ++i) { + for (int i = 0; i < nComps; ++i) { out[i] = ix * l[i] + x * u[i]; } } else { - for (i = 0; i < nComps; ++i) { + for (int i = 0; i < nComps; ++i) { out[i] = 0; } - for (i = 0; i < nFuncs; ++i) { + for (int i = 0; i < nFuncs; ++i) { if (funcs[i]->getInputSize() != 1) { error(errSyntaxWarning, -1, "Invalid shading function (input != 1)"); break; @@ -3922,7 +3932,7 @@ void GfxUnivariateShading::getColor(double t, GfxColor *color) { } } - for (i = 0; i < nComps; ++i) { + for (int i = 0; i < nComps; ++i) { color->c[i] = dblToCol(out[i]); } } @@ -3934,7 +3944,7 @@ void GfxUnivariateShading::setupCache(const Matrix *ctm, int i, j, nComps, maxSize; gfree (cacheBounds); - cacheBounds = NULL; + cacheBounds = nullptr; cacheSize = 0; if (unlikely(nFuncs < 1)) @@ -4240,12 +4250,13 @@ GfxRadialShading *GfxRadialShading::parse(GfxResources *res, Dict *dict, OutputD obj1 = dict->lookup("Coords"); if (obj1.isArray() && obj1.arrayGetLength() == 6) { Object obj2; - x0A = (obj2 = obj1.arrayGet(0), obj2.getNum()); - y0A = (obj2 = obj1.arrayGet(1), obj2.getNum()); - r0A = (obj2 = obj1.arrayGet(2), obj2.getNum()); - x1A = (obj2 = obj1.arrayGet(3), obj2.getNum()); - y1A = (obj2 = obj1.arrayGet(4), obj2.getNum()); - r1A = (obj2 = obj1.arrayGet(5), obj2.getNum()); + bool dummy; // just so that we can use the getNum that returns 0 on obj2 not being a num instead of aborting + x0A = (obj2 = obj1.arrayGet(0), obj2.getNum(&dummy)); + y0A = (obj2 = obj1.arrayGet(1), obj2.getNum(&dummy)); + r0A = (obj2 = obj1.arrayGet(2), obj2.getNum(&dummy)); + x1A = (obj2 = obj1.arrayGet(3), obj2.getNum(&dummy)); + y1A = (obj2 = obj1.arrayGet(4), obj2.getNum(&dummy)); + r1A = (obj2 = obj1.arrayGet(5), obj2.getNum(&dummy)); } else { error(errSyntaxWarning, -1, "Missing or invalid Coords in shading dictionary"); return nullptr; @@ -4256,8 +4267,8 @@ GfxRadialShading *GfxRadialShading::parse(GfxResources *res, Dict *dict, OutputD obj1 = dict->lookup("Domain"); if (obj1.isArray() && obj1.arrayGetLength() == 2) { Object obj2; - t0A = (obj2 = obj1.arrayGet(0), obj2.getNum()); - t1A = (obj2 = obj1.arrayGet(1), obj2.getNum()); + t0A = (obj2 = obj1.arrayGet(0), obj2.isNum() ? obj2.getNum() : 0); + t1A = (obj2 = obj1.arrayGet(1), obj2.isNum() ? obj2.getNum() : 1); } obj1 = dict->lookup("Function"); @@ -4284,15 +4295,15 @@ GfxRadialShading *GfxRadialShading::parse(GfxResources *res, Dict *dict, OutputD obj1 = dict->lookup("Extend"); if (obj1.isArray() && obj1.arrayGetLength() == 2) { Object obj2; - extend0A = (obj2 = obj1.arrayGet(0), obj2.getBool()); - extend1A = (obj2 = obj1.arrayGet(1), obj2.getBool()); + extend0A = (obj2 = obj1.arrayGet(0), obj2.isBool() ? obj2.getBool() : gFalse); + extend1A = (obj2 = obj1.arrayGet(1), obj2.isBool() ? obj2.getBool() : gFalse); } shading = new GfxRadialShading(x0A, y0A, r0A, x1A, y1A, r1A, t0A, t1A, funcsA, nFuncsA, extend0A, extend1A); if (!shading->init(res, dict, out, state)) { delete shading; - return NULL; + return nullptr; } return shading; } @@ -4619,6 +4630,8 @@ public: GfxShadingBitBuf(Stream *strA); ~GfxShadingBitBuf(); + GfxShadingBitBuf(const GfxShadingBitBuf &) = delete; + GfxShadingBitBuf& operator=(const GfxShadingBitBuf &) = delete; GBool getBits(int n, Guint *val); void flushBits(); @@ -4784,18 +4797,24 @@ GfxGouraudTriangleShading *GfxGouraudTriangleShading::parse(GfxResources *res, i obj1 = dict->lookup("Decode"); if (obj1.isArray() && obj1.arrayGetLength() >= 6) { Object obj2; - xMin = (obj2 = obj1.arrayGet(0), obj2.getNum()); - xMax = (obj2 = obj1.arrayGet(1), obj2.getNum()); + bool decodeOk = true; + xMin = (obj2 = obj1.arrayGet(0), obj2.getNum(&decodeOk)); + xMax = (obj2 = obj1.arrayGet(1), obj2.getNum(&decodeOk)); xMul = (xMax - xMin) / (pow(2.0, coordBits) - 1); - yMin = (obj2 = obj1.arrayGet(2), obj2.getNum()); - yMax = (obj2 = obj1.arrayGet(3), obj2.getNum()); + yMin = (obj2 = obj1.arrayGet(2), obj2.getNum(&decodeOk)); + yMax = (obj2 = obj1.arrayGet(3), obj2.getNum(&decodeOk)); yMul = (yMax - yMin) / (pow(2.0, coordBits) - 1); for (i = 0; 5 + 2*i < obj1.arrayGetLength() && i < gfxColorMaxComps; ++i) { - cMin[i] = (obj2 = obj1.arrayGet(4 + 2*i), obj2.getNum()); - cMax[i] = (obj2 = obj1.arrayGet(5 + 2*i), obj2.getNum()); + cMin[i] = (obj2 = obj1.arrayGet(4 + 2*i), obj2.getNum(&decodeOk)); + cMax[i] = (obj2 = obj1.arrayGet(5 + 2*i), obj2.getNum(&decodeOk)); cMul[i] = (cMax[i] - cMin[i]) / (double)((1 << compBits) - 1); } nComps = i; + + if (!decodeOk) { + error(errSyntaxWarning, -1, "Missing or invalid Decode array in shading dictionary"); + return nullptr; + } } else { error(errSyntaxWarning, -1, "Missing or invalid Decode array in shading dictionary"); return nullptr; @@ -4826,8 +4845,8 @@ GfxGouraudTriangleShading *GfxGouraudTriangleShading::parse(GfxResources *res, i } nVerticesA = nTrianglesA = 0; - verticesA = NULL; - trianglesA = NULL; + verticesA = nullptr; + trianglesA = nullptr; vertSize = triSize = 0; state = 0; flag = 0; // make gcc happy @@ -4919,7 +4938,7 @@ GfxGouraudTriangleShading *GfxGouraudTriangleShading::parse(GfxResources *res, i funcsA, nFuncsA); if (!shading->init(res, dict, out, gfxState)) { delete shading; - return NULL; + return nullptr; } return shading; } @@ -5157,7 +5176,7 @@ GfxPatchMeshShading *GfxPatchMeshShading::parse(GfxResources *res, int typeA, Di } nPatchesA = 0; - patchesA = NULL; + patchesA = nullptr; patchesSize = 0; bitBuf = new GfxShadingBitBuf(str); while (1) { @@ -5640,10 +5659,10 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, // initialize for (k = 0; k < gfxColorMaxComps; ++k) { - lookup[k] = NULL; - lookup2[k] = NULL; + lookup[k] = nullptr; + lookup2[k] = nullptr; } - byte_lookup = NULL; + byte_lookup = nullptr; // get decode map if (decode->isNull()) { @@ -5689,7 +5708,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, // Optimization: for Indexed and Separation color spaces (which have // only one component), we pre-compute a second lookup table with // color values - colorSpace2 = NULL; + colorSpace2 = nullptr; nComps2 = 0; useByteLookup = gFalse; switch (colorSpace->getMode()) { @@ -5786,9 +5805,9 @@ GfxImageColorMap::GfxImageColorMap(GfxImageColorMap *colorMap) { nComps2 = colorMap->nComps2; useMatte = colorMap->useMatte; matteColor = colorMap->matteColor; - colorSpace2 = NULL; + colorSpace2 = nullptr; for (k = 0; k < gfxColorMaxComps; ++k) { - lookup[k] = NULL; + lookup[k] = nullptr; } n = 1 << bits; if (colorSpace->getMode() == csIndexed) { @@ -6090,14 +6109,13 @@ void GfxImageColorMap::getCMYKLine(Guchar *in, Guchar *out, int length) { } void GfxImageColorMap::getDeviceNLine(Guchar *in, Guchar *out, int length) { - int i, j; Guchar *inp, *tmp_line; if (!useDeviceNLine()) { GfxColor deviceN; inp = in; - for (i = 0; i < length; i++) { + for (int i = 0; i < length; i++) { getDeviceN (inp, &deviceN); for (int j = 0; j < SPOT_NCOMPS+4; j++) *out++ = deviceN.c[j]; @@ -6110,8 +6128,8 @@ void GfxImageColorMap::getDeviceNLine(Guchar *in, Guchar *out, int length) { case csIndexed: case csSeparation: tmp_line = (Guchar *) gmallocn (length, nComps2); - for (i = 0; i < length; i++) { - for (j = 0; j < nComps2; j++) { + for (int i = 0; i < length; i++) { + for (int j = 0; j < nComps2; j++) { tmp_line[i * nComps2 + j] = byte_lookup[in[i] * nComps2 + j]; } } @@ -6121,8 +6139,8 @@ void GfxImageColorMap::getDeviceNLine(Guchar *in, Guchar *out, int length) { default: inp = in; - for (j = 0; j < length; j++) - for (i = 0; i < nComps; i++) { + for (int j = 0; j < length; j++) + for (int i = 0; i < nComps; i++) { *inp = byte_lookup[*inp * nComps + i]; inp++; } @@ -6375,12 +6393,12 @@ void GfxPath::offset(double dx, double dy) { //------------------------------------------------------------------------ // //------------------------------------------------------------------------ -GfxState::ReusablePathIterator::ReusablePathIterator(GfxPath *path) - : path(path), +GfxState::ReusablePathIterator::ReusablePathIterator(GfxPath *pathA) + : path(pathA), subPathOff(0), coordOff(0), numCoords(0), - curSubPath(NULL) + curSubPath(nullptr) { if( path->getNumSubpaths() ) { curSubPath = path->getSubpath(subPathOff); @@ -6471,18 +6489,18 @@ GfxState::GfxState(double hDPIA, double vDPIA, PDFRectangle *pageBox, strokeColorSpace = new GfxDeviceGrayColorSpace(); fillColor.c[0] = 0; strokeColor.c[0] = 0; - fillPattern = NULL; - strokePattern = NULL; + fillPattern = nullptr; + strokePattern = nullptr; blendMode = gfxBlendNormal; fillOpacity = 1; strokeOpacity = 1; fillOverprint = gFalse; strokeOverprint = gFalse; overprintMode = 0; - transfer[0] = transfer[1] = transfer[2] = transfer[3] = NULL; + transfer[0] = transfer[1] = transfer[2] = transfer[3] = nullptr; lineWidth = 1; - lineDash = NULL; + lineDash = nullptr; lineDashLength = 0; lineDashStart = 0; flatness = 1; @@ -6493,7 +6511,7 @@ GfxState::GfxState(double hDPIA, double vDPIA, PDFRectangle *pageBox, alphaIsShape = gFalse; textKnockout = gFalse; - font = NULL; + font = nullptr; fontSize = 0; textMat[0] = 1; textMat[1] = 0; textMat[2] = 0; textMat[3] = 1; @@ -6516,14 +6534,14 @@ GfxState::GfxState(double hDPIA, double vDPIA, PDFRectangle *pageBox, renderingIntent[0] = 0; - saved = NULL; + saved = nullptr; #ifdef USE_CMS GfxColorSpace::setupColorProfiles(); - XYZ2DisplayTransformRelCol = NULL; - XYZ2DisplayTransformAbsCol = NULL; - XYZ2DisplayTransformSat = NULL; - XYZ2DisplayTransformPerc = NULL; - localDisplayProfile = NULL; + XYZ2DisplayTransformRelCol = nullptr; + XYZ2DisplayTransformAbsCol = nullptr; + XYZ2DisplayTransformSat = nullptr; + XYZ2DisplayTransformPerc = nullptr; + localDisplayProfile = nullptr; displayProfileRef = 0; #endif } @@ -6573,7 +6591,7 @@ GfxState::~GfxState() { if (XYZ2DisplayTransformPerc->unref() == 0) delete XYZ2DisplayTransformPerc; } - if (--displayProfileRef == 0 && localDisplayProfile != NULL) { + if (--displayProfileRef == 0 && localDisplayProfile != nullptr) { cmsCloseProfile(localDisplayProfile); } #endif @@ -6611,7 +6629,7 @@ GfxState::GfxState(GfxState *state, GBool copyPath) { if (copyPath) { path = state->path->copy(); } - saved = NULL; + saved = nullptr; #ifdef USE_CMS if (XYZ2DisplayTransformRelCol) { XYZ2DisplayTransformRelCol->ref(); @@ -6633,11 +6651,11 @@ GfxState::GfxState(GfxState *state, GBool copyPath) { #ifdef USE_CMS void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) { - if (localDisplayProfile != NULL) { + if (localDisplayProfile != nullptr) { cmsCloseProfile(localDisplayProfile); } localDisplayProfile = localDisplayProfileA; - if (localDisplayProfileA != NULL) { + if (localDisplayProfileA != nullptr) { cmsHTRANSFORM transform; unsigned int nChannels; unsigned int localDisplayPixelType; @@ -6651,7 +6669,7 @@ void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) { localDisplayProfile, COLORSPACE_SH(localDisplayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == 0) { + INTENT_RELATIVE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransformRelCol = new GfxColorTransform(transform, INTENT_RELATIVE_COLORIMETRIC, PT_XYZ, localDisplayPixelType); @@ -6660,7 +6678,7 @@ void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) { localDisplayProfile, COLORSPACE_SH(localDisplayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_ABSOLUTE_COLORIMETRIC,LCMS_FLAGS)) == 0) { + INTENT_ABSOLUTE_COLORIMETRIC,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransformAbsCol = new GfxColorTransform(transform, INTENT_ABSOLUTE_COLORIMETRIC, PT_XYZ, localDisplayPixelType); @@ -6669,7 +6687,7 @@ void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) { localDisplayProfile, COLORSPACE_SH(localDisplayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_SATURATION,LCMS_FLAGS)) == 0) { + INTENT_SATURATION,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransformSat = new GfxColorTransform(transform, INTENT_SATURATION, PT_XYZ, localDisplayPixelType); @@ -6678,7 +6696,7 @@ void GfxState::setDisplayProfile(cmsHPROFILE localDisplayProfileA) { localDisplayProfile, COLORSPACE_SH(localDisplayPixelType) | CHANNELS_SH(nChannels) | BYTES_SH(1), - INTENT_PERCEPTUAL,LCMS_FLAGS)) == 0) { + INTENT_PERCEPTUAL,LCMS_FLAGS)) == nullptr) { error(errSyntaxWarning, -1, "Can't create Lab transform"); } else { XYZ2DisplayTransformPerc = new GfxColorTransform(transform, INTENT_PERCEPTUAL, PT_XYZ, localDisplayPixelType); @@ -6698,7 +6716,7 @@ GfxColorTransform *GfxState::getXYZ2DisplayTransform() { } else if (strcmp(renderingIntent, "Perceptual") == 0) { transform = XYZ2DisplayTransformPerc; } - if (transform == NULL) { + if (transform == nullptr) { transform = XYZ2DisplayTransform; } return transform; @@ -7084,8 +7102,8 @@ GfxState *GfxState::restore() { oldState->lineX = lineX; oldState->lineY = lineY; - path = NULL; - saved = NULL; + path = nullptr; + saved = nullptr; delete this; } else { diff --git a/Build/source/libs/poppler/poppler-src/poppler/GfxState.h b/Build/source/libs/poppler/poppler-src/poppler/GfxState.h index bfbf53cd64f..6f4ae9a7c90 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GfxState.h +++ b/Build/source/libs/poppler/poppler-src/poppler/GfxState.h @@ -17,7 +17,7 @@ // Copyright (C) 2006, 2007 Jeff Muizelaar // Copyright (C) 2006 Carlos Garcia Campos // Copyright (C) 2009 Koji Otani -// Copyright (C) 2009-2011, 2013, 2016, 2017 Albert Astals Cid +// Copyright (C) 2009-2011, 2013, 2016-2018 Albert Astals Cid // Copyright (C) 2010 Christian Feuersänger // Copyright (C) 2011 Andrea Canciani // Copyright (C) 2011-2014, 2016 Thomas Freitag @@ -196,6 +196,8 @@ public: // transformA should be a cmsHTRANSFORM GfxColorTransform(void *transformA, int cmsIntent, unsigned int inputPixelType, unsigned int transformPixelType); ~GfxColorTransform(); + GfxColorTransform(const GfxColorTransform &) = delete; + GfxColorTransform& operator=(const GfxColorTransform &) = delete; int getIntent() { return cmsIntent; } int getInputPixelType() { return inputPixelType; } int getTransformPixelType() { return transformPixelType; } @@ -215,6 +217,10 @@ public: GfxColorSpace(); virtual ~GfxColorSpace(); + + GfxColorSpace(const GfxColorSpace &) = delete; + GfxColorSpace& operator=(const GfxColorSpace &other) = delete; + virtual GfxColorSpace *copy() = 0; virtual GfxColorSpaceMode getMode() = 0; @@ -766,6 +772,9 @@ public: GfxPattern(int typeA, int patternRefNumA); virtual ~GfxPattern(); + GfxPattern(const GfxPattern &) = delete; + GfxPattern& operator=(const GfxPattern &other) = delete; + static GfxPattern *parse(GfxResources *res, Object *obj, OutputDev *out, GfxState *state, int patternRefNum); virtual GfxPattern *copy() = 0; @@ -852,6 +861,9 @@ public: GfxShading(GfxShading *shading); virtual ~GfxShading(); + GfxShading(const GfxShading &) = delete; + GfxShading& operator=(const GfxShading &other) = delete; + static GfxShading *parse(GfxResources *res, Object *obj, OutputDev *out, GfxState *state); virtual GfxShading *copy() = 0; @@ -1175,6 +1187,9 @@ public: // Destructor. ~GfxImageColorMap(); + GfxImageColorMap(const GfxImageColorMap &) = delete; + GfxImageColorMap& operator=(const GfxImageColorMap &) = delete; + // Return a copy of this color map. GfxImageColorMap *copy() { return new GfxImageColorMap(this); } @@ -1248,6 +1263,9 @@ public: // Destructor. ~GfxSubpath(); + GfxSubpath(const GfxSubpath &) = delete; + GfxSubpath& operator=(const GfxSubpath &) = delete; + // Copy. GfxSubpath *copy() { return new GfxSubpath(this); } @@ -1299,6 +1317,9 @@ public: // Destructor. ~GfxPath(); + GfxPath(const GfxPath &) = delete; + GfxPath& operator=(const GfxPath &) = delete; + // Copy. GfxPath *copy() { return new GfxPath(justMoved, firstX, firstY, subpaths, n, size); } @@ -1419,6 +1440,9 @@ public: // Destructor. ~GfxState(); + GfxState(const GfxState &) = delete; + GfxState& operator=(const GfxState &) = delete; + // Copy. GfxState *copy(GBool copyPath = gFalse) { return new GfxState(this, copyPath); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc b/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc index 1f2b4ec07d6..50b7eee2b5a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Martin Kretzschmar // Copyright (C) 2005, 2006 Kristian Høgsberg -// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2005 Jonathan Blandford // Copyright (C) 2006, 2007 Jeff Muizelaar // Copyright (C) 2006 Takashi Iwai @@ -127,7 +127,7 @@ extern XpdfPluginVecTable xpdfPluginVecTable; //------------------------------------------------------------------------ -GlobalParams *globalParams = NULL; +GlobalParams *globalParams = nullptr; #if defined(ENABLE_RELOCATABLE) && defined(_WIN32) @@ -210,6 +210,8 @@ public: SysFontInfo(GooString *nameA, GBool boldA, GBool italicA, GBool obliqueA, GBool fixedWidthA, GooString *pathA, SysFontType typeA, int fontNumA, GooString *substituteNameA); ~SysFontInfo(); + SysFontInfo(const SysFontInfo &) = delete; + SysFontInfo& operator=(const SysFontInfo&) = delete; GBool match(SysFontInfo *fi); GBool match(GooString *nameA, GBool boldA, GBool italicA, GBool obliqueA, GBool fixedWidthA); GBool match(GooString *nameA, GBool boldA, GBool italicA); @@ -258,6 +260,8 @@ public: SysFontList(); ~SysFontList(); + SysFontList(const SysFontList &) = delete; + SysFontList& operator=(const SysFontList &) = delete; SysFontInfo *find(GooString *name, GBool isFixedWidth, GBool exact); #ifdef _WIN32 @@ -363,13 +367,13 @@ SysFontInfo *SysFontList::find(GooString *name, GBool fixedWidth, GBool exact) { } // search for the font - fi = NULL; + fi = nullptr; for (i = 0; i < fonts->getLength(); ++i) { fi = (SysFontInfo *)fonts->get(i); if (fi->match(name2, bold, italic, oblique, fixedWidth)) { break; } - fi = NULL; + fi = nullptr; } if (!fi && !exact && bold) { // try ignoring the bold flag @@ -378,7 +382,7 @@ SysFontInfo *SysFontList::find(GooString *name, GBool fixedWidth, GBool exact) { if (fi->match(name2, gFalse, italic)) { break; } - fi = NULL; + fi = nullptr; } } if (!fi && !exact && (bold || italic)) { @@ -388,7 +392,7 @@ SysFontInfo *SysFontList::find(GooString *name, GBool fixedWidth, GBool exact) { if (fi->match(name2, gFalse, gFalse)) { break; } - fi = NULL; + fi = nullptr; } } @@ -648,7 +652,7 @@ void GlobalParams::scanEncodingDirs() { snprintf(dataPathBuffer, bufSize, "%s/nameToUnicode", dataRoot); dir = new GDir(dataPathBuffer, gTrue); - while (entry = dir->getNextEntry(), entry != NULL) { + while (entry = dir->getNextEntry(), entry != nullptr) { if (!entry->isDir()) { parseNameToUnicode(entry->getFullPath()); } @@ -658,7 +662,7 @@ void GlobalParams::scanEncodingDirs() { snprintf(dataPathBuffer, bufSize, "%s/cidToUnicode", dataRoot); dir = new GDir(dataPathBuffer, gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { + while (entry = dir->getNextEntry(), entry != nullptr) { addCIDToUnicode(entry->getName(), entry->getFullPath()); delete entry; } @@ -666,7 +670,7 @@ void GlobalParams::scanEncodingDirs() { snprintf(dataPathBuffer, bufSize, "%s/unicodeMap", dataRoot); dir = new GDir(dataPathBuffer, gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { + while (entry = dir->getNextEntry(), entry != nullptr) { addUnicodeMap(entry->getName(), entry->getFullPath()); delete entry; } @@ -674,7 +678,7 @@ void GlobalParams::scanEncodingDirs() { snprintf(dataPathBuffer, bufSize, "%s/cMap", dataRoot); dir = new GDir(dataPathBuffer, gFalse); - while (entry = dir->getNextEntry(), entry != NULL) { + while (entry = dir->getNextEntry(), entry != nullptr) { addCMapDir(entry->getName(), entry->getFullPath()); toUnicodeDirs->append(entry->getFullPath()->copy()); delete entry; @@ -700,7 +704,7 @@ void GlobalParams::parseNameToUnicode(GooString *name) { line = 1; while (getLine(buf, sizeof(buf), f)) { tok1 = strtok_r(buf, " \t\r\n", &tokptr); - tok2 = strtok_r(NULL, " \t\r\n", &tokptr); + tok2 = strtok_r(nullptr, " \t\r\n", &tokptr); if (tok1 && tok2) { sscanf(tok1, "%x", &u); nameToUnicodeText->add(tok2, u); @@ -842,7 +846,7 @@ FILE *GlobalParams::getUnicodeMapFile(GooString *encodingName) { if ((fileName = (GooString *)unicodeMaps->lookup(encodingName))) { f = openFile(fileName->getCString(), "r"); } else { - f = NULL; + f = nullptr; } unlockGlobalParams; return f; @@ -858,7 +862,7 @@ FILE *GlobalParams::findCMapFile(GooString *collection, GooString *cMapName) { lockGlobalParams; if (!(list = (GooList *)cMapDirs->lookup(collection))) { unlockGlobalParams; - return NULL; + return nullptr; } for (i = 0; i < list->getLength(); ++i) { dir = (GooString *)list->get(i); @@ -871,7 +875,7 @@ FILE *GlobalParams::findCMapFile(GooString *collection, GooString *cMapName) { } } unlockGlobalParams; - return NULL; + return nullptr; } FILE *GlobalParams::findToUnicodeFile(GooString *name) { @@ -891,7 +895,7 @@ FILE *GlobalParams::findToUnicodeFile(GooString *name) { } } unlockGlobalParams; - return NULL; + return nullptr; } #ifdef WITH_FONTCONFIGURATION_FONTCONFIG @@ -899,12 +903,12 @@ static GBool findModifier(const char *name, const char *modifier, const char **s { const char *match; - if (name == NULL) + if (name == nullptr) return gFalse; match = strstr(name, modifier); if (match) { - if (*start == NULL || match < *start) + if (*start == nullptr || match < *start) *start = match; return gTrue; } @@ -961,10 +965,10 @@ static FcPattern *buildFcPattern(GfxFont *font, GooString *base14Name) FcPattern *p; // this is all heuristics will be overwritten if font had proper info - name = (base14Name == NULL) ? font->getName()->getCString() : base14Name->getCString(); + name = (base14Name == nullptr) ? font->getName()->getCString() : base14Name->getCString(); modifiers = strchr (name, ','); - if (modifiers == NULL) + if (modifiers == nullptr) modifiers = strchr (name, '-'); // remove the - from the names, for some reason, Fontconfig does not @@ -973,7 +977,7 @@ static FcPattern *buildFcPattern(GfxFont *font, GooString *base14Name) for (int i = 0; i < len; i++) name[i] = (name[i] == '-' ? ' ' : name[i]); - start = NULL; + start = nullptr; findModifier(modifiers, "Regular", &start); findModifier(modifiers, "Roman", &start); @@ -1052,7 +1056,7 @@ static FcPattern *buildFcPattern(GfxFont *font, GooString *base14Name) const char *lang = getFontLang(font); - p = FcPatternBuild(NULL, + p = FcPatternBuild(nullptr, FC_FAMILY, FcTypeString, family, FC_LANG, FcTypeString, lang, NULL); @@ -1070,7 +1074,7 @@ static FcPattern *buildFcPattern(GfxFont *font, GooString *base14Name) GooString *GlobalParams::findFontFile(GooString *fontName) { GooString *path; - setupBaseFonts(NULL); + setupBaseFonts(nullptr); lockGlobalParams; if ((path = (GooString *)fontFiles->lookup(fontName))) { path = path->copy(); @@ -1078,7 +1082,7 @@ GooString *GlobalParams::findFontFile(GooString *fontName) { return path; } unlockGlobalParams; - return NULL; + return nullptr; } /* if you can't or don't want to use Fontconfig, you need to implement @@ -1093,18 +1097,18 @@ GooString *GlobalParams::findBase14FontFile(GooString *base14Name, GfxFont *font SysFontType type; int fontNum; - return findSystemFontFile(font, &type, &fontNum, NULL, base14Name); + return findSystemFontFile(font, &type, &fontNum, nullptr, base14Name); } GooString *GlobalParams::findSystemFontFile(GfxFont *font, SysFontType *type, int *fontNum, GooString *substituteFontName, GooString *base14Name) { - SysFontInfo *fi = NULL; - FcPattern *p=0; - GooString *path = NULL; + SysFontInfo *fi = nullptr; + FcPattern *p=nullptr; + GooString *path = nullptr; GooString *fontName = font->getName(); GooString substituteName; - if (!fontName) return NULL; + if (!fontName) return nullptr; lockGlobalParams; if ((fi = sysFonts->find(fontName, font->isFixedWidth(), gTrue))) { @@ -1118,14 +1122,14 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, FcResult res; FcFontSet *set; int i; - FcLangSet *lb = NULL; + FcLangSet *lb = nullptr; p = buildFcPattern(font, base14Name); if (!p) goto fin; - FcConfigSubstitute(NULL, p, FcMatchPattern); + FcConfigSubstitute(nullptr, p, FcMatchPattern); FcDefaultSubstitute(p); - set = FcFontSort(NULL, p, FcFalse, NULL, &res); + set = FcFontSort(nullptr, p, FcFalse, nullptr, &res); if (!set) goto fin; @@ -1141,14 +1145,14 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, first: fonts support the language second: all fonts (fall back) */ - while (fi == NULL) + while (fi == nullptr) { for (i = 0; i < set->nfont; ++i) { res = FcPatternGetString(set->fonts[i], FC_FILE, 0, &s); if (res != FcResultMatch || !s) continue; - if (lb != NULL) { + if (lb != nullptr) { FcLangSet *l; res = FcPatternGetLangSet(set->fonts[i], FC_LANG, 0, &l); if (res != FcResultMatch || !FcLangSetContains(l,lb)) { @@ -1233,9 +1237,9 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, continue; break; } - if (lb != NULL) { + if (lb != nullptr) { FcLangSetDestroy(lb); - lb = NULL; + lb = nullptr; } else { /* scan all fonts of the list */ break; @@ -1243,7 +1247,7 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, } FcFontSetDestroy(set); } - if (path == NULL && (fi = sysFonts->find(fontName, font->isFixedWidth(), gFalse))) { + if (path == nullptr && (fi = sysFonts->find(fontName, font->isFixedWidth(), gFalse))) { path = fi->path->copy(); *type = fi->type; *fontNum = fi->fontNum; @@ -1467,7 +1471,7 @@ CharCodeToUnicode *GlobalParams::getUnicodeToUnicode(GooString *fontName) { lockGlobalParams; GooHashIter *iter; unicodeToUnicodes->startIter(&iter); - GooString *fileName = NULL; + GooString *fileName = nullptr; GooString *fontPattern; void *val; while (!fileName && unicodeToUnicodes->getNext(&iter, &fontPattern, &val)) { @@ -1476,7 +1480,7 @@ CharCodeToUnicode *GlobalParams::getUnicodeToUnicode(GooString *fontName) { fileName = (GooString*)val; } } - CharCodeToUnicode *ctu = NULL; + CharCodeToUnicode *ctu = nullptr; if (fileName) { ctu = unicodeToUnicodeCache->getCharCodeToUnicode(fileName); if (!ctu) { @@ -1666,7 +1670,7 @@ XpdfSecurityHandler *GlobalParams::getSecurityHandler(char *name) { (void)name; #endif - return NULL; + return nullptr; } #ifdef ENABLE_PLUGINS diff --git a/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h b/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h index 7c61ae44781..e3d660cfcf9 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h +++ b/Build/source/libs/poppler/poppler-src/poppler/GlobalParams.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2005 Jonathan Blandford // Copyright (C) 2006 Takashi Iwai // Copyright (C) 2006 Kristian Høgsberg @@ -108,6 +108,9 @@ public: ~GlobalParams(); + GlobalParams(const GlobalParams &) = delete; + GlobalParams& operator=(const GlobalParams &) = delete; + void setupBaseFonts(char *dir); //----- accessors diff --git a/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc b/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc index f122fcb6f1b..1734f6eb9a6 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/GlobalParamsWin.cc @@ -9,7 +9,7 @@ // Copyright (C) 2013 Adam Reichold // Copyright (C) 2013 Dmytro Morgun // Copyright (C) 2017 Christoph Cullmann - // Copyright (C) 2017 Albert Astals Cid + // Copyright (C) 2017, 2018 Albert Astals Cid TODO: instead of a fixed mapping defined in displayFontTab, it could scan the whole fonts directory, parse TTF files and build font @@ -103,78 +103,78 @@ static const struct { // those seem to be frequently accessed by PDF files and I kind of guess // which font file do the refer to - {"Palatino", NULL, "pala.ttf", gTrue}, - {"Palatino-Roman", NULL, "pala.ttf", gTrue}, - {"Palatino-Bold", NULL, "palab.ttf", gTrue}, - {"Palatino-Italic", NULL, "palai.ttf", gTrue}, - {"Palatino,Italic", NULL, "palai.ttf", gTrue}, - {"Palatino-BoldItalic", NULL, "palabi.ttf", gTrue}, - - {"ArialBlack", NULL, "arialbd.ttf", gTrue}, - - {"ArialNarrow", NULL, "arialn.ttf", gTrue}, - {"ArialNarrow,Bold", NULL, "arialnb.ttf", gTrue}, - {"ArialNarrow,Italic", NULL, "arialni.ttf", gTrue}, - {"ArialNarrow,BoldItalic", NULL, "arialnbi.ttf", gTrue}, - {"ArialNarrow-Bold", NULL, "arialnb.ttf", gTrue}, - {"ArialNarrow-Italic", NULL, "arialni.ttf", gTrue}, - {"ArialNarrow-BoldItalic", NULL, "arialnbi.ttf", gTrue}, - - {"HelveticaNarrow", NULL, "arialn.ttf", gTrue}, - {"HelveticaNarrow,Bold", NULL, "arialnb.ttf", gTrue}, - {"HelveticaNarrow,Italic", NULL, "arialni.ttf", gTrue}, - {"HelveticaNarrow,BoldItalic", NULL, "arialnbi.ttf", gTrue}, - {"HelveticaNarrow-Bold", NULL, "arialnb.ttf", gTrue}, - {"HelveticaNarrow-Italic", NULL, "arialni.ttf", gTrue}, - {"HelveticaNarrow-BoldItalic", NULL, "arialnbi.ttf", gTrue}, - - {"BookAntiqua", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua,Bold", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua,Italic", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua,BoldItalic", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua-Bold", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua-Italic", NULL, "bkant.ttf", gTrue}, - {"BookAntiqua-BoldItalic", NULL, "bkant.ttf", gTrue}, - - {"Verdana", NULL, "verdana.ttf", gTrue}, - {"Verdana,Bold", NULL, "verdanab.ttf", gTrue}, - {"Verdana,Italic", NULL, "verdanai.ttf", gTrue}, - {"Verdana,BoldItalic", NULL, "verdanaz.ttf", gTrue}, - {"Verdana-Bold", NULL, "verdanab.ttf", gTrue}, - {"Verdana-Italic", NULL, "verdanai.ttf", gTrue}, - {"Verdana-BoldItalic", NULL, "verdanaz.ttf", gTrue}, - - {"Tahoma", NULL, "tahoma.ttf", gTrue}, - {"Tahoma,Bold", NULL, "tahomabd.ttf", gTrue}, - {"Tahoma,Italic", NULL, "tahoma.ttf", gTrue}, - {"Tahoma,BoldItalic", NULL, "tahomabd.ttf", gTrue}, - {"Tahoma-Bold", NULL, "tahomabd.ttf", gTrue}, - {"Tahoma-Italic", NULL, "tahoma.ttf", gTrue}, - {"Tahoma-BoldItalic", NULL, "tahomabd.ttf", gTrue}, - - {"CCRIKH+Verdana", NULL, "verdana.ttf", gTrue}, - {"CCRIKH+Verdana,Bold", NULL, "verdanab.ttf", gTrue}, - {"CCRIKH+Verdana,Italic", NULL, "verdanai.ttf", gTrue}, - {"CCRIKH+Verdana,BoldItalic", NULL, "verdanaz.ttf", gTrue}, - {"CCRIKH+Verdana-Bold", NULL, "verdanab.ttf", gTrue}, - {"CCRIKH+Verdana-Italic", NULL, "verdanai.ttf", gTrue}, - {"CCRIKH+Verdana-BoldItalic", NULL, "verdanaz.ttf", gTrue}, - - {"Georgia", NULL, "georgia.ttf", gTrue}, - {"Georgia,Bold", NULL, "georgiab.ttf", gTrue}, - {"Georgia,Italic", NULL, "georgiai.ttf", gTrue}, - {"Georgia,BoldItalic", NULL, "georgiaz.ttf", gTrue}, - {"Georgia-Bold", NULL, "georgiab.ttf", gTrue}, - {"Georgia-Italic", NULL, "georgiai.ttf", gTrue}, - {"Georgia-BoldItalic", NULL, "georgiaz.ttf", gTrue}, + {"Palatino", nullptr, "pala.ttf", gTrue}, + {"Palatino-Roman", nullptr, "pala.ttf", gTrue}, + {"Palatino-Bold", nullptr, "palab.ttf", gTrue}, + {"Palatino-Italic", nullptr, "palai.ttf", gTrue}, + {"Palatino,Italic", nullptr, "palai.ttf", gTrue}, + {"Palatino-BoldItalic", nullptr, "palabi.ttf", gTrue}, + + {"ArialBlack", nullptr, "arialbd.ttf", gTrue}, + + {"ArialNarrow", nullptr, "arialn.ttf", gTrue}, + {"ArialNarrow,Bold", nullptr, "arialnb.ttf", gTrue}, + {"ArialNarrow,Italic", nullptr, "arialni.ttf", gTrue}, + {"ArialNarrow,BoldItalic", nullptr, "arialnbi.ttf", gTrue}, + {"ArialNarrow-Bold", nullptr, "arialnb.ttf", gTrue}, + {"ArialNarrow-Italic", nullptr, "arialni.ttf", gTrue}, + {"ArialNarrow-BoldItalic", nullptr, "arialnbi.ttf", gTrue}, + + {"HelveticaNarrow", nullptr, "arialn.ttf", gTrue}, + {"HelveticaNarrow,Bold", nullptr, "arialnb.ttf", gTrue}, + {"HelveticaNarrow,Italic", nullptr, "arialni.ttf", gTrue}, + {"HelveticaNarrow,BoldItalic", nullptr, "arialnbi.ttf", gTrue}, + {"HelveticaNarrow-Bold", nullptr, "arialnb.ttf", gTrue}, + {"HelveticaNarrow-Italic", nullptr, "arialni.ttf", gTrue}, + {"HelveticaNarrow-BoldItalic", nullptr, "arialnbi.ttf", gTrue}, + + {"BookAntiqua", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua,Bold", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua,Italic", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua,BoldItalic", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua-Bold", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua-Italic", nullptr, "bkant.ttf", gTrue}, + {"BookAntiqua-BoldItalic", nullptr, "bkant.ttf", gTrue}, + + {"Verdana", nullptr, "verdana.ttf", gTrue}, + {"Verdana,Bold", nullptr, "verdanab.ttf", gTrue}, + {"Verdana,Italic", nullptr, "verdanai.ttf", gTrue}, + {"Verdana,BoldItalic", nullptr, "verdanaz.ttf", gTrue}, + {"Verdana-Bold", nullptr, "verdanab.ttf", gTrue}, + {"Verdana-Italic", nullptr, "verdanai.ttf", gTrue}, + {"Verdana-BoldItalic", nullptr, "verdanaz.ttf", gTrue}, + + {"Tahoma", nullptr, "tahoma.ttf", gTrue}, + {"Tahoma,Bold", nullptr, "tahomabd.ttf", gTrue}, + {"Tahoma,Italic", nullptr, "tahoma.ttf", gTrue}, + {"Tahoma,BoldItalic", nullptr, "tahomabd.ttf", gTrue}, + {"Tahoma-Bold", nullptr, "tahomabd.ttf", gTrue}, + {"Tahoma-Italic", nullptr, "tahoma.ttf", gTrue}, + {"Tahoma-BoldItalic", nullptr, "tahomabd.ttf", gTrue}, + + {"CCRIKH+Verdana", nullptr, "verdana.ttf", gTrue}, + {"CCRIKH+Verdana,Bold", nullptr, "verdanab.ttf", gTrue}, + {"CCRIKH+Verdana,Italic", nullptr, "verdanai.ttf", gTrue}, + {"CCRIKH+Verdana,BoldItalic", nullptr, "verdanaz.ttf", gTrue}, + {"CCRIKH+Verdana-Bold", nullptr, "verdanab.ttf", gTrue}, + {"CCRIKH+Verdana-Italic", nullptr, "verdanai.ttf", gTrue}, + {"CCRIKH+Verdana-BoldItalic", nullptr, "verdanaz.ttf", gTrue}, + + {"Georgia", nullptr, "georgia.ttf", gTrue}, + {"Georgia,Bold", nullptr, "georgiab.ttf", gTrue}, + {"Georgia,Italic", nullptr, "georgiai.ttf", gTrue}, + {"Georgia,BoldItalic", nullptr, "georgiaz.ttf", gTrue}, + {"Georgia-Bold", nullptr, "georgiab.ttf", gTrue}, + {"Georgia-Italic", nullptr, "georgiai.ttf", gTrue}, + {"Georgia-BoldItalic", nullptr, "georgiaz.ttf", gTrue}, // fallback for Adobe CID fonts: - {"MingLiU", NULL, "mingliu.ttf", gFalse}, - {"SimSun", NULL, "simsun.ttf", gFalse}, - {"MS-Mincho", NULL, "msmincho.ttf", gFalse}, - {"Batang", NULL, "batang.ttf", gFalse}, - {"ArialUnicode", NULL, "arialuni.ttf", gTrue}, - {NULL} + {"MingLiU", nullptr, "mingliu.ttf", gFalse}, + {"SimSun", nullptr, "simsun.ttf", gFalse}, + {"MS-Mincho", nullptr, "msmincho.ttf", gFalse}, + {"Batang", nullptr, "batang.ttf", gFalse}, + {"ArialUnicode", nullptr, "arialuni.ttf", gTrue}, + { } }; #define FONTS_SUBDIR "\\fonts" @@ -200,14 +200,14 @@ static void GetWindowsFontDir(char *winFontDir, int cbWinFontDirLen) SHGetFolderPathFunc = (HRESULT (__stdcall *)(HWND, int, HANDLE, DWORD, LPSTR)) GetProcAddress(hLib, "SHGetFolderPathA"); if (SHGetFolderPathFunc) - (*SHGetFolderPathFunc)(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, winFontDir); + (*SHGetFolderPathFunc)(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, winFontDir); if (!winFontDir[0]) { // Try an older function SHGetSpecialFolderPathFunc = (BOOL (__stdcall *)(HWND, LPSTR, int, BOOL)) GetProcAddress(hLib, "SHGetSpecialFolderPathA"); if (SHGetSpecialFolderPathFunc) - (*SHGetSpecialFolderPathFunc)(NULL, winFontDir, CSIDL_FONTS, FALSE); + (*SHGetSpecialFolderPathFunc)(nullptr, winFontDir, CSIDL_FONTS, FALSE); } FreeLibrary(hLib); } @@ -220,7 +220,7 @@ static void GetWindowsFontDir(char *winFontDir, int cbWinFontDirLen) SHGetFolderPathFunc = (HRESULT (__stdcall *)(HWND, int, HANDLE, DWORD, LPSTR)) GetProcAddress(hLib, "SHGetFolderPathA"); if (SHGetFolderPathFunc) - (*SHGetFolderPathFunc)(NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, winFontDir); + (*SHGetFolderPathFunc)(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, winFontDir); FreeLibrary(hLib); } if (winFontDir[0]) @@ -268,7 +268,7 @@ void SysFontList::scanWindowsFonts(GooString *winFontDir) { while (1) { valNameLen = sizeof(valName) - 1; dataLen = sizeof(data) - 1; - if (RegEnumValueA(regKey, idx, valName, &valNameLen, NULL, + if (RegEnumValueA(regKey, idx, valName, &valNameLen, nullptr, &type, (LPBYTE)data, &dataLen) != ERROR_SUCCESS) { break; } @@ -411,7 +411,7 @@ static GooString* replaceSuffix(GooString *path, void GlobalParams::setupBaseFonts(char * dir) { const char *dataRoot = popplerDataDir ? popplerDataDir : POPPLER_DATADIR; - GooString *fileName = NULL; + GooString *fileName = nullptr; GooFile *file; if (baseFontsInitialized) @@ -462,10 +462,10 @@ void GlobalParams::setupBaseFonts(char * dir) // try to open file file = GooFile::open(fileName); - if (file != NULL) { + if (file != nullptr) { Parser *parser; - parser = new Parser(NULL, - new Lexer(NULL, + parser = new Parser(nullptr, + new Lexer(nullptr, new FileStream(file, 0, gFalse, file->size(), Object(objNull))), gTrue); Object obj1 = parser->getObj(); @@ -501,7 +501,7 @@ static const char *findSubstituteName(GfxFont *font, GooHash *fontFiles, const char *origName) { assert(origName); - if (!origName) return NULL; + if (!origName) return nullptr; GooString *name2 = new GooString(origName); int n = strlen(origName); // remove trailing "-Identity-H" @@ -515,7 +515,7 @@ static const char *findSubstituteName(GfxFont *font, GooHash *fontFiles, n -= 11; } GooString *substName = (GooString *)substFiles->lookup(name2); - if (substName != NULL) { + if (substName != nullptr) { delete name2; return substName->getCString(); } @@ -525,7 +525,7 @@ static const char *findSubstituteName(GfxFont *font, GooHash *fontFiles, if (font->isCIDFont()) { GooString *collection = ((GfxCIDFont *)font)->getCollection(); - const char* name3 = NULL; + const char* name3 = nullptr; if ( !collection->cmp("Adobe-CNS1") ) name3 = DEFAULT_CID_FONT_AC1_MSWIN; else if ( !collection->cmp("Adobe-GB1") ) @@ -552,11 +552,11 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, int *fontNum, GooString *substituteFontName, GooString *base14Name) { SysFontInfo *fi; - GooString *path = NULL; + GooString *path = nullptr; GooString *fontName = font->getName(); - if (!fontName) return NULL; + if (!fontName) return nullptr; lockGlobalParams; - setupBaseFonts(NULL); + setupBaseFonts(nullptr); // TODO: base14Name should be changed? // In the system using FontConfig, findSystemFontFile() uses @@ -572,7 +572,7 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font, GooString *substFontName = new GooString(findSubstituteName(font, fontFiles, substFiles, fontName->getCString())); - GooString *path2 = NULL; + GooString *path2 = nullptr; error(errSyntaxError, -1, "Couldn't find a font for '{0:t}', subst is '{1:t}'", fontName, substFontName); if ((path2 = (GooString *)fontFiles->lookup(substFontName))) { path = new GooString(path2); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Hints.cc b/Build/source/libs/poppler/poppler-src/poppler/Hints.cc index 270b6e43d3d..2f5fec6ccdd 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Hints.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Hints.cc @@ -141,11 +141,11 @@ Hints::Hints(BaseStream *str, Linearization *linearization, XRef *xref, Security memset(numSharedObject, 0, nPages * sizeof(Guint)); memset(pageObjectNum, 0, nPages * sizeof(int)); - groupLength = NULL; - groupOffset = NULL; - groupHasSignature = NULL; - groupNumObjects = NULL; - groupXRefOffset = NULL; + groupLength = nullptr; + groupOffset = nullptr; + groupHasSignature = nullptr; + groupNumObjects = nullptr; + groupXRefOffset = nullptr; ok = gTrue; readTables(str, linearization, xref, secHdlr); @@ -209,7 +209,7 @@ void Hints::readTables(BaseStream *str, Linearization *linearization, XRef *xref (num = obj.getInt(), obj = parser->getObj(), obj.isInt()) && (gen = obj.getInt(), obj = parser->getObj(), obj.isCmd("obj")) && (obj = parser->getObj(gFalse, - secHdlr ? secHdlr->getFileKey() : (Guchar *)NULL, + secHdlr ? secHdlr->getFileKey() : (Guchar *)nullptr, secHdlr ? secHdlr->getEncAlgorithm() : cryptRC4, secHdlr ? secHdlr->getFileKeyLength() : 0, num, gen, 0, gTrue), obj.isStream())) { @@ -217,7 +217,7 @@ void Hints::readTables(BaseStream *str, Linearization *linearization, XRef *xref Dict *hintsDict = obj.streamGetDict(); int sharedStreamOffset = 0; - if (hintsDict->lookupInt("S", NULL, &sharedStreamOffset) && + if (hintsDict->lookupInt("S", nullptr, &sharedStreamOffset) && sharedStreamOffset > 0) { hintsStream->reset(); @@ -307,7 +307,7 @@ GBool Hints::readPageOffsetTable(Stream *str) sbr.resetInputBits(); // reset on byte boundary. Not in specs! numSharedObject[0] = sbr.readBits(nBitsNumShared); numSharedObject[0] = 0; // Do not trust the read value to be 0. - sharedObjectId[0] = NULL; + sharedObjectId[0] = nullptr; for (int i = 1; i < nPages && !sbr.atEOF(); i++) { numSharedObject[i] = sbr.readBits(nBitsNumShared); if (numSharedObject[i] >= INT_MAX / (int)sizeof(Guint)) { @@ -457,7 +457,7 @@ Goffset Hints::getPageOffset(int page) std::vector* Hints::getPageRanges(int page) { - if ((page < 1) || (page > nPages)) return NULL; + if ((page < 1) || (page > nPages)) return nullptr; int idx; if (page-1 > pageFirst) diff --git a/Build/source/libs/poppler/poppler-src/poppler/Hints.h b/Build/source/libs/poppler/poppler-src/poppler/Hints.h index f9d05daefa7..a9062265365 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Hints.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Hints.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2010 Hib Eris -// Copyright 2010, 2013, 2016 Albert Astals Cid +// Copyright 2010, 2013, 2016, 2018 Albert Astals Cid // Copyright 2013 Adrian Johnson // //======================================================================== @@ -33,6 +33,9 @@ public: Hints(BaseStream *str, Linearization *linearization, XRef *xref, SecurityHandler *secHdlr); ~Hints(); + Hints(const Hints &) = delete; + Hints& operator=(const Hints &) = delete; + GBool isOk() const; int getPageObjectNum(int page); diff --git a/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc b/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc index d23f7ea3887..b8bb3b90825 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.cc @@ -88,7 +88,7 @@ int JArithmeticDecoder::switchTab[47] = { }; JArithmeticDecoder::JArithmeticDecoder() { - str = NULL; + str = nullptr; dataLen = 0; limitStream = gFalse; nBytesRead = 0; diff --git a/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h b/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h index 3c3e6fed0e5..cb8f481f9b4 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h +++ b/Build/source/libs/poppler/poppler-src/poppler/JArithmeticDecoder.h @@ -8,6 +8,20 @@ // //======================================================================== +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2018 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + #ifndef JARITHMETICDECODER_H #define JARITHMETICDECODER_H @@ -28,6 +42,8 @@ public: JArithmeticDecoderStats(int contextSizeA); ~JArithmeticDecoderStats(); + JArithmeticDecoderStats(const JArithmeticDecoderStats &) = delete; + JArithmeticDecoderStats& operator=(const JArithmeticDecoderStats &) = delete; JArithmeticDecoderStats *copy(); void reset(); int getContextSize() { return contextSize; } @@ -51,6 +67,8 @@ public: JArithmeticDecoder(); ~JArithmeticDecoder(); + JArithmeticDecoder(const JArithmeticDecoder &) = delete; + JArithmeticDecoder& operator=(const JArithmeticDecoder &) = delete; void setStream(Stream *strA) { str = strA; dataLen = 0; limitStream = gFalse; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc b/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc index bda7f42eb7c..ac7e7382c73 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/JBIG2Stream.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2006 Raj Kumar // Copyright (C) 2006 Paul Walmsley -// Copyright (C) 2006-2010, 2012, 2014-2017 Albert Astals Cid +// Copyright (C) 2006-2010, 2012, 2014-2018 Albert Astals Cid // Copyright (C) 2009 David Benjamin // Copyright (C) 2011 Edward Jiang // Copyright (C) 2012 William Bader @@ -339,7 +339,7 @@ private: }; JBIG2HuffmanDecoder::JBIG2HuffmanDecoder() { - str = NULL; + str = nullptr; reset(); } @@ -482,7 +482,7 @@ private: }; JBIG2MMRDecoder::JBIG2MMRDecoder() { - str = NULL; + str = nullptr; reset(); } @@ -651,6 +651,8 @@ public: JBIG2Segment(Guint segNumA) { segNum = segNumA; } virtual ~JBIG2Segment() {} + JBIG2Segment(const JBIG2Segment &) = delete; + JBIG2Segment& operator=(const JBIG2Segment &) = delete; void setSegNum(Guint segNumA) { segNum = segNumA; } Guint getSegNum() { return segNum; } virtual JBIG2SegmentType getType() = 0; @@ -697,7 +699,7 @@ public: void combine(JBIG2Bitmap *bitmap, int x, int y, Guint combOp); Guchar *getDataPtr() { return data; } int getDataSize() { return h * line; } - GBool isOk() { return data != NULL; } + GBool isOk() { return data != nullptr; } private: @@ -716,12 +718,12 @@ JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, int wA, int hA): if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) { error(errSyntaxError, -1, "invalid width/height"); - data = NULL; + data = nullptr; return; } // need to allocate one extra guard byte for use in combine() data = (Guchar *)gmalloc_checkoverflow(h * line + 1); - if (data != NULL) { + if (data != nullptr) { data[h * line] = 0; } } @@ -729,10 +731,10 @@ JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, int wA, int hA): JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, JBIG2Bitmap *bitmap): JBIG2Segment(segNumA) { - if (unlikely(bitmap == NULL)) { + if (unlikely(bitmap == nullptr)) { error(errSyntaxError, -1, "NULL bitmap in JBIG2Bitmap"); w = h = line = 0; - data = NULL; + data = nullptr; return; } @@ -742,7 +744,7 @@ JBIG2Bitmap::JBIG2Bitmap(Guint segNumA, JBIG2Bitmap *bitmap): if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) { error(errSyntaxError, -1, "invalid width/height"); - data = NULL; + data = nullptr; return; } // need to allocate one extra guard byte for use in combine() @@ -776,7 +778,7 @@ JBIG2Bitmap *JBIG2Bitmap::getSlice(Guint x, Guint y, Guint wA, Guint hA) { } } else { delete slice; - slice = NULL; + slice = nullptr; } return slice; } @@ -785,7 +787,7 @@ void JBIG2Bitmap::expand(int newH, Guint pixel) { if (newH <= h || line <= 0 || newH >= (INT_MAX - 1) / line) { error(errSyntaxError, -1, "invalid width/height"); gfree(data); - data = NULL; + data = nullptr; return; } // need to allocate one extra guard byte for use in combine() @@ -809,7 +811,7 @@ void JBIG2Bitmap::clearToOne() { inline void JBIG2Bitmap::getPixelPtr(int x, int y, JBIG2BitmapPtr *ptr) { if (y < 0 || y >= h || x >= w) { - ptr->p = NULL; + ptr->p = nullptr; ptr->shift = 0; // make gcc happy ptr->x = 0; // make gcc happy } else if (x < 0) { @@ -834,7 +836,7 @@ inline int JBIG2Bitmap::nextPixel(JBIG2BitmapPtr *ptr) { } else { pix = (*ptr->p >> ptr->shift) & 1; if (++ptr->x == w) { - ptr->p = NULL; + ptr->p = nullptr; } else if (ptr->shift == 0) { ++ptr->p; ptr->shift = 7; @@ -1055,7 +1057,7 @@ public: Guint getSize() { return size; } void setBitmap(Guint idx, JBIG2Bitmap *bitmap) { bitmaps[idx] = bitmap; } JBIG2Bitmap *getBitmap(Guint idx) { return bitmaps[idx]; } - GBool isOk() { return bitmaps != NULL; } + GBool isOk() { return bitmaps != nullptr; } void setGenericRegionStats(JArithmeticDecoderStats *stats) { genericRegionStats = stats; } void setRefinementRegionStats(JArithmeticDecoderStats *stats) @@ -1082,10 +1084,10 @@ JBIG2SymbolDict::JBIG2SymbolDict(Guint segNumA, Guint sizeA): bitmaps = (JBIG2Bitmap **)gmallocn_checkoverflow(size, sizeof(JBIG2Bitmap *)); if (!bitmaps) size = 0; for (i = 0; i < size; ++i) { - bitmaps[i] = NULL; + bitmaps[i] = nullptr; } - genericRegionStats = NULL; - refinementRegionStats = NULL; + genericRegionStats = nullptr; + refinementRegionStats = nullptr; } JBIG2SymbolDict::~JBIG2SymbolDict() { @@ -1115,7 +1117,7 @@ public: JBIG2SegmentType getType() override { return jbig2SegPatternDict; } Guint getSize() { return size; } void setBitmap(Guint idx, JBIG2Bitmap *bitmap) { if (likely(idx < size)) bitmaps[idx] = bitmap; } - JBIG2Bitmap *getBitmap(Guint idx) { return (idx < size) ? bitmaps[idx] : NULL; } + JBIG2Bitmap *getBitmap(Guint idx) { return (idx < size) ? bitmaps[idx] : nullptr; } private: @@ -1178,7 +1180,7 @@ JBIG2CodeTable::~JBIG2CodeTable() { JBIG2Stream::JBIG2Stream(Stream *strA, Object *globalsStreamA, Object *globalsStreamRefA): FilterStream(strA) { - pageBitmap = NULL; + pageBitmap = nullptr; arithDecoder = new JArithmeticDecoder(); genericRegionStats = new JArithmeticDecoderStats(1 << 1); @@ -1206,9 +1208,9 @@ JBIG2Stream::JBIG2Stream(Stream *strA, Object *globalsStreamA, Object *globalsSt globalsStreamRef = globalsStreamRefA->getRef(); } - segments = globalSegments = NULL; - curStr = NULL; - dataPtr = dataEnd = NULL; + segments = globalSegments = nullptr; + curStr = nullptr; + dataPtr = dataEnd = nullptr; } JBIG2Stream::~JBIG2Stream() { @@ -1262,24 +1264,24 @@ void JBIG2Stream::reset() { dataPtr = pageBitmap->getDataPtr(); dataEnd = dataPtr + pageBitmap->getDataSize(); } else { - dataPtr = dataEnd = NULL; + dataPtr = dataEnd = nullptr; } } void JBIG2Stream::close() { if (pageBitmap) { delete pageBitmap; - pageBitmap = NULL; + pageBitmap = nullptr; } if (segments) { deleteGooList(segments, JBIG2Segment); - segments = NULL; + segments = nullptr; } if (globalSegments) { deleteGooList(globalSegments, JBIG2Segment); - globalSegments = NULL; + globalSegments = nullptr; } - dataPtr = dataEnd = NULL; + dataPtr = dataEnd = nullptr; FilterStream::close(); } @@ -1298,7 +1300,7 @@ int JBIG2Stream::lookChar() { } Goffset JBIG2Stream::getPos() { - if (pageBitmap == NULL) { + if (pageBitmap == nullptr) { return 0; } return dataPtr - pageBitmap->getDataPtr(); @@ -1322,7 +1324,7 @@ int JBIG2Stream::getChars(int nChars, Guchar *buffer) { } GooString *JBIG2Stream::getPSFilter(int psLevel, const char *indent) { - return NULL; + return nullptr; } GBool JBIG2Stream::isBinary(GBool last) { @@ -1335,7 +1337,6 @@ void JBIG2Stream::readSegments() { Guint *refSegs; Goffset segDataPos; int c1, c2, c3; - Guint i; while (readULong(&segNum)) { @@ -1358,7 +1359,7 @@ void JBIG2Stream::readSegments() { } refFlags = (refFlags << 24) | (c1 << 16) | (c2 << 8) | c3; nRefSegs = refFlags & 0x1fffffff; - for (i = 0; i < (nRefSegs + 9) >> 3; ++i) { + for (Guint i = 0; i < (nRefSegs + 9) >> 3; ++i) { if ((c1 = curStr->getChar()) == EOF) { goto eofError1; } @@ -1368,19 +1369,19 @@ void JBIG2Stream::readSegments() { // referred-to segment numbers refSegs = (Guint *)gmallocn(nRefSegs, sizeof(Guint)); if (segNum <= 256) { - for (i = 0; i < nRefSegs; ++i) { + for (Guint i = 0; i < nRefSegs; ++i) { if (!readUByte(&refSegs[i])) { goto eofError2; } } } else if (segNum <= 65536) { - for (i = 0; i < nRefSegs; ++i) { + for (Guint i = 0; i < nRefSegs; ++i) { if (!readUWord(&refSegs[i])) { goto eofError2; } } } else { - for (i = 0; i < nRefSegs; ++i) { + for (Guint i = 0; i < nRefSegs; ++i) { if (!readULong(&refSegs[i])) { goto eofError2; } @@ -1482,7 +1483,7 @@ void JBIG2Stream::readSegments() { break; default: error(errSyntaxError, curStr->getPos(), "Unknown segment type in JBIG2 stream"); - for (i = 0; i < segLength; ++i) { + for (Guint i = 0; i < segLength; ++i) { if ((c1 = curStr->getChar()) == EOF) { goto eofError2; } @@ -1567,7 +1568,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, Guint i, j, k; Guchar *p; - symWidths = NULL; + symWidths = nullptr; // symbol dictionary flags if (!readUWord(&flags)) { @@ -1674,13 +1675,13 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, goto eofError; } for (i = 0; i < numInputSyms + numNewSyms; ++i) { - bitmaps[i] = NULL; + bitmaps[i] = nullptr; } k = 0; - inputSymbolDict = NULL; + inputSymbolDict = nullptr; for (i = 0; i < nRefSegs; ++i) { seg = findSegment(refSegs[i]); - if (seg != NULL && seg->getType() == jbig2SegSymbolDict) { + if (seg != nullptr && seg->getType() == jbig2SegSymbolDict) { inputSymbolDict = (JBIG2SymbolDict *)seg; for (j = 0; j < inputSymbolDict->getSize(); ++j) { bitmaps[k++] = inputSymbolDict->getBitmap(j); @@ -1689,8 +1690,8 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, } // get the Huffman tables - huffDHTable = huffDWTable = NULL; // make gcc happy - huffBMSizeTable = huffAggInstTable = NULL; // make gcc happy + huffDHTable = huffDWTable = nullptr; // make gcc happy + huffBMSizeTable = huffAggInstTable = nullptr; // make gcc happy i = 0; if (huff) { if (huffDH == 0) { @@ -1743,7 +1744,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, if (contextUsed && inputSymbolDict) { resetGenericStats(sdTemplate, inputSymbolDict->getGenericRegionStats()); } else { - resetGenericStats(sdTemplate, NULL); + resetGenericStats(sdTemplate, nullptr); } resetIntStats(symCodeLen); arithDecoder->start(); @@ -1755,7 +1756,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, resetRefinementStats(sdrTemplate, inputSymbolDict->getRefinementRegionStats()); } else { - resetRefinementStats(sdrTemplate, NULL); + resetRefinementStats(sdrTemplate, nullptr); } } @@ -1850,7 +1851,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, goto syntaxError; } refBitmap = bitmaps[symID]; - if (unlikely(refBitmap == NULL)) { + if (unlikely(refBitmap == nullptr)) { error(errSyntaxError, curStr->getPos(), "Invalid ref bitmap for symbol ID {0:ud} in JBIG2 symbol dictionary", symID); goto syntaxError; } @@ -1863,7 +1864,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, } else { bitmaps[numInputSyms + i] = readTextRegion(huff, gTrue, symWidth, symHeight, - refAggNum, 0, numInputSyms + i, NULL, + refAggNum, 0, numInputSyms + i, nullptr, symCodeLen, bitmaps, 0, 0, 0, 1, 0, huffTableF, huffTableH, huffTableK, huffTableO, huffTableO, huffTableO, huffTableO, huffTableA, @@ -1874,7 +1875,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, } else { bitmaps[numInputSyms + i] = readGenericBitmap(gFalse, symWidth, symHeight, - sdTemplate, gFalse, gFalse, NULL, + sdTemplate, gFalse, gFalse, nullptr, sdATX, sdATY, 0); } @@ -1889,7 +1890,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, collBitmap = new JBIG2Bitmap(0, totalWidth, symHeight); bmSize = symHeight * ((totalWidth + 7) >> 3); p = collBitmap->getDataPtr(); - if (unlikely(p == NULL)) { + if (unlikely(p == nullptr)) { delete collBitmap; goto syntaxError; } @@ -1901,10 +1902,10 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, } } else { collBitmap = readGenericBitmap(gTrue, totalWidth, symHeight, - 0, gFalse, gFalse, NULL, NULL, NULL, + 0, gFalse, gFalse, nullptr, nullptr, nullptr, bmSize); } - if (likely(collBitmap != NULL)) { + if (likely(collBitmap != nullptr)) { x = 0; for (; j < i; ++j) { bitmaps[numInputSyms + j] = @@ -1938,7 +1939,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, if (i + run > numInputSyms + numNewSyms || (ex && j + run > numExSyms)) { error(errSyntaxError, curStr->getPos(), "Too many exported symbols in JBIG2 symbol dictionary"); - for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, NULL); + for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, nullptr); delete symbolDict; goto syntaxError; } @@ -1953,7 +1954,7 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, } if (j != numExSyms) { error(errSyntaxError, curStr->getPos(), "Too few symbols in JBIG2 symbol dictionary"); - for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, NULL); + for ( ; j < numExSyms; ++j) symbolDict->setBitmap(j, nullptr); delete symbolDict; goto syntaxError; } @@ -2117,9 +2118,9 @@ void JBIG2Stream::readTextRegionSeg(Guint segNum, GBool imm, } // get the Huffman tables - huffFSTable = huffDSTable = huffDTTable = NULL; // make gcc happy - huffRDWTable = huffRDHTable = NULL; // make gcc happy - huffRDXTable = huffRDYTable = huffRSizeTable = NULL; // make gcc happy + huffFSTable = huffDSTable = huffDTTable = nullptr; // make gcc happy + huffRDWTable = huffRDHTable = nullptr; // make gcc happy + huffRDXTable = huffRDYTable = huffRSizeTable = nullptr; // make gcc happy i = 0; if (huff) { if (huffFS == 0) { @@ -2258,12 +2259,12 @@ void JBIG2Stream::readTextRegionSeg(Guint segNum, GBool imm, // set up the arithmetic decoder } else { - symCodeTab = NULL; + symCodeTab = nullptr; resetIntStats(symCodeLen); arithDecoder->start(); } if (refine) { - resetRefinementStats(templ, NULL); + resetRefinementStats(templ, nullptr); } bitmap = readTextRegion(huff, refine, w, h, numInstances, @@ -2344,7 +2345,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, bitmap = new JBIG2Bitmap(0, w, h); if (!bitmap->isOk()) { delete bitmap; - return NULL; + return nullptr; } if (defPixel) { bitmap->clearToOne(); @@ -2413,12 +2414,12 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, if (unlikely(numInstances - inst > 0x800)) { // don't loop too often with damaged JBIg2 streams delete bitmap; - return NULL; + return nullptr; } } else { // get the symbol bitmap - symbolBitmap = NULL; + symbolBitmap = nullptr; if (refine) { if (huff) { ri = (int)huffDecoder->readBit(); @@ -2472,7 +2473,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } bh = symbolBitmap->getHeight() - 1; if (transposed) { @@ -2482,7 +2483,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } switch (refCorner) { case 0: // bottom left @@ -2508,7 +2509,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } bitmap->combine(symbolBitmap, s, tt - bh, combOp); break; @@ -2519,7 +2520,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } bitmap->combine(symbolBitmap, s, tt, combOp); break; @@ -2530,7 +2531,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } bitmap->combine(symbolBitmap, s, tt - bh, combOp); break; @@ -2541,7 +2542,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, delete symbolBitmap; } delete bitmap; - return NULL; + return nullptr; } bitmap->combine(symbolBitmap, s, tt, combOp); break; @@ -2554,7 +2555,7 @@ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine, } else { // NULL symbolBitmap only happens on error delete bitmap; - return NULL; + return nullptr; } } @@ -2597,7 +2598,7 @@ void JBIG2Stream::readPatternDictSeg(Guint segNum, Guint length) { // set up the arithmetic decoder if (!mmr) { - resetGenericStats(templ, NULL); + resetGenericStats(templ, nullptr); arithDecoder->start(); } @@ -2607,7 +2608,7 @@ void JBIG2Stream::readPatternDictSeg(Guint segNum, Guint length) { atx[2] = 2; aty[2] = -2; atx[3] = -2; aty[3] = -2; bitmap = readGenericBitmap(mmr, (grayMax + 1) * patternW, patternH, - templ, gFalse, gFalse, NULL, + templ, gFalse, gFalse, nullptr, atx, aty, length - 7); if (!bitmap) @@ -2688,7 +2689,7 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, return; } seg = findSegment(refSegs[0]); - if (seg == NULL || seg->getType() != jbig2SegPatternDict) { + if (seg == nullptr || seg->getType() != jbig2SegPatternDict) { error(errSyntaxError, curStr->getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment"); return; } @@ -2707,7 +2708,7 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, } } patternBitmap = patternDict->getBitmap(0); - if (unlikely(patternBitmap == NULL)) { + if (unlikely(patternBitmap == nullptr)) { error(errSyntaxError, curStr->getPos(), "Bad pattern bitmap"); return; } @@ -2716,7 +2717,7 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, // set up the arithmetic decoder if (!mmr) { - resetGenericStats(templ, NULL); + resetGenericStats(templ, nullptr); arithDecoder->start(); } @@ -2729,7 +2730,7 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, } // compute the skip bitmap - skipBitmap = NULL; + skipBitmap = nullptr; if (enableSkip) { skipBitmap = new JBIG2Bitmap(0, gridW, gridH); skipBitmap->clearToZero(); @@ -2774,7 +2775,7 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, for (n = 0; n < gridW; ++n) { if (!(enableSkip && skipBitmap->getPixel(n, m))) { patternBitmap = patternDict->getBitmap(grayImg[i]); - if (unlikely(patternBitmap == NULL)) { + if (unlikely(patternBitmap == nullptr)) { delete skipBitmap; delete bitmap; gfree(grayImg); @@ -2859,13 +2860,13 @@ void JBIG2Stream::readGenericRegionSeg(Guint segNum, GBool imm, // set up the arithmetic decoder if (!mmr) { - resetGenericStats(templ, NULL); + resetGenericStats(templ, nullptr); arithDecoder->start(); } // read the bitmap bitmap = readGenericBitmap(mmr, w, h, templ, tpgdOn, gFalse, - NULL, atx, aty, mmr ? length - 18 : 0); + nullptr, atx, aty, mmr ? length - 18 : 0); if (!bitmap) return; @@ -2953,7 +2954,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, bitmap = new JBIG2Bitmap(0, w, h); if (!bitmap->isOk()) { delete bitmap; - return NULL; + return nullptr; } bitmap->clearToZero(); @@ -2965,7 +2966,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, if (w > INT_MAX - 2) { error(errSyntaxError, curStr->getPos(), "Bad width in JBIG2 generic bitmap"); delete bitmap; - return NULL; + return nullptr; } // 0 <= codingLine[0] < codingLine[1] < ... < codingLine[n] = w // ---> max codingLine size = w + 1 @@ -3224,11 +3225,11 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize(); buf0 = *p0++ << 8; } else { - p0 = NULL; + p0 = nullptr; buf0 = 0; } } else { - p1 = p0 = NULL; + p1 = p0 = nullptr; buf1 = buf0 = 0; } @@ -3241,7 +3242,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP0 = bitmap->getDataPtr() + (y + aty[0]) * bitmap->getLineSize(); atBuf0 = *atP0++ << 8; } else { - atP0 = NULL; + atP0 = nullptr; atBuf0 = 0; } atShift0 = 15 - atx[0]; @@ -3249,7 +3250,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP1 = bitmap->getDataPtr() + (y + aty[1]) * bitmap->getLineSize(); atBuf1 = *atP1++ << 8; } else { - atP1 = NULL; + atP1 = nullptr; atBuf1 = 0; } atShift1 = 15 - atx[1]; @@ -3257,7 +3258,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP2 = bitmap->getDataPtr() + (y + aty[2]) * bitmap->getLineSize(); atBuf2 = *atP2++ << 8; } else { - atP2 = NULL; + atP2 = nullptr; atBuf2 = 0; } atShift2 = 15 - atx[2]; @@ -3265,7 +3266,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP3 = bitmap->getDataPtr() + (y + aty[3]) * bitmap->getLineSize(); atBuf3 = *atP3++ << 8; } else { - atP3 = NULL; + atP3 = nullptr; atBuf3 = 0; } atShift3 = 15 - atx[3]; @@ -3393,11 +3394,11 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize(); buf0 = *p0++ << 8; } else { - p0 = NULL; + p0 = nullptr; buf0 = 0; } } else { - p1 = p0 = NULL; + p1 = p0 = nullptr; buf1 = buf0 = 0; } @@ -3408,7 +3409,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize(); atBuf0 = *atP0++ << 8; } else { - atP0 = NULL; + atP0 = nullptr; atBuf0 = 0; } atShift0 = 15 - atx[0]; @@ -3509,11 +3510,11 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, p0 = bitmap->getDataPtr() + (y - 2) * bitmap->getLineSize(); buf0 = *p0++ << 8; } else { - p0 = NULL; + p0 = nullptr; buf0 = 0; } } else { - p1 = p0 = NULL; + p1 = p0 = nullptr; buf1 = buf0 = 0; } @@ -3524,7 +3525,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize(); atBuf0 = *atP0++ << 8; } else { - atP0 = NULL; + atP0 = nullptr; atBuf0 = 0; } atShift0 = 15 - atx[0]; @@ -3622,7 +3623,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, p1 = bitmap->getDataPtr() + (y - 1) * bitmap->getLineSize(); buf1 = *p1++ << 8; } else { - p1 = NULL; + p1 = nullptr; buf1 = 0; } @@ -3633,7 +3634,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h, atP0 = bitmap->getDataPtr() + atY * bitmap->getLineSize(); atBuf0 = *atP0++ << 8; } else { - atP0 = NULL; + atP0 = nullptr; atBuf0 = 0; } atShift0 = 15 - atx[0]; @@ -3765,7 +3766,7 @@ void JBIG2Stream::readGenericRefinementRegionSeg(Guint segNum, GBool imm, } if (nRefSegs == 1) { seg = findSegment(refSegs[0]); - if (seg == NULL || seg->getType() != jbig2SegBitmap) { + if (seg == nullptr || seg->getType() != jbig2SegBitmap) { error(errSyntaxError, curStr->getPos(), "Bad bitmap reference in JBIG2 generic refinement segment"); return; } @@ -3775,7 +3776,7 @@ void JBIG2Stream::readGenericRefinementRegionSeg(Guint segNum, GBool imm, } // set up the arithmetic decoder - resetRefinementStats(templ, NULL); + resetRefinementStats(templ, nullptr); arithDecoder->start(); // read @@ -3818,16 +3819,16 @@ JBIG2Bitmap *JBIG2Stream::readGenericRefinementRegion(int w, int h, JBIG2Bitmap *bitmap; GBool ltp; Guint ltpCX, cx, cx0, cx2, cx3, cx4, tpgrCX0, tpgrCX1, tpgrCX2; - JBIG2BitmapPtr cxPtr0 = {0}; - JBIG2BitmapPtr cxPtr1 = {0}; - JBIG2BitmapPtr cxPtr2 = {0}; - JBIG2BitmapPtr cxPtr3 = {0}; - JBIG2BitmapPtr cxPtr4 = {0}; - JBIG2BitmapPtr cxPtr5 = {0}; - JBIG2BitmapPtr cxPtr6 = {0}; - JBIG2BitmapPtr tpgrCXPtr0 = {0}; - JBIG2BitmapPtr tpgrCXPtr1 = {0}; - JBIG2BitmapPtr tpgrCXPtr2 = {0}; + JBIG2BitmapPtr cxPtr0 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr1 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr2 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr3 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr4 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr5 = {nullptr, 0, 0}; + JBIG2BitmapPtr cxPtr6 = {nullptr, 0, 0}; + JBIG2BitmapPtr tpgrCXPtr0 = {nullptr, 0, 0}; + JBIG2BitmapPtr tpgrCXPtr1 = {nullptr, 0, 0}; + JBIG2BitmapPtr tpgrCXPtr2 = {nullptr, 0, 0}; int x, y, pix; if (!refBitmap) { @@ -3838,7 +3839,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericRefinementRegion(int w, int h, if (!bitmap->isOk()) { delete bitmap; - return NULL; + return nullptr; } bitmap->clearToZero(); @@ -3881,7 +3882,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericRefinementRegion(int w, int h, tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2); tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2); } else { - tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy + tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = nullptr; // make gcc happy tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0; tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0; } @@ -3956,7 +3957,7 @@ JBIG2Bitmap *JBIG2Stream::readGenericRefinementRegion(int w, int h, tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2); tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2); } else { - tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy + tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = nullptr; // make gcc happy tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0; tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0; } @@ -4026,7 +4027,7 @@ void JBIG2Stream::readPageInfoSeg(Guint length) { if (!pageBitmap->isOk()) { delete pageBitmap; - pageBitmap = NULL; + pageBitmap = nullptr; return; } @@ -4156,7 +4157,7 @@ JBIG2Segment *JBIG2Stream::findSegment(Guint segNum) { return seg; } } - return NULL; + return nullptr; } void JBIG2Stream::discardSegment(Guint segNum) { diff --git a/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc b/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc index 078465a0393..93793d16960 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/JPEG2000Stream.cc @@ -78,7 +78,7 @@ static inline int doGetChar(JPXStreamPrivate* priv) { JPXStream::JPXStream(Stream *strA) : FilterStream(strA) { priv = new JPXStreamPrivate; priv->inited = gFalse; - priv->image = NULL; + priv->image = nullptr; priv->npixels = 0; priv->ncomps = 0; priv->indexed = gFalse; @@ -96,9 +96,9 @@ void JPXStream::reset() { } void JPXStream::close() { - if (priv->image != NULL) { + if (priv->image != nullptr) { opj_image_destroy(priv->image); - priv->image = NULL; + priv->image = nullptr; priv->npixels = 0; } } @@ -131,7 +131,7 @@ int JPXStream::lookChar() { } GooString *JPXStream::getPSFilter(int psLevel, const char *indent) { - return NULL; + return nullptr; } GBool JPXStream::isBinary(GBool last) { @@ -250,7 +250,7 @@ void JPXStream::init() priv->ncomps = priv->image->numcomps; if (alpha == 1 && priv->smaskInData == 0) priv->ncomps--; for (int component = 0; component < priv->ncomps; component++) { - if (priv->image->comps[component].data == NULL) { + if (priv->image->comps[component].data == nullptr) { close(); break; } @@ -289,7 +289,7 @@ void JPXStreamPrivate::init2(OPJ_CODEC_FORMAT format, unsigned char *buf, int le stream = opj_stream_default_create(OPJ_TRUE); #if OPENJPEG_VERSION >= OPENJPEG_VERSION_ENCODE(2, 1, 0) - opj_stream_set_user_data (stream, &jpxData, NULL); + opj_stream_set_user_data (stream, &jpxData, nullptr); #else opj_stream_set_user_data (stream, &jpxData); #endif @@ -310,14 +310,14 @@ void JPXStreamPrivate::init2(OPJ_CODEC_FORMAT format, unsigned char *buf, int le /* Get the decoder handle of the format */ decoder = opj_create_decompress(format); - if (decoder == NULL) { + if (decoder == nullptr) { error(errSyntaxWarning, -1, "Unable to create decoder"); goto error; } /* Catch events using our callbacks */ - opj_set_warning_handler(decoder, libopenjpeg_warning_callback, NULL); - opj_set_error_handler(decoder, libopenjpeg_error_callback, NULL); + opj_set_warning_handler(decoder, libopenjpeg_warning_callback, nullptr); + opj_set_error_handler(decoder, libopenjpeg_error_callback, nullptr); /* Setup the decoder decoding parameters */ if (!opj_setup_decoder(decoder, ¶meters)) { @@ -326,7 +326,7 @@ void JPXStreamPrivate::init2(OPJ_CODEC_FORMAT format, unsigned char *buf, int le } /* Decode the stream and fill the image structure */ - image = NULL; + image = nullptr; if (!opj_read_header(stream, decoder, &image)) { error(errSyntaxWarning, -1, "Unable to read header"); goto error; @@ -348,7 +348,7 @@ void JPXStreamPrivate::init2(OPJ_CODEC_FORMAT format, unsigned char *buf, int le opj_destroy_codec(decoder); opj_stream_destroy(stream); - if (image != NULL) + if (image != nullptr) return; error: diff --git a/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc b/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc index d2329b53631..a5090838e07 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Lexer.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2006-2010, 2012-2014, 2017 Albert Astals Cid +// Copyright (C) 2006-2010, 2012-2014, 2017, 2018 Albert Astals Cid // Copyright (C) 2006 Krzysztof Kowalczyk // Copyright (C) 2010 Carlos Garcia Campos // Copyright (C) 2012, 2013 Adrian Johnson @@ -86,7 +86,6 @@ Lexer::Lexer(XRef *xrefA, Object *obj) { xref = xrefA; if (obj->isStream()) { - Object obj2; streams = new Array(xref); freeArray = gTrue; streams->add(obj->copy()); @@ -97,12 +96,14 @@ Lexer::Lexer(XRef *xrefA, Object *obj) { strPtr = 0; if (streams->getLength() > 0) { curStr = streams->get(strPtr); - curStr.streamReset(); + if (curStr.isStream()) { + curStr.streamReset(); + } } } Lexer::~Lexer() { - if (!curStr.isNone()) { + if (curStr.isStream()) { curStr.streamClose(); } if (freeArray) { @@ -120,7 +121,7 @@ int Lexer::getChar(GBool comesFromLook) { } c = EOF; - while (!curStr.isNone() && (c = curStr.streamGetChar()) == EOF) { + while (curStr.isStream() && (c = curStr.streamGetChar()) == EOF) { if (comesFromLook == gTrue) { return EOF; } else { @@ -128,8 +129,10 @@ int Lexer::getChar(GBool comesFromLook) { curStr = Object(); ++strPtr; if (strPtr < streams->getLength()) { - curStr = streams->get(strPtr); - curStr.streamReset(); + curStr = streams->get(strPtr); + if (curStr.isStream()) { + curStr.streamReset(); + } } } } @@ -279,7 +282,7 @@ Object Lexer::getObj(int objNum) { n = 0; numParen = 1; done = gFalse; - s = NULL; + s = nullptr; do { c2 = EOF; switch (c = getChar()) { @@ -376,7 +379,7 @@ Object Lexer::getObj(int objNum) { n = 0; // we are growing see if the document is not malformed and we are growing too much - if (objNum > 0 && xref != NULL) + if (objNum > 0 && xref != nullptr) { int newObjNum = xref->getNumEntry(curStr.streamGetPos()); if (newObjNum != objNum) @@ -407,7 +410,7 @@ Object Lexer::getObj(int objNum) { case '/': p = tokBuf; n = 0; - s = NULL; + s = nullptr; while ((c = lookChar()) != EOF && !specialChars[c]) { getChar(); if (c == '#') { @@ -483,7 +486,7 @@ Object Lexer::getObj(int objNum) { p = tokBuf; m = n = 0; c2 = 0; - s = NULL; + s = nullptr; while (1) { c = getChar(); if (c == '>') { diff --git a/Build/source/libs/poppler/poppler-src/poppler/Lexer.h b/Build/source/libs/poppler/poppler-src/poppler/Lexer.h index ac3334c500f..eb692a5c248 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Lexer.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Lexer.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2006, 2007, 2010, 2013, 2017 Albert Astals Cid +// Copyright (C) 2006, 2007, 2010, 2013, 2017, 2018 Albert Astals Cid // Copyright (C) 2006 Krzysztof Kowalczyk // Copyright (C) 2013 Adrian Johnson // Copyright (C) 2013 Thomas Freitag @@ -55,6 +55,9 @@ public: // Destructor. ~Lexer(); + Lexer(const Lexer &) = delete; + Lexer& operator=(const Lexer &) = delete; + // Get the next object from the input stream. Object getObj(int objNum = -1); Object getObj(const char *cmdA, int objNum); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc b/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc index 49008a31086..8886894f1ad 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Linearization.cc @@ -23,8 +23,8 @@ Linearization::Linearization (BaseStream *str) Parser *parser; str->reset(); - parser = new Parser(NULL, - new Lexer(NULL, str->makeSubStream(str->getStart(), gFalse, 0, Object(objNull))), + parser = new Parser(nullptr, + new Lexer(nullptr, str->makeSubStream(str->getStart(), gFalse, 0, Object(objNull))), gFalse); Object obj1 = parser->getObj(); Object obj2 = parser->getObj(); @@ -48,7 +48,7 @@ Guint Linearization::getLength() if (!linDict.isDict()) return 0; int length; - if (linDict.getDict()->lookupInt("L", NULL, &length) && + if (linDict.getDict()->lookupInt("L", nullptr, &length) && length > 0) { return length; } else { @@ -139,7 +139,7 @@ int Linearization::getObjectNumberFirst() { int objectNumberFirst = 0; if (linDict.isDict() && - linDict.getDict()->lookupInt("O", NULL, &objectNumberFirst) && + linDict.getDict()->lookupInt("O", nullptr, &objectNumberFirst) && objectNumberFirst > 0) { return objectNumberFirst; } else { @@ -152,7 +152,7 @@ Guint Linearization::getEndFirst() { int pageEndFirst = 0; if (linDict.isDict() && - linDict.getDict()->lookupInt("E", NULL, &pageEndFirst) && + linDict.getDict()->lookupInt("E", nullptr, &pageEndFirst) && pageEndFirst > 0) { return pageEndFirst; } else { @@ -165,7 +165,7 @@ int Linearization::getNumPages() { int numPages = 0; if (linDict.isDict() && - linDict.getDict()->lookupInt("N", NULL, &numPages) && + linDict.getDict()->lookupInt("N", nullptr, &numPages) && numPages > 0) { return numPages; } else { @@ -178,7 +178,7 @@ Guint Linearization::getMainXRefEntriesOffset() { int mainXRefEntriesOffset = 0; if (linDict.isDict() && - linDict.getDict()->lookupInt("T", NULL, &mainXRefEntriesOffset) && + linDict.getDict()->lookupInt("T", nullptr, &mainXRefEntriesOffset) && mainXRefEntriesOffset > 0) { return mainXRefEntriesOffset; } else { @@ -192,7 +192,7 @@ int Linearization::getPageFirst() int pageFirst = 0; // Optional, defaults to 0. if (linDict.isDict()) { - linDict.getDict()->lookupInt("P", NULL, &pageFirst); + linDict.getDict()->lookupInt("P", nullptr, &pageFirst); } if ((pageFirst < 0) || (pageFirst >= getNumPages())) { diff --git a/Build/source/libs/poppler/poppler-src/poppler/Link.cc b/Build/source/libs/poppler/poppler-src/poppler/Link.cc index a927c214f9a..326cfb97903 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Link.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Link.cc @@ -57,7 +57,7 @@ LinkAction *LinkAction::parseDest(Object *obj) { action = new LinkGoTo(obj); if (!action->isOk()) { delete action; - return NULL; + return nullptr; } return action; } @@ -68,7 +68,7 @@ LinkAction *LinkAction::parseAction(Object *obj, GooString *baseURI) { if (!obj->isDict()) { error(errSyntaxWarning, -1, "parseAction: Bad annotation action for URI '{0:s}'", baseURI ? baseURI->getCString() : "NULL"); - return NULL; + return nullptr; } Object obj2 = obj->dictLookup("S"); @@ -127,12 +127,12 @@ LinkAction *LinkAction::parseAction(Object *obj, GooString *baseURI) { } else { error(errSyntaxWarning, -1, "parseAction: Unknown annotation action object: URI = '{0:s}'", baseURI ? baseURI->getCString() : "NULL"); - action = NULL; + action = nullptr; } if (action && !action->isOk()) { delete action; - return NULL; + return nullptr; } return action; } @@ -362,8 +362,8 @@ LinkDest::LinkDest(LinkDest *dest) { //------------------------------------------------------------------------ LinkGoTo::LinkGoTo(Object *destObj) { - dest = NULL; - namedDest = NULL; + dest = nullptr; + namedDest = nullptr; // named destination if (destObj->isName()) { @@ -376,7 +376,7 @@ LinkGoTo::LinkGoTo(Object *destObj) { dest = new LinkDest(destObj->getArray()); if (!dest->isOk()) { delete dest; - dest = NULL; + dest = nullptr; } // error @@ -397,9 +397,9 @@ LinkGoTo::~LinkGoTo() { //------------------------------------------------------------------------ LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) { - fileName = NULL; - dest = NULL; - namedDest = NULL; + fileName = nullptr; + dest = nullptr; + namedDest = nullptr; // get file name Object obj1 = getFileSpecNameForPlatform (fileSpecObj); @@ -418,7 +418,7 @@ LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) { dest = new LinkDest(destObj->getArray()); if (!dest->isOk()) { delete dest; - dest = NULL; + dest = nullptr; } // error @@ -443,8 +443,8 @@ LinkGoToR::~LinkGoToR() { LinkLaunch::LinkLaunch(Object *actionObj) { - fileName = NULL; - params = NULL; + fileName = nullptr; + params = nullptr; if (actionObj->isDict()) { Object obj1 = actionObj->dictLookup("F"); @@ -494,7 +494,7 @@ LinkURI::LinkURI(Object *uriObj, GooString *baseURI) { int n; char c; - uri = NULL; + uri = nullptr; if (uriObj->isString()) { uri2 = uriObj->getString(); n = (int)strcspn(uri2->getCString(), "/:"); @@ -539,7 +539,7 @@ LinkURI::~LinkURI() { //------------------------------------------------------------------------ LinkNamed::LinkNamed(Object *nameObj) { - name = NULL; + name = nullptr; if (nameObj->isName()) { name = new GooString(nameObj->getName()); } @@ -557,7 +557,7 @@ LinkNamed::~LinkNamed() { LinkMovie::LinkMovie(Object *obj) { annotRef.num = -1; - annotTitle = NULL; + annotTitle = nullptr; Object tmp = obj->dictLookupNF("Annotation"); if (tmp.isRef()) { @@ -569,7 +569,7 @@ LinkMovie::LinkMovie(Object *obj) { annotTitle = tmp.getString()->copy(); } - if ((annotTitle == NULL) && (annotRef.num == -1)) { + if ((annotTitle == nullptr) && (annotRef.num == -1)) { error(errSyntaxError, -1, "Movie action is missing both the Annot and T keys"); } @@ -608,7 +608,7 @@ LinkSound::LinkSound(Object *soundObj) { sync = gFalse; repeat = gFalse; mix = gFalse; - sound = NULL; + sound = nullptr; if (soundObj->isDict()) { // volume @@ -647,8 +647,8 @@ LinkSound::~LinkSound() { LinkRendition::LinkRendition(Object *obj) { operation = NoRendition; - media = NULL; - js = NULL; + media = nullptr; + js = nullptr; int operationCode = -1; if (obj->isDict()) { @@ -671,8 +671,6 @@ LinkRendition::LinkRendition(Object *obj) { if (!js && (operationCode < 0 || operationCode > 4)) { error(errSyntaxWarning, -1, "Invalid Rendition Action: unrecognized operation valued: {0:d}", operationCode); } else { - Object obj1; - // retrieve rendition object renditionObj = obj->dictLookup("R"); if (renditionObj.isDict()) { @@ -723,7 +721,7 @@ LinkRendition::~LinkRendition() { //------------------------------------------------------------------------ LinkJavaScript::LinkJavaScript(Object *jsObj) { - js = NULL; + js = nullptr; if (jsObj->isString()) { js = new GooString(jsObj->getString()); @@ -750,7 +748,7 @@ LinkOCGState::LinkOCGState(Object *obj) { Object obj1 = obj->dictLookup("State"); if (obj1.isArray()) { - StateList *stList = NULL; + StateList *stList = nullptr; for (int i = 0; i < obj1.arrayGetLength(); ++i) { Object obj2 = obj1.arrayGetNF(i); @@ -770,7 +768,7 @@ LinkOCGState::LinkOCGState(Object *obj) { } else { error(errSyntaxWarning, -1, "Invalid name '{0:s}' in OCG Action state array", name); delete stList; - stList = NULL; + stList = nullptr; } } else if (obj2.isRef()) { if (stList) { @@ -792,7 +790,7 @@ LinkOCGState::LinkOCGState(Object *obj) { } else { error(errSyntaxWarning, -1, "Invalid OCGState action"); delete stateList; - stateList = NULL; + stateList = nullptr; } obj1 = obj->dictLookup("PreserveRB"); @@ -831,7 +829,7 @@ Links::Links(Annots *annots) { int size; int i; - links = NULL; + links = nullptr; size = 0; numLinks = 0; @@ -870,7 +868,7 @@ LinkAction *Links::find(double x, double y) const { return links[i]->getAction(); } } - return NULL; + return nullptr; } GBool Links::onLink(double x, double y) const { diff --git a/Build/source/libs/poppler/poppler-src/poppler/Link.h b/Build/source/libs/poppler/poppler-src/poppler/Link.h index df44a49ff41..05892cff43a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Link.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Link.h @@ -17,6 +17,7 @@ // Copyright (C) 2008 Hugo Mercier // Copyright (C) 2010, 2011 Carlos Garcia Campos // Copyright (C) 2012 Tobias Koening +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -62,6 +63,10 @@ enum LinkActionKind { class LinkAction { public: + LinkAction() = default; + LinkAction(const LinkAction &) = delete; + LinkAction& operator=(const LinkAction &other) = delete; + // Destructor. virtual ~LinkAction() {} @@ -429,8 +434,10 @@ public: enum State { On, Off, Toggle}; struct StateList { - StateList() { list = NULL; } + StateList() { list = nullptr; } ~StateList(); + StateList(const StateList &) = delete; + StateList& operator=(const StateList &) = delete; State st; GooList *list; }; @@ -481,6 +488,9 @@ public: // Destructor. ~Links(); + Links(const Links &) = delete; + Links& operator=(const Links &) = delete; + // Iterate through list of links. int getNumLinks() const { return numLinks; } AnnotLink *getLink(int i) const { return links[i]; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc index 7fdd8f54c53..4920ad32526 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.cc @@ -18,12 +18,12 @@ MarkedContentOutputDev::MarkedContentOutputDev(int mcidA): - currentFont(NULL), - currentText(NULL), + currentFont(nullptr), + currentText(nullptr), mcid(mcidA), pageWidth(0.0), pageHeight(0.0), - unicodeMap(NULL) + unicodeMap(nullptr) { currentColor.r = currentColor.g = currentColor.b = 0; } @@ -48,7 +48,7 @@ void MarkedContentOutputDev::endSpan() currentFont, currentColor)); } - currentText = NULL; + currentText = nullptr; } @@ -73,7 +73,7 @@ void MarkedContentOutputDev::beginMarkedContent(char *name, Dict *properties) { int id = -1; if (properties) - properties->lookupInt("MCID", NULL, &id); + properties->lookupInt("MCID", nullptr, &id); if (id == -1) return; @@ -102,9 +102,9 @@ bool MarkedContentOutputDev::needFontChange(GfxFont* font) const return gFalse; if (!currentFont) - return font != NULL && font->isOk(); + return font != nullptr && font->isOk(); - if (font == NULL) + if (font == nullptr) return gTrue; // Two non-null valid fonts are the same if they point to the same Ref @@ -154,11 +154,11 @@ void MarkedContentOutputDev::drawChar(GfxState *state, currentColor = color; if (fontChange) { - if (currentFont != NULL) { + if (currentFont != nullptr) { currentFont->decRefCnt(); - currentFont = NULL; + currentFont = nullptr; } - if (state->getFont() != NULL) { + if (state->getFont() != nullptr) { currentFont = state->getFont(); currentFont->incRefCnt(); } @@ -197,7 +197,7 @@ void MarkedContentOutputDev::drawChar(GfxState *state, char buf[8]; int n = unicodeMap->mapUnicode(u[i], buf, sizeof(buf)); if (n > 0) { - if (currentText == NULL) + if (currentText == nullptr) currentText = new GooString(); currentText->append(buf, n); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h index 5b9de05fdbf..e2b69aede5a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/MarkedContentOutputDev.h @@ -5,6 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2013 Igalia S.L. +// Copyright 2018 Albert Astals Cid // //======================================================================== @@ -72,6 +73,9 @@ private: font->decRefCnt(); delete text; } + + Data(const Data &) = delete; + Data& operator=(const Data &) = delete; }; Data *data; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Movie.cc b/Build/source/libs/poppler/poppler-src/poppler/Movie.cc index fa709b3b7db..3cc922ff378 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Movie.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Movie.cc @@ -173,7 +173,7 @@ void MovieActivationParameters::parseMovieActivation(Object* aDict) { } void Movie::parseMovie (Object *movieDict) { - fileName = NULL; + fileName = nullptr; rotationAngle = 0; width = -1; height = -1; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Movie.h b/Build/source/libs/poppler/poppler-src/poppler/Movie.h index c0fcd8f4ce5..65379167da1 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Movie.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Movie.h @@ -5,7 +5,7 @@ //--------------------------------------------------------------------------------- // Hugo Mercier (c) 2008 // Carlos Garcia Campos (c) 2010 -// Albert Astals Cid (c) 2017 +// Albert Astals Cid (c) 2017, 2018 // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -74,6 +74,7 @@ class Movie { Movie(Object *objMovie); Movie(const Movie &movie); ~Movie(); + Movie& operator=(const Movie &) = delete; GBool isOk() { return ok; } MovieActivationParameters* getActivationParameters() { return &MA; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc b/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc index 5448dc4ce10..0ac7c7b6278 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.cc @@ -32,7 +32,7 @@ NameToCharCode::NameToCharCode() { len = 0; tab = (NameToCharCodeEntry *)gmallocn(size, sizeof(NameToCharCodeEntry)); for (i = 0; i < size; ++i) { - tab[i].name = NULL; + tab[i].name = nullptr; } } @@ -58,7 +58,7 @@ void NameToCharCode::add(const char *name, CharCode c) { size = 2*size + 1; tab = (NameToCharCodeEntry *)gmallocn(size, sizeof(NameToCharCodeEntry)); for (h = 0; h < size; ++h) { - tab[h].name = NULL; + tab[h].name = nullptr; } for (i = 0; i < oldSize; ++i) { if (oldTab[i].name) { diff --git a/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h b/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h index 5b1092bb96b..da4c9c6ae7d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h +++ b/Build/source/libs/poppler/poppler-src/poppler/NameToCharCode.h @@ -6,6 +6,20 @@ // //======================================================================== +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2018 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + #ifndef NAMETOCHARCODE_H #define NAMETOCHARCODE_H @@ -25,6 +39,9 @@ public: NameToCharCode(); ~NameToCharCode(); + NameToCharCode(const NameToCharCode &) = delete; + NameToCharCode& operator=(const NameToCharCode &) = delete; + void add(const char *name, CharCode c); CharCode lookup(const char *name); diff --git a/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h b/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h index 827edbaee60..7345eabc6ba 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h +++ b/Build/source/libs/poppler/poppler-src/poppler/NameToUnicodeTable.h @@ -4274,7 +4274,7 @@ static struct NameToUnicodeTab nameToUnicodeTextTab[] = { {0x007c, "|"}, {0x007d, "}"}, {0x007e, "~"}, - { 0, NULL } + { 0, nullptr } }; // map ZapfDingbats names to Unicode @@ -4480,5 +4480,5 @@ static struct NameToUnicodeTab nameToUnicodeZapfDingbatsTab[] = { {0x275c, "a98"}, {0x275d, "a99"}, {0x2720, "a9"}, - { 0, NULL } + { 0, nullptr } }; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Object.h b/Build/source/libs/poppler/poppler-src/poppler/Object.h index f2ca20d1559..87f1b24adc0 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Object.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Object.h @@ -19,7 +19,7 @@ // Copyright (C) 2009 Jakub Wilk // Copyright (C) 2012 Fabio D'Urso // Copyright (C) 2013 Thomas Freitag -// Copyright (C) 2013, 2017 Adrian Johnson +// Copyright (C) 2013, 2017, 2018 Adrian Johnson // Copyright (C) 2013 Adrian Perez de Castro // Copyright (C) 2016 Jakub Alba // @@ -86,6 +86,14 @@ struct Ref { int gen; // generation number }; +struct RefCompare { + bool operator() (const Ref& lhs, const Ref& rhs) const { + if (lhs.num != rhs.num) + return lhs.num < rhs.num; + return lhs.gen < rhs.gen; + } +}; + //------------------------------------------------------------------------ // object types //------------------------------------------------------------------------ @@ -137,7 +145,7 @@ enum ObjType { class Object { public: // clear the anonymous union as best we can -- clear at least a pointer - void zeroUnion() { this->cString = NULL; } + void zeroUnion() { this->cString = nullptr; } // Default constructor. Object(): @@ -232,7 +240,7 @@ public: // After takeString() the only method that should be called for the object is free() // because the object it's not expected to have a NULL string. GooString *takeString() { - OBJECT_TYPE_CHECK(objString); GooString *s = string; string = NULL; return s; } + OBJECT_TYPE_CHECK(objString); GooString *s = string; string = nullptr; return s; } char *getName() const { OBJECT_TYPE_CHECK(objName); return cString; } Array *getArray() const { OBJECT_TYPE_CHECK(objArray); return array; } Dict *getDict() const { OBJECT_TYPE_CHECK(objDict); return dict; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc b/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc index d2e878e4257..b42ae56f879 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.cc @@ -41,7 +41,7 @@ OCGs::OCGs(Object *ocgObject, XRef *xref) : // we need to parse the dictionary here, and build optionalContentGroups ok = gTrue; optionalContentGroups = new GooList(); - display = NULL; + display = nullptr; Object ocgList = ocgObject->dictLookup("OCGs"); if (!ocgList.isArray()) { @@ -141,7 +141,7 @@ bool OCGs::hasOCGs() OptionalContentGroup* OCGs::findOcgByRef( const Ref &ref) { //TODO: make this more efficient - OptionalContentGroup *ocg = NULL; + OptionalContentGroup *ocg = nullptr; for (int i=0; i < optionalContentGroups->getLength(); ++i) { ocg = (OptionalContentGroup*)optionalContentGroups->get(i); if ( (ocg->getRef().num == ref.num) && (ocg->getRef().gen == ref.gen) ) { @@ -150,7 +150,7 @@ OptionalContentGroup* OCGs::findOcgByRef( const Ref &ref) } // not found - return NULL; + return nullptr; } OCDisplayNode *OCGs::getDisplayRoot() @@ -331,7 +331,7 @@ bool OCGs::anyOff( Array *ocgArray ) //------------------------------------------------------------------------ -OptionalContentGroup::OptionalContentGroup(Dict *ocgDict) : m_name(NULL) +OptionalContentGroup::OptionalContentGroup(Dict *ocgDict) : m_name(nullptr) { Object ocgName = ocgDict->lookup("Name"); if (!ocgName.isString()) { @@ -404,7 +404,7 @@ OCDisplayNode *OCDisplayNode::parse(Object *obj, OCGs *oc, if (recursion > displayNodeRecursionLimit) { error(errSyntaxError, -1, "Loop detected in optional content order"); - return NULL; + return nullptr; } if (obj->isRef()) { if ((ocgA = oc->findOcgByRef(obj->getRef()))) { @@ -413,7 +413,7 @@ OCDisplayNode *OCDisplayNode::parse(Object *obj, OCGs *oc, } Object obj2 = obj->fetch(xref); if (!obj2.isArray()) { - return NULL; + return nullptr; } i = 0; if (obj2.arrayGetLength() >= 1) { @@ -442,21 +442,21 @@ OCDisplayNode *OCDisplayNode::parse(Object *obj, OCGs *oc, } OCDisplayNode::OCDisplayNode() { - name = NULL; - ocg = NULL; - children = NULL; + name = nullptr; + ocg = nullptr; + children = nullptr; } OCDisplayNode::OCDisplayNode(GooString *nameA) { name = new GooString(nameA); - ocg = NULL; - children = NULL; + ocg = nullptr; + children = nullptr; } OCDisplayNode::OCDisplayNode(OptionalContentGroup *ocgA) { - name = (ocgA->getName()) ? ocgA->getName()->copy() : NULL; + name = (ocgA->getName()) ? ocgA->getName()->copy() : nullptr; ocg = ocgA; - children = NULL; + children = nullptr; } void OCDisplayNode::addChild(OCDisplayNode *child) { @@ -478,7 +478,7 @@ GooList *OCDisplayNode::takeChildren() { GooList *childrenA; childrenA = children; - children = NULL; + children = nullptr; return childrenA; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h b/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h index 2e416462003..a8c05b30f85 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h +++ b/Build/source/libs/poppler/poppler-src/poppler/OptionalContent.h @@ -4,7 +4,7 @@ // // Copyright 2007 Brad Hards // Copyright 2008 Carlos Garcia Campos -// Copyright 2013 Albert Astals Cid +// Copyright 2013, 2018 Albert Astals Cid // // Released under the GPL (version 2, or later, at your option) // @@ -35,6 +35,9 @@ public: OCGs(Object *ocgObject, XRef *xref); ~OCGs(); + OCGs(const OCGs &) = delete; + OCGs& operator=(const OCGs &) = delete; + // Is OCGS valid? GBool isOk() { return ok; } @@ -90,6 +93,9 @@ public: ~OptionalContentGroup(); + OptionalContentGroup(const OptionalContentGroup &) = delete; + OptionalContentGroup& operator=(const OptionalContentGroup &) = delete; + GooString* getName() const; Ref getRef() const; @@ -118,6 +124,9 @@ public: OCDisplayNode(); ~OCDisplayNode(); + OCDisplayNode(const OCDisplayNode &) = delete; + OCDisplayNode& operator=(const OCDisplayNode &) = delete; + GooString *getName() { return name; } OptionalContentGroup *getOCG() { return ocg; } int getNumChildren(); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Outline.cc b/Build/source/libs/poppler/poppler-src/poppler/Outline.cc index 82f286633e7..bc8768f1501 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Outline.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Outline.cc @@ -47,7 +47,7 @@ Outline::Outline(Object *outlineObj, XRef *xref) { return; } Object first = outlineObj->dictLookupNF("First"); - items = OutlineItem::readItemList(&first, xref); + items = OutlineItem::readItemList(nullptr, &first, xref); } Outline::~Outline() { @@ -58,13 +58,15 @@ Outline::~Outline() { //------------------------------------------------------------------------ -OutlineItem::OutlineItem(Dict *dict, XRef *xrefA) { +OutlineItem::OutlineItem(Dict *dict, int refNumA, OutlineItem *parentA, XRef *xrefA) { Object obj1; + refNum = refNumA; + parent = parentA; xref = xrefA; - title = NULL; - action = NULL; - kids = NULL; + title = nullptr; + action = nullptr; + kids = nullptr; obj1 = dict->lookup("Title"); @@ -108,28 +110,29 @@ OutlineItem::~OutlineItem() { } } -GooList *OutlineItem::readItemList(Object *firstItemRef, XRef *xrefA) { - GooList *items; - char* alreadyRead; - OutlineItem *item; - Object *p; +GooList *OutlineItem::readItemList(OutlineItem *parent, Object *firstItemRef, XRef *xrefA) { + GooList *items = new GooList(); - items = new GooList(); - - alreadyRead = (char *)gmalloc(xrefA->getNumObjects()); + char* alreadyRead = (char *)gmalloc(xrefA->getNumObjects()); memset(alreadyRead, 0, xrefA->getNumObjects()); - p = firstItemRef; + OutlineItem *parentO = parent; + while (parentO) { + alreadyRead[parentO->refNum] = 1; + parentO = parentO->parent; + } + + Object *p = firstItemRef; while (p->isRef() && (p->getRefNum() >= 0) && - (p->getRefNum() < xrefA->getNumObjects()) && + (p->getRefNum() < xrefA->getNumObjects()) && !alreadyRead[p->getRefNum()]) { Object obj = p->fetch(xrefA); if (!obj.isDict()) { break; } alreadyRead[p->getRefNum()] = 1; - item = new OutlineItem(obj.getDict(), xrefA); + OutlineItem *item = new OutlineItem(obj.getDict(), p->getRefNum(), parent, xrefA); items->append(item); p = &item->nextRef; } @@ -138,7 +141,7 @@ GooList *OutlineItem::readItemList(Object *firstItemRef, XRef *xrefA) { if (!items->getLength()) { delete items; - items = NULL; + items = nullptr; } return items; @@ -146,13 +149,13 @@ GooList *OutlineItem::readItemList(Object *firstItemRef, XRef *xrefA) { void OutlineItem::open() { if (!kids) { - kids = readItemList(&firstRef, xref); + kids = readItemList(this, &firstRef, xref); } } void OutlineItem::close() { if (kids) { deleteGooList(kids, OutlineItem); - kids = NULL; + kids = nullptr; } } diff --git a/Build/source/libs/poppler/poppler-src/poppler/Outline.h b/Build/source/libs/poppler/poppler-src/poppler/Outline.h index 46775d597a1..1584ddcb129 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Outline.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Outline.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Marco Pesenti Gritti -// Copyright (C) 2016 Albert Astals Cid +// Copyright (C) 2016, 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -44,6 +44,9 @@ public: Outline(Object *outlineObj, XRef *xref); ~Outline(); + Outline(const Outline &) = delete; + Outline& operator=(const Outline &) = delete; + GooList *getItems() { return items; } private: @@ -57,10 +60,13 @@ private: class OutlineItem { public: - OutlineItem(Dict *dict, XRef *xrefA); + OutlineItem(Dict *dict, int refNumA, OutlineItem *parentA, XRef *xrefA); ~OutlineItem(); - static GooList *readItemList(Object *firstItemRef, XRef *xrefA); + OutlineItem(const OutlineItem &) = delete; + OutlineItem& operator=(const OutlineItem &) = delete; + + static GooList *readItemList(OutlineItem *parent, Object *firstItemRef, XRef *xrefA); void open(); void close(); @@ -74,6 +80,8 @@ public: private: + int refNum; + OutlineItem *parent; XRef *xref; Unicode *title; int titleLen; diff --git a/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc index 0acdcbdeb80..8afa7052894 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/OutputDev.cc @@ -143,7 +143,7 @@ void OutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, int maskWidth, int maskHeight, GBool maskInvert, GBool maskInterpolate) { - drawImage(state, ref, str, width, height, colorMap, interpolate, NULL, gFalse); + drawImage(state, ref, str, width, height, colorMap, interpolate, nullptr, gFalse); } void OutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, @@ -154,7 +154,7 @@ void OutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, int maskWidth, int maskHeight, GfxImageColorMap *maskColorMap, GBool maskInterpolate) { - drawImage(state, ref, str, width, height, colorMap, interpolate, NULL, gFalse); + drawImage(state, ref, str, width, height, colorMap, interpolate, nullptr, gFalse); } void OutputDev::endMarkedContent(GfxState *state) { @@ -188,7 +188,7 @@ void OutputDev::startProfile() { GooHash *OutputDev::endProfile() { GooHash *profile = profileHash; - profileHash = NULL; + profileHash = nullptr; return profile; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h index 107c94d2a2d..aca84cdab5e 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/OutputDev.h @@ -79,7 +79,7 @@ public: : iccColorSpaceCache(5) #endif { - profileHash = NULL; + profileHash = nullptr; } // Destructor. diff --git a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc index 90f039d8ec8..6789c39f19d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005, 2006, 2008 Brad Hards -// Copyright (C) 2005, 2007-2009, 2011-2017 Albert Astals Cid +// Copyright (C) 2005, 2007-2009, 2011-2018 Albert Astals Cid // Copyright (C) 2008 Julien Rebetez // Copyright (C) 2008, 2010 Pino Toscano // Copyright (C) 2008, 2010, 2011 Carlos Garcia Campos @@ -36,6 +36,8 @@ // Copyright (C) 2015 André Esser // Copyright (C) 2016 Jakub Alba // Copyright (C) 2017 Jean Ghali +// Copyright (C) 2017 Fredrik Fornwall +// Copyright (C) 2018 Ben Timby // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -115,19 +117,19 @@ void PDFDoc::init() #endif ok = gFalse; errCode = errNone; - fileName = NULL; - file = NULL; - str = NULL; - xref = NULL; - linearization = NULL; - catalog = NULL; - hints = NULL; + fileName = nullptr; + file = nullptr; + str = nullptr; + xref = nullptr; + linearization = nullptr; + catalog = nullptr; + hints = nullptr; #ifndef DISABLE_OUTLINE - outline = NULL; + outline = nullptr; #endif startXRefPos = -1; - secHdlr = NULL; - pageCache = NULL; + secHdlr = nullptr; + pageCache = nullptr; } PDFDoc::PDFDoc() @@ -162,7 +164,7 @@ PDFDoc::PDFDoc(GooString *fileNameA, GooString *ownerPassword, #else file = GooFile::open(fileName); #endif - if (file == NULL) { + if (file == nullptr) { // fopen() has failed. // Keep a copy of the errno returned by fopen so that it can be // referred to later. @@ -238,7 +240,7 @@ PDFDoc::PDFDoc(BaseStream *strA, GooString *ownerPassword, fileNameU[n] = L'\0'; #endif } else { - fileName = NULL; + fileName = nullptr; #ifdef _WIN32 fileNameU = NULL; #endif @@ -249,6 +251,13 @@ PDFDoc::PDFDoc(BaseStream *strA, GooString *ownerPassword, GBool PDFDoc::setup(GooString *ownerPassword, GooString *userPassword) { pdfdocLocker(); + + if (str->getLength() <= 0) + { + error(errSyntaxError, -1, "Document stream is empty"); + return gFalse; + } + str->setPos(0, -1); if (str->getPos() < 0) { @@ -296,7 +305,7 @@ GBool PDFDoc::setup(GooString *ownerPassword, GooString *userPassword) { // try one more time to contruct the Catalog, maybe the problem is damaged XRef delete catalog; delete xref; - xref = new XRef(str, 0, 0, NULL, true); + xref = new XRef(str, 0, 0, nullptr, true); catalog = new Catalog(this); } @@ -400,11 +409,16 @@ void PDFDoc::checkHeader() { char *p; char *tokptr; int i; + int c; pdfMajorVersion = 0; pdfMinorVersion = 0; for (i = 0; i < headerSearchSize; ++i) { - hdrBuf[i] = str->getChar(); + if ((c = str->getChar()) == EOF) { + error(errSyntaxWarning, -1, "EOF while reading header (continuing anyway)"); + return; + } + hdrBuf[i] = c; } hdrBuf[headerSearchSize] = '\0'; for (i = 0; i < headerSearchSize - 5; ++i) { @@ -463,14 +477,14 @@ GBool PDFDoc::checkEncryption(GooString *ownerPassword, GooString *userPassword) std::vector PDFDoc::getSignatureWidgets() { int num_pages = getNumPages(); - FormPageWidgets *page_widgets = NULL; + FormPageWidgets *page_widgets = nullptr; std::vector widget_vector; for (int i = 1; i <= num_pages; i++) { Page *p = getCatalog()->getPage(i); if (p) { page_widgets = p->getFormWidgets(); - for (int j = 0; page_widgets != NULL && j < page_widgets->getNumWidgets(); j++) { + for (int j = 0; page_widgets != nullptr && j < page_widgets->getNumWidgets(); j++) { if (page_widgets->getWidget(j)->getType() == formSignature) { widget_vector.push_back(static_cast(page_widgets->getWidget(j))); } @@ -536,7 +550,7 @@ void PDFDoc::displayPageSlice(OutputDev *out, int page, Links *PDFDoc::getLinks(int page) { Page *p = getPage(page); if (!p) { - return new Links (NULL); + return new Links (nullptr); } return p->getLinks(); } @@ -556,7 +570,7 @@ Linearization *PDFDoc::getLinearization() } GBool PDFDoc::checkLinearization() { - if (linearization == NULL) + if (linearization == nullptr) return gFalse; if (linearizationState == 1) return gTrue; @@ -645,7 +659,7 @@ void PDFDoc::setDocInfoStringEntry(const char *key, GooString *value) GooString *PDFDoc::getDocInfoStringEntry(const char *key) { Object infoObj = getDocInfo(); if (!infoObj.isDict()) { - return NULL; + return nullptr; } Object entryObj = infoObj.dictLookup(key); @@ -655,7 +669,7 @@ GooString *PDFDoc::getDocInfoStringEntry(const char *key) { if (entryObj.isString()) { result = entryObj.takeString(); } else { - result = NULL; + result = nullptr; } return result; @@ -730,6 +744,11 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) FILE *f; OutStream *outStr; XRef *yRef, *countRef; + + if (file && file->modificationTimeChangedSinceOpen()) + return errFileChangedSinceOpen; + + int rootNum = getXRef()->getNumObjects() + 1; // Make sure that special flags are set, because we are going to read @@ -745,7 +764,7 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) error(errInternal, -1, "Illegal pageNo: {0:d}({1:d})", pageNo, getNumPages() ); return errOpenFile; } - PDFRectangle *cropBox = NULL; + PDFRectangle *cropBox = nullptr; if (getCatalog()->getPage(pageNo)->isCropped()) { cropBox = getCatalog()->getPage(pageNo)->getCropBox(); } @@ -764,7 +783,7 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) yRef = new XRef(getXRef()->getTrailerDict()); - if (secHdlr != NULL && !secHdlr->isUnencrypted()) { + if (secHdlr != nullptr && !secHdlr->isUnencrypted()) { yRef->setEncryption(secHdlr->getPermissionFlags(), secHdlr->getOwnerPasswordOk(), fileKey, keyLength, secHdlr->getEncVersion(), secHdlr->getEncRevision(), encAlgorithm); } @@ -835,7 +854,7 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) if (j > 0) outStr->printf(" "); Object value = catDict->getValNF(j); outStr->printf("/%s ", key); - writeObject(&value, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0); + writeObject(&value, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0); } } outStr->printf(">>\nendobj\n"); @@ -845,7 +864,7 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) outStr->printf("<< /Type /Pages /Kids [ %d 0 R ] /Count 1 ", rootNum + 2); if (resourcesObj.isDict()) { outStr->printf("/Resources "); - writeObject(&resourcesObj, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0); + writeObject(&resourcesObj, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0); } outStr->printf(">>\n"); outStr->printf("endobj\n"); @@ -861,7 +880,7 @@ int PDFDoc::savePageAs(GooString *name, int pageNo) outStr->printf("/Parent %d 0 R", rootNum + 1); } else { outStr->printf("/%s ", key); - writeObject(&value, outStr, getXRef(), 0, NULL, cryptRC4, 0, 0, 0); + writeObject(&value, outStr, getXRef(), 0, nullptr, cryptRC4, 0, 0, 0); } } outStr->printf(" >>\nendobj\n"); @@ -901,6 +920,9 @@ int PDFDoc::saveAs(GooString *name, PDFWriteMode mode) { } int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) { + if (file && file->modificationTimeChangedSinceOpen()) + return errFileChangedSinceOpen; + if (!xref->isModified() && mode == writeStandard) { // simply copy the original file saveWithoutChangesAs (outStr); @@ -934,6 +956,9 @@ int PDFDoc::saveWithoutChangesAs(GooString *name) { int PDFDoc::saveWithoutChangesAs(OutStream *outStr) { int c; + + if (file && file->modificationTimeChangedSinceOpen()) + return errFileChangedSinceOpen; BaseStream *copyStr = str->copy(); copyStr->reset(); @@ -997,7 +1022,7 @@ void PDFDoc::saveIncrementalUpdate (OutStream* outStr) Goffset uxrefOffset = outStr->getPos(); int numobjects = xref->getNumObjects(); - const char *fileNameA = fileName ? fileName->getCString() : NULL; + const char *fileNameA = fileName ? fileName->getCString() : nullptr; Ref rootRef, uxrefStreamRef; rootRef.num = getXRef()->getRootNum(); rootRef.gen = getXRef()->getRootGen(); @@ -1059,7 +1084,7 @@ void PDFDoc::saveCompleteRewrite (OutStream* outStr) Goffset offset = writeObjectHeader(&ref, outStr); // Write unencrypted objects in unencrypted form if (xref->getEntry(i)->getFlag(XRefEntry::Unencrypted)) { - writeObject(&obj1, outStr, NULL, cryptRC4, 0, 0, 0); + writeObject(&obj1, outStr, nullptr, cryptRC4, 0, 0, 0); } else { writeObject(&obj1, outStr, fileKey, encAlgorithm, keyLength, ref.num, ref.gen); } @@ -1157,7 +1182,7 @@ void PDFDoc::writeString (GooString* s, OutStream* outStr, Guchar *fileKey, CryptAlgorithm encAlgorithm, int keyLength, int objNum, int objGen) { // Encrypt string if encryption is enabled - GooString *sEnc = NULL; + GooString *sEnc = nullptr; if (fileKey) { EncryptStream *enc = new EncryptStream(new MemStream(s->getCString(), 0, s->getLength(), Object(objNull)), fileKey, encAlgorithm, keyLength, objNum, objGen); @@ -1272,7 +1297,7 @@ void PDFDoc::writeObject (Object* obj, OutStream* outStr, XRef *xRef, Guint numO //we write the stream unencoded => TODO: write stream encoder // Encrypt stream - EncryptStream *encStream = NULL; + EncryptStream *encStream = nullptr; GBool removeFilter = gTrue; if (stream->getKind() == strWeird && fileKey) { Object filter = stream->getDict()->lookup("Filter"); @@ -1298,7 +1323,7 @@ void PDFDoc::writeObject (Object* obj, OutStream* outStr, XRef *xRef, Guint numO } else { removeFilter = gFalse; } - } else if (fileKey != NULL) { // Encrypt stream + } else if (fileKey != nullptr) { // Encrypt stream encStream = new EncryptStream(stream, fileKey, encAlgorithm, keyLength, objNum, objGen); encStream->setAutoDelete(gFalse); stream = encStream; @@ -1378,7 +1403,7 @@ Object PDFDoc::createTrailerDict(int uxrefSize, GBool incrUpdate, Goffset startx // - values of entry in information dictionnary GooString message; char buffer[256]; - sprintf(buffer, "%i", (int)time(NULL)); + sprintf(buffer, "%i", (int)time(nullptr)); message.append(buffer); if (fileName) @@ -1455,7 +1480,7 @@ void PDFDoc::writeXRefTableTrailer(Object &&trailerDict, XRef *uxref, GBool writ { uxref->writeTableToFile( outStr, writeAllEntries ); outStr->printf( "trailer\r\n"); - writeDictionnary(trailerDict.getDict(), outStr, xRef, 0, NULL, cryptRC4, 0, 0, 0, nullptr); + writeDictionnary(trailerDict.getDict(), outStr, xRef, 0, nullptr, cryptRC4, 0, 0, 0, nullptr); outStr->printf( "\r\nstartxref\r\n"); outStr->printf( "%lli\r\n", uxrefOffset); outStr->printf( "%%%%EOF\r\n"); @@ -1472,7 +1497,7 @@ void PDFDoc::writeXRefStreamTrailer (Object &&trailerDict, XRef *uxref, Ref *uxr MemStream *mStream = new MemStream( stmData.getCString(), 0, stmData.getLength(), std::move(trailerDict) ); writeObjectHeader(uxrefStreamRef, outStr); Object obj1(static_cast(mStream)); - writeObject(&obj1, outStr, xRef, 0, NULL, cryptRC4, 0, 0, 0); + writeObject(&obj1, outStr, xRef, 0, nullptr, cryptRC4, 0, 0, 0); writeObjectFooter(outStr); outStr->printf( "startxref\r\n"); @@ -1483,7 +1508,7 @@ void PDFDoc::writeXRefStreamTrailer (Object &&trailerDict, XRef *uxref, Ref *uxr void PDFDoc::writeXRefTableTrailer(Goffset uxrefOffset, XRef *uxref, GBool writeAllEntries, int uxrefSize, OutStream* outStr, GBool incrUpdate) { - const char *fileNameA = fileName ? fileName->getCString() : NULL; + const char *fileNameA = fileName ? fileName->getCString() : nullptr; // file size (doesn't include the trailer) unsigned int fileSize = 0; int c; @@ -1503,7 +1528,7 @@ void PDFDoc::writeXRefTableTrailer(Goffset uxrefOffset, XRef *uxref, GBool write void PDFDoc::writeHeader(OutStream *outStr, int major, int minor) { outStr->printf("%%PDF-%d.%d\n", major, minor); - outStr->printf("%%\xE2\xE3\xCF\xD3\n"); + outStr->printf("%%%c%c%c%c\n", 0xE2, 0xE3, 0xCF, 0xD3); } void PDFDoc::markDictionnary (Dict* dict, XRef * xRef, XRef *countRef, Guint numOffset, int oldRefNum, int newRefNum, std::set *alreadyMarkedDicts) @@ -1522,7 +1547,6 @@ void PDFDoc::markDictionnary (Dict* dict, XRef * xRef, XRef *countRef, Guint num alreadyMarkedDicts->insert(dict); } - Object obj1; for (int i=0; igetLength(); i++) { const char *key = dict->getKey(i); if (strcmp(key, "Annots") != 0) { @@ -1614,7 +1638,7 @@ void PDFDoc::replacePageDict(int pageNo, int rotate, Object mediaBoxObject(mediaBoxArray); Object trimBoxObject = mediaBoxObject.copy(); pageDict->add(copyString("MediaBox"), std::move(mediaBoxObject)); - if (cropBox != NULL) { + if (cropBox != nullptr) { Array *cropBoxArray = new Array(getXRef()); cropBoxArray->add(Object(cropBox->x1)); cropBoxArray->add(Object(cropBox->y1)); @@ -1673,8 +1697,8 @@ GBool PDFDoc::markAnnotations(Object *annotsObj, XRef *xRef, XRef *countRef, Gui } else { Object page = getXRef()->fetch(obj2.getRef().num, obj2.getRef().gen); if (page.isDict()) { - Dict *dict = page.getDict(); - Object pagetype = dict->lookup("Type"); + Dict *pageDict = page.getDict(); + Object pagetype = pageDict->lookup("Type"); if (!pagetype.isName() || strcmp(pagetype.getName(), "Page") != 0) { continue; } @@ -1789,9 +1813,9 @@ Guint PDFDoc::writePageObjects(OutStream *outStr, XRef *xRef, Guint numOffset, G Object obj = getXRef()->fetch(ref.num - numOffset, ref.gen); Goffset offset = writeObjectHeader(&ref, outStr); if (combine) { - writeObject(&obj, outStr, getXRef(), numOffset, NULL, cryptRC4, 0, 0, 0); + writeObject(&obj, outStr, getXRef(), numOffset, nullptr, cryptRC4, 0, 0, 0); } else if (xRef->getEntry(n)->getFlag(XRefEntry::Unencrypted)) { - writeObject(&obj, outStr, NULL, cryptRC4, 0, 0, 0); + writeObject(&obj, outStr, nullptr, cryptRC4, 0, 0, 0); } else { writeObject(&obj, outStr, fileKey, encAlgorithm, keyLength, ref.num, ref.gen); } @@ -1938,37 +1962,37 @@ Page *PDFDoc::parsePage(int page) pageRef.num = getHints()->getPageObjectNum(page); if (!pageRef.num) { error(errSyntaxWarning, -1, "Failed to get object num from hint tables for page {0:d}", page); - return NULL; + return nullptr; } // check for bogus ref - this can happen in corrupted PDF files if (pageRef.num < 0 || pageRef.num >= xref->getNumObjects()) { error(errSyntaxWarning, -1, "Invalid object num ({0:d}) for page {1:d}", pageRef.num, page); - return NULL; + return nullptr; } pageRef.gen = xref->getEntry(pageRef.num)->gen; Object obj = xref->fetch(pageRef.num, pageRef.gen); if (!obj.isDict("Page")) { error(errSyntaxWarning, -1, "Object ({0:d} {1:d}) is not a pageDict", pageRef.num, pageRef.gen); - return NULL; + return nullptr; } Dict *pageDict = obj.getDict(); return new Page(this, page, &obj, pageRef, - new PageAttrs(NULL, pageDict), catalog->getForm()); + new PageAttrs(nullptr, pageDict), catalog->getForm()); } Page *PDFDoc::getPage(int page) { - if ((page < 1) || page > getNumPages()) return NULL; + if ((page < 1) || page > getNumPages()) return nullptr; if (isLinearized() && checkLinearization()) { pdfdocLocker(); if (!pageCache) { pageCache = (Page **) gmallocn(getNumPages(), sizeof(Page *)); for (int i = 0; i < getNumPages(); i++) { - pageCache[i] = NULL; + pageCache[i] = nullptr; } } if (!pageCache[page-1]) { diff --git a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h index 48d8dcf779e..5af547778c4 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PDFDoc.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005, 2006, 2008 Brad Hards -// Copyright (C) 2005, 2009, 2014, 2015, 2017 Albert Astals Cid +// Copyright (C) 2005, 2009, 2014, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2008 Julien Rebetez // Copyright (C) 2008 Pino Toscano // Copyright (C) 2008 Carlos Garcia Campos @@ -92,6 +92,9 @@ public: GooString *userPassword = NULL, void *guiDataA = NULL); ~PDFDoc(); + PDFDoc(const PDFDoc &) = delete; + PDFDoc& operator=(const PDFDoc &) = delete; + static PDFDoc *ErrorPDFDoc(int errorCode, GooString *fileNameA = NULL); // Was PDF document successfully opened? diff --git a/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h b/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h index d6eccf5487a..8239f6829b2 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PDFDocBuilder.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2010 Hib Eris -// Copyright 2010 Albert Astals Cid +// Copyright 2010, 2018 Albert Astals Cid // //======================================================================== @@ -26,7 +26,11 @@ class PDFDocBuilder { public: - virtual ~PDFDocBuilder() {}; + PDFDocBuilder() = default; + virtual ~PDFDocBuilder() = default; + + PDFDocBuilder(const PDFDocBuilder &) = delete; + PDFDocBuilder& operator=(const PDFDocBuilder &) = delete; // Builds a new PDFDoc. Returns a PDFDoc. You should check this PDFDoc // with PDFDoc::isOk() for failures. diff --git a/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h b/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h index dbceaa567ee..8e14fd6b74f 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PDFDocFactory.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2010 Hib Eris -// Copyright 2010 Albert Astals Cid +// Copyright 2010, 2018 Albert Astals Cid // //======================================================================== @@ -37,6 +37,9 @@ public: PDFDocFactory(GooList *pdfDocBuilders = NULL); ~PDFDocFactory(); + PDFDocFactory(const PDFDocFactory &) = delete; + PDFDocFactory& operator=(const PDFDocFactory &) = delete; + // Create a PDFDoc. Returns a PDFDoc. You should check this PDFDoc // with PDFDoc::isOk() for failures. // The caller is responsible for deleting ownerPassword, userPassWord and guiData. diff --git a/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc index ac4f028f120..2f55557c14d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Martin Kretzschmar // Copyright (C) 2005, 2006 Kristian Høgsberg -// Copyright (C) 2006-2009, 2011-2013, 2015-2017 Albert Astals Cid +// Copyright (C) 2006-2009, 2011-2013, 2015-2018 Albert Astals Cid // Copyright (C) 2006 Jeff Muizelaar // Copyright (C) 2007, 2008 Brad Hards // Copyright (C) 2008, 2009 Koji Otani @@ -830,7 +830,7 @@ static const char *prolog[] = { "} def", "~123sn", "end", - NULL + nullptr }; static const char *cmapProlog[] = { @@ -875,7 +875,7 @@ static const char *cmapProlog[] = { " currentdict CMapName exch /CMap defineresource pop", "end", "end", - NULL + nullptr }; //------------------------------------------------------------------------ @@ -946,6 +946,9 @@ public: double yA, double kA, GooString *nameA); ~PSOutCustomColor(); + PSOutCustomColor(const PSOutCustomColor &) = delete; + PSOutCustomColor& operator=(const PSOutCustomColor &) = delete; + double c, m, y, k; GooString *name; PSOutCustomColor *next; @@ -958,7 +961,7 @@ PSOutCustomColor::PSOutCustomColor(double cA, double mA, y = yA; k = kA; name = nameA; - next = NULL; + next = nullptr; } PSOutCustomColor::~PSOutCustomColor() { @@ -976,6 +979,8 @@ struct PSOutImgClipRect { struct PSOutPaperSize { PSOutPaperSize(GooString *nameA, int wA, int hA) { name = nameA; w = wA; h = hA; } ~PSOutPaperSize() { delete name; } + PSOutPaperSize(const PSOutPaperSize &) = delete; + PSOutPaperSize& operator=(const PSOutPaperSize &) = delete; GooString *name; int w, h; }; @@ -996,7 +1001,7 @@ public: { return (bufIdx >= bufSize && !fillBuf()) ? EOF : buf[bufIdx++]; } int lookChar() override { return (bufIdx >= bufSize && !fillBuf()) ? EOF : buf[bufIdx]; } - GooString *getPSFilter(int psLevel, const char *indent) override { return NULL; } + GooString *getPSFilter(int psLevel, const char *indent) override { return nullptr; } GBool isBinary(GBool last = gTrue) override { return gTrue; } GBool isEncoder() override { return gTrue; } @@ -1020,7 +1025,7 @@ DeviceNRecoder::DeviceNRecoder(Stream *strA, int widthA, int heightA, width = widthA; height = heightA; colorMap = colorMapA; - imgStr = NULL; + imgStr = nullptr; pixelIdx = 0; bufIdx = gfxColorMaxComps; bufSize = ((GfxDeviceNColorSpace *)colorMap->getColorSpace())-> @@ -1094,28 +1099,28 @@ PSOutputDev::PSOutputDev(const char *fileName, PDFDoc *doc, FILE *f; PSFileType fileTypeA; - underlayCbk = NULL; - underlayCbkData = NULL; - overlayCbk = NULL; - overlayCbkData = NULL; + underlayCbk = nullptr; + underlayCbkData = nullptr; + overlayCbk = nullptr; + overlayCbkData = nullptr; customCodeCbk = customCodeCbkA; customCodeCbkData = customCodeCbkDataA; - fontIDs = NULL; + fontIDs = nullptr; fontNames = new GooHash(gTrue); fontMaxValidGlyph = new GooHash(gTrue); - t1FontNames = NULL; - font8Info = NULL; - font16Enc = NULL; - imgIDs = NULL; - formIDs = NULL; - paperSizes = NULL; - embFontList = NULL; - customColors = NULL; + t1FontNames = nullptr; + font8Info = nullptr; + font16Enc = nullptr; + imgIDs = nullptr; + formIDs = nullptr; + paperSizes = nullptr; + embFontList = nullptr; + customColors = nullptr; haveTextClip = gFalse; - t3String = NULL; + t3String = nullptr; forceRasterize = forceRasterizeA; - psTitle = NULL; + psTitle = nullptr; // open file or pipe if (!strcmp(fileName, "-")) { @@ -1163,28 +1168,28 @@ PSOutputDev::PSOutputDev(PSOutputFunc outputFuncA, void *outputStreamA, GBool manualCtrlA, PSOutCustomCodeCbk customCodeCbkA, void *customCodeCbkDataA) { - underlayCbk = NULL; - underlayCbkData = NULL; - overlayCbk = NULL; - overlayCbkData = NULL; + underlayCbk = nullptr; + underlayCbkData = nullptr; + overlayCbk = nullptr; + overlayCbkData = nullptr; customCodeCbk = customCodeCbkA; customCodeCbkData = customCodeCbkDataA; - fontIDs = NULL; + fontIDs = nullptr; fontNames = new GooHash(gTrue); fontMaxValidGlyph = new GooHash(gTrue); - t1FontNames = NULL; - font8Info = NULL; - font16Enc = NULL; - imgIDs = NULL; - formIDs = NULL; - paperSizes = NULL; - embFontList = NULL; - customColors = NULL; + t1FontNames = nullptr; + font8Info = nullptr; + font16Enc = nullptr; + imgIDs = nullptr; + formIDs = nullptr; + paperSizes = nullptr; + embFontList = nullptr; + customColors = nullptr; haveTextClip = gFalse; - t3String = NULL; + t3String = nullptr; forceRasterize = forceRasterizeA; - psTitle = NULL; + psTitle = nullptr; init(outputFuncA, outputStreamA, psGeneric, psTitleA, doc, pages, modeA, @@ -1217,7 +1222,7 @@ static const StandardMedia standardMedia[] = { "Folio", 612, 936 }, { "Quarto", 610, 780 }, { "10x14", 720, 1008 }, - { NULL, 0, 0 } + { nullptr, 0, 0 } }; /* PLRM specifies a tolerance of 5 points when matching page sizes */ @@ -1266,7 +1271,7 @@ void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, outputFunc = outputFuncA; outputStream = outputStreamA; fileType = fileTypeA; - psTitle = (psTitleA? strdup(psTitleA): NULL); + psTitle = (psTitleA? strdup(psTitleA): nullptr); doc = docA; level = globalParams->getPSLevel(); pages = pagesA; @@ -1281,7 +1286,7 @@ void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, imgURY = imgURYA; manualCtrl = manualCtrlA; - xref = NULL; + xref = nullptr; processColors = 0; inType3Char = gFalse; @@ -1333,7 +1338,7 @@ void PSOutputDev::postInit() for (size_t pgi = 0; pgi < pages.size(); ++pgi) { const int pg = pages[pgi]; page = catalog->getPage(pg); - if (page == NULL) + if (page == nullptr) paperMatch = gFalse; if (!paperMatch) { w = paperWidth; @@ -1368,7 +1373,7 @@ void PSOutputDev::postInit() } if (i == paperSizes->getLength()) { const StandardMedia *media = standardMedia; - GooString *name = NULL; + GooString *name = nullptr; while (media->name) { if (pageDimensionEqual(w, media->width) && pageDimensionEqual(h, media->height)) { name = new GooString(media->name); @@ -1872,7 +1877,7 @@ void PSOutputDev::setupFonts(Dict *resDict) { gfxFontDict = new GfxFontDict(xref, &r, obj2.getDict()); } } else if (obj1.isDict()) { - gfxFontDict = new GfxFontDict(xref, NULL, obj1.getDict()); + gfxFontDict = new GfxFontDict(xref, nullptr, obj1.getDict()); } if (gfxFontDict) { for (i = 0; i < gfxFontDict->getNumFonts(); ++i) { @@ -1911,7 +1916,7 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) { } fontIDs[fontIDLen++] = *font->getID(); - psName = NULL; + psName = nullptr; xs = ys = 1; subst = gFalse; @@ -1921,7 +1926,7 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) { setupType3Font(font, psName, parentResDict); } else { fontLoc = font->locateFont(xref, this); - if (fontLoc != NULL) { + if (fontLoc != nullptr) { switch (fontLoc->locType) { case gfxFontLocEmbedded: switch (fontLoc->fontType) { @@ -2011,7 +2016,7 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) { sizeof(PSFont16Enc)); } font16Enc[font16EncLen].fontID = *font->getID(); - font16Enc[font16EncLen].enc = NULL; + font16Enc[font16EncLen].enc = nullptr; ++font16EncLen; } else { error(errSyntaxError, -1, @@ -2063,7 +2068,7 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) { error(errSyntaxError, -1, "Couldn't find Unicode map for 16-bit font encoding '{0:t}'", fontLoc->encoding); - font16Enc[font16EncLen].enc = NULL; + font16Enc[font16EncLen].enc = nullptr; } ++font16EncLen; } @@ -2402,7 +2407,7 @@ void PSOutputDev::setupEmbeddedType1CFont(GfxFont *font, Ref *id, // convert it to a Type 1 font if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) { if ((ffT1C = FoFiType1C::make(fontBuf, fontLen))) { - ffT1C->convertToType1(psName->getCString(), NULL, gTrue, + ffT1C->convertToType1(psName->getCString(), nullptr, gTrue, outputFunc, outputStream); delete ffT1C; } @@ -2448,7 +2453,7 @@ void PSOutputDev::setupEmbeddedOpenTypeT1CFont(GfxFont *font, Ref *id, if ((fontBuf = font->readEmbFontFile(xref, &fontLen))) { if ((ffTT = FoFiTrueType::make(fontBuf, fontLen))) { if (ffTT->isOpenTypeCFF()) { - ffTT->convertToType1(psName->getCString(), NULL, gTrue, + ffTT->convertToType1(psName->getCString(), nullptr, gTrue, outputFunc, outputStream); } delete ffTT; @@ -2480,7 +2485,7 @@ void PSOutputDev::setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, ffTT->convertToType42(psName->getCString(), ((Gfx8BitFont *)font)->getHasEncoding() ? ((Gfx8BitFont *)font)->getEncoding() - : (char **)NULL, + : (char **)nullptr, codeToGID, outputFunc, outputStream); if (codeToGID) { if (font8InfoLen >= font8InfoSize) { @@ -2519,7 +2524,7 @@ void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, GooString *fileName, ffTT->convertToType42(psName->getCString(), ((Gfx8BitFont *)font)->getHasEncoding() ? ((Gfx8BitFont *)font)->getEncoding() - : (char **)NULL, + : (char **)nullptr, codeToGID, outputFunc, outputStream); if (codeToGID) { if (font8InfoLen >= font8InfoSize) { @@ -2567,7 +2572,7 @@ void PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, // check for embedding permission if (ffTT->getEmbeddingRights() >= 1) { - codeToGID = NULL; + codeToGID = nullptr; codeToGIDLen = 0; if (((GfxCIDFont *)font)->getCIDToGID()) { codeToGIDLen = ((GfxCIDFont *)font)->getCIDToGIDLen(); @@ -2649,11 +2654,11 @@ void PSOutputDev::setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, if ((ffT1C = FoFiType1C::make(fontBuf, fontLen))) { if (globalParams->getPSLevel() >= psLevel3) { // Level 3: use a CID font - ffT1C->convertToCIDType0(psName->getCString(), NULL, 0, + ffT1C->convertToCIDType0(psName->getCString(), nullptr, 0, outputFunc, outputStream); } else { // otherwise: use a non-CID composite font - ffT1C->convertToType0(psName->getCString(), NULL, 0, + ffT1C->convertToType0(psName->getCString(), nullptr, 0, outputFunc, outputStream); } delete ffT1C; @@ -2818,7 +2823,7 @@ void PSOutputDev::setupType3Font(GfxFont *font, GooString *psName, box.y1 = m[1]; box.x2 = m[2]; box.y2 = m[3]; - gfx = new Gfx(doc, this, resDict, &box, NULL); + gfx = new Gfx(doc, this, resDict, &box, nullptr); inType3Char = gTrue; for (i = 0; i < charProcs->getLength(); ++i) { t3FillColorOnly = gFalse; @@ -2841,7 +2846,7 @@ void PSOutputDev::setupType3Font(GfxFont *font, GooString *psName, (*outputFunc)(outputStream, t3String->getCString(), t3String->getLength()); delete t3String; - t3String = NULL; + t3String = nullptr; } if (t3NeedsRestore) { (*outputFunc)(outputStream, "Q\n", 2); @@ -3191,7 +3196,7 @@ void PSOutputDev::setupForm(Ref id, Object *strObj) { // get resources Object resObj = dict->lookup("Resources"); - resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL; + resDict = resObj.isDict() ? resObj.getDict() : (Dict *)nullptr; writePSFmt("/f_{0:d}_{1:d} {{\n", id.num, id.gen); writePS("q\n"); @@ -3746,7 +3751,7 @@ void PSOutputDev::startPage(int pageNum, GfxState *state, XRef *xrefA) { (*underlayCbk)(this, underlayCbkData); } if (overlayCbk) { - saveState(NULL); + saveState(nullptr); } xScale = yScale = 1; @@ -3960,7 +3965,7 @@ void PSOutputDev::startPage(int pageNum, GfxState *state, XRef *xrefA) { void PSOutputDev::endPage() { if (overlayCbk) { - restoreState(NULL); + restoreState(nullptr); (*overlayCbk)(this, overlayCbkData); } @@ -4411,7 +4416,7 @@ GBool PSOutputDev::tilingPatternFillL1(GfxState *state, Catalog *cat, Object *st box.y1 = bbox[1]; box.x2 = bbox[2]; box.y2 = bbox[3]; - gfx = new Gfx(doc, this, resDict, &box, NULL); + gfx = new Gfx(doc, this, resDict, &box, nullptr); writePS("/x {\n"); if (paintType == 2) { writePSFmt("{0:.6g} 0 {1:.6g} {2:.6g} {3:.6g} {4:.6g} setcachedevice\n", @@ -4484,7 +4489,7 @@ GBool PSOutputDev::tilingPatternFillL2(GfxState *state, Catalog *cat, Object *st box.y1 = bbox[1]; box.x2 = bbox[2]; box.y2 = bbox[3]; - gfx = new Gfx(doc, this, resDict, &box, NULL); + gfx = new Gfx(doc, this, resDict, &box, nullptr); inType3Char = gTrue; if (paintType == 2) { inUncoloredPattern = gTrue; @@ -4529,7 +4534,7 @@ GBool PSOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *cat, O box.y1 = bbox[1]; box.x2 = bbox[2]; box.y2 = bbox[3]; - gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef()); + gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef()); writePSFmt("[{0:.6g} {1:.6g} {2:.6g} {3:.6g} {4:.6g} {5:.6g}] cm\n", mat[0], mat[1], mat[2], mat[3], tx, ty); inType3Char = gTrue; gfx->display(str); @@ -5042,8 +5047,8 @@ void PSOutputDev::drawString(GfxState *state, GooString *s) { wMode = font->getWMode(); // check for a subtitute 16-bit font - uMap = NULL; - codeToGID = NULL; + uMap = nullptr; + codeToGID = nullptr; if (font->isCIDFont()) { for (i = 0; i < font16EncLen; ++i) { if (font->getID()->num == font16Enc[i].fontID.num && @@ -5185,18 +5190,18 @@ void PSOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, switch (level) { case psLevel1: case psLevel1Sep: - doImageL1(ref, NULL, invert, inlineImg, str, width, height, len, - NULL, NULL, 0, 0, gFalse); + doImageL1(ref, nullptr, invert, inlineImg, str, width, height, len, + nullptr, nullptr, 0, 0, gFalse); break; case psLevel2: case psLevel2Sep: - doImageL2(ref, NULL, invert, inlineImg, str, width, height, len, - NULL, NULL, 0, 0, gFalse); + doImageL2(ref, nullptr, invert, inlineImg, str, width, height, len, + nullptr, nullptr, 0, 0, gFalse); break; case psLevel3: case psLevel3Sep: - doImageL3(ref, NULL, invert, inlineImg, str, width, height, len, - NULL, NULL, 0, 0, gFalse); + doImageL3(ref, nullptr, invert, inlineImg, str, width, height, len, + nullptr, nullptr, 0, 0, gFalse); break; } } @@ -5225,22 +5230,22 @@ void PSOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, switch (level) { case psLevel1: doImageL1(ref, colorMap, gFalse, inlineImg, str, - width, height, len, maskColors, NULL, 0, 0, gFalse); + width, height, len, maskColors, nullptr, 0, 0, gFalse); break; case psLevel1Sep: //~ handle indexed, separation, ... color spaces doImageL1Sep(ref, colorMap, gFalse, inlineImg, str, - width, height, len, maskColors, NULL, 0, 0, gFalse); + width, height, len, maskColors, nullptr, 0, 0, gFalse); break; case psLevel2: case psLevel2Sep: doImageL2(ref, colorMap, gFalse, inlineImg, str, - width, height, len, maskColors, NULL, 0, 0, gFalse); + width, height, len, maskColors, nullptr, 0, 0, gFalse); break; case psLevel3: case psLevel3Sep: doImageL3(ref, colorMap, gFalse, inlineImg, str, - width, height, len, maskColors, NULL, 0, 0, gFalse); + width, height, len, maskColors, nullptr, 0, 0, gFalse); break; } t3Cacheable = gFalse; @@ -5260,22 +5265,22 @@ void PSOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, switch (level) { case psLevel1: doImageL1(ref, colorMap, gFalse, gFalse, str, width, height, len, - NULL, maskStr, maskWidth, maskHeight, maskInvert); + nullptr, maskStr, maskWidth, maskHeight, maskInvert); break; case psLevel1Sep: //~ handle indexed, separation, ... color spaces doImageL1Sep(ref, colorMap, gFalse, gFalse, str, width, height, len, - NULL, maskStr, maskWidth, maskHeight, maskInvert); + nullptr, maskStr, maskWidth, maskHeight, maskInvert); break; case psLevel2: case psLevel2Sep: doImageL2(ref, colorMap, gFalse, gFalse, str, width, height, len, - NULL, maskStr, maskWidth, maskHeight, maskInvert); + nullptr, maskStr, maskWidth, maskHeight, maskInvert); break; case psLevel3: case psLevel3Sep: doImageL3(ref, colorMap, gFalse, gFalse, str, width, height, len, - NULL, maskStr, maskWidth, maskHeight, maskInvert); + nullptr, maskStr, maskWidth, maskHeight, maskInvert); break; } t3Cacheable = gFalse; @@ -5988,7 +5993,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, // filters if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { - s = NULL; + s = nullptr; useLZW = useRLE = gFalse; useCompressed = gFalse; useASCII = gFalse; @@ -6162,7 +6167,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, useFlate = useLZW = useRLE = useASCII = useCompressed = gFalse; maskUseFlate = maskUseLZW = maskUseRLE = maskUseASCII = maskUseCompressed = gFalse; - maskFilters = NULL; // make gcc happy + maskFilters = nullptr; // make gcc happy // explicit masking if (maskStr) { @@ -6170,7 +6175,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, // mask data source if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { - s = NULL; + s = nullptr; } else { s = maskStr->getPSFilter(3, " "); if (!s) { @@ -6409,7 +6414,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { - s = NULL; + s = nullptr; } else { s = str->getPSFilter(level < psLevel2 ? 1 : level < psLevel3 ? 2 : 3, " "); @@ -6720,7 +6725,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace, if (((GfxDeviceNColorSpace *)baseCS)->getAlt()->getMode() == csLab) { labCS = (GfxLabColorSpace *)((GfxDeviceNColorSpace *)baseCS)->getAlt(); } else { - labCS = NULL; + labCS = nullptr; } numAltComps = ((GfxDeviceNColorSpace *)baseCS)->getAlt()->getNComps(); p = lookup; diff --git a/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h index fd1bea17b06..330b81b3ab2 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PSOutputDev.h @@ -433,7 +433,7 @@ private: void writePSFmt(const char *fmt, ...); void writePSString(GooString *s); void writePSName(const char *s); - GooString *filterPSLabel(GooString *label, GBool *needParens=0); + GooString *filterPSLabel(GooString *label, GBool *needParens=nullptr); void writePSTextLine(GooString *s); PSLevel level; // PostScript level (1, 2, separation) diff --git a/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc b/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc index 05127f0d03c..ddde6bc1c1d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PSTokenizer.cc @@ -15,6 +15,7 @@ // // Copyright (C) 2006 Scott Turner // Copyright (C) 2008 Albert Astals Cid +// Copyright (C) 2017 Vincent Le Garrec // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -84,7 +85,7 @@ GBool PSTokenizer::getToken(char *buf, int size, int *length) { } } else if (c == '%') { comment = gTrue; - } else if (specialChars[c] != 1) { + } else if (specialChars[static_cast(c)] != 1) { break; } } @@ -113,7 +114,7 @@ GBool PSTokenizer::getToken(char *buf, int size, int *length) { } else if (c == '<') { while ((c = lookChar()) != EOF) { consumeChar(); - if (i < size && specialChars[c] != 1) { + if (i < size && specialChars[static_cast(c)] != 1) { buf[i++] = c; } if (c == '>') { @@ -121,7 +122,7 @@ GBool PSTokenizer::getToken(char *buf, int size, int *length) { } } } else if (c != '[' && c != ']') { - while ((c = lookChar()) != EOF && !specialChars[c]) { + while ((c = lookChar()) != EOF && !specialChars[static_cast(c)]) { consumeChar(); if (i < size) { buf[i++] = c; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Page.cc b/Build/source/libs/poppler/poppler-src/poppler/Page.cc index ca4a5a6d4d0..d4799dd14bd 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Page.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Page.cc @@ -257,7 +257,7 @@ Page::Page(PDFDoc *docA, int numA, Object *pageDict, Ref pageRefA, PageAttrs *at xref = doc->getXRef(); num = numA; duration = -1; - annots = NULL; + annots = nullptr; pageObj = pageDict->copy(); pageRef = pageRefA; @@ -345,7 +345,7 @@ Object *Page::getResourceDictObject() Dict *Page::getResourceDictCopy(XRef *xrefA) { pageLocker(); Dict *dict = attrs->getResourceDict(); - return dict ? dict->copy(xrefA) : NULL; + return dict ? dict->copy(xrefA) : nullptr; } void Page::replaceXRef(XRef *xrefA) { @@ -517,7 +517,7 @@ Gfx *Page::createGfx(OutputDev *out, double hDPI, double vDPI, crop = (box == *cropBox) && out->needClipToCropBox(); } gfx = new Gfx(doc, out, num, attrs->getResourceDict(), - hDPI, vDPI, &box, crop ? cropBox : (PDFRectangle *)NULL, + hDPI, vDPI, &box, crop ? cropBox : (PDFRectangle *)nullptr, rotate, abortCheckCbk, abortCheckCbkData, xrefA); return gfx; @@ -641,7 +641,7 @@ GBool Page::loadThumb(unsigned char **data_out, if (obj1.isNull ()) { obj1 = dict->lookup ("CS"); } - colorSpace = GfxColorSpace::parse(NULL, &obj1, NULL, NULL); + colorSpace = GfxColorSpace::parse(nullptr, &obj1, nullptr, nullptr); if (!colorSpace) { fprintf (stderr, "Error: Cannot parse color space\n"); goto fail1; @@ -794,7 +794,7 @@ LinkAction* Page::getAdditionalAction(PageAdditionalActionsType type) { Object additionalActionsObject = actions.fetch(doc->getXRef()); if (additionalActionsObject.isDict()) { const char *key = (type == actionOpenPage ? "O" : - type == actionClosePage ? "C" : NULL); + type == actionClosePage ? "C" : nullptr); Object actionObject = additionalActionsObject.dictLookup(key); if (actionObject.isDict()) diff --git a/Build/source/libs/poppler/poppler-src/poppler/Page.h b/Build/source/libs/poppler/poppler-src/poppler/Page.h index 97b70a0cb02..615707917e4 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Page.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Page.h @@ -20,7 +20,7 @@ // Copyright (C) 2007 Julien Rebetez // Copyright (C) 2008 Iñigo Martínez // Copyright (C) 2012 Fabio D'Urso -// Copyright (C) 2012, 2017 Albert Astals Cid +// Copyright (C) 2012, 2017, 2018 Albert Astals Cid // Copyright (C) 2013 Thomas Freitag // Copyright (C) 2013, 2017 Adrian Johnson // @@ -148,6 +148,9 @@ public: // Destructor. ~Page(); + Page(const Page &) = delete; + Page& operator=(const Page &) = delete; + // Is page valid? GBool isOk() { return ok; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc b/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc index d771024bbb3..57232f72f6c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.cc @@ -166,7 +166,7 @@ GBool PageLabelInfo::indexToLabel(int index, GooString *label) GooString number_string; base = 0; - interval = NULL; + interval = nullptr; for (i = 0; i < intervals.getLength(); i++) { interval = (Interval *) intervals.get(i); if (base <= index && index < base + interval->length) diff --git a/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h b/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h index 960e710069d..60b2ea9457d 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PageLabelInfo.h @@ -3,7 +3,7 @@ // This file is under the GPLv2 or later license // // Copyright (C) 2005-2006 Kristian Høgsberg -// Copyright (C) 2005 Albert Astals Cid +// Copyright (C) 2005, 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -25,6 +25,8 @@ class PageLabelInfo { public: PageLabelInfo(Object *tree, int numPages); ~PageLabelInfo(); + PageLabelInfo(const PageLabelInfo &) = delete; + PageLabelInfo& operator=(const PageLabelInfo &) = delete; GBool labelToIndex(GooString *label, int *index); GBool indexToLabel(int index, GooString *label); @@ -35,6 +37,8 @@ private: struct Interval { Interval(Object *dict, int baseA); ~Interval(); + Interval(const Interval &) = delete; + Interval& operator=(const Interval &) = delete; GooString *prefix; enum NumberStyle { None, diff --git a/Build/source/libs/poppler/poppler-src/poppler/Parser.cc b/Build/source/libs/poppler/poppler-src/poppler/Parser.cc index 4b399028105..dc777b02447 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Parser.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Parser.cc @@ -60,7 +60,7 @@ Parser::~Parser() { Object Parser::getObj(int recursion) { - return getObj(gFalse, NULL, cryptRC4, 0, 0, 0, recursion); + return getObj(gFalse, nullptr, cryptRC4, 0, 0, 0, recursion); } Object Parser::getObj(GBool simpleOnly, @@ -89,10 +89,11 @@ Object Parser::getObj(GBool simpleOnly, if (!simpleOnly && buf1.isCmd("[")) { shift(); obj = Object(new Array(xref)); - while (!buf1.isCmd("]") && !buf1.isEOF()) { + while (!buf1.isCmd("]") && !buf1.isEOF() && recursion + 1 < recursionLimit) { Object obj2 = getObj(gFalse, fileKey, encAlgorithm, keyLength, objNum, objGen, recursion + 1); obj.arrayAdd(std::move(obj2)); } + if (recursion + 1 >= recursionLimit && strict) goto err; if (buf1.isEOF()) { error(errSyntaxError, getPos(), "End of file inside array"); if (strict) goto err; @@ -198,7 +199,7 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey, // get stream start position lexer->skipToNextLine(); if (!(str = lexer->getStream())) { - return NULL; + return nullptr; } pos = str->getPos(); @@ -210,7 +211,7 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey, length = obj.getInt64(); } else { error(errSyntaxError, getPos(), "Bad 'Length' attribute in stream"); - if (strict) return NULL; + if (strict) return nullptr; length = 0; } @@ -222,7 +223,7 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey, // in badly damaged PDF files, we can run off the end of the input // stream immediately after the "stream" token if (!lexer->getStream()) { - return NULL; + return nullptr; } baseStr = lexer->getStream()->getBaseStream(); @@ -241,7 +242,7 @@ Stream *Parser::makeStream(Object &&dict, Guchar *fileKey, shift(); } else { error(errSyntaxError, getPos(), "Missing 'endstream' or incorrect stream length"); - if (strict) return NULL; + if (strict) return nullptr; if (xref && lexer->getStream()) { // shift until we find the proper endstream or we change to another object or reach eof length = lexer->getPos() - pos; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Parser.h b/Build/source/libs/poppler/poppler-src/poppler/Parser.h index d27511080a7..c85effc41d4 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Parser.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Parser.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2006, 2010, 2013, 2017 Albert Astals Cid +// Copyright (C) 2006, 2010, 2013, 2017, 2018 Albert Astals Cid // Copyright (C) 2012 Hib Eris // Copyright (C) 2013 Adrian Johnson // Copyright (C) 2013 Thomas Freitag @@ -45,6 +45,9 @@ public: // Destructor. ~Parser(); + Parser(const Parser &) = delete; + Parser& operator=(const Parser &) = delete; + // Get the next object from the input stream. If is // true, do not parse compound objects (arrays, dictionaries, or // streams). diff --git a/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc b/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc index 4fa0a44461a..5832d437951 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.cc @@ -43,7 +43,7 @@ PopplerCache::~PopplerCache() PopplerCacheItem *PopplerCache::lookup(const PopplerCacheKey &key) { if (lastValidCacheIndex < 0) - return 0; + return nullptr; if (*keys[0] == key) { return items[0]; @@ -63,7 +63,7 @@ PopplerCacheItem *PopplerCache::lookup(const PopplerCacheKey &key) return itemHit; } } - return 0; + return nullptr; } void PopplerCache::put(PopplerCacheKey *key, PopplerCacheItem *item) diff --git a/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h b/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h index f9d8a1dc9b6..ecc983ac6ca 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h +++ b/Build/source/libs/poppler/poppler-src/poppler/PopplerCache.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2009 Koji Otani -// Copyright (C) 2009, 2010, 2017 Albert Astals Cid +// Copyright (C) 2009, 2010, 2017, 2018 Albert Astals Cid // Copyright (C) 2010 Carlos Garcia Campos // //======================================================================== @@ -18,14 +18,22 @@ class PopplerCacheItem { public: + PopplerCacheItem() = default; virtual ~PopplerCacheItem(); + + PopplerCacheItem(const PopplerCacheItem &) = delete; + PopplerCacheItem& operator=(const PopplerCacheItem &other) = delete; }; class PopplerCacheKey { public: + PopplerCacheKey() = default; virtual ~PopplerCacheKey(); virtual bool operator==(const PopplerCacheKey &key) const = 0; + + PopplerCacheKey(const PopplerCacheKey &) = delete; + PopplerCacheKey& operator=(const PopplerCacheKey &other) = delete; }; class PopplerCache @@ -34,6 +42,9 @@ class PopplerCache PopplerCache(int cacheSizeA); ~PopplerCache(); + PopplerCache(const PopplerCache &) = delete; + PopplerCache& operator=(const PopplerCache &other) = delete; + /* The item returned is owned by the cache */ PopplerCacheItem *lookup(const PopplerCacheKey &key); @@ -53,8 +64,6 @@ class PopplerCache PopplerCacheKey *key(int index); private: - PopplerCache(const PopplerCache &cache); // not allowed - PopplerCacheKey **keys; PopplerCacheItem **items; int lastValidCacheIndex; @@ -67,6 +76,9 @@ class PopplerObjectCache PopplerObjectCache (int cacheSizeA, XRef *xrefA); ~PopplerObjectCache(); + PopplerObjectCache(const PopplerObjectCache &) = delete; + PopplerObjectCache& operator=(const PopplerObjectCache &other) = delete; + Object *put(const Ref &ref); Object lookup(const Ref &ref); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc b/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc index 89bf1a50cf5..f090a99a0f0 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Rendition.cc @@ -254,8 +254,8 @@ MediaRendition::MediaRendition(Object* obj) { GBool hasClip = gFalse; ok = gTrue; - fileName = NULL; - contentType = NULL; + fileName = nullptr; + contentType = nullptr; isEmbedded = gFalse; // diff --git a/Build/source/libs/poppler/poppler-src/poppler/Rendition.h b/Build/source/libs/poppler/poppler-src/poppler/Rendition.h index 5a937f2cc5e..d84505ffa24 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Rendition.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Rendition.h @@ -5,7 +5,7 @@ //--------------------------------------------------------------------------------- // Hugo Mercier (c) 2008 // Carlos Garcia Campos (c) 2010 -// Albert Astals Cid (C) 2017 +// Albert Astals Cid (C) 2017, 2018 // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -121,6 +121,7 @@ class MediaRendition { MediaRendition(Object *obj); MediaRendition(const MediaRendition &other); ~MediaRendition(); + MediaRendition& operator=(const MediaRendition &) = delete; GBool isOk () { return ok; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc b/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc index f774ce83771..a643f45fa3a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2010, 2012, 2015, 2017 Albert Astals Cid +// Copyright (C) 2010, 2012, 2015, 2017, 2018 Albert Astals Cid // Copyright (C) 2013 Adrian Johnson // Copyright (C) 2014 Fabio D'Urso // Copyright (C) 2016 Alok Anand @@ -62,14 +62,14 @@ SecurityHandler *SecurityHandler::make(PDFDoc *docA, Object *encryptDictA) { #endif error(errSyntaxError, -1, "Couldn't find the '{0:s}' security handler", filterObj.getName()); - secHdlr = NULL; + secHdlr = nullptr; #ifdef ENABLE_PLUGINS } #endif } else { error(errSyntaxError, -1, "Missing or invalid 'Filter' entry in encryption dictionary"); - secHdlr = NULL; + secHdlr = nullptr; } return secHdlr; } @@ -90,7 +90,7 @@ GBool SecurityHandler::checkEncryption(GooString *ownerPassword, if (ownerPassword || userPassword) { authData = makeAuthData(ownerPassword, userPassword); } else { - authData = NULL; + authData = nullptr; } ok = authorize(authData); if (authData) { @@ -137,6 +137,9 @@ public: } } + StandardAuthData(const StandardAuthData &) = delete; + StandardAuthData& operator=(const StandardAuthData &) = delete; + GooString *ownerPassword; GooString *userPassword; }; @@ -146,11 +149,11 @@ StandardSecurityHandler::StandardSecurityHandler(PDFDoc *docA, SecurityHandler(docA) { ok = gFalse; - fileID = NULL; - ownerKey = NULL; - userKey = NULL; - ownerEnc = NULL; - userEnc = NULL; + fileID = nullptr; + ownerKey = nullptr; + userKey = nullptr; + ownerEnc = nullptr; + userEnc = nullptr; fileKeyLength = 0; Object versionObj = encryptDictA->dictLookup("V"); @@ -318,13 +321,13 @@ GBool StandardSecurityHandler::isUnencrypted() { void *StandardSecurityHandler::makeAuthData(GooString *ownerPassword, GooString *userPassword) { return new StandardAuthData(ownerPassword ? ownerPassword->copy() - : (GooString *)NULL, + : (GooString *)nullptr, userPassword ? userPassword->copy() - : (GooString *)NULL); + : (GooString *)nullptr); } void *StandardSecurityHandler::getAuthData() { - return NULL; + return nullptr; } void StandardSecurityHandler::freeAuthData(void *authData) { @@ -341,8 +344,8 @@ GBool StandardSecurityHandler::authorize(void *authData) { ownerPassword = ((StandardAuthData *)authData)->ownerPassword; userPassword = ((StandardAuthData *)authData)->userPassword; } else { - ownerPassword = NULL; - userPassword = NULL; + ownerPassword = nullptr; + userPassword = nullptr; } if (!Decrypt::makeFileKey(encVersion, encRevision, fileKeyLength, ownerKey, userKey, ownerEnc, userEnc, diff --git a/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h b/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h index f363d3f7267..cc21b2ca09e 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h +++ b/Build/source/libs/poppler/poppler-src/poppler/SecurityHandler.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2012 Albert Astals Cid +// Copyright (C) 2012, 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -48,6 +48,9 @@ public: SecurityHandler(PDFDoc *docA); virtual ~SecurityHandler(); + SecurityHandler(const SecurityHandler &) = delete; + SecurityHandler& operator=(const SecurityHandler &) = delete; + // Returns true if the file is actually unencrypted. virtual GBool isUnencrypted() { return gFalse; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc b/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc index bddc45fe258..6ddd1a84a39 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/SignatureHandler.cc @@ -42,7 +42,7 @@ unsigned int SignatureHandler::digestLength(SECOidTag digestAlgId) char *SignatureHandler::getSignerName() { if (!CMSSignerInfo) - return NULL; + return nullptr; CERTCertificate *cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB()); return CERT_GetCommonName(&cert->subject); @@ -81,31 +81,31 @@ time_t SignatureHandler::getSigningTime() GooString *SignatureHandler::getDefaultFirefoxCertDB_Linux() { - GooString * finalPath = NULL; + GooString * finalPath = nullptr; DIR *toSearchIn; struct dirent *subFolder; GooString * homePath = new GooString(getenv("HOME")); homePath = homePath->append("/.mozilla/firefox/"); - if ((toSearchIn = opendir(homePath->getCString())) == NULL) { + if ((toSearchIn = opendir(homePath->getCString())) == nullptr) { error(errInternal, 0, "couldn't find default Firefox Folder"); delete homePath; - return NULL; + return nullptr; } do { - if ((subFolder = readdir(toSearchIn)) != NULL) { - if (strstr(subFolder->d_name, "default") != NULL) { + if ((subFolder = readdir(toSearchIn)) != nullptr) { + if (strstr(subFolder->d_name, "default") != nullptr) { finalPath = homePath->append(subFolder->d_name); closedir(toSearchIn); return finalPath; } } - } while (subFolder != NULL); + } while (subFolder != nullptr); closedir(toSearchIn); delete homePath; - return NULL; + return nullptr; } /** @@ -114,7 +114,7 @@ GooString *SignatureHandler::getDefaultFirefoxCertDB_Linux() void SignatureHandler::init_nss() { GooString *certDBPath = getDefaultFirefoxCertDB_Linux(); - if (certDBPath == NULL) { + if (certDBPath == nullptr) { NSS_Init("sql:/etc/pki/nssdb"); } else { NSS_Init(certDBPath->getCString()); @@ -127,11 +127,11 @@ void SignatureHandler::init_nss() SignatureHandler::SignatureHandler(unsigned char *p7, int p7_length) - : hash_context(NULL), - CMSMessage(NULL), - CMSSignedData(NULL), - CMSSignerInfo(NULL), - temp_certs(NULL) + : hash_context(nullptr), + CMSMessage(nullptr), + CMSSignedData(nullptr), + CMSSignerInfo(nullptr), + temp_certs(nullptr) { init_nss(); CMSitem.data = p7; @@ -183,11 +183,11 @@ SignatureHandler::~SignatureHandler() NSSCMSMessage *SignatureHandler::CMS_MessageCreate(SECItem * cms_item) { if (cms_item->data){ - return NSS_CMSMessage_CreateFromDER(cms_item, NULL, NULL /* Content callback */ - , NULL, NULL /*Password callback*/ - , NULL, NULL /*Decrypt callback*/); + return NSS_CMSMessage_CreateFromDER(cms_item, nullptr, nullptr /* Content callback */ + , nullptr, nullptr /*Password callback*/ + , nullptr, nullptr /*Decrypt callback*/); } else { - return NULL; + return nullptr; } } @@ -195,19 +195,19 @@ NSSCMSSignedData *SignatureHandler::CMS_SignedDataCreate(NSSCMSMessage * cms_msg { if (!NSS_CMSMessage_IsSigned(cms_msg)) { error(errInternal, 0, "Input couldn't be parsed as a CMS signature"); - return NULL; + return nullptr; } NSSCMSContentInfo *cinfo = NSS_CMSMessage_ContentLevel(cms_msg, 0); if (!cinfo) { error(errInternal, 0, "Error in NSS_CMSMessage_ContentLevel"); - return NULL; + return nullptr; } NSSCMSSignedData *signedData = (NSSCMSSignedData*) NSS_CMSContentInfo_GetContent(cinfo); if (!signedData) { error(errInternal, 0, "CError in NSS_CMSContentInfo_GetContent()"); - return NULL; + return nullptr; } if (signedData->rawCerts) @@ -220,12 +220,12 @@ NSSCMSSignedData *SignatureHandler::CMS_SignedDataCreate(NSSCMSMessage * cms_msg memset(signedData->tempCerts, 0, (i+1) * sizeof(CERTCertificate *)); // store the adresses of these temporary certificates for future release for (i = 0; signedData->rawCerts[i]; ++i) - signedData->tempCerts[i] = CERT_NewTempCertificate(CERT_GetDefaultCertDB(), signedData->rawCerts[i], NULL, 0, 0); + signedData->tempCerts[i] = CERT_NewTempCertificate(CERT_GetDefaultCertDB(), signedData->rawCerts[i], nullptr, 0, 0); temp_certs = signedData->tempCerts; return signedData; } else { - return NULL; + return nullptr; } } @@ -234,7 +234,7 @@ NSSCMSSignerInfo *SignatureHandler::CMS_SignerInfoCreate(NSSCMSSignedData * cms_ NSSCMSSignerInfo *signerInfo = NSS_CMSSignedData_GetSignerInfo(cms_sig_data, 0); if (!signerInfo) { printf("Error in NSS_CMSSignedData_GetSignerInfo()\n"); - return NULL; + return nullptr; } else { return signerInfo; } @@ -242,7 +242,7 @@ NSSCMSSignerInfo *SignatureHandler::CMS_SignerInfoCreate(NSSCMSSignedData * cms_ NSSCMSVerificationStatus SignatureHandler::validateSignature() { - unsigned char *digest_buffer = NULL; + unsigned char *digest_buffer = nullptr; if (!CMSSignedData) return NSSCMSVS_MalformedSignature; @@ -256,11 +256,11 @@ NSSCMSVerificationStatus SignatureHandler::validateSignature() digest.data = digest_buffer; digest.len = hash_length; - if ((NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == NULL) + if ((NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == nullptr) CMSSignerInfo->verificationStatus = NSSCMSVS_SigningCertNotFound; SECItem * content_info_data = CMSSignedData->contentInfo.content.data; - if (content_info_data != NULL && content_info_data->data != NULL) + if (content_info_data != nullptr && content_info_data->data != nullptr) { /* This means it's not a detached type signature @@ -279,7 +279,7 @@ NSSCMSVerificationStatus SignatureHandler::validateSignature() } } - else if (NSS_CMSSignerInfo_Verify(CMSSignerInfo, &digest, NULL) != SECSuccess) + else if (NSS_CMSSignerInfo_Verify(CMSSignerInfo, &digest, nullptr) != SECSuccess) { PORT_Free(digest_buffer); @@ -300,7 +300,7 @@ SECErrorCodes SignatureHandler::validateCertificate(time_t validation_time) if (!CMSSignerInfo) return (SECErrorCodes) -1; //error code to avoid matching error codes defined in SECErrorCodes - if ((cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == NULL) + if ((cert = NSS_CMSSignerInfo_GetSigningCertificate(CMSSignerInfo, CERT_GetDefaultCertDB())) == nullptr) CMSSignerInfo->verificationStatus = NSSCMSVS_SigningCertNotFound; PRTime vTime = 0; // time in microseconds since the epoch, special value 0 means now @@ -313,7 +313,7 @@ SECErrorCodes SignatureHandler::validateCertificate(time_t validation_time) inParams[1].value.scalar.time = vTime; inParams[2].type = cert_pi_end; - CERT_PKIXVerifyCert(cert, certificateUsageEmailSigner, inParams, NULL, + CERT_PKIXVerifyCert(cert, certificateUsageEmailSigner, inParams, nullptr, CMSSignerInfo->cmsg->pwfn_arg); retVal = (SECErrorCodes) PORT_GetError(); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Sound.cc b/Build/source/libs/poppler/poppler-src/poppler/Sound.cc index c0dd6ccbf77..4a59d3fe04a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Sound.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Sound.cc @@ -27,17 +27,17 @@ Sound *Sound::parseSound(Object *obj) { // let's try to see if this Object is a Sound, according to the PDF specs // (section 9.2) - Stream *str = NULL; + Stream *str = nullptr; // the Object must be a Stream if (obj->isStream()) { str = obj->getStream(); } else { - return NULL; + return nullptr; } // the Stream must have a Dict Dict *dict = str->getDict(); - if (dict == NULL) - return NULL; + if (dict == nullptr) + return nullptr; // the Dict must have the 'R' key of type num Object tmp = dict->lookup("R"); if (tmp.isNum()) { @@ -51,7 +51,7 @@ Sound::Sound(Object *obj, bool readAttrs) { streamObj = obj->copy(); - fileName = NULL; + fileName = nullptr; samplingRate = 0.0; channels = 1; bitsPerSample = 8; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Sound.h b/Build/source/libs/poppler/poppler-src/poppler/Sound.h index 5e33cb51e79..e88de4d62f9 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Sound.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Sound.h @@ -1,6 +1,6 @@ /* Sound.h - an object that holds the sound structure * Copyright (C) 2006-2007, Pino Toscano - * Copyright (C) 2017, Albert Astals Cid + * Copyright (C) 2017, 2018, Albert Astals Cid * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,6 +47,9 @@ public: // Destructor ~Sound(); + Sound(const Sound &) = delete; + Sound& operator=(const Sound &) = delete; + Object *getObject() { return &streamObj; } Stream *getStream(); diff --git a/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc index 28174356949..efc0aaece1e 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Takashi Iwai // Copyright (C) 2006 Stefan Schweizer -// Copyright (C) 2006-2017 Albert Astals Cid +// Copyright (C) 2006-2018 Albert Astals Cid // Copyright (C) 2006 Krzysztof Kowalczyk // Copyright (C) 2006 Scott Turner // Copyright (C) 2007 Koji Otani @@ -197,15 +197,10 @@ static inline void convertGfxShortColor(SplashColorPtr dest, // SplashGouraudPattern //------------------------------------------------------------------------ SplashGouraudPattern::SplashGouraudPattern(GBool bDirectColorTranslationA, - GfxState *stateA, GfxGouraudTriangleShading *shadingA, SplashColorMode modeA) { - SplashColor defaultColor; - GfxColor srcColor; + GfxState *stateA, GfxGouraudTriangleShading *shadingA) { state = stateA; shading = shadingA; - mode = modeA; bDirectColorTranslation = bDirectColorTranslationA; - shadingA->getColorSpace()->getDefaultColor(&srcColor); - convertGfxColor(defaultColor, mode, shadingA->getColorSpace(), &srcColor); gfxMode = shadingA->getColorSpace()->getMode(); } @@ -1176,7 +1171,7 @@ static void splashOutBlendLuminosity(SplashColorPtr src, SplashColorPtr dest, // NB: This must match the GfxBlendMode enum defined in GfxState.h. static const SplashBlendFunc splashOutBlendFuncs[] = { - NULL, + nullptr, &splashOutBlendMultiply, &splashOutBlendScreen, &splashOutBlendOverlay, @@ -1232,6 +1227,8 @@ public: int glyphXA, int glyphYA, int glyphWA, int glyphHA, GBool aa, GBool validBBoxA); ~T3FontCache(); + T3FontCache(const T3FontCache &) = delete; + T3FontCache& operator=(const T3FontCache &) = delete; GBool matches(Ref *idA, double m11A, double m12A, double m21A, double m22A) { return fontID.num == idA->num && fontID.gen == idA->gen && @@ -1289,9 +1286,9 @@ T3FontCache::T3FontCache(Ref *fontIDA, double m11A, double m12A, " This could teoretically result in wrong rendering,\n" " but most probably the document is bogus.\n" " Please report a bug if you think the rendering may be wrong because of this."); - cacheData = NULL; + cacheData = nullptr; } - if (cacheData != NULL) + if (cacheData != nullptr) { cacheTags = (T3FontCacheTag *)gmallocn(cacheSets * cacheAssoc, sizeof(T3FontCacheTag)); @@ -1301,7 +1298,7 @@ T3FontCache::T3FontCache(Ref *fontIDA, double m11A, double m12A, } else { - cacheTags = NULL; + cacheTags = nullptr; } } @@ -1376,16 +1373,16 @@ SplashOutputDev::SplashOutputDev(SplashColorMode colorModeA, enableSlightHinting = gFalse; setupScreenParams(72.0, 72.0); reverseVideo = reverseVideoA; - if (paperColorA != NULL) { + if (paperColorA != nullptr) { splashColorCopy(paperColor, paperColorA); } else { splashClearColor(paperColor); } skipHorizText = gFalse; skipRotatedText = gFalse; - keepAlphaChannel = paperColorA == NULL; + keepAlphaChannel = paperColorA == nullptr; - doc = NULL; + doc = nullptr; bitmap = new SplashBitmap(1, 1, bitmapRowPad, colorMode, colorMode != splashModeMono1, bitmapTopDown); @@ -1394,17 +1391,17 @@ SplashOutputDev::SplashOutputDev(SplashColorMode colorModeA, splash->setThinLineMode(thinLineMode); splash->clear(paperColor, 0); - fontEngine = NULL; + fontEngine = nullptr; nT3Fonts = 0; - t3GlyphStack = NULL; + t3GlyphStack = nullptr; - font = NULL; + font = nullptr; needFontUpdate = gFalse; - textClipPath = NULL; - transpGroupStack = NULL; + textClipPath = nullptr; + transpGroupStack = nullptr; nestCount = 0; - xref = NULL; + xref = nullptr; } void SplashOutputDev::setupScreenParams(double hDPI, double vDPI) { @@ -1492,12 +1489,12 @@ void SplashOutputDev::startPage(int pageNum, GfxState *state, XRef *xrefA) { if (splash) { thinLineMode = splash->getThinLineMode(); delete splash; - splash = NULL; + splash = nullptr; } if (!bitmap || w != bitmap->getWidth() || h != bitmap->getHeight()) { if (bitmap) { delete bitmap; - bitmap = NULL; + bitmap = nullptr; } bitmap = new SplashBitmap(w, h, bitmapRowPad, colorMode, colorMode != splashModeMono1, bitmapTopDown); @@ -1547,7 +1544,7 @@ void SplashOutputDev::startPage(int pageNum, GfxState *state, XRef *xrefA) { splash->setFillPattern(new SplashSolidColor(color)); splash->setLineCap(splashLineCapButt); splash->setLineJoin(splashLineJoinMiter); - splash->setLineDash(NULL, 0, 0); + splash->setLineDash(nullptr, 0, 0); splash->setMiterLimit(10); splash->setFlatness(1); // the SA parameter supposedly defaults to false, but Acrobat @@ -1907,14 +1904,14 @@ void SplashOutputDev::updateBlendMode(GfxState *state) { void SplashOutputDev::updateFillOpacity(GfxState *state) { splash->setFillAlpha((SplashCoord)state->getFillOpacity()); - if (transpGroupStack != NULL && (SplashCoord)state->getFillOpacity() < transpGroupStack->knockoutOpacity) { + if (transpGroupStack != nullptr && (SplashCoord)state->getFillOpacity() < transpGroupStack->knockoutOpacity) { transpGroupStack->knockoutOpacity = (SplashCoord)state->getFillOpacity(); } } void SplashOutputDev::updateStrokeOpacity(GfxState *state) { splash->setStrokeAlpha((SplashCoord)state->getStrokeOpacity()); - if (transpGroupStack != NULL && (SplashCoord)state->getStrokeOpacity() < transpGroupStack->knockoutOpacity) { + if (transpGroupStack != nullptr && (SplashCoord)state->getStrokeOpacity() < transpGroupStack->knockoutOpacity) { transpGroupStack->knockoutOpacity = (SplashCoord)state->getStrokeOpacity(); } } @@ -1992,11 +1989,10 @@ void SplashOutputDev::doUpdateFont(GfxState *state) { GfxFont *gfxFont; GfxFontLoc *fontLoc; GfxFontType fontType; - SplashOutFontFileID *id = NULL; + SplashOutFontFileID *id = nullptr; SplashFontFile *fontFile; - SplashFontSrc *fontsrc = NULL; + SplashFontSrc *fontsrc = nullptr; FoFiTrueType *ff; - Object refObj, strObj; GooString *fileName; char *tmpBuf; int tmpBufLen; @@ -2010,10 +2006,10 @@ void SplashOutputDev::doUpdateFont(GfxState *state) { GBool doAdjustFontMatrix = gFalse; needFontUpdate = gFalse; - font = NULL; - fileName = NULL; - tmpBuf = NULL; - fontLoc = NULL; + font = nullptr; + fileName = nullptr; + tmpBuf = nullptr; + fontLoc = nullptr; if (!(gfxFont = state->getFont())) { goto err1; @@ -2034,7 +2030,7 @@ void SplashOutputDev::doUpdateFont(GfxState *state) { reload: delete id; delete fontLoc; - fontLoc = NULL; + fontLoc = nullptr; if (fontsrc && !fontsrc->isFile) { fontsrc->unref(); fontsrc = nullptr; @@ -2046,7 +2042,7 @@ reload: } else { - if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), NULL))) { + if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), nullptr))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); @@ -2133,7 +2129,7 @@ reload: } } } else { - codeToGID = NULL; + codeToGID = nullptr; n = 0; } if (!(fontFile = fontEngine->loadTrueTypeFont( @@ -2166,7 +2162,7 @@ reload: memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), n * sizeof(int)); } else { - codeToGID = NULL; + codeToGID = nullptr; n = 0; } if (!(fontFile = fontEngine->loadOpenTypeCFFFont( @@ -2182,7 +2178,7 @@ reload: break; case fontCIDType2: case fontCIDType2OT: - codeToGID = NULL; + codeToGID = nullptr; n = 0; if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); @@ -2430,7 +2426,7 @@ void SplashOutputDev::drawChar(GfxState *state, double x, double y, !state->getStrokeColorSpace()->isNonMarking(); doClip = render & 4; - path = NULL; + path = nullptr; SplashCoord lineWidth = splash->getLineWidth(); if (doStroke && lineWidth == 0.0) splash->setLineWidth(1 / state->getVDPI()); @@ -2487,7 +2483,7 @@ void SplashOutputDev::drawChar(GfxState *state, double x, double y, textClipPath->append(path); } else { textClipPath = path; - path = NULL; + path = nullptr; } } } @@ -2551,7 +2547,7 @@ GBool SplashOutputDev::beginType3Char(GfxState *state, double x, double y, // create new entry in the font cache if (nT3Fonts == splashOutT3FontCacheSize) { t3gs = t3GlyphStack; - while (t3gs != NULL) { + while (t3gs != nullptr) { if (t3gs->cache == t3FontCache[nT3Fonts - 1]) { error(errSyntaxWarning, -1, "t3FontCache reaches limit but font still on stack in SplashOutputDev::beginType3Char"); return gTrue; @@ -2626,7 +2622,7 @@ GBool SplashOutputDev::beginType3Char(GfxState *state, double x, double y, // is the glyph in the cache? i = (code & (t3Font->cacheSets - 1)) * t3Font->cacheAssoc; for (j = 0; j < t3Font->cacheAssoc; ++j) { - if (t3Font->cacheTags != NULL) { + if (t3Font->cacheTags != nullptr) { if ((t3Font->cacheTags[i+j].mru & 0x8000) && t3Font->cacheTags[i+j].code == code) { drawType3Glyph(state, t3Font, &t3Font->cacheTags[i+j], @@ -2642,8 +2638,8 @@ GBool SplashOutputDev::beginType3Char(GfxState *state, double x, double y, t3GlyphStack = t3gs; t3GlyphStack->code = code; t3GlyphStack->cache = t3Font; - t3GlyphStack->cacheTag = NULL; - t3GlyphStack->cacheData = NULL; + t3GlyphStack->cacheTag = nullptr; + t3GlyphStack->cacheData = nullptr; t3GlyphStack->haveDx = gFalse; t3GlyphStack->doNotCache = gFalse; @@ -2700,17 +2696,17 @@ void SplashOutputDev::type3D1(GfxState *state, double wx, double wy, return; } - if (unlikely(t3GlyphStack == NULL)) { + if (unlikely(t3GlyphStack == nullptr)) { error(errSyntaxWarning, -1, "t3GlyphStack was null in SplashOutputDev::type3D1"); return; } - if (unlikely(t3GlyphStack->origBitmap != NULL)) { + if (unlikely(t3GlyphStack->origBitmap != nullptr)) { error(errSyntaxWarning, -1, "t3GlyphStack origBitmap was not null in SplashOutputDev::type3D1"); return; } - if (unlikely(t3GlyphStack->origSplash != NULL)) { + if (unlikely(t3GlyphStack->origSplash != nullptr)) { error(errSyntaxWarning, -1, "t3GlyphStack origSplash was not null in SplashOutputDev::type3D1"); return; } @@ -2765,7 +2761,7 @@ void SplashOutputDev::type3D1(GfxState *state, double wx, double wy, return; } - if (t3Font->cacheTags == NULL) + if (t3Font->cacheTags == nullptr) return; // allocate a cache entry @@ -2840,7 +2836,7 @@ void SplashOutputDev::endTextObject(GfxState *state) { if (textClipPath) { splash->clipToPath(textClipPath, gFalse); delete textClipPath; - textClipPath = NULL; + textClipPath = nullptr; } } @@ -2900,7 +2896,7 @@ void SplashOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, imgMaskData.height = height; imgMaskData.y = 0; - splash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != NULL); + splash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != nullptr); if (inlineImg) { while (imgMaskData.y < height) { imgMaskData.imgStr->getLine(); @@ -2933,7 +2929,7 @@ void SplashOutputDev::setSoftMaskFromImageMask(GfxState *state, if (!std::isfinite(ctm[i])) return; } - beginTransparencyGroup(state, bbox, NULL, gFalse, gFalse, gFalse); + beginTransparencyGroup(state, bbox, nullptr, gFalse, gFalse, gFalse); baseMatrix[4] -= transpGroupStack->tx; baseMatrix[5] -= transpGroupStack->ty; @@ -2957,7 +2953,7 @@ void SplashOutputDev::setSoftMaskFromImageMask(GfxState *state, maskSplash->clear(maskColor); maskColor[0] = 0xff; maskSplash->setFillPattern(new SplashSolidColor(maskColor)); - maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != NULL); + maskSplash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != nullptr); delete maskSplash; delete imgMaskData.imgStr; str->close(); @@ -2969,14 +2965,14 @@ void SplashOutputDev::unsetSoftMaskFromImageMask(GfxState *state, double *baseMa /* transfer mask to alpha channel! */ // memcpy(maskBitmap->getAlphaPtr(), maskBitmap->getDataPtr(), bitmap->getRowSize() * bitmap->getHeight()); // memset(maskBitmap->getDataPtr(), 0, bitmap->getRowSize() * bitmap->getHeight()); - if (transpGroupStack->softmask != NULL) { + if (transpGroupStack->softmask != nullptr) { Guchar *dest = bitmap->getAlphaPtr(); Guchar *src = transpGroupStack->softmask->getDataPtr(); for (int c= 0; c < transpGroupStack->softmask->getRowSize() * transpGroupStack->softmask->getHeight(); c++) { dest[c] = src[c]; } delete transpGroupStack->softmask; - transpGroupStack->softmask = NULL; + transpGroupStack->softmask = nullptr; } endTransparencyGroup(state); baseMatrix[4] += transpGroupStack->tx; @@ -3005,13 +3001,13 @@ GBool SplashOutputDev::useIccImageSrc(void *data) { switch (imgData->colorMode) { case splashModeMono1: case splashModeMono8: - if (colorSpace->getAlt() != NULL && colorSpace->getAlt()->getMode() == csDeviceGray) + if (colorSpace->getAlt() != nullptr && colorSpace->getAlt()->getMode() == csDeviceGray) return gTrue; break; case splashModeXBGR8: case splashModeRGB8: case splashModeBGR8: - if (colorSpace->getAlt() != NULL && colorSpace->getAlt()->getMode() == csDeviceRGB) + if (colorSpace->getAlt() != nullptr && colorSpace->getAlt()->getMode() == csDeviceRGB) return gTrue; break; #ifdef SPLASH_CMYK @@ -3175,7 +3171,7 @@ GBool SplashOutputDev::imageSrc(void *data, SplashColorPtr colorLine, } } - if (imgData->maskStr != NULL && (p = imgData->maskStr->getLine()) != NULL) { + if (imgData->maskStr != nullptr && (p = imgData->maskStr->getLine()) != nullptr) { int destComps = splashColorModeNComps[imgData->colorMode]; int convComps = (imgData->colorMode == splashModeXBGR8) ? 3 : destComps; imgData->maskColorMap->getGrayLine(p, p, imgData->width); @@ -3238,7 +3234,7 @@ void SplashOutputDev::iccTransform(void *data, SplashBitmap *bitmap) { int nComps = imgData->colorMap->getNumPixelComps(); Guchar *colorLine = (Guchar *) gmalloc(nComps * bitmap->getWidth()); - Guchar *rgbxLine = (imgData->colorMode == splashModeXBGR8) ? (Guchar *) gmalloc(3 * bitmap->getWidth()) : NULL; + Guchar *rgbxLine = (imgData->colorMode == splashModeXBGR8) ? (Guchar *) gmalloc(3 * bitmap->getWidth()) : nullptr; for (int i = 0; i < bitmap->getHeight(); i++) { Guchar *p = bitmap->getDataPtr() + i * bitmap->getRowSize(); switch (imgData->colorMode) { @@ -3278,7 +3274,7 @@ void SplashOutputDev::iccTransform(void *data, SplashBitmap *bitmap) { } } gfree(colorLine); - if (rgbxLine != NULL) + if (rgbxLine != nullptr) gfree(rgbxLine); } #endif @@ -3435,7 +3431,7 @@ GBool SplashOutputDev::tilingBitmapSrc(void *data, SplashColorPtr colorLine, } } } - if (alphaLine != NULL) { + if (alphaLine != nullptr) { SplashColorPtr aq = alphaLine; SplashColorPtr p; const int n = imgData->bitmap->getWidth() - 1; @@ -3467,7 +3463,7 @@ GBool SplashOutputDev::tilingBitmapSrc(void *data, SplashColorPtr colorLine, dest += splashColorModeNComps[imgData->colorMode]; } } - if (alphaLine != NULL) { + if (alphaLine != nullptr) { const int y = (imgData->y == imgData->bitmap->getHeight() - 1 && imgData->y > 50) ? imgData->y - 1 : imgData->y; SplashColorPtr aq = alphaLine; SplashColorPtr p; @@ -3525,13 +3521,13 @@ void SplashOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, imgData.colorMode = colorMode; imgData.width = width; imgData.height = height; - imgData.maskStr = NULL; - imgData.maskColorMap = NULL; + imgData.maskStr = nullptr; + imgData.maskColorMap = nullptr; imgData.y = 0; // special case for one-channel (monochrome/gray/separation) images: // build a lookup table here - imgData.lookup = NULL; + imgData.lookup = nullptr; if (colorMap->getNumPixelComps() == 1) { n = 1 << colorMap->getBits(); switch (colorMode) { @@ -3606,7 +3602,7 @@ void SplashOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, state->getOverprintMode(), NULL, grayIndexed); #else setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(), - state->getOverprintMode(), NULL); + state->getOverprintMode(), nullptr); #endif if (colorMode == splashModeMono1) { @@ -3616,7 +3612,7 @@ void SplashOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, } #ifdef USE_CMS src = maskColors ? &alphaImageSrc : useIccImageSrc(&imgData) ? &iccImageSrc : &imageSrc; - tf = maskColors == NULL && useIccImageSrc(&imgData) ? &iccTransform : NULL; + tf = maskColors == nullptr && useIccImageSrc(&imgData) ? &iccTransform : nullptr; #else src = maskColors ? &alphaImageSrc : &imageSrc; tf = NULL; @@ -3763,7 +3759,6 @@ void SplashOutputDev::drawMaskedImage(GfxState *state, Object *ref, int maskHeight, GBool maskInvert, GBool maskInterpolate) { GfxImageColorMap *maskColorMap; - Object decodeLow, decodeHigh; double *ctm; SplashCoord mat[6]; SplashOutMaskedImageData imgData; @@ -3785,7 +3780,7 @@ void SplashOutputDev::drawMaskedImage(GfxState *state, Object *ref, colorMap->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS); #endif setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(), - state->getOverprintMode(), NULL); + state->getOverprintMode(), nullptr); // If the mask is higher resolution than the image, use // drawSoftMaskedImage() instead. @@ -3860,7 +3855,7 @@ void SplashOutputDev::drawMaskedImage(GfxState *state, Object *ref, // special case for one-channel (monochrome/gray/separation) images: // build a lookup table here - imgData.lookup = NULL; + imgData.lookup = nullptr; if (colorMap->getNumPixelComps() == 1) { n = 1 << colorMap->getBits(); switch (colorMode) { @@ -3925,7 +3920,7 @@ void SplashOutputDev::drawMaskedImage(GfxState *state, Object *ref, } else { srcMode = colorMode; } - splash->drawImage(&maskedImageSrc, NULL, &imgData, srcMode, gTrue, + splash->drawImage(&maskedImageSrc, nullptr, &imgData, srcMode, gTrue, width, height, mat, interpolate); delete maskBitmap; gfree(imgData.lookup); @@ -3963,7 +3958,7 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, colorMap->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS); #endif setOverprintMask(colorMap->getColorSpace(), state->getFillOverprint(), - state->getOverprintMode(), NULL); + state->getOverprintMode(), nullptr); ctm = state->getCTM(); for (i = 0; i < 6; ++i) { @@ -3978,7 +3973,7 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, //----- set up the soft mask - if (maskColorMap->getMatteColor() != NULL) { + if (maskColorMap->getMatteColor() != nullptr) { Guchar *data = (Guchar *) gmalloc(maskWidth * maskHeight); maskStr->reset(); maskStr->doGetChars(maskWidth * maskHeight, data); @@ -3991,13 +3986,13 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, maskColorMap->getBits()); imgMaskData.imgStr->reset(); imgMaskData.colorMap = maskColorMap; - imgMaskData.maskColors = NULL; + imgMaskData.maskColors = nullptr; imgMaskData.colorMode = splashModeMono8; imgMaskData.width = maskWidth; imgMaskData.height = maskHeight; imgMaskData.y = 0; - imgMaskData.maskStr = NULL; - imgMaskData.maskColorMap = NULL; + imgMaskData.maskStr = nullptr; + imgMaskData.maskColorMap = nullptr; n = 1 << maskColorMap->getBits(); imgMaskData.lookup = (SplashColorPtr)gmalloc(n); for (i = 0; i < n; ++i) { @@ -4010,10 +4005,10 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, maskSplash = new Splash(maskBitmap, vectorAntialias); maskColor[0] = 0; maskSplash->clear(maskColor); - maskSplash->drawImage(&imageSrc, NULL, &imgMaskData, splashModeMono8, gFalse, + maskSplash->drawImage(&imageSrc, nullptr, &imgMaskData, splashModeMono8, gFalse, maskWidth, maskHeight, mat, maskInterpolate); delete imgMaskData.imgStr; - if (maskColorMap->getMatteColor() == NULL) { + if (maskColorMap->getMatteColor() == nullptr) { maskStr->close(); } gfree(imgMaskData.lookup); @@ -4027,13 +4022,13 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, colorMap->getBits()); imgData.imgStr->reset(); imgData.colorMap = colorMap; - imgData.maskColors = NULL; + imgData.maskColors = nullptr; imgData.colorMode = colorMode; imgData.width = width; imgData.height = height; - imgData.maskStr = NULL; - imgData.maskColorMap = NULL; - if (maskColorMap->getMatteColor() != NULL) { + imgData.maskStr = nullptr; + imgData.maskColorMap = nullptr; + if (maskColorMap->getMatteColor() != nullptr) { getMatteColor(colorMode, colorMap, maskColorMap->getMatteColor(), imgData.matteColor); imgData.maskColorMap = maskColorMap; imgData.maskStr = new ImageStream(maskStr, maskWidth, @@ -4045,7 +4040,7 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, // special case for one-channel (monochrome/gray/separation) images: // build a lookup table here - imgData.lookup = NULL; + imgData.lookup = nullptr; if (colorMap->getNumPixelComps() == 1) { n = 1 << colorMap->getBits(); switch (colorMode) { @@ -4110,12 +4105,12 @@ void SplashOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, } else { srcMode = colorMode; } - splash->drawImage(&imageSrc, NULL, &imgData, srcMode, gFalse, width, height, mat, interpolate); - splash->setSoftMask(NULL); + splash->drawImage(&imageSrc, nullptr, &imgData, srcMode, gFalse, width, height, mat, interpolate); + splash->setSoftMask(nullptr); gfree(imgData.lookup); delete imgData.maskStr; delete imgData.imgStr; - if (maskColorMap->getMatteColor() != NULL) { + if (maskColorMap->getMatteColor() != nullptr) { maskStr->close(); delete maskStr; } @@ -4127,10 +4122,10 @@ GBool SplashOutputDev::checkTransparencyGroup(GfxState *state, GBool knockout) { state->getStrokeOpacity() != 1 || state->getAlphaIsShape() || state->getBlendMode() != gfxBlendNormal || - splash->getSoftMask() != NULL || + splash->getSoftMask() != nullptr || knockout) return gTrue; - return transpGroupStack != NULL && transpGroupStack->shape != NULL; + return transpGroupStack != nullptr && transpGroupStack->shape != nullptr; } void SplashOutputDev::beginTransparencyGroup(GfxState *state, double *bbox, @@ -4208,12 +4203,12 @@ void SplashOutputDev::beginTransparencyGroup(GfxState *state, double *bbox, // push a new stack entry transpGroup = new SplashTransparencyGroup(); - transpGroup->softmask = NULL; + transpGroup->softmask = nullptr; transpGroup->tx = tx; transpGroup->ty = ty; transpGroup->blendingColorSpace = blendingColorSpace; transpGroup->isolated = isolated; - transpGroup->shape = (knockout && !isolated) ? SplashBitmap::copy(bitmap) : NULL; + transpGroup->shape = (knockout && !isolated) ? SplashBitmap::copy(bitmap) : nullptr; transpGroup->knockout = (knockout && isolated); transpGroup->knockoutOpacity = 1.0; transpGroup->next = transpGroupStack; @@ -4259,7 +4254,7 @@ void SplashOutputDev::beginTransparencyGroup(GfxState *state, double *bbox, } splash = new Splash(bitmap, vectorAntialias, transpGroup->origSplash->getScreen()); - if (transpGroup->next != NULL && transpGroup->next->knockout) { + if (transpGroup->next != nullptr && transpGroup->next->knockout) { fontEngine->setAA(gFalse); } splash->setThinLineMode(transpGroup->origSplash->getThinLineMode()); @@ -4279,11 +4274,11 @@ void SplashOutputDev::beginTransparencyGroup(GfxState *state, double *bbox, splash->clear(color, 0); } else { SplashBitmap *shape = (knockout) ? transpGroup->shape : - (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->shape : transpGroup->origBitmap; + (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->shape : transpGroup->origBitmap; int shapeTx = (knockout) ? tx : - (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->tx + tx : tx; + (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->tx + tx : tx; int shapeTy = (knockout) ? ty : - (transpGroup->next != NULL && transpGroup->next->shape != NULL) ? transpGroup->next->ty + ty : ty; + (transpGroup->next != nullptr && transpGroup->next->shape != nullptr) ? transpGroup->next->ty + ty : ty; splash->blitTransparent(transpGroup->origBitmap, tx, ty, 0, 0, w, h); splash->setInNonIsolatedGroup(shape, shapeTx, shapeTy); } @@ -4318,14 +4313,14 @@ void SplashOutputDev::paintTransparencyGroup(GfxState *state, double *bbox) { // paint the transparency group onto the parent bitmap // - the clip path was set in the parent's state) if (tx < bitmap->getWidth() && ty < bitmap->getHeight()) { - SplashCoord knockoutOpacity = (transpGroupStack->next != NULL) ? transpGroupStack->next->knockoutOpacity + SplashCoord knockoutOpacity = (transpGroupStack->next != nullptr) ? transpGroupStack->next->knockoutOpacity : transpGroupStack->knockoutOpacity; splash->setOverprintMask(0xffffffff, gFalse); splash->composite(tBitmap, 0, 0, tx, ty, tBitmap->getWidth(), tBitmap->getHeight(), - gFalse, !isolated, transpGroupStack->next != NULL && transpGroupStack->next->knockout, knockoutOpacity); + gFalse, !isolated, transpGroupStack->next != nullptr && transpGroupStack->next->knockout, knockoutOpacity); fontEngine->setAA(transpGroupStack->fontAA); - if (transpGroupStack->next != NULL && transpGroupStack->next->shape != NULL) { + if (transpGroupStack->next != nullptr && transpGroupStack->next->shape != nullptr) { transpGroupStack->next->knockout = gTrue; } } @@ -4333,7 +4328,7 @@ void SplashOutputDev::paintTransparencyGroup(GfxState *state, double *bbox) { // pop the stack transpGroup = transpGroupStack; transpGroupStack = transpGroup->next; - if (transpGroupStack != NULL && transpGroup->knockoutOpacity < transpGroupStack->knockoutOpacity) { + if (transpGroupStack != nullptr && transpGroup->knockoutOpacity < transpGroupStack->knockoutOpacity) { transpGroupStack->knockoutOpacity = transpGroup->knockoutOpacity; } delete transpGroup->shape; @@ -4483,7 +4478,7 @@ void SplashOutputDev::setSoftMask(GfxState *state, double *bbox, } void SplashOutputDev::clearSoftMask(GfxState *state) { - splash->setSoftMask(NULL); + splash->setSoftMask(nullptr); } void SplashOutputDev::setPaperColor(SplashColorPtr paperColorA) { @@ -4657,7 +4652,7 @@ GBool SplashOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *ca bitmap = new SplashBitmap(surface_width, surface_height, 1, (paintType == 1) ? colorMode : splashModeMono8, gTrue); - if (bitmap->getDataPtr() == NULL) { + if (bitmap->getDataPtr() == nullptr) { SplashBitmap *tBitmap = bitmap; bitmap = formerBitmap; delete tBitmap; @@ -4681,7 +4676,7 @@ GBool SplashOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *ca box.x1 = bbox[0]; box.y1 = bbox[1]; box.x2 = bbox[2]; box.y2 = bbox[3]; - gfx = new Gfx(doc, this, resDict, &box, NULL, NULL, NULL, gfxA->getXRef()); + gfx = new Gfx(doc, this, resDict, &box, nullptr, nullptr, nullptr, gfxA->getXRef()); // set pattern transformation matrix gfx->getState()->setCTM(m1.m[0], m1.m[1], m1.m[2], m1.m[3], m1.m[4], m1.m[5]); updateCTM(gfx->getState(), m1.m[0], m1.m[1], m1.m[2], m1.m[3], m1.m[4], m1.m[5]); @@ -4728,7 +4723,7 @@ GBool SplashOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog *ca } retValue = gTrue; } else { - retValue = splash->drawImage(&tilingBitmapSrc, NULL, &imgData, colorMode, gTrue, result_width, result_height, matc, gFalse, gTrue) == splashOk; + retValue = splash->drawImage(&tilingBitmapSrc, nullptr, &imgData, colorMode, gTrue, result_width, result_height, matc, gFalse, gTrue) == splashOk; } delete tBitmap; delete gfx; @@ -4754,7 +4749,7 @@ GBool SplashOutputDev::gouraudTriangleShadedFill(GfxState *state, GfxGouraudTria } // restore vector antialias because we support it here if (shading->isParameterized()) { - SplashGouraudColor *splashShading = new SplashGouraudPattern(bDirectColorTranslation, state, shading, colorMode); + SplashGouraudColor *splashShading = new SplashGouraudPattern(bDirectColorTranslation, state, shading); GBool vaa = getVectorAntialias(); GBool retVal = gFalse; setVectorAntialias(gTrue); @@ -4821,7 +4816,7 @@ GBool SplashOutputDev::univariateShadedFill(GfxState *state, SplashUnivariatePat pattern->getShading()->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS); #endif setOverprintMask(pattern->getShading()->getColorSpace(), state->getFillOverprint(), - state->getOverprintMode(), NULL); + state->getOverprintMode(), nullptr); retVal = (splash->shadedFill(path, pattern->getShading()->getHasBBox(), pattern) == splashOk); state->clearPath(); setVectorAntialias(vaa); @@ -4886,7 +4881,7 @@ GBool SplashOutputDev::functionShadedFill(GfxState *state, GfxFunctionShading *s pattern->getShading()->getColorSpace()->createMapping(bitmap->getSeparationList(), SPOT_NCOMPS); #endif setOverprintMask(pattern->getShading()->getColorSpace(), state->getFillOverprint(), - state->getOverprintMode(), NULL); + state->getOverprintMode(), nullptr); retVal = (splash->shadedFill(path, pattern->getShading()->getHasBBox(), pattern) == splashOk); state->clearPath(); setVectorAntialias(vaa); diff --git a/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h index 05b7e9433b1..3a5883c421a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/SplashOutputDev.h @@ -20,7 +20,7 @@ // Copyright (C) 2011 Andreas Hartmetz // Copyright (C) 2011 Andrea Canciani // Copyright (C) 2011, 2017 Adrian Johnson -// Copyright (C) 2012, 2015 Albert Astals Cid +// Copyright (C) 2012, 2015, 2018 Albert Astals Cid // Copyright (C) 2015, 2016 William Bader // // To see a description of the changes please see the Changelog file that @@ -135,9 +135,9 @@ private: class SplashGouraudPattern: public SplashGouraudColor { public: - SplashGouraudPattern(GBool bDirectColorTranslation, GfxState *state, GfxGouraudTriangleShading *shading, SplashColorMode mode); + SplashGouraudPattern(GBool bDirectColorTranslation, GfxState *state, GfxGouraudTriangleShading *shading); - SplashPattern *copy() override { return new SplashGouraudPattern(bDirectColorTranslation, state, shading, mode); } + SplashPattern *copy() override { return new SplashGouraudPattern(bDirectColorTranslation, state, shading); } ~SplashGouraudPattern(); @@ -154,7 +154,7 @@ public: void getTriangle(int i, double *x0, double *y0, double *color0, double *x1, double *y1, double *color1, double *x2, double *y2, double *color2) override - { return shading->getTriangle(i, x0, y0, color0, x1, y1, color1, x2, y2, color2); } + { shading->getTriangle(i, x0, y0, color0, x1, y1, color1, x2, y2, color2); } void getParameterizedColor(double t, SplashColorMode mode, SplashColorPtr c) override; @@ -162,7 +162,6 @@ private: GfxGouraudTriangleShading *shading; GfxState *state; GBool bDirectColorTranslation; - SplashColorMode mode; GfxColorSpaceMode gfxMode; }; @@ -466,7 +465,6 @@ private: SplashTransparencyGroup * // transparency group stack transpGroupStack; - SplashBitmap *maskBitmap; // for image masks in pattern colorspace int nestCount; }; diff --git a/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc b/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc index db966377bb0..328c0a1e994 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/StdinCachedFile.cc @@ -29,7 +29,7 @@ size_t StdinCacheLoader::init(GooString *dummy, CachedFile *cachedFile) setmode(fileno(stdin), O_BINARY); #endif - CachedFileWriter writer = CachedFileWriter (cachedFile, NULL); + CachedFileWriter writer = CachedFileWriter (cachedFile, nullptr); do { read = fread(buf, 1, CachedFileChunkSize, stdin); (writer.write) (buf, CachedFileChunkSize); diff --git a/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc b/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc index f4aa12cf8ef..c7b08b723ad 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/StdinPDFDocBuilder.cc @@ -23,7 +23,7 @@ PDFDoc * StdinPDFDocBuilder::buildPDFDoc(const GooString &uri, GooString *ownerPassword, GooString *userPassword, void *guiDataA) { - CachedFile *cachedFile = new CachedFile(new StdinCacheLoader(), NULL); + CachedFile *cachedFile = new CachedFile(new StdinCacheLoader(), nullptr); return new PDFDoc(new CachedFileStream(cachedFile, 0, gFalse, cachedFile->getLength(), Object(objNull)), ownerPassword, userPassword); diff --git a/Build/source/libs/poppler/poppler-src/poppler/Stream.cc b/Build/source/libs/poppler/poppler-src/poppler/Stream.cc index da1d92675e2..0602c7bb556 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Stream.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/Stream.cc @@ -27,7 +27,7 @@ // Copyright (C) 2012 Oliver Sander // Copyright (C) 2012 Fabio D'Urso // Copyright (C) 2012 Even Rouault -// Copyright (C) 2013, 2017 Adrian Johnson +// Copyright (C) 2013, 2017, 2018 Adrian Johnson // Copyright (C) 2013 Adam Reichold // Copyright (C) 2013 Pino Toscano // Copyright (C) 2015 Suzuki Toshiya @@ -150,7 +150,7 @@ char *Stream::getLine(char *buf, int size) { int c; if (lookChar() == EOF || size < 0) - return NULL; + return nullptr; for (i = 0; i < size - 1; ++i) { c = getChar(); if (c == EOF || c == '\n') @@ -214,7 +214,7 @@ Stream *Stream::makeFilter(char *name, Stream *str, Object *params, int recursio int bits; int early; int encoding; - GBool endOfLine, byteAlign, endOfBlock, black; + GBool endOfLine, byteAlign, endOfBlock, black, damagedRowsBeforeError; int columns, rows; Object globals, obj; @@ -256,7 +256,8 @@ Stream *Stream::makeFilter(char *name, Stream *str, Object *params, int recursio rows = 0; endOfBlock = gTrue; black = gFalse; - if (params->isDict()) { + damagedRowsBeforeError = 0; + if (params->isDict()) { obj = params->dictLookup("K", recursion); if (obj.isInt()) { encoding = obj.getInt(); @@ -285,9 +286,13 @@ Stream *Stream::makeFilter(char *name, Stream *str, Object *params, int recursio if (obj.isBool()) { black = obj.getBool(); } + obj = params->dictLookup("DamagedRowsBeforeError", recursion); + if (obj.isInt()) { + damagedRowsBeforeError = obj.getInt(); + } } str = new CCITTFaxStream(str, encoding, endOfLine, byteAlign, - columns, rows, endOfBlock, black); + columns, rows, endOfBlock, black, damagedRowsBeforeError); } else if (!strcmp(name, "DCTDecode") || !strcmp(name, "DCT")) { #ifdef HAVE_DCT_DECODER int colorXform = -1; @@ -500,8 +505,8 @@ Guchar *ImageStream::getLine() { int i; Guchar *p; - if (unlikely(inputLine == NULL)) { - return NULL; + if (unlikely(inputLine == nullptr)) { + return nullptr; } int readChars = str->doGetChars(inputLineSize, inputLine); @@ -563,7 +568,7 @@ StreamPredictor::StreamPredictor(Stream *strA, int predictorA, width = widthA; nComps = nCompsA; nBits = nBitsA; - predLine = NULL; + predLine = nullptr; ok = gFalse; nVals = width * nComps; @@ -1056,13 +1061,13 @@ EmbedStream::~EmbedStream() { BaseStream *EmbedStream::copy() { error(errInternal, -1, "Called copy() on EmbedStream"); - return NULL; + return nullptr; } Stream *EmbedStream::makeSubStream(Goffset start, GBool limitedA, Goffset lengthA, Object &&dictA) { error(errInternal, -1, "Called makeSubStream() on EmbedStream"); - return NULL; + return nullptr; } void EmbedStream::rewind() { @@ -1132,7 +1137,7 @@ int EmbedStream::getChars(int nChars, Guchar *buffer) { len = bufLen - bufPos; if (nChars > len) nChars = len; - memcpy(buffer, bufData, len); + memcpy(buffer, bufData, nChars); return len; } else { if (limited && length < nChars) { @@ -1245,10 +1250,10 @@ GooString *ASCIIHexStream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 2) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("/ASCIIHexDecode filter\n"); return s; @@ -1326,10 +1331,10 @@ GooString *ASCII85Stream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 2) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("/ASCII85Decode filter\n"); return s; @@ -1350,10 +1355,10 @@ LZWStream::LZWStream(Stream *strA, int predictor, int columns, int colors, pred = new StreamPredictor(this, predictor, columns, colors, bits); if (!pred->isOk()) { delete pred; - pred = NULL; + pred = nullptr; } } else { - pred = NULL; + pred = nullptr; } early = earlyA; eof = gFalse; @@ -1534,10 +1539,10 @@ GooString *LZWStream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 2 || pred) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("<< "); if (!early) { @@ -1596,10 +1601,10 @@ GooString *RunLengthStream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 2) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("/RunLengthDecode filter\n"); return s; @@ -1641,12 +1646,13 @@ GBool RunLengthStream::fillBuf() { CCITTFaxStream::CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA, GBool byteAlignA, int columnsA, int rowsA, - GBool endOfBlockA, GBool blackA): + GBool endOfBlockA, GBool blackA, int damagedRowsBeforeErrorA): FilterStream(strA) { encoding = encodingA; endOfLine = endOfLineA; byteAlign = byteAlignA; columns = columnsA; + damagedRowsBeforeError = damagedRowsBeforeErrorA; if (columns < 1) { columns = 1; } else if (columns > INT_MAX - 2) { @@ -1662,7 +1668,7 @@ CCITTFaxStream::CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA, codingLine = (int *)gmallocn_checkoverflow(columns + 1, sizeof(int)); refLine = (int *)gmallocn_checkoverflow(columns + 2, sizeof(int)); - if (codingLine != NULL && refLine != NULL) { + if (codingLine != nullptr && refLine != nullptr) { eof = gFalse; codingLine[0] = columns; } else { @@ -1706,7 +1712,7 @@ void CCITTFaxStream::reset() { ccittReset(gFalse); - if (codingLine != NULL && refLine != NULL) { + if (codingLine != nullptr && refLine != nullptr) { eof = gFalse; codingLine[0] = columns; } else { @@ -2407,10 +2413,10 @@ GooString *CCITTFaxStream::getPSFilter(int psLevel, const char *indent) { char s1[50]; if (psLevel < 2) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("<< "); if (encoding != 0) { @@ -4567,13 +4573,13 @@ FlateStream::FlateStream(Stream *strA, int predictor, int columns, pred = new StreamPredictor(this, predictor, columns, colors, bits); if (!pred->isOk()) { delete pred; - pred = NULL; + pred = nullptr; } } else { - pred = NULL; + pred = nullptr; } - litCodeTab.codes = NULL; - distCodeTab.codes = NULL; + litCodeTab.codes = nullptr; + distCodeTab.codes = nullptr; memset(buf, 0, flateWindow); } @@ -4685,10 +4691,10 @@ GooString *FlateStream::getPSFilter(int psLevel, const char *indent) { GooString *s; if (psLevel < 3 || pred) { - return NULL; + return nullptr; } if (!(s = str->getPSFilter(psLevel, indent))) { - return NULL; + return nullptr; } s->append(indent)->append("<< >> /FlateDecode filter\n"); return s; @@ -4772,11 +4778,11 @@ GBool FlateStream::startBlock() { if (litCodeTab.codes != fixedLitCodeTab.codes) { gfree(litCodeTab.codes); } - litCodeTab.codes = NULL; + litCodeTab.codes = nullptr; if (distCodeTab.codes != fixedDistCodeTab.codes) { gfree(distCodeTab.codes); } - distCodeTab.codes = NULL; + distCodeTab.codes = nullptr; // read block header blockHdr = getCodeWord(3); @@ -4846,7 +4852,7 @@ GBool FlateStream::readDynamicCodes() { int len, repeat, code; int i; - codeLenCodeTab.codes = NULL; + codeLenCodeTab.codes = nullptr; // read lengths if ((numLitCodes = getCodeWord(5)) == EOF) { @@ -5387,8 +5393,8 @@ void LZWEncoder::reset() { // initialize code table for (i = 0; i < 256; ++i) { table[i].byte = i; - table[i].next = NULL; - table[i].children = NULL; + table[i].next = nullptr; + table[i].children = nullptr; } nextSeq = 258; codeLen = 9; @@ -5472,11 +5478,11 @@ void LZWEncoder::fillBuf() { // update the table table[nextSeq].byte = seqLen < inBufLen ? inBuf[seqLen] : 0; - table[nextSeq].children = NULL; + table[nextSeq].children = nullptr; if (table[code].children) { table[nextSeq].next = table[code].children; } else { - table[nextSeq].next = NULL; + table[nextSeq].next = nullptr; } table[code].children = table + nextSeq; ++nextSeq; @@ -5493,8 +5499,8 @@ void LZWEncoder::fillBuf() { outBuf = (outBuf << 12) | 256; outBufLen += 12; for (i = 0; i < 256; ++i) { - table[i].next = NULL; - table[i].children = NULL; + table[i].next = nullptr; + table[i].children = nullptr; } nextSeq = 258; codeLen = 9; diff --git a/Build/source/libs/poppler/poppler-src/poppler/Stream.h b/Build/source/libs/poppler/poppler-src/poppler/Stream.h index 152dbb0fea1..b58da825cea 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/Stream.h +++ b/Build/source/libs/poppler/poppler-src/poppler/Stream.h @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Jeff Muizelaar // Copyright (C) 2008 Julien Rebetez -// Copyright (C) 2008, 2010, 2011, 2016, 2017 Albert Astals Cid +// Copyright (C) 2008, 2010, 2011, 2016-2018 Albert Astals Cid // Copyright (C) 2009 Carlos Garcia Campos // Copyright (C) 2009 Stefan Thomas // Copyright (C) 2010 Hib Eris @@ -105,6 +105,9 @@ public: // Destructor. virtual ~Stream(); + Stream(const Stream &) = delete; + Stream& operator=(const Stream &other) = delete; + // Get kind of stream. virtual StreamKind getKind() = 0; @@ -257,6 +260,9 @@ public: // Desctructor. virtual ~OutStream (); + OutStream(const OutStream &) = delete; + OutStream& operator=(const OutStream &other) = delete; + // Close the stream virtual void close() = 0; @@ -368,6 +374,9 @@ public: ~ImageStream(); + ImageStream(const ImageStream &) = delete; + ImageStream& operator=(const ImageStream &other) = delete; + // Reset the stream. void reset(); @@ -412,6 +421,9 @@ public: ~StreamPredictor(); + StreamPredictor(const StreamPredictor &) = delete; + StreamPredictor& operator=(const StreamPredictor &) = delete; + GBool isOk() { return ok; } int lookChar(); @@ -794,7 +806,7 @@ public: CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA, GBool byteAlignA, int columnsA, int rowsA, - GBool endOfBlockA, GBool blackA); + GBool endOfBlockA, GBool blackA, int damagedRowsBeforeErrorA); ~CCITTFaxStream(); StreamKind getKind() override { return strCCITTFax; } void reset() override; @@ -808,8 +820,11 @@ public: int getEncoding() { return encoding; } GBool getEndOfLine() { return endOfLine; } + GBool getEncodedByteAlign() { return byteAlign; } + GBool getEndOfBlock() { return endOfBlock; } int getColumns() { return columns; } GBool getBlackIs1() { return black; } + int getDamagedRowsBeforeError() { return damagedRowsBeforeError; } private: @@ -821,6 +836,7 @@ private: int rows; // 'Rows' parameter GBool endOfBlock; // 'EndOfBlock' parameter GBool black; // 'BlackIs1' parameter + int damagedRowsBeforeError; // 'DamagedRowsBeforeError' parameter GBool eof; // true if at eof GBool nextLine2D; // true if next line uses 2D encoding int row; // current row diff --git a/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc b/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc index 62925474350..5bf3a33f446 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/StructElement.cc @@ -6,8 +6,9 @@ // // Copyright 2013, 2014 Igalia S.L. // Copyright 2014 Luigi Scarso -// Copyright 2014, 2017 Albert Astals Cid +// Copyright 2014, 2017, 2018 Albert Astals Cid // Copyright 2015 Dmytro Morgun +// Copyright 2018 Adrian Johnson // //======================================================================== @@ -267,7 +268,7 @@ static const AttributeDefaults attributeDefaults; #define ATTR_LIST_END \ - { Attribute::Unknown, NULL, NULL, gFalse, NULL } + { Attribute::Unknown, nullptr, nullptr, gFalse, nullptr } #define ATTR_WITH_DEFAULT(name, inherit, check, defval) \ { Attribute::name, \ @@ -279,7 +280,7 @@ static const AttributeDefaults attributeDefaults; #define ATTR(name, inherit, check) \ { Attribute::name, \ #name, \ - NULL, \ + nullptr, \ inherit, \ check } @@ -382,24 +383,24 @@ static const AttributeMapEntry *attributeMapAll[] = { attributeMapCommonPrintField, attributeMapCommonTable, attributeMapCommonTableCell, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapShared[] = { attributeMapCommonShared, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapBlock[] = { attributeMapCommonShared, attributeMapCommonBlock, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapInline[] = { attributeMapCommonShared, attributeMapCommonInline, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapTableCell[] = { @@ -407,34 +408,34 @@ static const AttributeMapEntry *attributeMapTableCell[] = { attributeMapCommonBlock, attributeMapCommonTable, attributeMapCommonTableCell, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapRubyText[] = { attributeMapCommonShared, attributeMapCommonInline, attributeMapCommonRubyText, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapColumns[] = { attributeMapCommonShared, attributeMapCommonInline, attributeMapCommonColumns, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapList[] = { attributeMapCommonShared, attributeMapCommonList, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapTable[] = { attributeMapCommonShared, attributeMapCommonBlock, attributeMapCommonTable, - NULL, + nullptr, }; static const AttributeMapEntry *attributeMapIllustration[] = { @@ -444,7 +445,7 @@ static const AttributeMapEntry *attributeMapIllustration[] = { attributeMapCommonShared, attributeMapCommonBlock, attributeMapCommonInline, - NULL, + nullptr, }; // Table mapping owners of attributes to their names. @@ -571,7 +572,7 @@ getAttributeMapEntry(const AttributeMapEntry **entryList, Attribute::Type type) } entryList++; } - return NULL; + return nullptr; } static inline const AttributeMapEntry * @@ -588,7 +589,7 @@ getAttributeMapEntry(const AttributeMapEntry **entryList, const char *name) } entryList++; } - return NULL; + return nullptr; } static inline const OwnerMapEntry *getOwnerMapEntry(Attribute::Owner owner) @@ -597,7 +598,7 @@ static inline const OwnerMapEntry *getOwnerMapEntry(Attribute::Owner owner) if (owner == ownerMap[i].owner) return &ownerMap[i]; } - return NULL; + return nullptr; } static inline const OwnerMapEntry *getOwnerMapEntry(const char *name) @@ -606,7 +607,7 @@ static inline const OwnerMapEntry *getOwnerMapEntry(const char *name) if (strcmp(name, ownerMap[i].name) == 0) return &ownerMap[i]; } - return NULL; + return nullptr; } static const char *ownerToName(Attribute::Owner owner) @@ -627,7 +628,7 @@ static inline const TypeMapEntry *getTypeMapEntry(StructElement::Type type) if (type == typeMap[i].type) return &typeMap[i]; } - return NULL; + return nullptr; } static inline const TypeMapEntry *getTypeMapEntry(const char *name) @@ -636,7 +637,7 @@ static inline const TypeMapEntry *getTypeMapEntry(const char *name) if (strcmp(name, typeMap[i].name) == 0) return &typeMap[i]; } - return NULL; + return nullptr; } static const char *typeToName(StructElement::Type type) @@ -668,20 +669,20 @@ Attribute::Attribute(const char *nameA, int nameLenA, Object *valueA): name(nameA, nameLenA), value(), hidden(gFalse), - formatted(NULL) + formatted(nullptr) { assert(valueA); value = valueA->copy(); } -Attribute::Attribute(Type type, Object *valueA): - type(type), +Attribute::Attribute(Type typeA, Object *valueA): + type(typeA), owner(UserProperties), // TODO: Determine corresponding owner from Type revision(0), name(), value(), hidden(gFalse), - formatted(NULL) + formatted(nullptr) { assert(valueA); @@ -716,7 +717,7 @@ const char *Attribute::getOwnerName() const Object *Attribute::getDefaultValue(Attribute::Type type) { const AttributeMapEntry *entry = getAttributeMapEntry(attributeMapAll, type); - return entry ? const_cast(entry->defval) : NULL; + return entry ? const_cast(entry->defval) : nullptr; } void Attribute::setFormattedValue(const char *formattedA) @@ -728,7 +729,7 @@ void Attribute::setFormattedValue(const char *formattedA) formatted = new GooString(formattedA); } else { delete formatted; - formatted = NULL; + formatted = nullptr; } } @@ -816,12 +817,12 @@ Attribute *Attribute::parseUserProperty(Dict *property) //------------------------------------------------------------------------ StructElement::StructData::StructData(): - altText(0), - actualText(0), - id(0), - title(0), - expandedAbbr(0), - language(0), + altText(nullptr), + actualText(nullptr), + id(nullptr), + title(nullptr), + expandedAbbr(nullptr), + language(nullptr), revision(0) { } @@ -930,9 +931,9 @@ const Attribute *StructElement::findAttribute(Attribute::Type attributeType, GBo return parent->findAttribute(attributeType, inherit, attributeOwner); if (attributeType == Attribute::Unknown || attributeType == Attribute::UserProperty) - return NULL; + return nullptr; - const Attribute *result = NULL; + const Attribute *result = nullptr; if (attributeOwner == Attribute::UnknownOwner) { // Search for the attribute, no matter who the owner is @@ -967,7 +968,7 @@ const Attribute *StructElement::findAttribute(Attribute::Type attributeType, GBo return parent->findAttribute(attributeType, inherit, attributeOwner); } - return NULL; + return nullptr; } GooString* StructElement::appendSubTreeText(GooString *string, GBool recursive) const @@ -986,7 +987,7 @@ GooString* StructElement::appendSubTreeText(GooString *string, GBool recursive) } if (!recursive) - return NULL; + return nullptr; // Do a depth-first traversal, to get elements in logical order if (!string) @@ -1065,7 +1066,7 @@ void StructElement::parse(Dict *element) // Type name may not be standard, resolve through RoleMap first. if (treeRoot->getRoleMap()) { - type = roleMapResolve(treeRoot->getRoleMap(), obj.getName(), NULL); + type = roleMapResolve(treeRoot->getRoleMap(), obj.getName(), nullptr); } // Resolving through RoleMap may leave type as Unknown, e.g. for types @@ -1188,7 +1189,7 @@ StructElement *StructElement::parseChild(Object *ref, assert(childObj); assert(ref); - StructElement *child = NULL; + StructElement *child = nullptr; if (childObj->isInt()) { child = new StructElement(childObj->getInt(), treeRoot, this); @@ -1198,9 +1199,9 @@ StructElement *StructElement::parseChild(Object *ref, * page will be always scanned when calling StructElement::getText(). */ Object mcidObj = childObj->dictLookup("MCID"); - if (mcidObj.isInt()) { + if (!mcidObj.isInt()) { error(errSyntaxError, -1, "MCID object is wrong type ({0:s})", mcidObj.getTypeName()); - return NULL; + return nullptr; } child = new StructElement(mcidObj.getInt(), treeRoot, this); @@ -1246,7 +1247,7 @@ StructElement *StructElement::parseChild(Object *ref, treeRoot->parentTreeAdd(ref->getRef(), child); } else { delete child; - child = NULL; + child = nullptr; } } diff --git a/Build/source/libs/poppler/poppler-src/poppler/StructElement.h b/Build/source/libs/poppler/poppler-src/poppler/StructElement.h index cd89a970ddb..f5fcc524fc1 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StructElement.h +++ b/Build/source/libs/poppler/poppler-src/poppler/StructElement.h @@ -6,7 +6,7 @@ // // Copyright 2013, 2014 Igalia S.L. // Copyright 2014 Luigi Scarso -// Copyright 2014 Albert Astals Cid +// Copyright 2014, 2018 Albert Astals Cid // //======================================================================== @@ -169,8 +169,8 @@ public: StructTreeRoot *getStructTreeRoot() { return treeRoot; } // Optional element identifier. - const GooString *getID() const { return isContent() ? NULL : s->id; } - GooString *getID() { return isContent() ? NULL : s->id; } + const GooString *getID() const { return isContent() ? nullptr : s->id; } + GooString *getID() { return isContent() ? nullptr : s->id; } // Optional ISO language name, e.g. en_US GooString *getLanguage() { @@ -187,16 +187,16 @@ public: void setRevision(Guint revision) { if (isContent()) s->revision = revision; } // Optional element title, in human-readable form. - const GooString *getTitle() const { return isContent() ? NULL : s->title; } - GooString *getTitle() { return isContent() ? NULL : s->title; } + const GooString *getTitle() const { return isContent() ? nullptr : s->title; } + GooString *getTitle() { return isContent() ? nullptr : s->title; } // Optional element expanded abbreviation text. - const GooString *getExpandedAbbr() const { return isContent() ? NULL : s->expandedAbbr; } - GooString *getExpandedAbbr() { return isContent() ? NULL : s->expandedAbbr; } + const GooString *getExpandedAbbr() const { return isContent() ? nullptr : s->expandedAbbr; } + GooString *getExpandedAbbr() { return isContent() ? nullptr : s->expandedAbbr; } unsigned getNumChildren() const { return isContent() ? 0 : s->elements.size(); } - const StructElement *getChild(int i) const { return isContent() ? NULL : s->elements.at(i); } - StructElement *getChild(int i) { return isContent() ? NULL : s->elements.at(i); } + const StructElement *getChild(int i) const { return isContent() ? nullptr : s->elements.at(i); } + StructElement *getChild(int i) { return isContent() ? nullptr : s->elements.at(i); } void appendChild(StructElement *element) { if (!isContent() && element && element->isOk()) { @@ -205,8 +205,8 @@ public: } unsigned getNumAttributes() const { return isContent() ? 0 : s->attributes.size(); } - const Attribute *getAttribute(int i) const { return isContent() ? NULL : s->attributes.at(i); } - Attribute *getAttribute(int i) { return isContent() ? NULL : s->attributes.at(i); } + const Attribute *getAttribute(int i) const { return isContent() ? nullptr : s->attributes.at(i); } + Attribute *getAttribute(int i) { return isContent() ? nullptr : s->attributes.at(i); } void appendAttribute(Attribute *attribute) { if (!isContent() && attribute) { @@ -217,11 +217,11 @@ public: const Attribute* findAttribute(Attribute::Type attributeType, GBool inherit = gFalse, Attribute::Owner owner = Attribute::UnknownOwner) const; - const GooString *getAltText() const { return isContent() ? NULL : s->altText; } - GooString *getAltText() { return isContent() ? NULL : s->altText; } + const GooString *getAltText() const { return isContent() ? nullptr : s->altText; } + GooString *getAltText() { return isContent() ? nullptr : s->altText; } - const GooString *getActualText() const { return isContent() ? NULL : s->actualText; } - GooString *getActualText() { return isContent() ? NULL : s->actualText; } + const GooString *getActualText() const { return isContent() ? nullptr : s->actualText; } + GooString *getActualText() { return isContent() ? nullptr : s->actualText; } // Content text referenced by the element: // @@ -237,7 +237,7 @@ public: // A new string is returned, and the ownership passed to the caller. // GooString *getText(GBool recursive = gTrue) const { - return appendSubTreeText(NULL, recursive); + return appendSubTreeText(nullptr, recursive); } const TextSpanArray getTextSpans() const { @@ -270,6 +270,9 @@ private: StructData(); ~StructData(); + + StructData(const StructData &) = delete; + StructData& operator=(const StructData &) = delete; }; // Data in content elements (MCID, MCR) diff --git a/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc b/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc index 5f56111581e..9a53d9c9e97 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.cc @@ -7,8 +7,8 @@ // Copyright 2013, 2014 Igalia S.L. // Copyright 2014 Fabio D'Urso // Copyright 2017 Jan-Erik S -// Copyright 2017 Albert Astals Cid -// Copyright 2017 Adrian Johnson +// Copyright 2017, 2018 Albert Astals Cid +// Copyright 2017, 2018 Adrian Johnson // //======================================================================== @@ -53,52 +53,9 @@ void StructTreeRoot::parse(Dict *root) // corresponsing structure element. Here only the references are // loaded into the array, the pointers to the StructElements will // be filled-in later when parsing them. - Object obj = root->lookup("ParentTree"); - if (obj.isDict()) { - Object nums = obj.dictLookup("Nums"); - if (nums.isArray()) { - if (nums.arrayGetLength() % 2 == 0) { - parentTree.resize(nums.arrayGetLength() / 2); - // Index numbers in even positions, references in odd ones - for (int i = 0; i < nums.arrayGetLength(); i += 2) { - Object index = nums.arrayGet(i); - - if (!index.isInt()) { - error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i, index.getTypeName()); - continue; - } - const int idx = index.getInt(); - if (idx < 0 || idx >= (int)parentTree.size()) { - error(errSyntaxError, -1, "Nums item at position {0:d} is invalid value ({1:d}): [0..{2:d}]", i, idx, parentTree.size() - 1); - continue; - } - - Object value = nums.arrayGetNF(i + 1); - if (value.isRef()) { - parentTree[idx].resize(1); - parentTree[idx][0].ref = value.getRef(); - } else { - value = nums.arrayGet(i + 1); - if (value.isArray()) { - parentTree[idx].resize(value.arrayGetLength()); - for (int j = 0; j < value.arrayGetLength(); j++) { - Object itemvalue = value.arrayGetNF(j); - if (itemvalue.isRef()) - parentTree[idx][j].ref = itemvalue.getRef(); - else - error(errSyntaxError, -1, "Nums array item at position {0:d}/{1:d} is invalid type ({2:s})", i, j, itemvalue.getTypeName()); - } - } else { - error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i + 1, value.getTypeName()); - } - } - } - } else { - error(errSyntaxError, -1, "Nums array length is not a even ({0:d})", nums.arrayGetLength()); - } - } else { - error(errSyntaxError, -1, "Nums object is wrong type ({0:s})", nums.getTypeName()); - } + const Object parentTreeObj = root->lookup("ParentTree"); + if (parentTreeObj.isDict()) { + parseNumberTreeNode(parentTreeObj.getDict()); } std::set seenElements; @@ -117,7 +74,7 @@ void StructTreeRoot::parse(Dict *root) } Object obj = kids.arrayGet(i); if (obj.isDict()) { - StructElement *child = new StructElement(obj.getDict(), this, NULL, seenElements); + StructElement *child = new StructElement(obj.getDict(), this, nullptr, seenElements); if (child->isOk()) { if (marked && !(child->getType() == StructElement::Document || child->getType() == StructElement::Part || @@ -138,10 +95,7 @@ void StructTreeRoot::parse(Dict *root) } } } else if (kids.isDict()) { - if (marked) { - error(errSyntaxWarning, -1, "K has a child of wrong type for a tagged PDF ({0:s})", kids.getTypeName()); - } - StructElement *child = new StructElement(kids.getDict(), this, NULL, seenElements); + StructElement *child = new StructElement(kids.getDict(), this, nullptr, seenElements); if (child->isOk()) { appendChild(child); Object ref = root->lookupNF("K"); @@ -154,14 +108,80 @@ void StructTreeRoot::parse(Dict *root) } else if (!kids.isNull()) { error(errSyntaxWarning, -1, "K in StructTreeRoot is wrong type ({0:s})", kids.getTypeName()); } + + // refToParentMap is only used during parsing. Ensure all memory used by it is freed. + std::multimap().swap(refToParentMap); } -void StructTreeRoot::parentTreeAdd(const Ref &objectRef, StructElement *element) +void StructTreeRoot::parseNumberTreeNode(Dict *node) { - for (std::vector< std::vector >::iterator i = parentTree.begin(); i != parentTree.end(); ++i) { - for (std::vector::iterator j = i->begin(); j != i->end(); ++j) { - if (j->ref.num == objectRef.num && j->ref.gen == objectRef.gen) - j->element = element; + Object kids = node->lookup("Kids"); + if (kids.isArray()) { + for (int i = 0; i < kids.arrayGetLength(); i++) { + Object obj = kids.arrayGet(i); + if (obj.isDict()) { + parseNumberTreeNode(obj.getDict()); + } else { + error(errSyntaxError, -1, "Kids item at position {0:d} is wrong type ({1:s})", i, obj.getTypeName()); + } } + return; + } else if (!kids.isNull()) { + error(errSyntaxError, -1, "Kids object is wrong type ({0:s})", kids.getTypeName()); } + + Object nums = node->lookup("Nums"); + if (nums.isArray()) { + if (nums.arrayGetLength() % 2 == 0) { + // keys in even positions, references in odd ones + for (int i = 0; i < nums.arrayGetLength(); i += 2) { + Object key = nums.arrayGet(i); + + if (!key.isInt()) { + error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i, key.getTypeName()); + continue; + } + int keyVal = key.getInt(); + std::vector& vec = parentTree[keyVal]; + + Object value = nums.arrayGet(i + 1); + if (value.isArray()) { + vec.resize(value.arrayGetLength()); + memset(vec.data(), 0, vec.size()*sizeof(Parent*)); + for (int j = 0; j < value.arrayGetLength(); j++) { + Object itemvalue = value.arrayGetNF(j); + if (itemvalue.isRef()) { + Ref ref = itemvalue.getRef(); + vec[j].ref = ref; + refToParentMap.insert(std::pair(ref, &vec[j])); + } else if (!itemvalue.isNull()) { + error(errSyntaxError, -1, "Nums array item at position {0:d}/{1:d} is invalid type ({2:s})", i, j, itemvalue.getTypeName()); + } + } + } else { + value = nums.arrayGetNF(i + 1); + if (value.isRef()) { + Ref ref = value.getRef(); + vec.resize(1); + vec[0].ref = ref; + refToParentMap.insert(std::pair(ref, &vec[0])); + } else { + error(errSyntaxError, -1, "Nums item at position {0:d} is wrong type ({1:s})", i + 1, value.getTypeName()); + } + } + } + } else { + error(errSyntaxError, -1, "Nums array length is not a even ({0:d})", nums.arrayGetLength()); + } + } else { + error(errSyntaxError, -1, "Nums object is wrong type ({0:s})", nums.getTypeName()); + } +} + + +void StructTreeRoot::parentTreeAdd(const Ref &objectRef, StructElement *element) +{ + auto range = refToParentMap.equal_range(objectRef); + for (auto it = range.first; it !=range.second; ++it) + it->second->element = element; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h b/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h index 3b1f3c84421..89c7941cebf 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h +++ b/Build/source/libs/poppler/poppler-src/poppler/StructTreeRoot.h @@ -5,6 +5,8 @@ // This file is licensed under the GPLv2 or later // // Copyright 2013, 2014 Igalia S.L. +// Copyright 2018 Albert Astals Cid +// Copyright 2018 Adrian Johnson // //======================================================================== @@ -18,6 +20,7 @@ #include "goo/gtypes.h" #include "Object.h" #include "StructElement.h" +#include #include class Dict; @@ -30,6 +33,9 @@ public: StructTreeRoot(PDFDoc *docA, Dict *rootDict); ~StructTreeRoot(); + StructTreeRoot& operator=(const StructTreeRoot &) = delete; + StructTreeRoot(const StructTreeRoot &) = delete; + PDFDoc *getDoc() { return doc; } Dict *getRoleMap() { return roleMap.isDict() ? roleMap.getDict() : NULL; } Dict *getClassMap() { return classMap.isDict() ? classMap.getDict() : NULL; } @@ -43,9 +49,12 @@ public: } } - const StructElement *findParentElement(unsigned index) const { - if (index < parentTree.size() && parentTree[index].size() == 1) { - return parentTree[index][0].element; + const StructElement *findParentElement(int key, unsigned mcid = 0) const { + auto it = parentTree.find(key); + if (it != parentTree.end()) { + if (mcid < it->second.size()) { + return it->second[mcid].element; + } } return NULL; } @@ -59,11 +68,9 @@ private: Ref ref; StructElement *element; - Parent(): element(NULL) { ref.num = ref.gen = -1; } - Parent(const Parent &p): element(p.element) { - ref.num = p.ref.num; - ref.gen = p.ref.gen; - } + Parent(): element(nullptr) { ref.num = ref.gen = -1; } + Parent(const Parent &p) = default; + Parent& operator=(const Parent &) = default; ~Parent() {} }; @@ -71,9 +78,11 @@ private: Object roleMap; Object classMap; ElemPtrArray elements; - std::vector< std::vector > parentTree; + std::map > parentTree; + std::multimap refToParentMap; void parse(Dict *rootDict); + void parseNumberTreeNode(Dict *node); void parentTreeAdd(const Ref &objectRef, StructElement *element); friend class StructElement; diff --git a/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc b/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc index 9a77d050005..4397e49718c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.cc @@ -20,7 +20,7 @@ // Copyright (C) 2006 Jeff Muizelaar // Copyright (C) 2007, 2008, 2012, 2017 Adrian Johnson // Copyright (C) 2008 Koji Otani -// Copyright (C) 2008, 2010-2012, 2014-2017 Albert Astals Cid +// Copyright (C) 2008, 2010-2012, 2014-2018 Albert Astals Cid // Copyright (C) 2008 Pino Toscano // Copyright (C) 2008, 2010 Hib Eris // Copyright (C) 2009 Ross Moore @@ -30,7 +30,7 @@ // Copyright (C) 2010 Suzuki Toshiya // Copyright (C) 2011 Sam Liao // Copyright (C) 2012 Horst Prote -// Copyright (C) 2012, 2013-2017 Jason Crain +// Copyright (C) 2012, 2013-2018 Jason Crain // Copyright (C) 2012 Peter Breitenlohner // Copyright (C) 2013 José Aliste // Copyright (C) 2013 Thomas Freitag @@ -308,7 +308,7 @@ TextFontInfo::TextFontInfo(GfxState *state) { gfxFont->incRefCnt(); #ifdef TEXTOUT_WORD_LIST fontName = (gfxFont && gfxFont->getName()) ? gfxFont->getName()->copy() - : (GooString *)NULL; + : (GooString *)nullptr; flags = gfxFont ? gfxFont->getFlags() : 0; #endif } @@ -350,15 +350,15 @@ int TextFontInfo::getWMode() { TextWord::TextWord(GfxState *state, int rotA, double fontSizeA) { rot = rotA; fontSize = fontSizeA; - text = NULL; - charcode = NULL; - edge = NULL; - charPos = NULL; - font = NULL; - textMat = NULL; + text = nullptr; + charcode = nullptr; + edge = nullptr; + charPos = nullptr; + font = nullptr; + textMat = nullptr; len = size = 0; spaceAfter = gFalse; - next = NULL; + next = nullptr; #ifdef TEXTOUT_WORD_LIST GfxRGB rgb; @@ -374,7 +374,7 @@ TextWord::TextWord(GfxState *state, int rotA, double fontSizeA) { #endif underlined = gFalse; - link = NULL; + link = nullptr; } TextWord::~TextWord() { @@ -852,8 +852,8 @@ void TextWord::getCharBBox(int charIdx, double *xMinA, double *yMinA, TextPool::TextPool() { minBaseIdx = 0; maxBaseIdx = -1; - pool = NULL; - cursor = NULL; + pool = nullptr; + cursor = nullptr; cursorBaseIdx = -1; } @@ -901,14 +901,14 @@ void TextPool::addWord(TextWord *word) { pool = (TextWord **)gmallocn(maxBaseIdx - minBaseIdx + 1, sizeof(TextWord *)); for (baseIdx = minBaseIdx; baseIdx <= maxBaseIdx; ++baseIdx) { - pool[baseIdx - minBaseIdx] = NULL; + pool[baseIdx - minBaseIdx] = nullptr; } } else if (wordBaseIdx < minBaseIdx) { newMinBaseIdx = wordBaseIdx - 128; newPool = (TextWord **)gmallocn(maxBaseIdx - newMinBaseIdx + 1, sizeof(TextWord *)); for (baseIdx = newMinBaseIdx; baseIdx < minBaseIdx; ++baseIdx) { - newPool[baseIdx - newMinBaseIdx] = NULL; + newPool[baseIdx - newMinBaseIdx] = nullptr; } memcpy(&newPool[minBaseIdx - newMinBaseIdx], pool, (maxBaseIdx - minBaseIdx + 1) * sizeof(TextWord *)); @@ -920,7 +920,7 @@ void TextPool::addWord(TextWord *word) { pool = (TextWord **)greallocn(pool, newMaxBaseIdx - minBaseIdx + 1, sizeof(TextWord *)); for (baseIdx = maxBaseIdx + 1; baseIdx <= newMaxBaseIdx; ++baseIdx) { - pool[baseIdx - minBaseIdx] = NULL; + pool[baseIdx - minBaseIdx] = nullptr; } maxBaseIdx = newMaxBaseIdx; } @@ -931,7 +931,7 @@ void TextPool::addWord(TextWord *word) { w0 = cursor; w1 = cursor->next; } else { - w0 = NULL; + w0 = nullptr; w1 = pool[wordBaseIdx - minBaseIdx]; } for (; w1 && word->primaryCmp(w1) > 0; w0 = w1, w1 = w1->next) ; @@ -953,19 +953,19 @@ TextLine::TextLine(TextBlock *blkA, int rotA, double baseA) { blk = blkA; rot = rotA; base = baseA; - words = lastWord = NULL; - text = NULL; - edge = NULL; - col = NULL; + words = lastWord = nullptr; + text = nullptr; + edge = nullptr; + col = nullptr; len = 0; convertedLen = 0; hyphenated = gFalse; - next = NULL; + next = nullptr; xMin = yMin = 0; xMax = yMax = -1; - normalized = NULL; + normalized = nullptr; normalized_len = 0; - normalized_idx = NULL; + normalized_idx = nullptr; } TextLine::~TextLine() { @@ -1499,10 +1499,10 @@ TextBlock::TextBlock(TextPage *pageA, int rotA) { priMin = 0; priMax = page->pageWidth; pool = new TextPool(); - lines = NULL; - curLine = NULL; - next = NULL; - stackNext = NULL; + lines = nullptr; + curLine = nullptr; + next = nullptr; + stackNext = nullptr; tableId = -1; tableEnd = gFalse; } @@ -1561,13 +1561,13 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { secDelta = dupMaxSecDelta * word0->fontSize; maxBaseIdx = pool->getBaseIdx(word0->base + secDelta); found = gFalse; - word1 = word2 = NULL; // make gcc happy + word1 = word2 = nullptr; // make gcc happy for (idx1 = idx0; idx1 <= maxBaseIdx; ++idx1) { if (idx1 == idx0) { word1 = word0; word2 = word0->next; } else { - word1 = NULL; + word1 = nullptr; word2 = pool->getPool(idx1); } for (; word2; word1 = word2, word2 = word2->next) { @@ -1613,7 +1613,7 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { } // build the lines - curLine = NULL; + curLine = nullptr; poolMinBaseIdx = pool->minBaseIdx; charCount = 0; nLines = 0; @@ -1645,7 +1645,7 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { // create a new line word0 = pool->getPool(startBaseIdx); pool->setPool(startBaseIdx, word0->next); - word0->next = NULL; + word0->next = nullptr; line = new TextLine(this, word0->rot, word0->base); line->addWord(word0); lastWord = word0; @@ -1664,12 +1664,12 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { // find the left-most word whose baseline is in the range for // this line bestWordBaseIdx = 0; - bestWord0 = bestWord1 = NULL; + bestWord0 = bestWord1 = nullptr; overlap = gFalse; for (baseIdx = minBaseIdx; !overlap && baseIdx <= maxBaseIdx; ++baseIdx) { - for (word0 = NULL, word1 = pool->getPool(baseIdx); + for (word0 = nullptr, word1 = pool->getPool(baseIdx); word1; word0 = word1, word1 = word1->next) { if (word1->base >= minBase && @@ -1700,7 +1700,7 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { } else { pool->setPool(bestWordBaseIdx, bestWord1->next); } - bestWord1->next = NULL; + bestWord1->next = nullptr; line->addWord(bestWord1); lastWord = bestWord1; } @@ -1710,7 +1710,7 @@ void TextBlock::coalesce(UnicodeMap *uMap, double fixedPitch) { line0 = curLine; line1 = curLine->next; } else { - line0 = NULL; + line0 = nullptr; line1 = lines; } for (; @@ -2174,7 +2174,7 @@ int TextBlock::visitDepthFirst(TextBlock *blkList, int pos1, GBool* visited) { const int blockCacheSize = 4; TextBlock *blockCache[blockCacheSize]; - std::fill(blockCache, blockCache + blockCacheSize, (TextBlock*)NULL); + std::fill(blockCache, blockCache + blockCacheSize, (TextBlock*)nullptr); return visitDepthFirst(blkList, pos1, sorted, sortPos, visited, blockCache, blockCacheSize); } @@ -2192,7 +2192,7 @@ TextFlow::TextFlow(TextPage *pageA, TextBlock *blk) { priMin = blk->priMin; priMax = blk->priMax; blocks = lastBlk = blk; - next = NULL; + next = nullptr; } TextFlow::~TextFlow() { @@ -2326,7 +2326,7 @@ int TextWordList::getLength() { TextWord *TextWordList::get(int idx) { if (idx < 0 || idx >= words->getLength()) { - return NULL; + return nullptr; } return (TextWord *)words->get(idx); } @@ -2342,9 +2342,9 @@ TextPage::TextPage(GBool rawOrderA) { refCnt = 1; rawOrder = rawOrderA; - curWord = NULL; + curWord = nullptr; charPos = 0; - curFont = NULL; + curFont = nullptr; curFontSize = 0; nest = 0; nTinyChars = 0; @@ -2354,10 +2354,10 @@ TextPage::TextPage(GBool rawOrderA) { pools[rot] = new TextPool(); } } - flows = NULL; - blocks = NULL; - rawWords = NULL; - rawLastWord = NULL; + flows = nullptr; + blocks = nullptr; + rawWords = nullptr; + rawLastWord = nullptr; fonts = new GooList(); lastFindXMin = lastFindYMin = 0; haveLastFind = gFalse; @@ -2412,7 +2412,7 @@ void TextPage::clear() { if (curWord) { delete curWord; - curWord = NULL; + curWord = nullptr; } if (rawOrder) { while (rawWords) { @@ -2435,9 +2435,9 @@ void TextPage::clear() { deleteGooList(underlines, TextUnderline); deleteGooList(links, TextLink); - curWord = NULL; + curWord = nullptr; charPos = 0; - curFont = NULL; + curFont = nullptr; curFontSize = 0; nest = 0; nTinyChars = 0; @@ -2446,10 +2446,10 @@ void TextPage::clear() { pools[rot] = new TextPool(); } } - flows = NULL; - blocks = NULL; - rawWords = NULL; - rawLastWord = NULL; + flows = nullptr; + blocks = nullptr; + rawWords = nullptr; + rawLastWord = nullptr; fonts = new GooList(); underlines = new GooList(); links = new GooList(); @@ -2464,13 +2464,13 @@ void TextPage::updateFont(GfxState *state) { int i; // get the font info object - curFont = NULL; + curFont = nullptr; for (i = 0; i < fonts->getLength(); ++i) { curFont = (TextFontInfo *)fonts->get(i); if (curFont->matches(state)) { break; } - curFont = NULL; + curFont = nullptr; } if (!curFont) { curFont = new TextFontInfo(state); @@ -2618,6 +2618,8 @@ void TextPage::addChar(GfxState *state, double x, double y, } state->getFontTransMat(&mat.m[0], &mat.m[1], &mat.m[2], &mat.m[3]); + mat.m[0] *= state->getHorizScaling(); + mat.m[1] *= state->getHorizScaling(); mat.m[4] = x1; mat.m[5] = y1; @@ -2724,7 +2726,7 @@ void TextPage::endWord() { if (curWord) { addWord(curWord); - curWord = NULL; + curWord = nullptr; } } @@ -2781,8 +2783,8 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { } uMap = globalParams->getTextEncoding(); - blkList = NULL; - lastBlk = NULL; + blkList = nullptr; + lastBlk = nullptr; nBlocks = 0; primaryRot = 0; @@ -2989,7 +2991,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { // create a new block word0 = pool->getPool(startBaseIdx); pool->setPool(startBaseIdx, word0->next); - word0->next = NULL; + word0->next = nullptr; blk = new TextBlock(this, rot); blk->addWord(word0); @@ -3010,7 +3012,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (baseIdx = pool->getBaseIdx(minBase); baseIdx >= pool->getBaseIdx(minBase - lineSpace); --baseIdx) { - word0 = NULL; + word0 = nullptr; word1 = pool->getPool(baseIdx); while (word1) { if (word1->base < minBase && @@ -3027,7 +3029,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { pool->setPool(baseIdx, word1->next); } word1 = word1->next; - word2->next = NULL; + word2->next = nullptr; blk->addWord(word2); found = gTrue; newMinBase = word2->base; @@ -3045,7 +3047,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (baseIdx = pool->getBaseIdx(maxBase); baseIdx <= pool->getBaseIdx(maxBase + lineSpace); ++baseIdx) { - word0 = NULL; + word0 = nullptr; word1 = pool->getPool(baseIdx); while (word1) { if (word1->base > maxBase && @@ -3062,7 +3064,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { pool->setPool(baseIdx, word1->next); } word1 = word1->next; - word2->next = NULL; + word2->next = nullptr; blk->addWord(word2); found = gTrue; newMaxBase = word2->base; @@ -3079,7 +3081,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace); baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace); ++baseIdx) { - word0 = NULL; + word0 = nullptr; word1 = pool->getPool(baseIdx); while (word1) { if (word1->base >= minBase - intraLineSpace && @@ -3098,7 +3100,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { pool->setPool(baseIdx, word1->next); } word1 = word1->next; - word2->next = NULL; + word2->next = nullptr; blk->addWord(word2); found = gTrue; } else { @@ -3142,7 +3144,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace); baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace); ++baseIdx) { - word0 = NULL; + word0 = nullptr; word1 = pool->getPool(baseIdx); while (word1) { if (word1->base >= minBase - intraLineSpace && @@ -3161,7 +3163,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { pool->setPool(baseIdx, word1->next); } word1 = word1->next; - word2->next = NULL; + word2->next = nullptr; blk->addWord(word2); if (word2->base < minBase) { minBase = word2->base; @@ -3206,7 +3208,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (baseIdx = pool->getBaseIdx(minBase - intraLineSpace); baseIdx <= pool->getBaseIdx(maxBase + intraLineSpace); ++baseIdx) { - word0 = NULL; + word0 = nullptr; word1 = pool->getPool(baseIdx); while (word1) { if (word1->base >= minBase - intraLineSpace && @@ -3225,7 +3227,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { pool->setPool(baseIdx, word1->next); } word1 = word1->next; - word2->next = NULL; + word2->next = nullptr; blk->addWord(word2); if (word2->base < minBase) { minBase = word2->base; @@ -3358,7 +3360,9 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { for (blk = blkList, i = 0; blk; blk = blk->next, ++i) { blocks[i] = blk; } - qsort(blocks, nBlocks, sizeof(TextBlock *), &TextBlock::cmpXYPrimaryRot); + if (blocks) { + qsort(blocks, nBlocks, sizeof(TextBlock *), &TextBlock::cmpXYPrimaryRot); + } // column assignment for (i = 0; i < nBlocks; ++i) { @@ -3479,7 +3483,7 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { double xCentre1, yCentre1, xCentre2, yCentre2; double xCentre3, yCentre3, xCentre4, yCentre4; double deltaX, deltaY; - TextBlock *fblk2 = NULL, *fblk3 = NULL, *fblk4 = NULL; + TextBlock *fblk2 = nullptr, *fblk3 = nullptr, *fblk4 = nullptr; for (blk1 = blkList; blk1; blk1 = blk1->next) { blk1->ExMin = blk1->xMin; @@ -3492,9 +3496,9 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { bxMin1 = DBL_MAX; byMin1 = DBL_MAX; - fblk2 = NULL; - fblk3 = NULL; - fblk4 = NULL; + fblk2 = nullptr; + fblk3 = nullptr; + fblk4 = nullptr; /* find fblk2, fblk3 and fblk4 so that * fblk2 is on the right of blk1 and overlap with blk1 in y axis @@ -3531,25 +3535,25 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { * fblk2 can not overlap with fblk3 in x and y * fblk4 has to overlap with fblk3 in y and with fblk2 in x */ - if (fblk2 != NULL && - fblk3 != NULL && - fblk4 != NULL) { + if (fblk2 != nullptr && + fblk3 != nullptr && + fblk4 != nullptr) { if (((fblk3->xMin <= fblk4->xMax && fblk3->xMax >= fblk4->xMin) || (fblk2->yMin <= fblk4->yMax && fblk2->yMax >= fblk4->yMin) || (fblk2->xMin <= fblk3->xMax && fblk2->xMax >= fblk3->xMin) || (fblk2->yMin <= fblk3->yMax && fblk2->yMax >= fblk3->yMin)) || !(fblk4->xMin <= fblk2->xMax && fblk4->xMax >= fblk2->xMin && fblk4->yMin <= fblk3->yMax && fblk4->yMax >= fblk3->yMin)) { - fblk2 = NULL; - fblk3 = NULL; - fblk4 = NULL; + fblk2 = nullptr; + fblk3 = nullptr; + fblk4 = nullptr; } } // if we found any then look whether they form a table - if (fblk2 != NULL && - fblk3 != NULL && - fblk4 != NULL) { + if (fblk2 != nullptr && + fblk3 != nullptr && + fblk4 != nullptr) { tableId = -1; correspondenceX = 0; correspondenceY = 0; @@ -3772,13 +3776,13 @@ void TextPage::coalesce(GBool physLayout, double fixedPitch, GBool doHTML) { flows = flows->next; delete flow; } - flow = NULL; - flows = lastFlow = NULL; + flow = nullptr; + flows = lastFlow = nullptr; // assume blocks are already in reading order, // and construct flows accordingly. for (i = 0; i < nBlocks; i++) { blk = blocks[i]; - blk->next = NULL; + blk->next = nullptr; if (flow) { blk1 = blocks[i - 1]; blkSpace = maxBlockSpacing * blk1->lines->words->fontSize; @@ -3854,10 +3858,10 @@ GBool TextPage::findText(Unicode *s, int len, // handle right-to-left text reordered = (Unicode*)gmallocn(len, sizeof(Unicode)); - reorderText(s, len, NULL, primaryLR, NULL, reordered); + reorderText(s, len, nullptr, primaryLR, nullptr, reordered); // normalize the search string - s2 = unicodeNormalizeNFKC(reordered, len, &len, NULL); + s2 = unicodeNormalizeNFKC(reordered, len, &len, nullptr); // convert the search string to uppercase if (!caseSensitive) { @@ -3866,7 +3870,7 @@ GBool TextPage::findText(Unicode *s, int len, } } - txt = NULL; + txt = nullptr; txtSize = 0; xStart = yStart = xStop = yStop = 0; @@ -4301,6 +4305,8 @@ class TextSelectionVisitor { public: TextSelectionVisitor (TextPage *page); virtual ~TextSelectionVisitor () { } + TextSelectionVisitor(const TextSelectionVisitor &) = delete; + TextSelectionVisitor& operator=(const TextSelectionVisitor &) = delete; virtual void visitBlock (TextBlock *block, TextLine *begin, TextLine *end, @@ -4366,8 +4372,8 @@ TextSelectionDumper::TextSelectionDumper(TextPage *page) nLines = 0; tableId = -1; - currentBlock = NULL; - words = NULL; + currentBlock = nullptr; + words = nullptr; } TextSelectionDumper::~TextSelectionDumper() @@ -4394,7 +4400,7 @@ void TextSelectionDumper::finishLine() lines[nLines++] = words; else if (words) delete words; - words = NULL; + words = nullptr; } void TextSelectionDumper::visitLine (TextLine *line, @@ -4412,7 +4418,7 @@ void TextSelectionDumper::visitLine (TextLine *line, finishLine(); tableId = -1; - currentBlock = NULL; + currentBlock = nullptr; } if (frag.line->blk->tableId >= 0) { // a table @@ -4485,10 +4491,10 @@ GooList **TextSelectionDumper::takeWordList(int *nLinesOut) *nLinesOut = nLines; if (nLines == 0) - return NULL; + return nullptr; nLines = 0; - lines = NULL; + lines = nullptr; return returnValue; } @@ -4600,7 +4606,7 @@ TextSelectionPainter::TextSelectionPainter(TextPage *page, state->getCTM(&ctm); ctm.invertTo(&ictm); - out->startPage(0, state, NULL); + out->startPage(0, state, nullptr); out->setDefaultCTM (state->getCTM()); state->setFillColorSpace(new GfxDeviceRGBColorSpace()); @@ -4696,7 +4702,7 @@ void TextSelectionPainter::endPage() continue; out->drawChar(state, sel->word->textMat[i].m[4], sel->word->textMat[i].m[5], 0, 0, 0, 0, - sel->word->charcode[i], 1, NULL, 0); + sel->word->charcode[i], 1, nullptr, 0); } out->endString(state); delete string; @@ -4740,29 +4746,29 @@ void TextLine::visitSelection(TextSelectionVisitor *visitor, int i, edge_begin, edge_end; PDFRectangle child_selection; - begin = NULL; - end = NULL; - current = NULL; - for (p = words; p != NULL; p = p->next) { + begin = nullptr; + end = nullptr; + current = nullptr; + for (p = words; p != nullptr; p = p->next) { if (blk->page->primaryLR) { if ((selection->x1 < p->xMax) || (selection->x2 < p->xMax)) - if (begin == NULL) + if (begin == nullptr) begin = p; if (((selection->x1 > p->xMin) || - (selection->x2 > p->xMin)) && (begin != NULL)) { + (selection->x2 > p->xMin)) && (begin != nullptr)) { end = p->next; current = p; } } else { if ((selection->x1 > p->xMin) || (selection->x2 > p->xMin)) - if (begin == NULL) + if (begin == nullptr) begin = p; if (((selection->x1 < p->xMax) || - (selection->x2 < p->xMax)) && (begin != NULL)) { + (selection->x2 < p->xMax)) && (begin != nullptr)) { end = p->next; current = p; } @@ -4829,7 +4835,7 @@ void TextBlock::visitSelection(TextSelectionVisitor *visitor, best_line[i] = this->lines; best_count[i] = 1; } else { - best_line[i] = NULL; + best_line[i] = nullptr; best_count[i] = 0; } } else { @@ -4838,7 +4844,7 @@ void TextBlock::visitSelection(TextSelectionVisitor *visitor, best_line[i] = this->lines; best_count[i] = 1; } else { - best_line[i] = NULL; + best_line[i] = nullptr; best_count[i] = 0; } } @@ -4941,8 +4947,8 @@ void TextPage::visitSelection(TextSelectionVisitor *visitor, yMax = 0.0; for (i = 0; i < 2; i++) { - best_block[i] = NULL; - best_flow[i] = NULL; + best_block[i] = nullptr; + best_flow[i] = nullptr; best_count[i] = 0; best_d[i] = 0; } @@ -5455,7 +5461,7 @@ void TextPage::assignColumns(TextLineFrag *frags, int nFrags, GBool oneRot) { int TextPage::dumpFragment(Unicode *text, int len, UnicodeMap *uMap, GooString *s) { if (uMap->isUnicode()) { - return reorderText(text, len, uMap, primaryLR, s, NULL); + return reorderText(text, len, uMap, primaryLR, s, nullptr); } else { int nCols = 0; @@ -5484,7 +5490,7 @@ TextWordList *TextPage::makeWordList(GBool physLayout) { ActualText::ActualText(TextPage *out) { out->incRefCnt(); text = out; - actualText = NULL; + actualText = nullptr; actualTextNBytes = 0; } @@ -5524,7 +5530,7 @@ void ActualText::end(GfxState *state) { // extents of all the glyphs inside the span if (actualTextNBytes) { - Unicode *uni = NULL; + Unicode *uni = nullptr; int length; // now that we have the position info for all of the text inside @@ -5538,7 +5544,7 @@ void ActualText::end(GfxState *state) { } delete actualText; - actualText = NULL; + actualText = nullptr; actualTextNBytes = 0; } @@ -5553,7 +5559,7 @@ static void TextOutputDev_outputToFile(void *stream, const char *text, int len) TextOutputDev::TextOutputDev(char *fileName, GBool physLayoutA, double fixedPitchA, GBool rawOrderA, GBool append) { - text = NULL; + text = nullptr; physLayout = physLayoutA; fixedPitch = physLayout ? fixedPitchA : 0; rawOrder = rawOrderA; @@ -5574,12 +5580,12 @@ TextOutputDev::TextOutputDev(char *fileName, GBool physLayoutA, } else { error(errIO, -1, "Couldn't open text file '{0:s}'", fileName); ok = gFalse; - actualText = NULL; + actualText = nullptr; return; } outputFunc = &TextOutputDev_outputToFile; } else { - outputStream = NULL; + outputStream = nullptr; } // set up text object diff --git a/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h b/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h index 380301fdeeb..b5a6088c08a 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h +++ b/Build/source/libs/poppler/poppler-src/poppler/TextOutputDev.h @@ -17,7 +17,7 @@ // Copyright (C) 2006 Ed Catmur // Copyright (C) 2007, 2008, 2011, 2013 Carlos Garcia Campos // Copyright (C) 2007, 2017 Adrian Johnson -// Copyright (C) 2008, 2010, 2015, 2016 Albert Astals Cid +// Copyright (C) 2008, 2010, 2015, 2016, 2018 Albert Astals Cid // Copyright (C) 2010 Brian Ewins // Copyright (C) 2012, 2013, 2015, 2016 Jason Crain // Copyright (C) 2013 Thomas Freitag @@ -79,6 +79,9 @@ public: TextFontInfo(GfxState *state); ~TextFontInfo(); + TextFontInfo(const TextFontInfo &) = delete; + TextFontInfo& operator=(const TextFontInfo &) = delete; + GBool matches(GfxState *state); GBool matches(TextFontInfo *fontInfo); @@ -129,6 +132,9 @@ public: // Destructor. ~TextWord(); + TextWord(const TextWord &) = delete; + TextWord& operator=(const TextWord &) = delete; + // Add a character to the word. void addChar(GfxState *state, TextFontInfo *fontA, double x, double y, double dx, double dy, int charPosA, int charLen, @@ -244,6 +250,9 @@ public: TextPool(); ~TextPool(); + TextPool(const TextPool &) = delete; + TextPool& operator=(const TextPool &) = delete; + TextWord *getPool(int baseIdx) { return pool[baseIdx - minBaseIdx]; } void setPool(int baseIdx, TextWord *p) { pool[baseIdx - minBaseIdx] = p; } @@ -276,6 +285,9 @@ public: TextLine(TextBlock *blkA, int rotA, double baseA); ~TextLine(); + TextLine(const TextLine &) = delete; + TextLine& operator=(const TextLine &) = delete; + void addWord(TextWord *word); // Return the distance along the primary axis between and @@ -353,6 +365,9 @@ public: TextBlock(TextPage *pageA, int rotA); ~TextBlock(); + TextBlock(const TextBlock &) = delete; + TextBlock& operator=(const TextBlock &) = delete; + void addWord(TextWord *word); void coalesce(UnicodeMap *uMap, double fixedPitch); @@ -442,6 +457,9 @@ public: TextFlow(TextPage *pageA, TextBlock *blk); ~TextFlow(); + TextFlow(const TextFlow &) = delete; + TextFlow& operator=(const TextFlow &) = delete; + // Add a block to the end of this flow. void addBlock(TextBlock *blk); @@ -488,6 +506,9 @@ public: ~TextWordList(); + TextWordList(const TextWordList &) = delete; + TextWordList& operator=(const TextWordList &) = delete; + // Return the number of words on the list. int getLength(); @@ -503,8 +524,8 @@ private: class TextWordSelection { public: - TextWordSelection(TextWord *word, int begin, int end) - : word(word), begin(begin), end(end) + TextWordSelection(TextWord *wordA, int beginA, int endA) + : word(wordA), begin(beginA), end(endA) { } @@ -531,6 +552,9 @@ public: // Constructor. TextPage(GBool rawOrderA); + TextPage(const TextPage &) = delete; + TextPage& operator=(const TextPage &) = delete; + void incRefCnt(); void decRefCnt(); @@ -702,6 +726,9 @@ public: ActualText(TextPage *out); ~ActualText(); + ActualText(const ActualText &) = delete; + ActualText& operator=(const ActualText &) = delete; + void addChar(GfxState *state, double x, double y, double dx, double dy, CharCode c, int nBytes, Unicode *u, int uLen); diff --git a/Build/source/libs/poppler/poppler-src/poppler/UTF.cc b/Build/source/libs/poppler/poppler-src/poppler/UTF.cc index 878837a8831..da2faad1c3f 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/UTF.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/UTF.cc @@ -16,7 +16,7 @@ // Copyright (C) 2008 Koji Otani // Copyright (C) 2012, 2017 Adrian Johnson // Copyright (C) 2012 Hib Eris -// Copyright (C) 2016 Albert Astals Cid +// Copyright (C) 2016, 2018 Albert Astals Cid // Copyright (C) 2016 Jason Crain // // To see a description of the changes please see the Changelog file that @@ -52,7 +52,7 @@ int UTF16toUCS4(const Unicode *utf16, int utf16Len, Unicode **ucs4) } len++; } - if (ucs4 == NULL) + if (ucs4 == nullptr) return len; u = (Unicode*)gmallocn(len, sizeof(Unicode)); @@ -94,7 +94,7 @@ int TextStringToUCS4(GooString *textStr, Unicode **ucs4) len = textStr->getLength(); s = textStr->getCString(); if (len == 0) { - *ucs4 = 0; + *ucs4 = nullptr; return 0; } @@ -109,7 +109,7 @@ int TextStringToUCS4(GooString *textStr, Unicode **ucs4) len = UTF16toUCS4(utf16, len, &u); delete[] utf16; } else { - u = NULL; + u = nullptr; } } else { u = (Unicode*)gmallocn(len, sizeof(Unicode)); @@ -331,7 +331,7 @@ inline uint32_t decodeUtf16(uint32_t* state, uint32_t* codePoint, uint16_t codeU // UTF-8 (excluding terminating NULL). int utf16CountUtf8Bytes(const uint16_t *utf16) { - uint32_t codepoint; + uint32_t codepoint = 0; uint32_t state = 0; int count = 0; diff --git a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc index 25b3de13d52..dabdce2ad3c 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.cc @@ -67,7 +67,7 @@ UnicodeMap *UnicodeMap::parse(GooString *encodingNameA) { error(errSyntaxError, -1, "Couldn't find unicodeMap file for the '{0:t}' encoding", encodingNameA); - return NULL; + return nullptr; } map = new UnicodeMap(encodingNameA->copy()); @@ -79,8 +79,8 @@ UnicodeMap *UnicodeMap::parse(GooString *encodingNameA) { line = 1; while (getLine(buf, sizeof(buf), f)) { if ((tok1 = strtok_r(buf, " \t\r\n", &tokptr)) && - (tok2 = strtok_r(NULL, " \t\r\n", &tokptr))) { - if (!(tok3 = strtok_r(NULL, " \t\r\n", &tokptr))) { + (tok2 = strtok_r(nullptr, " \t\r\n", &tokptr))) { + if (!(tok3 = strtok_r(nullptr, " \t\r\n", &tokptr))) { tok3 = tok2; tok2 = tok1; } @@ -134,9 +134,9 @@ UnicodeMap::UnicodeMap(GooString *encodingNameA) { encodingName = encodingNameA; unicodeOut = gFalse; kind = unicodeMapUser; - ranges = NULL; + ranges = nullptr; len = 0; - eMaps = NULL; + eMaps = nullptr; eMapsLen = 0; refCnt = 1; #ifdef MULTITHREADED @@ -151,7 +151,7 @@ UnicodeMap::UnicodeMap(const char *encodingNameA, GBool unicodeOutA, kind = unicodeMapResident; ranges = rangesA; len = lenA; - eMaps = NULL; + eMaps = nullptr; eMapsLen = 0; refCnt = 1; #ifdef MULTITHREADED @@ -165,7 +165,7 @@ UnicodeMap::UnicodeMap(const char *encodingNameA, GBool unicodeOutA, unicodeOut = unicodeOutA; kind = unicodeMapFunc; func = funcA; - eMaps = NULL; + eMaps = nullptr; eMapsLen = 0; refCnt = 1; #ifdef MULTITHREADED @@ -268,7 +268,7 @@ UnicodeMapCache::UnicodeMapCache() { int i; for (i = 0; i < unicodeMapCacheSize; ++i) { - cache[i] = NULL; + cache[i] = nullptr; } } @@ -312,5 +312,5 @@ UnicodeMap *UnicodeMapCache::getUnicodeMap(GooString *encodingName) { map->incRefCnt(); return map; } - return NULL; + return nullptr; } diff --git a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h index 46b4c0f95ed..f3444aa5d43 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h +++ b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMap.h @@ -16,6 +16,7 @@ // under GPL version 2 or later // // Copyright (C) 2017 Adrian Johnson +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -76,6 +77,9 @@ public: ~UnicodeMap(); + UnicodeMap(const UnicodeMap &) = delete; + UnicodeMap& operator=(const UnicodeMap &) = delete; + void incRefCnt(); void decRefCnt(); @@ -123,6 +127,9 @@ public: UnicodeMapCache(); ~UnicodeMapCache(); + UnicodeMapCache(const UnicodeMapCache &) = delete; + UnicodeMapCache& operator=(const UnicodeMapCache &) = delete; + // Get the UnicodeMap for . Increments its reference // count; there will be one reference for the cache plus one for the // caller of this function. Returns NULL on failure. diff --git a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc new file mode 100644 index 00000000000..3eb82d501e8 --- /dev/null +++ b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.cc @@ -0,0 +1,88 @@ +//======================================================================== +// +// UnicodeMapFuncs.cc +// +// Copyright 2001-2003 Glyph & Cog, LLC +// +//======================================================================== + +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2008 Koji Otani +// Copyright (C) 2017 Adrian Johnson +// Copyright (C) 2018 Albert Astals Cid +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + +#include "UnicodeMapFuncs.h" + +int mapUTF8(Unicode u, char *buf, int bufSize) { + if (u <= 0x0000007f) { + if (bufSize < 1) { + return 0; + } + buf[0] = (char)u; + return 1; + } else if (u <= 0x000007ff) { + if (bufSize < 2) { + return 0; + } + buf[0] = (char)(0xc0 + (u >> 6)); + buf[1] = (char)(0x80 + (u & 0x3f)); + return 2; + } else if (u <= 0x0000ffff) { + if (bufSize < 3) { + return 0; + } + buf[0] = (char)(0xe0 + (u >> 12)); + buf[1] = (char)(0x80 + ((u >> 6) & 0x3f)); + buf[2] = (char)(0x80 + (u & 0x3f)); + return 3; + } else if (u <= 0x0010ffff) { + if (bufSize < 4) { + return 0; + } + buf[0] = (char)(0xf0 + (u >> 18)); + buf[1] = (char)(0x80 + ((u >> 12) & 0x3f)); + buf[2] = (char)(0x80 + ((u >> 6) & 0x3f)); + buf[3] = (char)(0x80 + (u & 0x3f)); + return 4; + } else { + return 0; + } +} + +int mapUTF16(Unicode u, char *buf, int bufSize) { + if (u <= 0xffff) { + if (bufSize < 2) { + return 0; + } + buf[0] = (char)((u >> 8) & 0xff); + buf[1] = (char)(u & 0xff); + return 2; + } else if (u < 0x110000) { + Unicode uu; + + /* using surrogate pair */ + if (bufSize < 4) { + return 0; + } + uu = ((u - 0x10000) >> 10) + 0xd800; + buf[0] = (char)((uu >> 8) & 0xff); + buf[1] = (char)(uu & 0xff); + uu = (u & 0x3ff)+0xdc00; + buf[2] = (char)((uu >> 8) & 0xff); + buf[3] = (char)(uu & 0xff); + return 4; + } else { + return 0; + } +} diff --git a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h index b89ee6ebecc..613363967f1 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h +++ b/Build/source/libs/poppler/poppler-src/poppler/UnicodeMapFuncs.h @@ -15,71 +15,15 @@ // // Copyright (C) 2008 Koji Otani // Copyright (C) 2017 Adrian Johnson +// Copyright (C) 2018 Albert Astals Cid // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git // //======================================================================== -static int mapUTF8(Unicode u, char *buf, int bufSize) { - if (u <= 0x0000007f) { - if (bufSize < 1) { - return 0; - } - buf[0] = (char)u; - return 1; - } else if (u <= 0x000007ff) { - if (bufSize < 2) { - return 0; - } - buf[0] = (char)(0xc0 + (u >> 6)); - buf[1] = (char)(0x80 + (u & 0x3f)); - return 2; - } else if (u <= 0x0000ffff) { - if (bufSize < 3) { - return 0; - } - buf[0] = (char)(0xe0 + (u >> 12)); - buf[1] = (char)(0x80 + ((u >> 6) & 0x3f)); - buf[2] = (char)(0x80 + (u & 0x3f)); - return 3; - } else if (u <= 0x0010ffff) { - if (bufSize < 4) { - return 0; - } - buf[0] = (char)(0xf0 + (u >> 18)); - buf[1] = (char)(0x80 + ((u >> 12) & 0x3f)); - buf[2] = (char)(0x80 + ((u >> 6) & 0x3f)); - buf[3] = (char)(0x80 + (u & 0x3f)); - return 4; - } else { - return 0; - } -} +#include "UTF.h" -static int mapUTF16(Unicode u, char *buf, int bufSize) { - if (u <= 0xffff) { - if (bufSize < 2) { - return 0; - } - buf[0] = (char)((u >> 8) & 0xff); - buf[1] = (char)(u & 0xff); - return 2; - } else if (u < 0x110000) { - Unicode uu; +int mapUTF8(Unicode u, char *buf, int bufSize); - /* using surrogate pair */ - if (bufSize < 4) { - return 0; - } - uu = ((u - 0x10000) >> 10) + 0xd800; - buf[0] = (char)((uu >> 8) & 0xff); - buf[1] = (char)(uu & 0xff); - uu = (u & 0x3ff)+0xdc00; - buf[2] = (char)((uu >> 8) & 0xff); - buf[3] = (char)(uu & 0xff); - return 4; - } else { - return 0; - } -} +int mapUTF16(Unicode u, char *buf, int bufSize); diff --git a/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc b/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc index cd423c9f585..2d1bd7680b9 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/UnicodeTypeTable.cc @@ -40,14 +40,14 @@ struct UnicodeCaseTableVector { static const UnicodeMapTableEntry typeTable[256] = { { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN###NNNNN################NNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#N####NNNNLNNNNN####NLNNN#LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLL", 'X' }, - { NULL, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLNNNNNNNNNNNNNNLLNNNNNNNNNNNNNNLLLLLNNNNNNNNNLNNNNNNNNNNNNNNNNN", 'X' }, { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLNNNNNNNNNNNLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNRNNRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR", 'X' }, { "RRRR#########RNNNNNNNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNNNN####################RRRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNRNNNNNNNRRNNNNNNNRR##########RRRRRR", 'X' }, { "RRRRRRRRRRRRRRNNRNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, - { NULL, 'N' }, + { nullptr, 'N' }, { "NNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNLLLLNLLLNNNNLLLLLLLLLLLLLNNLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNLLLLLLLLNLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLL##LLLLLLLNNNNN", 'X' }, { "NNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLNNNNNNNNLLLLNLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLL##NNNNNNNNNNNNNN", 'X' }, { "NNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLNLNNNLLLLLLLLLNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNN#NLLLLL", 'X' }, @@ -56,242 +56,242 @@ static const UnicodeMapTableEntry typeTable[256] = { { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLNNNNNNN#####LLLLLLLNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLNNNNNNNNNLLLLLLLLLLNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLNLNLNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNLNNNNNLNNLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNLNNNNNNLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNLLLLLLLLNLLNNNNNNNNNNNLLLLLLL#LNLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNN", 'X' }, { "NNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLNNNNNLLLLLLNLLLLLLNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLNNNLLLLLLLLLLLNNNLLLLLLLLLLLLNNNNLLLLLLLLLLLLLNNNLLLLLLLLLLLLLNNN", 'X' }, { "NNNNNNNNNNNNNNLRNNNNNNNNNNNNNNNNNNNNNNNNNNLRNLRN#####NNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#L##########NNNL############NNN###################################NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, { "NNLNNNNLNNLLLLLLLLLLNLNNNLLLLLNNNNNNLNLNLNLLLL#LLLNLLLLLLLNNLLLLNNNNNLLLLLNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, { "NNNNNNNNNNNNNNNNNN##NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN####################LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNN", 'X' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'L' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, - { NULL, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'L' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, + { nullptr, 'N' }, { "NNNNNLLLNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLNNNNNNNLLLLLNNLLLLLNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLL", 'X' }, - { NULL, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNLLLLLLLLLLLLNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN", 'X' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", 'X' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL", 'X' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, - { NULL, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, + { nullptr, 'L' }, { "LLLLLLLLLLLLLLLLLLLLLLLLRRRRRRNRRRRRRRRRR#RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR", 'X' }, - { NULL, 'R' }, + { nullptr, 'R' }, { "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNN", 'X' }, { "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#N#NN#NNNNNNNNN#NN##NNNNN##NRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRNNN", 'X' }, { "NNN###NNNNN################NNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL#####NNN##NNNNNNNNNNNNNNNNNNNNNNNLL", 'X' } @@ -678,255 +678,255 @@ static const UnicodeCaseTableVector *caseTable[256] = { &caseTable03, &caseTable04, &caseTable05, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, &caseTable1e, &caseTable1f, - NULL, + nullptr, &caseTable21, - NULL, - NULL, + nullptr, + nullptr, &caseTable24, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, &caseTableff }; @@ -1143,13 +1143,13 @@ Unicode *unicodeNormalizeNFKC(Unicode *in, int len, int *out_len, int **indices, GBool reverseRTL) { Unicode *out; - int i, o, *classes, *idx = NULL; + int i, o, *classes, *idx = nullptr; for (i = 0, o = 0; i < len; ++i) { if (HANGUL_IS_L(in[i]) || HANGUL_IS_SYLLABLE(in[i])) { o += 1; } else - o += decomp_compat(in[i], NULL); + o += decomp_compat(in[i], nullptr); } out = (Unicode *) gmallocn(o, sizeof(Unicode)); diff --git a/Build/source/libs/poppler/poppler-src/poppler/XRef.cc b/Build/source/libs/poppler/poppler-src/poppler/XRef.cc index f04a31fc1ed..5d3b98ffaec 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/XRef.cc +++ b/Build/source/libs/poppler/poppler-src/poppler/XRef.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Dan Sheridan // Copyright (C) 2005 Brad Hards -// Copyright (C) 2006, 2008, 2010, 2012-2014, 2016, 2017 Albert Astals Cid +// Copyright (C) 2006, 2008, 2010, 2012-2014, 2016-2018 Albert Astals Cid // Copyright (C) 2007-2008 Julien Rebetez // Copyright (C) 2007 Carlos Garcia Campos // Copyright (C) 2009, 2010 Ilya Gorenbein @@ -95,6 +95,9 @@ public: ~ObjectStream(); + ObjectStream(const ObjectStream &) = delete; + ObjectStream& operator=(const ObjectStream &) = delete; + // Return the object number of this object stream. int getObjStrNum() { return objStrNum; } @@ -152,8 +155,8 @@ ObjectStream::ObjectStream(XRef *xref, int objStrNumA, int recursion) { objStrNum = objStrNumA; nObjects = 0; - objs = NULL; - objNums = NULL; + objs = nullptr; + objNums = nullptr; ok = gFalse; objStr = xref->fetch(objStrNum, 0, recursion); @@ -267,11 +270,11 @@ void XRef::init() { #endif ok = gTrue; errCode = errNone; - entries = NULL; + entries = nullptr; capacity = 0; size = 0; modified = gFalse; - streamEnds = NULL; + streamEnds = nullptr; streamEndsLen = 0; objStrs = new PopplerCache(5); mainXRefEntriesOffset = 0; @@ -326,7 +329,7 @@ XRef::XRef(BaseStream *strA, Goffset pos, Goffset mainXRefEntriesOffsetA, GBool // read the xref table } else { std::vector followedXRefStm; - readXRef(&prevXRefOffset, &followedXRefStm, NULL); + readXRef(&prevXRefOffset, &followedXRefStm, nullptr); // if there was a problem with the xref table, // try to reconstruct it @@ -418,7 +421,7 @@ XRef *XRef::copy() { if (xref->reserve(size) == 0) { error(errSyntaxError, -1, "unable to allocate {0:d} entries", size); delete xref; - return NULL; + return nullptr; } xref->size = size; for (int i = 0; i < size; ++i) { @@ -452,7 +455,7 @@ int XRef::reserve(int newSize) } void *p = greallocn_checkoverflow(entries, realNewSize, sizeof(XRefEntry)); - if (p == NULL) { + if (p == nullptr) { return 0; } @@ -507,8 +510,8 @@ GBool XRef::readXRef(Goffset *pos, std::vector *followedXRefStm, std::v GBool more; // start up a parser, parse one token - parser = new Parser(NULL, - new Lexer(NULL, + parser = new Parser(nullptr, + new Lexer(nullptr, str->makeSubStream(start + *pos, gFalse, 0, Object(objNull))), gTrue); obj = parser->getObj(gTrue); @@ -555,7 +558,7 @@ GBool XRef::readXRefTable(Parser *parser, Goffset *pos, std::vector *fo GBool more; Object obj, obj2; Goffset pos2; - int first, n, i; + int first, n; while (1) { obj = parser->getObj(gTrue); @@ -580,7 +583,7 @@ GBool XRef::readXRefTable(Parser *parser, Goffset *pos, std::vector *fo goto err0; } } - for (i = first; i < first + n; ++i) { + for (int i = first; i < first + n; ++i) { obj = parser->getObj(gTrue); if (obj.isInt()) { entry.offset = obj.getInt(); @@ -624,6 +627,7 @@ GBool XRef::readXRefTable(Parser *parser, Goffset *pos, std::vector *fo entries[0].obj = std::move(entries[1].obj); entries[1].offset = -1; + entries[1].obj.setToNull(); } } } @@ -866,7 +870,7 @@ GBool XRef::constructXRef(GBool *wasReconstructed, GBool needCatalogDict) { int streamEndsSize; char *p; GBool gotRoot; - char* token = NULL; + char* token = nullptr; bool oneCycle = true; int offset = 0; @@ -874,7 +878,7 @@ GBool XRef::constructXRef(GBool *wasReconstructed, GBool needCatalogDict) { gfree(entries); capacity = 0; size = 0; - entries = NULL; + entries = nullptr; gotRoot = gFalse; streamEndsLen = streamEndsSize = 0; @@ -909,8 +913,8 @@ GBool XRef::constructXRef(GBool *wasReconstructed, GBool needCatalogDict) { // got trailer dictionary if (!strncmp(p, "trailer", 7)) { - parser = new Parser(NULL, - new Lexer(NULL, + parser = new Parser(nullptr, + new Lexer(nullptr, str->makeSubStream(pos + 7, gFalse, 0, Object(objNull))), gFalse); Object newTrailerDict = parser->getObj(); @@ -1047,7 +1051,7 @@ void XRef::getEncryptionParameters(Guchar **fileKeyA, CryptAlgorithm *encAlgorit *keyLengthA = keyLength; } else { // null encryption parameters - *fileKeyA = NULL; + *fileKeyA = nullptr; *encAlgorithmA = cryptRC4; *keyLengthA = 0; } @@ -1167,7 +1171,7 @@ Object XRef::fetch(int num, int gen, int recursion) { delete parser; goto err; } - Object obj = parser->getObj(gFalse, (encrypted && !e->getFlag(XRefEntry::Unencrypted)) ? fileKey : NULL, + Object obj = parser->getObj(gFalse, (encrypted && !e->getFlag(XRefEntry::Unencrypted)) ? fileKey : nullptr, encAlgorithm, keyLength, num, gen, recursion); delete parser; return obj; @@ -1186,7 +1190,7 @@ Object XRef::fetch(int num, int gen, int recursion) { goto err; } - ObjectStream *objStr = NULL; + ObjectStream *objStr = nullptr; ObjectStreamKey key(e->offset); PopplerCacheItem *item = objStrs->lookup(key); if (item) { @@ -1198,7 +1202,7 @@ Object XRef::fetch(int num, int gen, int recursion) { objStr = new ObjectStream(this, e->offset, recursion + 1); if (!objStr->isOk()) { delete objStr; - objStr = NULL; + objStr = nullptr; goto err; } else { // XRef could be reconstructed in constructor of ObjectStream: @@ -1534,7 +1538,7 @@ GBool XRef::parseEntry(Goffset offset, XRefEntry *entry) if (unlikely(entry == nullptr)) return gFalse; - Parser parser(NULL, new Lexer(NULL, + Parser parser(nullptr, new Lexer(nullptr, str->makeSubStream(offset, gFalse, 20, Object(objNull))), gTrue); Object obj1, obj2, obj3; @@ -1575,7 +1579,7 @@ void XRef::readXRefUntil(int untilEntryNum, std::vector *xrefStreamObjsNum) } if (followed) { error(errSyntaxError, -1, "Circular XRef"); - if (!(ok = constructXRef(NULL))) { + if (!(ok = constructXRef(nullptr))) { errCode = errDamaged; } break; @@ -1718,7 +1722,6 @@ void XRef::scanSpecialFlags() { } // Mark objects referred from the Encrypt dict as Unencrypted - Object obj = trailerDict.dictLookupNF("Encrypt"); markUnencrypted(); } diff --git a/Build/source/libs/poppler/poppler-src/poppler/XRef.h b/Build/source/libs/poppler/poppler-src/poppler/XRef.h index 9306a99b9e2..686b3eb7cd9 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/XRef.h +++ b/Build/source/libs/poppler/poppler-src/poppler/XRef.h @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Brad Hards -// Copyright (C) 2006, 2008, 2010-2013, 2017 Albert Astals Cid +// Copyright (C) 2006, 2008, 2010-2013, 2017, 2018 Albert Astals Cid // Copyright (C) 2007-2008 Julien Rebetez // Copyright (C) 2007 Carlos Garcia Campos // Copyright (C) 2010 Ilya Gorenbein @@ -104,6 +104,9 @@ public: // Destructor. ~XRef(); + XRef(const XRef &) = delete; + XRef& operator=(const XRef &) = delete; + // Copy xref but with new base stream! XRef *copy(); @@ -253,9 +256,13 @@ private: class XRefWriter { public: + XRefWriter() = default; virtual void startSection(int first, int count) = 0; virtual void writeEntry(Goffset offset, int gen, XRefEntryType type) = 0; virtual ~XRefWriter() {}; + + XRefWriter(const XRefWriter &) = delete; + XRefWriter& operator=(const XRefWriter &other) = delete; }; // XRefWriter subclass that writes a XRef table diff --git a/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake b/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake index 3a13e811554..f6a6c27ff6b 100644 --- a/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake +++ b/Build/source/libs/poppler/poppler-src/poppler/poppler-config.h.cmake @@ -129,7 +129,7 @@ //------------------------------------------------------------------------ // copyright notice -#define popplerCopyright "Copyright 2005-2017 The Poppler Developers - http://poppler.freedesktop.org" +#define popplerCopyright "Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org" #define xpdfCopyright "Copyright 1996-2011 Glyph & Cog, LLC" //------------------------------------------------------------------------ diff --git a/Build/source/libs/poppler/version.ac b/Build/source/libs/poppler/version.ac index 679a2251748..eb247b919ef 100644 --- a/Build/source/libs/poppler/version.ac +++ b/Build/source/libs/poppler/version.ac @@ -9,4 +9,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current poppler version -m4_define([poppler_version], [0.62.0]) +m4_define([poppler_version], [0.63.0]) -- cgit v1.2.3