Spaces:
Sleeping
Sleeping
Delete poppler-24.01.0
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- poppler-24.01.0/.clang-tidy +0 -8
- poppler-24.01.0/.git-blame-ignore-revs +0 -8
- poppler-24.01.0/.gitlab-ci.yml +0 -253
- poppler-24.01.0/.gitlab/merge_request_templates/merge_request_template.md +0 -3
- poppler-24.01.0/AUTHORS +0 -5
- poppler-24.01.0/CMakeLists.txt +0 -928
- poppler-24.01.0/COPYING +0 -339
- poppler-24.01.0/COPYING3 +0 -674
- poppler-24.01.0/ChangeLog +0 -0
- poppler-24.01.0/ConfigureChecks.cmake +0 -63
- poppler-24.01.0/INSTALL +0 -108
- poppler-24.01.0/NEWS +0 -0
- poppler-24.01.0/README-XPDF +0 -423
- poppler-24.01.0/README.contributors +0 -51
- poppler-24.01.0/README.md +0 -107
- poppler-24.01.0/_clang-format +0 -77
- poppler-24.01.0/cmake/modules/COPYING-CMAKE-SCRIPTS +0 -22
- poppler-24.01.0/cmake/modules/CheckFileOffsetBits.c +0 -13
- poppler-24.01.0/cmake/modules/CheckFileOffsetBits.cmake +0 -44
- poppler-24.01.0/cmake/modules/FindCairo.cmake +0 -62
- poppler-24.01.0/cmake/modules/FindGLIB.cmake +0 -20
- poppler-24.01.0/cmake/modules/FindGObjectIntrospection.cmake +0 -61
- poppler-24.01.0/cmake/modules/FindGTK.cmake +0 -21
- poppler-24.01.0/cmake/modules/FindLCMS2.cmake +0 -73
- poppler-24.01.0/cmake/modules/FindNSS3.cmake +0 -19
- poppler-24.01.0/cmake/modules/GObjectIntrospectionMacros.cmake +0 -95
- poppler-24.01.0/cmake/modules/MacroOptionalFindPackage.cmake +0 -48
- poppler-24.01.0/cmake/modules/PopplerDefaults.cmake +0 -9
- poppler-24.01.0/cmake/modules/PopplerMacros.cmake +0 -199
- poppler-24.01.0/config.h.cmake +0 -196
- poppler-24.01.0/cpp/CMakeLists.txt +0 -52
- poppler-24.01.0/cpp/Doxyfile +0 -1634
- poppler-24.01.0/cpp/Mainpage.dox +0 -9
- poppler-24.01.0/cpp/poppler-destination-private.h +0 -54
- poppler-24.01.0/cpp/poppler-destination.cpp +0 -273
- poppler-24.01.0/cpp/poppler-destination.h +0 -71
- poppler-24.01.0/cpp/poppler-document-private.h +0 -61
- poppler-24.01.0/cpp/poppler-document.cpp +0 -1230
- poppler-24.01.0/cpp/poppler-document.h +0 -141
- poppler-24.01.0/cpp/poppler-embedded-file-private.h +0 -41
- poppler-24.01.0/cpp/poppler-embedded-file.cpp +0 -199
- poppler-24.01.0/cpp/poppler-embedded-file.h +0 -57
- poppler-24.01.0/cpp/poppler-font-private.h +0 -68
- poppler-24.01.0/cpp/poppler-font.cpp +0 -190
- poppler-24.01.0/cpp/poppler-font.h +0 -95
- poppler-24.01.0/cpp/poppler-global.cpp +0 -403
- poppler-24.01.0/cpp/poppler-global.h +0 -138
- poppler-24.01.0/cpp/poppler-image-private.h +0 -51
- poppler-24.01.0/cpp/poppler-image.cpp +0 -515
- poppler-24.01.0/cpp/poppler-image.h +0 -74
poppler-24.01.0/.clang-tidy
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
---
|
2 |
-
Checks: '-*,performance-*,bugprone-*,readability-inconsistent-declaration-parameter-name,readability-string-compare,readability-braces-around-statements,modernize-deprecated-headers,modernize-make-unique,modernize-make-shared,modernize-use-override,modernize-use-equals-delete,modernize-use-emplace,modernize-use-bool-literals,modernize-redundant-void-arg,modernize-loop-convert,google-explicit-constructor,-bugprone-narrowing-conversions,-bugprone-macro-parentheses,-bugprone-suspicious-string-compare,-bugprone-incorrect-roundings,-bugprone-undefined-memory-manipulation,-bugprone-sizeof-expression,-bugprone-branch-clone,-bugprone-reserved-identifier,-bugprone-suspicious-include,-performance-no-int-to-ptr,-bugprone-easily-swappable-parameters,-bugprone-implicit-widening-of-multiplication-result,-bugprone-assignment-in-if-condition,-bugprone-unchecked-optional-access'
|
3 |
-
WarningsAsErrors: '*'
|
4 |
-
HeaderFilterRegex: '.'
|
5 |
-
AnalyzeTemporaryDtors: false
|
6 |
-
FormatStyle: none
|
7 |
-
User: user
|
8 |
-
...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/.git-blame-ignore-revs
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
# _clang_format added
|
2 |
-
814fbda28cc8a37fed3134c2db8da28f86fb5ee0
|
3 |
-
# readability-braces-around-statements added
|
4 |
-
f7466e31408ba884c44728f7da04227863177241
|
5 |
-
# clang-format-14 wanted a bit of reformat
|
6 |
-
a94a444e5acff86e04d1688d862e81a82108cf03
|
7 |
-
# clang-format-15 wanted a bit of reformat also
|
8 |
-
b5aa09403e0f106f51292683c1841908167337ea
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/.gitlab-ci.yml
DELETED
@@ -1,253 +0,0 @@
|
|
1 |
-
image: debian:unstable
|
2 |
-
|
3 |
-
stages:
|
4 |
-
- build
|
5 |
-
- document
|
6 |
-
- publish
|
7 |
-
|
8 |
-
before_script:
|
9 |
-
- echo 'deb-src http://deb.debian.org/debian unstable main' >> /etc/apt/sources.list
|
10 |
-
- apt-get update
|
11 |
-
- apt-get build-dep --yes --no-install-recommends poppler
|
12 |
-
- apt-get install --yes --no-install-recommends ninja-build libcurl4-openssl-dev git ca-certificates locales libgtk-3-dev libbrotli-dev libboost-container-dev qt6-base-dev
|
13 |
-
- echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen
|
14 |
-
- locale-gen
|
15 |
-
|
16 |
-
variables:
|
17 |
-
LANG: en_US.UTF-8
|
18 |
-
LANGUAGE: en_US:en
|
19 |
-
LC_ALL: en_US.UTF-8
|
20 |
-
DEBIAN_FRONTEND: noninteractive
|
21 |
-
TEST_DATA_URL: https://gitlab.freedesktop.org/${CI_PROJECT_NAMESPACE}/test.git
|
22 |
-
UPSTREAM_TEST_DATA_URL: https://gitlab.freedesktop.org/poppler/test.git
|
23 |
-
|
24 |
-
cache:
|
25 |
-
key: "$CI_JOB_NAME"
|
26 |
-
paths:
|
27 |
-
- build/
|
28 |
-
|
29 |
-
clang_format:
|
30 |
-
stage: build
|
31 |
-
before_script:
|
32 |
-
- apt-get update
|
33 |
-
- apt-get install --yes --no-install-recommends git clang-format-16
|
34 |
-
script:
|
35 |
-
- find . \( -name "*.cpp" -or -name "*.h" -or -name "*.c" -or -name "*.cc" \) -exec clang-format-16 -i {} \;
|
36 |
-
- git diff --exit-code
|
37 |
-
|
38 |
-
build:
|
39 |
-
stage: build
|
40 |
-
script:
|
41 |
-
- apt-get update
|
42 |
-
- bash do-the-gnupg-2.4-dance.sh $PWD/build/gnupg/
|
43 |
-
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
|
44 |
-
- mkdir -p build && cd build
|
45 |
-
- cmake -G Ninja -DTESTDATADIR=$PWD/../test-data -DCMAKE_PREFIX_PATH=$PWD/gnupg ..
|
46 |
-
- ninja -j ${FDO_CI_CONCURRENT}
|
47 |
-
- ctest --output-on-failure
|
48 |
-
|
49 |
-
build_clang16_libcpp:
|
50 |
-
stage: build
|
51 |
-
script:
|
52 |
-
- echo "We want to compile with C++23 here because it has some nice things like deleted std::string nullptr constructor"
|
53 |
-
- sed -i -e "s@CMAKE_CXX_STANDARD 17@CMAKE_CXX_STANDARD 23@g" CMakeLists.txt
|
54 |
-
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
|
55 |
-
- apt-get install --yes --no-install-recommends libclang-16-dev llvm-16-dev libc++-16-dev libc++abi-16-dev clang-tidy-16 clang-16 libunwind-16-dev gperf jq
|
56 |
-
- srcdir=`pwd` && mkdir -p /tmp/poppler_build && cd /tmp/poppler_build
|
57 |
-
- clang++-16 -fPIC -shared -o goostring-format-checker.so $srcdir/test/goostring-format-checker/goostring-format-checker.cc -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I /usr/lib/llvm-16/include/
|
58 |
-
- echo "We disable Qt6 tests since Qt6 exposes std::string in its ABI which makes it not build in this CI since we're using libc++ but Qt6 in debian is build with libstdc++"
|
59 |
-
- CC=clang-16 CXX=clang++-16 cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++ -Xclang -load -Xclang $PWD/goostring-format-checker.so -Xclang -add-plugin -Xclang goostring-format-checker -Werror -Wno-deprecated-declarations" -DTESTDATADIR=$srcdir/test-data -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_QT6_TESTS=OFF -DENABLE_GPGME=OFF $srcdir
|
60 |
-
- make -j ${FDO_CI_CONCURRENT}
|
61 |
-
- ctest --output-on-failure
|
62 |
-
- echo "This is a complex way of not running clang-tidy over autogenerated files, unfortunately -DCMAKE_CXX_CLANG_TIDY doesn't support that https://gitlab.kitware.com/cmake/cmake/-/issues/19772"
|
63 |
-
- cat compile_commands.json | jq '[.[] | select(.file | contains("'"$srcdir"'"))]' > compile_commands.aux.json
|
64 |
-
- cp compile_commands.aux.json compile_commands.json
|
65 |
-
- echo "Cheat a bit and remove the moc includes so that we don't lint autogenerated code"
|
66 |
-
- echo "Maybe we can replace this with NOLINTBEGIN in the future https://github.com/llvm/llvm-project/issues/56983"
|
67 |
-
- find $srcdir/qt* -name *.cpp -exec sed -E -i '/#include .*moc"$/d' {} \;
|
68 |
-
- cp "$srcdir/.clang-tidy" .
|
69 |
-
- run-clang-tidy-16
|
70 |
-
|
71 |
-
build_ubuntu_20_04:
|
72 |
-
stage: build
|
73 |
-
image: ubuntu:20.04
|
74 |
-
before_script:
|
75 |
-
- apt-get update
|
76 |
-
- apt-get install --yes --no-install-recommends build-essential cmake ninja-build libjpeg-dev libopenjp2-7-dev qtbase5-dev gobject-introspection libglib2.0-dev libgtk-3-dev libgirepository1.0-dev libnss3-dev ca-certificates libcurl4-nss-dev liblcms2-dev libboost-container-dev libtiff-dev wget p7zip-full git
|
77 |
-
- wget -r -l1 -np "https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_620/qt.qt6.620.gcc_64/" -A "6.2.0-0-*qtbase-Linux-RHEL_8_2-GCC-Linux-RHEL_8_2-X86_64.7z"
|
78 |
-
- 7z x download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_620/qt.qt6.620.gcc_64/6.2.0-0-*qtbase-Linux-RHEL_8_2-GCC-Linux-RHEL_8_2-X86_64.7z
|
79 |
-
- wget -r -l1 -np "https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_620/qt.qt6.620.gcc_64/" -A "6.2.0-0-*icu-linux-Rhel7.2-x64.7z"
|
80 |
-
- 7z x download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_620/qt.qt6.620.gcc_64/6.2.0-0-*icu-linux-Rhel7.2-x64.7z
|
81 |
-
script:
|
82 |
-
- git clone --branch ${CI_COMMIT_REF_NAME} --depth 1 ${TEST_DATA_URL} test-data || git clone --depth 1 ${UPSTREAM_TEST_DATA_URL} test-data
|
83 |
-
- mkdir -p build && cd build
|
84 |
-
- cmake -G Ninja -DENABLE_GPGME=OFF -DTESTDATADIR=$PWD/../test-data -DCMAKE_PREFIX_PATH=$PWD/../6.2.0/gcc_64/lib/cmake ..
|
85 |
-
- ninja
|
86 |
-
- ctest --output-on-failure
|
87 |
-
|
88 |
-
build_mingw64_fedora39:
|
89 |
-
stage: build
|
90 |
-
image: fedora:39
|
91 |
-
before_script:
|
92 |
-
- dnf install -y 'dnf-command(builddep)'
|
93 |
-
- dnf builddep -y mingw64-poppler
|
94 |
-
- dnf -y install glibc-langpack-en make ninja-build mingw64-boost mingw64-curl mingw64-qt6-qtbase mingw64-gcc-c++ cmake-rpm-macros
|
95 |
-
script:
|
96 |
-
- mkdir -p build && cd build
|
97 |
-
- mingw64-cmake -DENABLE_NSS3=OFF -DENABLE_GPGME=OFF -G Ninja ..
|
98 |
-
- ninja
|
99 |
-
|
100 |
-
build_clazy_clang16:
|
101 |
-
stage: build
|
102 |
-
script:
|
103 |
-
- apt-get install --yes --no-install-recommends clazy clang-16
|
104 |
-
- mkdir -p build && cd build
|
105 |
-
- CC=clang-16 CXX=clazy CXXFLAGS="-Werror -Wno-deprecated-declarations" cmake -DENABLE_GPGME=OFF -G Ninja ..
|
106 |
-
- CLAZY_CHECKS="level0,level1,level2,isempty-vs-count,qhash-with-char-pointer-key,tr-non-literal,no-non-pod-global-static" ninja -j ${FDO_CI_CONCURRENT}
|
107 |
-
|
108 |
-
build_qt5_android:
|
109 |
-
stage: build
|
110 |
-
image: kdeorg/android-sdk
|
111 |
-
before_script:
|
112 |
-
- echo "workaround for ECM Android toolchain wanting all binaries to be shared libraries"
|
113 |
-
- sed -i -e 's/<LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>/<LINK_FLAGS>/g' /opt/nativetooling/share/ECM/toolchain/Android.cmake
|
114 |
-
script:
|
115 |
-
- mkdir -p build && cd build
|
116 |
-
- 'ANDROID_ARCH_ABI=arm64-v8a cmake -G Ninja ..
|
117 |
-
-DCMAKE_ANDROID_API=28
|
118 |
-
-DCMAKE_PREFIX_PATH="/opt/Qt/;/opt/kdeandroid-arm64/"
|
119 |
-
-DCMAKE_BUILD_TYPE=debug
|
120 |
-
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF
|
121 |
-
-DENABLE_DCTDECODER=unmaintained
|
122 |
-
-DENABLE_LIBOPENJPEG=unmaintained
|
123 |
-
-DENABLE_BOOST=OFF
|
124 |
-
-DENABLE_LCMS=OFF
|
125 |
-
-DENABLE_LIBCURL=OFF
|
126 |
-
-DENABLE_LIBTIFF=OFF
|
127 |
-
-DENABLE_QT6=OFF
|
128 |
-
-DENABLE_NSS3=OFF
|
129 |
-
-DENABLE_GPGME=OFF
|
130 |
-
-DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
|
131 |
-
-DCMAKE_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
|
132 |
-
- ninja -j ${FDO_CI_CONCURRENT}
|
133 |
-
|
134 |
-
build_qt5_android_generic:
|
135 |
-
stage: build
|
136 |
-
image: kdeorg/android-sdk
|
137 |
-
before_script:
|
138 |
-
- echo "workaround for ECM Android toolchain wanting all binaries to be shared libraries"
|
139 |
-
- sed -i -e 's/<LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>/<LINK_FLAGS>/g' /opt/nativetooling/share/ECM/toolchain/Android.cmake
|
140 |
-
script:
|
141 |
-
- mkdir -p build && cd build
|
142 |
-
- 'ANDROID_ARCH_ABI=arm64-v8a cmake -G Ninja ..
|
143 |
-
-DCMAKE_ANDROID_API=28
|
144 |
-
-DCMAKE_PREFIX_PATH="/opt/Qt/;/opt/kdeandroid-arm64/"
|
145 |
-
-DCMAKE_BUILD_TYPE=debug
|
146 |
-
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF
|
147 |
-
-DENABLE_DCTDECODER=unmaintained
|
148 |
-
-DENABLE_LIBOPENJPEG=unmaintained
|
149 |
-
-DENABLE_BOOST=OFF
|
150 |
-
-DENABLE_LCMS=OFF
|
151 |
-
-DENABLE_LIBCURL=OFF
|
152 |
-
-DENABLE_LIBTIFF=OFF
|
153 |
-
-DENABLE_QT6=OFF
|
154 |
-
-DENABLE_NSS3=OFF
|
155 |
-
-DENABLE_GPGME=OFF
|
156 |
-
-DFONT_CONFIGURATION=generic
|
157 |
-
-DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
|
158 |
-
-DCMAKE_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
|
159 |
-
- ninja -j ${FDO_CI_CONCURRENT}
|
160 |
-
|
161 |
-
build_qt6_android:
|
162 |
-
stage: build
|
163 |
-
image: invent-registry.kde.org/sysadmin/ci-images/android-qt65
|
164 |
-
before_script:
|
165 |
-
- echo "workaround for ECM Android toolchain wanting all binaries to be shared libraries"
|
166 |
-
- sed -i -e 's/<LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS>/<LINK_FLAGS>/g' /opt/nativetooling/share/ECM/toolchain/Android.cmake
|
167 |
-
script:
|
168 |
-
- mkdir -p build && cd build
|
169 |
-
- 'ANDROID_ARCH_ABI=arm64-v8a cmake -G Ninja ..
|
170 |
-
-DCMAKE_ANDROID_API=29
|
171 |
-
-DCMAKE_PREFIX_PATH="/home/user/android-arm-clang"
|
172 |
-
-DCMAKE_BUILD_TYPE=debug
|
173 |
-
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF
|
174 |
-
-DENABLE_DCTDECODER=unmaintained
|
175 |
-
-DENABLE_LIBOPENJPEG=unmaintained
|
176 |
-
-DENABLE_BOOST=OFF
|
177 |
-
-DENABLE_LCMS=OFF
|
178 |
-
-DENABLE_LIBCURL=OFF
|
179 |
-
-DENABLE_LIBTIFF=OFF
|
180 |
-
-DENABLE_QT5=OFF
|
181 |
-
-DENABLE_NSS3=OFF
|
182 |
-
-DENABLE_GPGME=OFF
|
183 |
-
-DCMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations"
|
184 |
-
-DCMAKE_TOOLCHAIN_FILE=/home/user/android-arm-clang/lib/cmake/Qt6/qt.toolchain.cmake
|
185 |
-
-DQT_CHAINLOAD_TOOLCHAIN_FILE=/opt/nativetooling/share/ECM/toolchain/Android.cmake'
|
186 |
-
- ninja -j ${FDO_CI_CONCURRENT}
|
187 |
-
|
188 |
-
qt5_docs:
|
189 |
-
only:
|
190 |
-
- master
|
191 |
-
stage: document
|
192 |
-
variables:
|
193 |
-
QT_SELECT: qt5
|
194 |
-
script:
|
195 |
-
- apt-get install --yes --no-install-recommends doxygen graphviz qtchooser qttools5-dev-tools
|
196 |
-
- cd qt5/src
|
197 |
-
- doxygen
|
198 |
-
cache: {}
|
199 |
-
artifacts:
|
200 |
-
paths:
|
201 |
-
- qt5/src/APIDOCS-html
|
202 |
-
|
203 |
-
qt6_docs:
|
204 |
-
only:
|
205 |
-
- master
|
206 |
-
stage: document
|
207 |
-
script:
|
208 |
-
- apt-get install --yes --no-install-recommends doxygen graphviz qt6-documentation-tools
|
209 |
-
- cd qt6/src
|
210 |
-
- ( cat Doxyfile ; echo "QHG_LOCATION=/usr/lib/qt6/bin/qhelpgenerator" ) | doxygen -
|
211 |
-
cache: {}
|
212 |
-
artifacts:
|
213 |
-
paths:
|
214 |
-
- qt6/src/APIDOCS-html
|
215 |
-
|
216 |
-
cpp_docs:
|
217 |
-
only:
|
218 |
-
- master
|
219 |
-
stage: document
|
220 |
-
script:
|
221 |
-
- apt-get install --yes --no-install-recommends doxygen graphviz
|
222 |
-
- cd cpp
|
223 |
-
- doxygen
|
224 |
-
cache: {}
|
225 |
-
artifacts:
|
226 |
-
paths:
|
227 |
-
- cpp/APIDOCS-html
|
228 |
-
|
229 |
-
glib_docs:
|
230 |
-
only:
|
231 |
-
- master
|
232 |
-
stage: document
|
233 |
-
script:
|
234 |
-
- apt-get install --yes --no-install-recommends gtk-doc-tools
|
235 |
-
- mkdir -p build && cd build
|
236 |
-
- cmake -G Ninja -DENABLE_GTK_DOC=YES -DENABLE_GPGME=OFF ..
|
237 |
-
- ninja -j ${FDO_CI_CONCURRENT} glib-docs
|
238 |
-
cache: {}
|
239 |
-
artifacts:
|
240 |
-
paths:
|
241 |
-
- build/glib/reference/html
|
242 |
-
|
243 |
-
trigger_pages:
|
244 |
-
only:
|
245 |
-
- master
|
246 |
-
stage: publish
|
247 |
-
image: alpine:latest
|
248 |
-
before_script:
|
249 |
-
- apk --update upgrade
|
250 |
-
- apk add curl ca-certificates
|
251 |
-
script:
|
252 |
-
- 'curl --request POST --form "token=$WEB_PAGE_TRIGGER" --form ref=master https://gitlab.freedesktop.org/api/v4/projects/poppler%2Fpoppler-web-page/trigger/pipeline'
|
253 |
-
cache: {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/.gitlab/merge_request_templates/merge_request_template.md
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
Please make sure you check the "Allow commits from members who can merge to the target branch" option at the bottom of the page.
|
2 |
-
|
3 |
-
Makes our life much easier since we can rebase and merge from the web user interface.
|
|
|
|
|
|
|
|
poppler-24.01.0/AUTHORS
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
xpdf is written by Derek Noonburg <[email protected]>
|
2 |
-
|
3 |
-
libpoppler is a fork of xpdf-3.00
|
4 |
-
|
5 |
-
Current Maintainer: Albert Astals Cid <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/CMakeLists.txt
DELETED
@@ -1,928 +0,0 @@
|
|
1 |
-
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
|
2 |
-
|
3 |
-
project(poppler)
|
4 |
-
|
5 |
-
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
|
6 |
-
|
7 |
-
include(PopplerDefaults)
|
8 |
-
include(PopplerMacros)
|
9 |
-
# Ensure that the user-provided C_FLAGS are used for try_compile() calls.
|
10 |
-
# This is needed since PopplerMacros.cmake clears CMAKE_C_FLAGS and if
|
11 |
-
# CMAKE_TRY_COMPILE_CONFIGURATION is empty CMake only uses the flags
|
12 |
-
# specified in CMAKE_C_FLAGS (https://gitlab.kitware.com/cmake/cmake/-/issues/22414
|
13 |
-
# and https://gitlab.kitware.com/cmake/cmake/-/issues/19512).
|
14 |
-
# We therefore have to explicitly set CMAKE_TRY_COMPILE_CONFIGURATION until we
|
15 |
-
# depend on a CMake release that includes a fix for those issues.
|
16 |
-
# This is set after including PopplerMacros since that sets the default
|
17 |
-
# CMAKE_BUILD_TYPE and also sets _CMAKE_BUILD_TYPE_UPPER.
|
18 |
-
set(CMAKE_TRY_COMPILE_CONFIGURATION "${_CMAKE_BUILD_TYPE_UPPER}")
|
19 |
-
|
20 |
-
include(MacroOptionalFindPackage)
|
21 |
-
find_package(PkgConfig)
|
22 |
-
include(TestBigEndian)
|
23 |
-
test_big_endian(WORDS_BIGENDIAN)
|
24 |
-
include(CheckFileOffsetBits)
|
25 |
-
CHECK_FILE_OFFSET_BITS()
|
26 |
-
|
27 |
-
include(GenerateExportHeader)
|
28 |
-
include(GNUInstallDirs)
|
29 |
-
include(CMakePushCheckState)
|
30 |
-
|
31 |
-
set(ENABLE_FUZZER FALSE)
|
32 |
-
|
33 |
-
find_package (ECM 1.6.0 QUIET NO_MODULE)
|
34 |
-
if (ECM_FOUND)
|
35 |
-
include("${ECM_MODULE_DIR}/ECMEnableSanitizers.cmake")
|
36 |
-
|
37 |
-
if(ECM_ENABLE_SANITIZERS MATCHES fuzzer)
|
38 |
-
set(ENABLE_FUZZER TRUE)
|
39 |
-
endif()
|
40 |
-
endif()
|
41 |
-
|
42 |
-
set(POPPLER_MAJOR_VERSION "24")
|
43 |
-
set(POPPLER_MINOR_VERSION_STRING "01")
|
44 |
-
# We want the string version to have 08 but the integer version can't have a leading 0 since otherwise it's considered octal
|
45 |
-
# So strip a leading 0 if found in POPPLER_MINOR_VERSION_STRING and store the result in POPPLER_MINOR_VERSION
|
46 |
-
string(REGEX REPLACE "^0?(.+)$" "\\1" POPPLER_MINOR_VERSION "${POPPLER_MINOR_VERSION_STRING}")
|
47 |
-
set(POPPLER_MICRO_VERSION "0")
|
48 |
-
set(POPPLER_VERSION "${POPPLER_MAJOR_VERSION}.${POPPLER_MINOR_VERSION_STRING}.${POPPLER_MICRO_VERSION}")
|
49 |
-
|
50 |
-
set(CMAKE_CXX_STANDARD 17)
|
51 |
-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
52 |
-
set(CMAKE_CXX_EXTENSIONS OFF)
|
53 |
-
set(CMAKE_C_STANDARD 11)
|
54 |
-
set(CMAKE_C_EXTENSIONS OFF)
|
55 |
-
set(CMAKE_LINK_DEPENDS_NO_SHARED TRUE)
|
56 |
-
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
57 |
-
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
58 |
-
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
|
59 |
-
|
60 |
-
|
61 |
-
# command line switches
|
62 |
-
option(ENABLE_UNSTABLE_API_ABI_HEADERS "Install API/ABI unstable xpdf headers." OFF)
|
63 |
-
option(BUILD_GTK_TESTS "Whether to compile the GTK+ test programs." ON)
|
64 |
-
option(BUILD_QT5_TESTS "Whether to compile the Qt5 test programs." ON)
|
65 |
-
option(BUILD_QT6_TESTS "Whether to compile the Qt6 test programs." ON)
|
66 |
-
option(BUILD_CPP_TESTS "Whether to compile the CPP test programs." ON)
|
67 |
-
option(BUILD_MANUAL_TESTS "Whether to compile manual test programs." ON)
|
68 |
-
option(ENABLE_BOOST "Use boost (for Splash backend performance)." ON)
|
69 |
-
option(ENABLE_UTILS "Compile poppler command line utils." ON)
|
70 |
-
option(ENABLE_CPP "Compile poppler cpp wrapper." ON)
|
71 |
-
option(ENABLE_GLIB "Compile poppler glib wrapper." ON)
|
72 |
-
option(ENABLE_GOBJECT_INTROSPECTION "Whether to generate GObject introspection." ON)
|
73 |
-
option(ENABLE_GTK_DOC "Whether to generate glib API documentation." OFF)
|
74 |
-
option(ENABLE_QT5 "Compile poppler qt5 wrapper." ON)
|
75 |
-
option(ENABLE_QT6 "Compile poppler qt6 wrapper." ON)
|
76 |
-
set(ENABLE_LIBOPENJPEG "openjpeg2" CACHE STRING "Use libopenjpeg for JPX streams. Possible values: openjpeg2, unmaintained, none. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no JPX decoder at all. Default: openjpeg2")
|
77 |
-
set(ENABLE_DCTDECODER "libjpeg" CACHE STRING "Use libjpeg for DCT streams. Possible values: libjpeg, unmaintained, none. will use libjpeg if available or fail if not. 'unmaintained' gives you the internal unmaintained decoder. Use at your own risk. 'none' compiles no DCT decoder at all. Default: libjpeg")
|
78 |
-
option(ENABLE_LCMS "Use LCMS for color management." ON)
|
79 |
-
option(ENABLE_LIBCURL "Build libcurl based HTTP support." ON)
|
80 |
-
option(ENABLE_LIBTIFF "Build code to write images as TIFF (pdfimages/pdftocairo/etc)." ON)
|
81 |
-
option(ENABLE_NSS3 "Build the NSS backend for cryptographic support" ON)
|
82 |
-
option(ENABLE_GPGME "Build the GPG backend for cryptographic support" ON)
|
83 |
-
option(ENABLE_ZLIB_UNCOMPRESS "Use zlib to uncompress flate streams (not totally safe)." OFF)
|
84 |
-
option(USE_FLOAT "Use single precision arithmetic in the Splash backend" OFF)
|
85 |
-
option(BUILD_SHARED_LIBS "Build poppler as a shared library" ON)
|
86 |
-
option(RUN_GPERF_IF_PRESENT "Run gperf if it is found" ON)
|
87 |
-
if(WIN32)
|
88 |
-
option(ENABLE_RELOCATABLE "Do not hardcode the poppler library location (on Windows)." ON)
|
89 |
-
else()
|
90 |
-
set(ENABLE_RELOCATABLE OFF)
|
91 |
-
endif()
|
92 |
-
option(EXTRA_WARN "Enable extra compile warnings" OFF)
|
93 |
-
|
94 |
-
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
95 |
-
|
96 |
-
set(TESTDATADIR "${CMAKE_SOURCE_DIR}/../test" CACHE STRING "Specify test data dir.")
|
97 |
-
if(NOT (EXISTS ${TESTDATADIR} AND EXISTS ${TESTDATADIR}/test-poppler.c))
|
98 |
-
message(WARNING "
|
99 |
-
No test data found in $testdatadir.
|
100 |
-
You will not be able to run 'make test' successfully.
|
101 |
-
|
102 |
-
The test data is not included in the source packages
|
103 |
-
and is also not part of the main git repository. Instead,
|
104 |
-
you can checkout the test data from its own git
|
105 |
-
repository with:
|
106 |
-
|
107 |
-
git clone git://git.freedesktop.org/git/poppler/test
|
108 |
-
|
109 |
-
You should checkout the test data as a sibling of your
|
110 |
-
poppler source folder or specify the location of your
|
111 |
-
checkout with -DTESTDATADIR=/path/to/checkoutdir/test.
|
112 |
-
")
|
113 |
-
endif()
|
114 |
-
|
115 |
-
if(WIN32)
|
116 |
-
set(_default_fontconfiguration "win32")
|
117 |
-
elseif(ANDROID)
|
118 |
-
set(_default_fontconfiguration "android")
|
119 |
-
else()
|
120 |
-
set(_default_fontconfiguration "fontconfig")
|
121 |
-
endif()
|
122 |
-
set(FONT_CONFIGURATION "${_default_fontconfiguration}" CACHE STRING "The font configuration backend (win32|android|generic|fontconfig).")
|
123 |
-
string(TOLOWER "${FONT_CONFIGURATION}" font_configuration)
|
124 |
-
set(WITH_FONTCONFIGURATION_WIN32 OFF)
|
125 |
-
set(WITH_FONTCONFIGURATION_FONTCONFIG OFF)
|
126 |
-
set(WITH_FONTCONFIGURATION_ANDROID OFF)
|
127 |
-
if(font_configuration STREQUAL "win32")
|
128 |
-
set(WITH_FONTCONFIGURATION_WIN32 ON)
|
129 |
-
elseif(font_configuration STREQUAL "fontconfig")
|
130 |
-
set(WITH_FONTCONFIGURATION_FONTCONFIG ON)
|
131 |
-
elseif(font_configuration STREQUAL "android")
|
132 |
-
set(WITH_FONTCONFIGURATION_ANDROID ON)
|
133 |
-
elseif(font_configuration STREQUAL "generic")
|
134 |
-
message(STATUS "no win32, android, or fontconfig specific code")
|
135 |
-
else()
|
136 |
-
message(FATAL_ERROR "Invalid font configuration setting: ${FONT_CONFIGURATION}")
|
137 |
-
endif()
|
138 |
-
|
139 |
-
# Enable these unconditionally.
|
140 |
-
set(OPI_SUPPORT ON)
|
141 |
-
set(TEXTOUT_WORD_LIST ON)
|
142 |
-
|
143 |
-
# setting the minimum required versions for some components
|
144 |
-
set(CAIRO_VERSION "1.16.0")
|
145 |
-
set(GLIB_REQUIRED "2.64")
|
146 |
-
set(GTK_REQUIRED "3.24")
|
147 |
-
set(GDK_PIXBUF_REQUIRED "2.40")
|
148 |
-
set(FREETYPE_VERSION "2.10")
|
149 |
-
set(FONTCONFIG_VERSION "2.13")
|
150 |
-
|
151 |
-
find_package(Freetype ${FREETYPE_VERSION} REQUIRED)
|
152 |
-
if(WITH_FONTCONFIGURATION_FONTCONFIG)
|
153 |
-
find_package(Fontconfig ${FONTCONFIG_VERSION} REQUIRED)
|
154 |
-
elseif(WITH_FONTCONFIGURATION_ANDROID)
|
155 |
-
find_library(Androidlib NAMES android REQUIRED)
|
156 |
-
endif()
|
157 |
-
|
158 |
-
macro(find_soft_mandatory_package _enable_option _package_name _package_version)
|
159 |
-
if(${_enable_option})
|
160 |
-
find_package(${_package_name} ${_package_version})
|
161 |
-
if(NOT ${_package_name}_FOUND)
|
162 |
-
MESSAGE(FATAL_ERROR "Could not find the ${_package_version} version of ${_package_name}. If you're not interested in the features it provides set the cmake ${_enable_option} option to OFF")
|
163 |
-
endif()
|
164 |
-
endif()
|
165 |
-
endmacro()
|
166 |
-
|
167 |
-
find_soft_mandatory_package(ENABLE_NSS3 NSS3 3.68)
|
168 |
-
find_soft_mandatory_package(ENABLE_GPGME Gpgmepp 1.19)
|
169 |
-
find_soft_mandatory_package(ENABLE_LIBTIFF TIFF 4.1)
|
170 |
-
|
171 |
-
macro_optional_find_package(JPEG)
|
172 |
-
macro_optional_find_package(PNG)
|
173 |
-
if(ENABLE_DCTDECODER STREQUAL "libjpeg")
|
174 |
-
if(JPEG_FOUND)
|
175 |
-
include(CheckCSourceCompiles)
|
176 |
-
set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
|
177 |
-
set(CMAKE_REQUIRED_LIBRARIES JPEG::JPEG)
|
178 |
-
check_c_source_compiles("
|
179 |
-
#include <stddef.h>
|
180 |
-
#include <stdio.h>
|
181 |
-
#include <jpeglib.h>
|
182 |
-
int main() { struct jpeg_decompress_struct info; jpeg_mem_src(&info, 0, 0); return 0; }" HAVE_JPEG_MEM_SRC)
|
183 |
-
set(CMAKE_REQUIRED_LIBRARIES "${_save_CMAKE_REQUIRED_LIBRARIES}")
|
184 |
-
|
185 |
-
if(NOT HAVE_JPEG_MEM_SRC)
|
186 |
-
message(FATAL_ERROR "Your libjpeg is too old. Poppler needs one that provides jpeg_mem_src. That is provided in libjpeg >= 8 or libjpeg-turbo >= 1.1.0. You can \
|
187 |
-
also decide to use the internal unmaintained DCT decoder or none at all.\n\
|
188 |
-
Possible options are: -DENABLE_DCTDECODER=libjpeg, -DENABLE_DCTDECODER=none, \
|
189 |
-
-DENABLE_DCTDECODER=unmaintained")
|
190 |
-
endif()
|
191 |
-
|
192 |
-
set(ENABLE_LIBJPEG ${JPEG_FOUND})
|
193 |
-
else()
|
194 |
-
message(STATUS "Could NOT find libjpeg.")
|
195 |
-
message(FATAL_ERROR "Install libjpeg before trying to build poppler. You can \
|
196 |
-
also decide to use the internal unmaintained DCT decoder or none at all.\n\
|
197 |
-
Possible options are: -DENABLE_DCTDECODER=libjpeg, -DENABLE_DCTDECODER=none, \
|
198 |
-
-DENABLE_DCTDECODER=unmaintained")
|
199 |
-
endif()
|
200 |
-
set(HAVE_DCT_DECODER ON)
|
201 |
-
elseif(ENABLE_DCTDECODER STREQUAL "unmaintained")
|
202 |
-
set(ENABLE_LIBJPEG OFF)
|
203 |
-
set(HAVE_DCT_DECODER ON)
|
204 |
-
elseif(ENABLE_DCTDECODER STREQUAL "none")
|
205 |
-
set(ENABLE_LIBJPEG OFF)
|
206 |
-
set(HAVE_DCT_DECODER OFF)
|
207 |
-
else()
|
208 |
-
message(FATAL_ERROR "Invalid ENABLE_DCTDECODER value.")
|
209 |
-
endif()
|
210 |
-
|
211 |
-
set(QT5_VERSION "5.12") # Update QT_DISABLE_DEPRECATED_BEFORE in qt5/CMakeLists.txt when changing this
|
212 |
-
find_soft_mandatory_package(ENABLE_QT5 Qt5Core ${QT5_VERSION})
|
213 |
-
find_soft_mandatory_package(ENABLE_QT5 Qt5Gui ${QT5_VERSION})
|
214 |
-
find_soft_mandatory_package(ENABLE_QT5 Qt5Xml ${QT5_VERSION})
|
215 |
-
find_soft_mandatory_package(ENABLE_QT5 Qt5Widgets ${QT5_VERSION})
|
216 |
-
find_soft_mandatory_package(ENABLE_QT5 Qt5Test ${QT5_VERSION})
|
217 |
-
|
218 |
-
set(QT6_VERSION "6.2")
|
219 |
-
SET(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
|
220 |
-
find_soft_mandatory_package(ENABLE_QT6 Qt6Core ${QT6_VERSION})
|
221 |
-
find_soft_mandatory_package(ENABLE_QT6 Qt6Gui ${QT6_VERSION})
|
222 |
-
find_soft_mandatory_package(ENABLE_QT6 Qt6Widgets ${QT6_VERSION})
|
223 |
-
find_soft_mandatory_package(ENABLE_QT6 Qt6Test ${QT6_VERSION})
|
224 |
-
|
225 |
-
# Check for Cairo rendering backend
|
226 |
-
macro_optional_find_package(Cairo ${CAIRO_VERSION})
|
227 |
-
|
228 |
-
find_package(Boost 1.71.0)
|
229 |
-
if(Boost_FOUND)
|
230 |
-
set(USE_BOOST_HEADERS ON)
|
231 |
-
elseif(ENABLE_BOOST)
|
232 |
-
message(FATAL_ERROR "-- Boost recommended for Splash. Use ENABLE_BOOST=OFF to skip.")
|
233 |
-
endif()
|
234 |
-
|
235 |
-
if(CAIRO_FOUND)
|
236 |
-
set(HAVE_CAIRO ${CAIRO_FOUND})
|
237 |
-
set(CAIRO_FEATURE "#define POPPLER_HAS_CAIRO 1")
|
238 |
-
set(CAIRO_REQ "cairo")
|
239 |
-
set(POPPLER_GLIB_DISABLE_DEPRECATED "")
|
240 |
-
set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "")
|
241 |
-
if(ENABLE_GLIB)
|
242 |
-
macro_optional_find_package(GLIB)
|
243 |
-
if(NOT GLIB_FOUND)
|
244 |
-
set(ENABLE_GLIB OFF)
|
245 |
-
endif()
|
246 |
-
endif()
|
247 |
-
if(ENABLE_GLIB)
|
248 |
-
if(ENABLE_GOBJECT_INTROSPECTION)
|
249 |
-
# Check for introspection
|
250 |
-
macro_optional_find_package(GObjectIntrospection 1.64.0)
|
251 |
-
set(HAVE_INTROSPECTION ${INTROSPECTION_FOUND})
|
252 |
-
endif()
|
253 |
-
set(POPPLER_GLIB_DISABLE_DEPRECATED "${POPPLER_GLIB_DISABLE_DEPRECATED} -DG_DISABLE_DEPRECATED")
|
254 |
-
set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "${POPPLER_GLIB_DISABLE_SINGLE_INCLUDES} -DG_DISABLE_SINGLE_INCLUDES")
|
255 |
-
macro_optional_find_package(GTK)
|
256 |
-
endif()
|
257 |
-
else()
|
258 |
-
set(CAIRO_FEATURE "#undef POPPLER_HAS_CAIRO")
|
259 |
-
set(ENABLE_GLIB OFF)
|
260 |
-
endif()
|
261 |
-
|
262 |
-
# GTK API docs require both the gtk-doc package & python3 support
|
263 |
-
if(ENABLE_GTK_DOC)
|
264 |
-
# Stop the build & raise an error if the package is missing
|
265 |
-
find_package(GtkDoc)
|
266 |
-
if(NOT GtkDoc_FOUND)
|
267 |
-
message(FATAL_ERROR "Install the gtk-doc package to generate GTK API documentation, or set ENABLE_GTK_DOC to Off.")
|
268 |
-
endif()
|
269 |
-
# NOTE: The FindPythonInterp module is deprecated, but the newer FindPython3 module requires CMake >=3.12
|
270 |
-
find_package(PythonInterp 3)
|
271 |
-
# Also bail out with an error if Python3 is missing
|
272 |
-
if(NOT PYTHONINTERP_FOUND)
|
273 |
-
message(FATAL_ERROR "Install python3 in order to generate GTK API documentation, or set ENABLE_GTK_DOC to Off.")
|
274 |
-
endif()
|
275 |
-
endif()
|
276 |
-
|
277 |
-
if(ENABLE_CPP)
|
278 |
-
cmake_push_check_state()
|
279 |
-
find_package(Iconv REQUIRED)
|
280 |
-
set(CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
|
281 |
-
check_cxx_source_compiles("
|
282 |
-
#include <iconv.h>
|
283 |
-
int main(){
|
284 |
-
iconv_t conv = 0;
|
285 |
-
const char* in = 0;
|
286 |
-
size_t ilen = 0;
|
287 |
-
char* out = 0;
|
288 |
-
size_t olen = 0;
|
289 |
-
iconv(conv, &in, &ilen, &out, &olen);
|
290 |
-
return 0;
|
291 |
-
}
|
292 |
-
" ICONV_SECOND_ARGUMENT_IS_CONST)
|
293 |
-
cmake_pop_check_state()
|
294 |
-
if(ICONV_SECOND_ARGUMENT_IS_CONST)
|
295 |
-
set(ICONV_CONST "const")
|
296 |
-
endif()
|
297 |
-
endif()
|
298 |
-
find_package(ZLIB REQUIRED)
|
299 |
-
|
300 |
-
set(WITH_OPENJPEG FALSE)
|
301 |
-
if(ENABLE_LIBOPENJPEG STREQUAL "openjpeg2")
|
302 |
-
find_package(OpenJPEG)
|
303 |
-
set(WITH_OPENJPEG ${OpenJPEG_FOUND})
|
304 |
-
if(NOT OpenJPEG_FOUND OR OPENJPEG_MAJOR_VERSION VERSION_LESS 2)
|
305 |
-
message(STATUS "Could NOT find openjpeg2.")
|
306 |
-
message(FATAL_ERROR "Install libopenjpeg2 before trying to build poppler. You \
|
307 |
-
can also decide to use the internal unmaintained JPX decoder or none at all.\n\
|
308 |
-
Possible options are: -DENABLE_LIBOPENJPEG=openjpeg2, -DENABLE_LIBOPENJPEG=none, \
|
309 |
-
-DENABLE_LIBOPENJPEG=unmaintained,")
|
310 |
-
endif()
|
311 |
-
set(HAVE_JPX_DECODER ON)
|
312 |
-
elseif(ENABLE_LIBOPENJPEG STREQUAL "unmaintained")
|
313 |
-
set(WITH_OPENJPEG OFF)
|
314 |
-
set(HAVE_JPX_DECODER ON)
|
315 |
-
elseif(ENABLE_LIBOPENJPEG STREQUAL "none")
|
316 |
-
set(WITH_OPENJPEG OFF)
|
317 |
-
set(HAVE_JPX_DECODER OFF)
|
318 |
-
else()
|
319 |
-
message(FATAL_ERROR "Invalid ENABLE_LIBOPENJPEG value: ${ENABLE_LIBOPENJPEG}")
|
320 |
-
endif()
|
321 |
-
set(ENABLE_LIBOPENJPEG "${WITH_OPENJPEG}")
|
322 |
-
|
323 |
-
find_soft_mandatory_package(ENABLE_LCMS LCMS2 2.9)
|
324 |
-
set(USE_CMS ${ENABLE_LCMS})
|
325 |
-
|
326 |
-
find_soft_mandatory_package(ENABLE_LIBCURL CURL 7.68)
|
327 |
-
set(POPPLER_HAS_CURL_SUPPORT ${ENABLE_LIBCURL})
|
328 |
-
|
329 |
-
if(MINGW)
|
330 |
-
# Use mingw's ansi stdio extensions
|
331 |
-
add_definitions(-D__USE_MINGW_ANSI_STDIO=1)
|
332 |
-
endif()
|
333 |
-
if(WITH_FONTCONFIGURATION_WIN32)
|
334 |
-
if(MINGW)
|
335 |
-
# Set the minimum required Internet Explorer version to 5.0
|
336 |
-
add_definitions(-D_WIN32_IE=0x0500)
|
337 |
-
endif()
|
338 |
-
endif()
|
339 |
-
include_directories(
|
340 |
-
${CMAKE_CURRENT_SOURCE_DIR}
|
341 |
-
${CMAKE_CURRENT_SOURCE_DIR}/fofi
|
342 |
-
${CMAKE_CURRENT_SOURCE_DIR}/goo
|
343 |
-
${CMAKE_CURRENT_SOURCE_DIR}/poppler
|
344 |
-
${CMAKE_CURRENT_BINARY_DIR}
|
345 |
-
${CMAKE_CURRENT_BINARY_DIR}/poppler
|
346 |
-
)
|
347 |
-
|
348 |
-
if(PNG_FOUND)
|
349 |
-
set(ENABLE_LIBPNG ON)
|
350 |
-
endif()
|
351 |
-
|
352 |
-
set(SIGNATURE_BACKENDS "")
|
353 |
-
if(ENABLE_NSS3)
|
354 |
-
list(APPEND SIGNATURE_BACKENDS "NSS")
|
355 |
-
endif()
|
356 |
-
if(ENABLE_GPGME)
|
357 |
-
list(APPEND SIGNATURE_BACKENDS "GPG")
|
358 |
-
endif()
|
359 |
-
|
360 |
-
list(LENGTH SIGNATURE_BACKENDS _signing_backends_count)
|
361 |
-
if (_signing_backends_count GREATER 0)
|
362 |
-
if (NOT DEFAULT_SIGNATURE_BACKEND)
|
363 |
-
# If not specified at compiletime, we take the first one added.
|
364 |
-
# This means that the order we append them to the list is significant
|
365 |
-
list(GET SIGNATURE_BACKENDS 0 DEFAULT_SIGNATURE_BACKEND)
|
366 |
-
endif()
|
367 |
-
set(ENABLE_SIGNATURES ON)
|
368 |
-
endif()
|
369 |
-
if (NOT DEFAULT_SIGNATURE_BACKEND)
|
370 |
-
set(DEFAULT_SIGNATURE_BACKEND "None")
|
371 |
-
endif()
|
372 |
-
|
373 |
-
# Recent versions of poppler-data install a .pc file.
|
374 |
-
# Use it to determine the encoding data path, if available.
|
375 |
-
# Default to the same prefix otherwise.
|
376 |
-
pkg_check_modules(POPPLER_DATA poppler-data)
|
377 |
-
if(POPPLER_DATA_FOUND)
|
378 |
-
execute_process(COMMAND "${PKG_CONFIG_EXECUTABLE}" --variable=poppler_datadir poppler-data
|
379 |
-
RESULT_VARIABLE _result_var
|
380 |
-
OUTPUT_VARIABLE _output_var OUTPUT_STRIP_TRAILING_WHITESPACE)
|
381 |
-
if(_result_var STREQUAL "0" AND NOT _output_var STREQUAL "")
|
382 |
-
set(POPPLER_DATADIR "${_output_var}")
|
383 |
-
endif()
|
384 |
-
endif()
|
385 |
-
if(NOT DEFINED POPPLER_DATADIR)
|
386 |
-
set(POPPLER_DATADIR "${CMAKE_INSTALL_PREFIX}/share/poppler")
|
387 |
-
endif()
|
388 |
-
|
389 |
-
if(EXTRA_WARN)
|
390 |
-
set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
|
391 |
-
set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS_EXTRA} ${CMAKE_CXX_FLAGS}")
|
392 |
-
else()
|
393 |
-
set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
|
394 |
-
set(CMAKE_CXX_FLAGS "${DEFAULT_COMPILE_WARNINGS} ${CMAKE_CXX_FLAGS}")
|
395 |
-
endif()
|
396 |
-
|
397 |
-
include(ConfigureChecks.cmake)
|
398 |
-
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
399 |
-
configure_file(poppler/poppler-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h)
|
400 |
-
|
401 |
-
find_program(GPERF gperf)
|
402 |
-
find_program(SED sed)
|
403 |
-
|
404 |
-
set(poppler_SRCS
|
405 |
-
goo/GooString.cc
|
406 |
-
goo/GooTimer.cc
|
407 |
-
goo/ImgWriter.cc
|
408 |
-
goo/JpegWriter.cc
|
409 |
-
goo/NetPBMWriter.cc
|
410 |
-
goo/PNGWriter.cc
|
411 |
-
goo/TiffWriter.cc
|
412 |
-
goo/ft_utils.cc
|
413 |
-
goo/gbase64.cc
|
414 |
-
goo/gbasename.cc
|
415 |
-
goo/gfile.cc
|
416 |
-
goo/glibc.cc
|
417 |
-
goo/glibc_strtok_r.cc
|
418 |
-
goo/grandom.cc
|
419 |
-
goo/gstrtod.cc
|
420 |
-
fofi/FoFiBase.cc
|
421 |
-
fofi/FoFiEncodings.cc
|
422 |
-
fofi/FoFiTrueType.cc
|
423 |
-
fofi/FoFiType1.cc
|
424 |
-
fofi/FoFiType1C.cc
|
425 |
-
fofi/FoFiIdentifier.cc
|
426 |
-
poppler/Annot.cc
|
427 |
-
poppler/AnnotStampImageHelper.cc
|
428 |
-
poppler/Array.cc
|
429 |
-
poppler/CachedFile.cc
|
430 |
-
poppler/Catalog.cc
|
431 |
-
poppler/CharCodeToUnicode.cc
|
432 |
-
poppler/CMap.cc
|
433 |
-
poppler/CryptoSignBackend.cc
|
434 |
-
poppler/DateInfo.cc
|
435 |
-
poppler/Decrypt.cc
|
436 |
-
poppler/Dict.cc
|
437 |
-
poppler/Error.cc
|
438 |
-
poppler/FDPDFDocBuilder.cc
|
439 |
-
poppler/FILECacheLoader.cc
|
440 |
-
poppler/FileSpec.cc
|
441 |
-
poppler/FlateEncoder.cc
|
442 |
-
poppler/FontEncodingTables.cc
|
443 |
-
poppler/Form.cc
|
444 |
-
poppler/FontInfo.cc
|
445 |
-
poppler/Function.cc
|
446 |
-
poppler/Gfx.cc
|
447 |
-
poppler/GfxFont.cc
|
448 |
-
poppler/GfxState.cc
|
449 |
-
poppler/GlobalParams.cc
|
450 |
-
poppler/Hints.cc
|
451 |
-
poppler/ImageEmbeddingUtils.cc
|
452 |
-
poppler/JArithmeticDecoder.cc
|
453 |
-
poppler/JBIG2Stream.cc
|
454 |
-
poppler/JSInfo.cc
|
455 |
-
poppler/Lexer.cc
|
456 |
-
poppler/Link.cc
|
457 |
-
poppler/Linearization.cc
|
458 |
-
poppler/LocalPDFDocBuilder.cc
|
459 |
-
poppler/MarkedContentOutputDev.cc
|
460 |
-
poppler/NameToCharCode.cc
|
461 |
-
poppler/Object.cc
|
462 |
-
poppler/OptionalContent.cc
|
463 |
-
poppler/Outline.cc
|
464 |
-
poppler/OutputDev.cc
|
465 |
-
poppler/Page.cc
|
466 |
-
poppler/PageTransition.cc
|
467 |
-
poppler/Parser.cc
|
468 |
-
poppler/PDFDoc.cc
|
469 |
-
poppler/PDFDocBuilder.cc
|
470 |
-
poppler/PDFDocEncoding.cc
|
471 |
-
poppler/PDFDocFactory.cc
|
472 |
-
poppler/ProfileData.cc
|
473 |
-
poppler/PreScanOutputDev.cc
|
474 |
-
poppler/PSTokenizer.cc
|
475 |
-
poppler/SignatureInfo.cc
|
476 |
-
poppler/Stream.cc
|
477 |
-
poppler/StructTreeRoot.cc
|
478 |
-
poppler/StructElement.cc
|
479 |
-
poppler/UnicodeMap.cc
|
480 |
-
poppler/UnicodeMapFuncs.cc
|
481 |
-
poppler/UnicodeTypeTable.cc
|
482 |
-
poppler/UTF.cc
|
483 |
-
poppler/XRef.cc
|
484 |
-
poppler/PSOutputDev.cc
|
485 |
-
poppler/TextOutputDev.cc
|
486 |
-
poppler/PageLabelInfo.cc
|
487 |
-
poppler/SecurityHandler.cc
|
488 |
-
poppler/Sound.cc
|
489 |
-
poppler/ViewerPreferences.cc
|
490 |
-
poppler/Movie.cc
|
491 |
-
poppler/Rendition.cc
|
492 |
-
poppler/CertificateInfo.cc
|
493 |
-
poppler/BBoxOutputDev.cc
|
494 |
-
poppler/SplashOutputDev.cc
|
495 |
-
splash/Splash.cc
|
496 |
-
splash/SplashBitmap.cc
|
497 |
-
splash/SplashClip.cc
|
498 |
-
splash/SplashFTFont.cc
|
499 |
-
splash/SplashFTFontEngine.cc
|
500 |
-
splash/SplashFTFontFile.cc
|
501 |
-
splash/SplashFont.cc
|
502 |
-
splash/SplashFontEngine.cc
|
503 |
-
splash/SplashFontFile.cc
|
504 |
-
splash/SplashFontFileID.cc
|
505 |
-
splash/SplashPath.cc
|
506 |
-
splash/SplashPattern.cc
|
507 |
-
splash/SplashScreen.cc
|
508 |
-
splash/SplashState.cc
|
509 |
-
splash/SplashXPath.cc
|
510 |
-
splash/SplashXPathScanner.cc
|
511 |
-
)
|
512 |
-
set(poppler_LIBS Freetype::Freetype ZLIB::ZLIB)
|
513 |
-
if(FONTCONFIG_FOUND)
|
514 |
-
set(poppler_LIBS ${poppler_LIBS} Fontconfig::Fontconfig)
|
515 |
-
endif()
|
516 |
-
|
517 |
-
if(Androidlib)
|
518 |
-
set(poppler_LIBS ${poppler_LIBS} ${Androidlib})
|
519 |
-
endif()
|
520 |
-
|
521 |
-
if(JPEG_FOUND)
|
522 |
-
set(poppler_SRCS ${poppler_SRCS}
|
523 |
-
poppler/DCTStream.cc
|
524 |
-
)
|
525 |
-
set(poppler_LIBS ${poppler_LIBS} JPEG::JPEG)
|
526 |
-
endif()
|
527 |
-
if(ENABLE_ZLIB_UNCOMPRESS)
|
528 |
-
set(poppler_SRCS ${poppler_SRCS}
|
529 |
-
poppler/FlateStream.cc
|
530 |
-
)
|
531 |
-
endif()
|
532 |
-
if(ENABLE_LIBCURL)
|
533 |
-
set(poppler_SRCS ${poppler_SRCS}
|
534 |
-
poppler/CurlCachedFile.cc
|
535 |
-
poppler/CurlPDFDocBuilder.cc
|
536 |
-
)
|
537 |
-
set(poppler_LIBS ${poppler_LIBS} CURL::libcurl)
|
538 |
-
endif()
|
539 |
-
if (ENABLE_NSS3)
|
540 |
-
set(poppler_SRCS ${poppler_SRCS}
|
541 |
-
poppler/NSSCryptoSignBackend.cc
|
542 |
-
)
|
543 |
-
set(poppler_LIBS ${poppler_LIBS} PkgConfig::NSS3)
|
544 |
-
endif()
|
545 |
-
if (ENABLE_GPGME)
|
546 |
-
set(poppler_SRCS ${poppler_SRCS}
|
547 |
-
poppler/GPGMECryptoSignBackend.cc
|
548 |
-
)
|
549 |
-
set(poppler_LIBS ${poppler_LIBS} Gpgmepp)
|
550 |
-
endif()
|
551 |
-
if (OpenJPEG_FOUND)
|
552 |
-
set(poppler_SRCS ${poppler_SRCS}
|
553 |
-
poppler/JPEG2000Stream.cc
|
554 |
-
)
|
555 |
-
set(poppler_LIBS ${poppler_LIBS} openjp2)
|
556 |
-
else ()
|
557 |
-
set(poppler_SRCS ${poppler_SRCS}
|
558 |
-
poppler/JPXStream.cc
|
559 |
-
)
|
560 |
-
endif()
|
561 |
-
if(USE_CMS)
|
562 |
-
set(poppler_LIBS ${poppler_LIBS} ${LCMS2_LIBRARIES})
|
563 |
-
endif()
|
564 |
-
if(WIN32)
|
565 |
-
# use clean APIs
|
566 |
-
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
567 |
-
# gdi32 is needed under win32
|
568 |
-
set(poppler_LIBS ${poppler_LIBS} gdi32)
|
569 |
-
endif()
|
570 |
-
if(PNG_FOUND)
|
571 |
-
set(poppler_LIBS ${poppler_LIBS} PNG::PNG)
|
572 |
-
endif()
|
573 |
-
if(ENABLE_LIBTIFF)
|
574 |
-
set(poppler_LIBS ${poppler_LIBS} TIFF::TIFF)
|
575 |
-
endif()
|
576 |
-
if(Boost_FOUND)
|
577 |
-
set(poppler_LIBS ${poppler_LIBS} Boost::boost)
|
578 |
-
endif()
|
579 |
-
|
580 |
-
if (GPERF AND SED AND RUN_GPERF_IF_PRESENT)
|
581 |
-
macro(ADD_GPERF_FILE input)
|
582 |
-
add_custom_command(OUTPUT poppler/${input}.c
|
583 |
-
COMMAND ${GPERF} poppler/${input}.gperf > ${CMAKE_CURRENT_BINARY_DIR}/poppler/${input}.c
|
584 |
-
COMMAND ${GPERF} poppler/${input}.gperf > ${CMAKE_CURRENT_SOURCE_DIR}/poppler/${input}.pregenerated.c
|
585 |
-
COMMAND ${SED} -i -e "s#${GPERF}#gperf#" ${CMAKE_CURRENT_SOURCE_DIR}/poppler/${input}.pregenerated.c
|
586 |
-
COMMAND clang-format -i ${CMAKE_CURRENT_SOURCE_DIR}/poppler/${input}.pregenerated.c || true
|
587 |
-
DEPENDS poppler/${input}.gperf
|
588 |
-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
589 |
-
|
590 |
-
set(poppler_SRCS ${poppler_SRCS}
|
591 |
-
poppler/${input}.c
|
592 |
-
)
|
593 |
-
endmacro()
|
594 |
-
else()
|
595 |
-
macro(ADD_GPERF_FILE input)
|
596 |
-
set(poppler_SRCS ${poppler_SRCS}
|
597 |
-
poppler/${input}.pregenerated.c
|
598 |
-
)
|
599 |
-
endmacro()
|
600 |
-
endif()
|
601 |
-
|
602 |
-
ADD_GPERF_FILE(CourierWidths)
|
603 |
-
ADD_GPERF_FILE(CourierBoldWidths)
|
604 |
-
ADD_GPERF_FILE(CourierBoldObliqueWidths)
|
605 |
-
ADD_GPERF_FILE(CourierObliqueWidths)
|
606 |
-
ADD_GPERF_FILE(HelveticaWidths)
|
607 |
-
ADD_GPERF_FILE(HelveticaBoldWidths)
|
608 |
-
ADD_GPERF_FILE(HelveticaBoldObliqueWidths)
|
609 |
-
ADD_GPERF_FILE(HelveticaObliqueWidths)
|
610 |
-
ADD_GPERF_FILE(SymbolWidths)
|
611 |
-
ADD_GPERF_FILE(TimesBoldWidths)
|
612 |
-
ADD_GPERF_FILE(TimesBoldItalicWidths)
|
613 |
-
ADD_GPERF_FILE(TimesItalicWidths)
|
614 |
-
ADD_GPERF_FILE(TimesRomanWidths)
|
615 |
-
ADD_GPERF_FILE(ZapfDingbatsWidths)
|
616 |
-
|
617 |
-
set(POPPLER_SOVERSION_NUMBER "133")
|
618 |
-
|
619 |
-
set(LINKER_SCRIPT "${CMAKE_BINARY_DIR}/libpoppler.map")
|
620 |
-
configure_file(
|
621 |
-
"${CMAKE_SOURCE_DIR}/poppler/libpoppler.map.in"
|
622 |
-
${LINKER_SCRIPT})
|
623 |
-
|
624 |
-
if(MSVC)
|
625 |
-
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
626 |
-
endif()
|
627 |
-
add_library(poppler ${poppler_SRCS} ${LINKER_SCRIPT})
|
628 |
-
if (OpenJPEG_FOUND)
|
629 |
-
# check if we can remove this when we depend on newer openjpeg versions, 2.5 seems fixed
|
630 |
-
# target openjp2 may lack interface include directories
|
631 |
-
target_include_directories(poppler SYSTEM PRIVATE ${OPENJPEG_INCLUDE_DIRS})
|
632 |
-
endif()
|
633 |
-
if(USE_CMS)
|
634 |
-
target_include_directories(poppler SYSTEM PRIVATE ${LCMS2_INCLUDE_DIR})
|
635 |
-
endif()
|
636 |
-
generate_export_header(poppler BASE_NAME poppler-private EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/poppler_private_export.h")
|
637 |
-
set_target_properties(poppler PROPERTIES
|
638 |
-
VERSION ${POPPLER_SOVERSION_NUMBER}.0.0
|
639 |
-
SOVERSION ${POPPLER_SOVERSION_NUMBER})
|
640 |
-
|
641 |
-
if(UNIX AND (NOT APPLE))
|
642 |
-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/linkerscript_test.map "VERS_1 {\nglobal:\n *;};\n")
|
643 |
-
|
644 |
-
# once we require cmake 3.18,
|
645 |
-
# the next set of lines can be changed
|
646 |
-
# to the check_linker_flags function instead
|
647 |
-
include(CheckCXXSourceCompiles)
|
648 |
-
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
649 |
-
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} -Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/linkerscript_test.map)
|
650 |
-
check_cxx_source_compiles("
|
651 |
-
int main(int, char**) {
|
652 |
-
return 0;
|
653 |
-
}
|
654 |
-
" SUPPORT_VERSION_SCRIPT)
|
655 |
-
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
|
656 |
-
|
657 |
-
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/linkerscript_test.map)
|
658 |
-
if (SUPPORT_VERSION_SCRIPT)
|
659 |
-
set_target_properties(poppler PROPERTIES LINK_OPTIONS LINKER:--version-script=${LINKER_SCRIPT})
|
660 |
-
endif()
|
661 |
-
endif()
|
662 |
-
if(MINGW AND BUILD_SHARED_LIBS)
|
663 |
-
get_target_property(POPPLER_SOVERSION poppler SOVERSION)
|
664 |
-
set_target_properties(poppler PROPERTIES SUFFIX "-${POPPLER_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
665 |
-
endif()
|
666 |
-
target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
|
667 |
-
install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
668 |
-
|
669 |
-
if(ENABLE_UNSTABLE_API_ABI_HEADERS)
|
670 |
-
install(FILES
|
671 |
-
poppler/Annot.h
|
672 |
-
poppler/AnnotStampImageHelper.h
|
673 |
-
poppler/Array.h
|
674 |
-
poppler/CachedFile.h
|
675 |
-
poppler/Catalog.h
|
676 |
-
poppler/CharCodeToUnicode.h
|
677 |
-
poppler/CMap.h
|
678 |
-
poppler/DateInfo.h
|
679 |
-
poppler/Decrypt.h
|
680 |
-
poppler/Dict.h
|
681 |
-
poppler/Error.h
|
682 |
-
poppler/FDPDFDocBuilder.h
|
683 |
-
poppler/FILECacheLoader.h
|
684 |
-
poppler/FileSpec.h
|
685 |
-
poppler/FontEncodingTables.h
|
686 |
-
poppler/FontInfo.h
|
687 |
-
poppler/Form.h
|
688 |
-
poppler/Function.h
|
689 |
-
poppler/Gfx.h
|
690 |
-
poppler/GfxFont.h
|
691 |
-
poppler/GfxState.h
|
692 |
-
poppler/GfxState_helpers.h
|
693 |
-
poppler/GlobalParams.h
|
694 |
-
poppler/Hints.h
|
695 |
-
poppler/JArithmeticDecoder.h
|
696 |
-
poppler/JBIG2Stream.h
|
697 |
-
poppler/JSInfo.h
|
698 |
-
poppler/Lexer.h
|
699 |
-
poppler/Link.h
|
700 |
-
poppler/Linearization.h
|
701 |
-
poppler/LocalPDFDocBuilder.h
|
702 |
-
poppler/MarkedContentOutputDev.h
|
703 |
-
poppler/Movie.h
|
704 |
-
poppler/NameToCharCode.h
|
705 |
-
poppler/Object.h
|
706 |
-
poppler/OptionalContent.h
|
707 |
-
poppler/Outline.h
|
708 |
-
poppler/OutputDev.h
|
709 |
-
poppler/Page.h
|
710 |
-
poppler/PageTransition.h
|
711 |
-
poppler/Parser.h
|
712 |
-
poppler/PDFDoc.h
|
713 |
-
poppler/PDFDocBuilder.h
|
714 |
-
poppler/PDFDocEncoding.h
|
715 |
-
poppler/PDFDocFactory.h
|
716 |
-
poppler/PopplerCache.h
|
717 |
-
poppler/ProfileData.h
|
718 |
-
poppler/PreScanOutputDev.h
|
719 |
-
poppler/PSTokenizer.h
|
720 |
-
poppler/Rendition.h
|
721 |
-
poppler/CertificateInfo.h
|
722 |
-
poppler/Stream-CCITT.h
|
723 |
-
poppler/Stream.h
|
724 |
-
poppler/StructElement.h
|
725 |
-
poppler/StructTreeRoot.h
|
726 |
-
poppler/UnicodeMap.h
|
727 |
-
poppler/UnicodeMapFuncs.h
|
728 |
-
poppler/UnicodeMapTables.h
|
729 |
-
poppler/UnicodeTypeTable.h
|
730 |
-
poppler/UnicodeCClassTables.h
|
731 |
-
poppler/UnicodeCompTables.h
|
732 |
-
poppler/UnicodeDecompTables.h
|
733 |
-
poppler/ViewerPreferences.h
|
734 |
-
poppler/XRef.h
|
735 |
-
poppler/CharTypes.h
|
736 |
-
poppler/ErrorCodes.h
|
737 |
-
poppler/NameToUnicodeTable.h
|
738 |
-
poppler/PSOutputDev.h
|
739 |
-
poppler/TextOutputDev.h
|
740 |
-
poppler/SecurityHandler.h
|
741 |
-
poppler/BBoxOutputDev.h
|
742 |
-
poppler/UTF.h
|
743 |
-
poppler/Sound.h
|
744 |
-
${CMAKE_CURRENT_BINARY_DIR}/poppler_private_export.h
|
745 |
-
${CMAKE_CURRENT_BINARY_DIR}/poppler/poppler-config.h
|
746 |
-
poppler/SplashOutputDev.h
|
747 |
-
DESTINATION include/poppler)
|
748 |
-
install(FILES
|
749 |
-
goo/GooTimer.h
|
750 |
-
goo/GooString.h
|
751 |
-
goo/gmem.h
|
752 |
-
goo/gdir.h
|
753 |
-
goo/gfile.h
|
754 |
-
goo/ImgWriter.h
|
755 |
-
goo/GooCheckedOps.h
|
756 |
-
goo/GooLikely.h
|
757 |
-
goo/gstrtod.h
|
758 |
-
goo/grandom.h
|
759 |
-
DESTINATION include/poppler/goo)
|
760 |
-
if(PNG_FOUND)
|
761 |
-
install(FILES
|
762 |
-
goo/PNGWriter.h
|
763 |
-
DESTINATION include/poppler/goo)
|
764 |
-
endif()
|
765 |
-
if(ENABLE_LIBTIFF)
|
766 |
-
install(FILES
|
767 |
-
goo/TiffWriter.h
|
768 |
-
DESTINATION include/poppler/goo)
|
769 |
-
endif()
|
770 |
-
if(JPEG_FOUND)
|
771 |
-
install(FILES
|
772 |
-
goo/JpegWriter.h
|
773 |
-
DESTINATION include/poppler/goo)
|
774 |
-
endif()
|
775 |
-
install(FILES
|
776 |
-
fofi/FoFiBase.h
|
777 |
-
fofi/FoFiEncodings.h
|
778 |
-
fofi/FoFiTrueType.h
|
779 |
-
fofi/FoFiType1.h
|
780 |
-
fofi/FoFiType1C.h
|
781 |
-
fofi/FoFiIdentifier.h
|
782 |
-
DESTINATION include/poppler/fofi)
|
783 |
-
if(ENABLE_LIBCURL)
|
784 |
-
install(FILES
|
785 |
-
poppler/CurlCachedFile.h
|
786 |
-
poppler/CurlPDFDocBuilder.h
|
787 |
-
DESTINATION include/poppler)
|
788 |
-
endif()
|
789 |
-
if(OpenJPEG_FOUND)
|
790 |
-
install(FILES
|
791 |
-
poppler/JPEG2000Stream.h
|
792 |
-
DESTINATION include/poppler)
|
793 |
-
else()
|
794 |
-
install(FILES
|
795 |
-
poppler/JPXStream.h
|
796 |
-
DESTINATION include/poppler)
|
797 |
-
endif()
|
798 |
-
install(FILES
|
799 |
-
splash/Splash.h
|
800 |
-
splash/SplashBitmap.h
|
801 |
-
splash/SplashClip.h
|
802 |
-
splash/SplashErrorCodes.h
|
803 |
-
splash/SplashFTFont.h
|
804 |
-
splash/SplashFTFontEngine.h
|
805 |
-
splash/SplashFTFontFile.h
|
806 |
-
splash/SplashFont.h
|
807 |
-
splash/SplashFontEngine.h
|
808 |
-
splash/SplashFontFile.h
|
809 |
-
splash/SplashFontFileID.h
|
810 |
-
splash/SplashGlyphBitmap.h
|
811 |
-
splash/SplashMath.h
|
812 |
-
splash/SplashPath.h
|
813 |
-
splash/SplashPattern.h
|
814 |
-
splash/SplashScreen.h
|
815 |
-
splash/SplashState.h
|
816 |
-
splash/SplashTypes.h
|
817 |
-
splash/SplashXPath.h
|
818 |
-
splash/SplashXPathScanner.h
|
819 |
-
DESTINATION include/poppler/splash)
|
820 |
-
if(CAIRO_FOUND)
|
821 |
-
install(FILES
|
822 |
-
poppler/CairoFontEngine.h
|
823 |
-
poppler/CairoOutputDev.h
|
824 |
-
poppler/CairoRescaleBox.h
|
825 |
-
DESTINATION include/poppler)
|
826 |
-
endif()
|
827 |
-
endif()
|
828 |
-
|
829 |
-
|
830 |
-
if(ENABLE_UTILS)
|
831 |
-
add_subdirectory(utils)
|
832 |
-
endif()
|
833 |
-
if(ENABLE_GLIB)
|
834 |
-
add_subdirectory(glib)
|
835 |
-
endif()
|
836 |
-
if (BUILD_MANUAL_TESTS)
|
837 |
-
add_subdirectory(test)
|
838 |
-
endif()
|
839 |
-
if(ENABLE_QT5)
|
840 |
-
add_subdirectory(qt5)
|
841 |
-
endif()
|
842 |
-
if(ENABLE_QT6)
|
843 |
-
add_subdirectory(qt6)
|
844 |
-
endif()
|
845 |
-
if(ENABLE_CPP)
|
846 |
-
add_subdirectory(cpp)
|
847 |
-
endif()
|
848 |
-
|
849 |
-
# Configure "Requires" field & install .pc files for packagers
|
850 |
-
set(PC_REQUIRES "")
|
851 |
-
set(PC_REQUIRES_PRIVATE "Requires.private: poppler = ${POPPLER_VERSION}")
|
852 |
-
|
853 |
-
if(PKG_CONFIG_EXECUTABLE)
|
854 |
-
poppler_create_install_pkgconfig(poppler.pc ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
855 |
-
if(ENABLE_QT5)
|
856 |
-
poppler_create_install_pkgconfig(poppler-qt5.pc ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
857 |
-
endif()
|
858 |
-
if(ENABLE_QT6)
|
859 |
-
poppler_create_install_pkgconfig(poppler-qt6.pc ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
860 |
-
endif()
|
861 |
-
if(ENABLE_GLIB)
|
862 |
-
poppler_create_install_pkgconfig(poppler-glib.pc ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
863 |
-
endif()
|
864 |
-
if(ENABLE_CPP)
|
865 |
-
poppler_create_install_pkgconfig(poppler-cpp.pc ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
866 |
-
endif()
|
867 |
-
else()
|
868 |
-
MESSAGE(STATUS ".pc files will not be installed becasue of missing 'pkg-config'!")
|
869 |
-
endif()
|
870 |
-
|
871 |
-
# Summarize build options & display warnings for user
|
872 |
-
message("Building Poppler with support for:")
|
873 |
-
show_end_message("font configuration" ${font_configuration})
|
874 |
-
show_end_message_yesno("use boost (Splash)" ENABLE_BOOST)
|
875 |
-
show_end_message_yesno("cairo output" CAIRO_FOUND)
|
876 |
-
show_end_message_yesno("qt5 wrapper" ENABLE_QT5)
|
877 |
-
show_end_message_yesno("qt6 wrapper" ENABLE_QT6)
|
878 |
-
show_end_message_yesno("glib wrapper" ENABLE_GLIB)
|
879 |
-
show_end_message_yesno(" introspection" INTROSPECTION_FOUND)
|
880 |
-
show_end_message_yesno(" gtk-doc" ENABLE_GTK_DOC)
|
881 |
-
show_end_message_yesno("cpp wrapper" ENABLE_CPP)
|
882 |
-
show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
|
883 |
-
show_end_message_yesno("use libpng" ENABLE_LIBPNG)
|
884 |
-
show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
|
885 |
-
show_end_message_yesno("use zlib uncompress" ENABLE_ZLIB_UNCOMPRESS)
|
886 |
-
show_end_message_yesno("use nss3" ENABLE_NSS3)
|
887 |
-
show_end_message_yesno("use gpg" ENABLE_GPGME)
|
888 |
-
show_end_message(" default signature backend" ${DEFAULT_SIGNATURE_BACKEND})
|
889 |
-
show_end_message_yesno("use curl" ENABLE_LIBCURL)
|
890 |
-
show_end_message_yesno("use libopenjpeg2" WITH_OPENJPEG)
|
891 |
-
show_end_message_yesno("use lcms2" USE_CMS)
|
892 |
-
show_end_message_yesno("command line utils" ENABLE_UTILS)
|
893 |
-
show_end_message_yesno("fuzz target" ENABLE_FUZZER)
|
894 |
-
show_end_message("test data dir" ${TESTDATADIR})
|
895 |
-
|
896 |
-
if(NOT ENABLE_LIBJPEG AND HAVE_DCT_DECODER)
|
897 |
-
message("Warning: Using libjpeg is recommended. The internal DCT decoder is unmaintained.")
|
898 |
-
endif()
|
899 |
-
|
900 |
-
if(NOT HAVE_DCT_DECODER)
|
901 |
-
message("Warning: You're not compiling any DCT decoder. Some files will fail to display properly.")
|
902 |
-
endif()
|
903 |
-
|
904 |
-
if(ENABLE_ZLIB_UNCOMPRESS)
|
905 |
-
message("Warning: Using zlib is not totally safe")
|
906 |
-
endif()
|
907 |
-
|
908 |
-
if(NOT WITH_OPENJPEG AND HAVE_JPX_DECODER)
|
909 |
-
message("Warning: Using libopenjpeg2 is recommended. The internal JPX decoder is unmaintained.")
|
910 |
-
endif()
|
911 |
-
|
912 |
-
if(NOT HAVE_JPX_DECODER)
|
913 |
-
message("Warning: You're not compiling any JPX decoder. Some files will fail to display properly.")
|
914 |
-
endif()
|
915 |
-
|
916 |
-
if(NOT ENABLE_BOOST)
|
917 |
-
message("Warning: Use of boost is recommended for better performance.")
|
918 |
-
endif()
|
919 |
-
|
920 |
-
set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${POPPLER_VERSION})
|
921 |
-
add_custom_target(dist
|
922 |
-
COMMAND
|
923 |
-
COMMAND git log --stat | fmt --split-only > ${CMAKE_BINARY_DIR}/ChangeLog
|
924 |
-
COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar
|
925 |
-
COMMAND tar -C ${CMAKE_BINARY_DIR} -rf ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar ChangeLog --transform='s,,${ARCHIVE_NAME}/,' --owner root:0 --group root:0
|
926 |
-
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
|
927 |
-
COMMAND xz -9 ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar
|
928 |
-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/COPYING
DELETED
@@ -1,339 +0,0 @@
|
|
1 |
-
GNU GENERAL PUBLIC LICENSE
|
2 |
-
Version 2, June 1991
|
3 |
-
|
4 |
-
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
-
Everyone is permitted to copy and distribute verbatim copies
|
7 |
-
of this license document, but changing it is not allowed.
|
8 |
-
|
9 |
-
Preamble
|
10 |
-
|
11 |
-
The licenses for most software are designed to take away your
|
12 |
-
freedom to share and change it. By contrast, the GNU General Public
|
13 |
-
License is intended to guarantee your freedom to share and change free
|
14 |
-
software--to make sure the software is free for all its users. This
|
15 |
-
General Public License applies to most of the Free Software
|
16 |
-
Foundation's software and to any other program whose authors commit to
|
17 |
-
using it. (Some other Free Software Foundation software is covered by
|
18 |
-
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
-
your programs, too.
|
20 |
-
|
21 |
-
When we speak of free software, we are referring to freedom, not
|
22 |
-
price. Our General Public Licenses are designed to make sure that you
|
23 |
-
have the freedom to distribute copies of free software (and charge for
|
24 |
-
this service if you wish), that you receive source code or can get it
|
25 |
-
if you want it, that you can change the software or use pieces of it
|
26 |
-
in new free programs; and that you know you can do these things.
|
27 |
-
|
28 |
-
To protect your rights, we need to make restrictions that forbid
|
29 |
-
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
-
These restrictions translate to certain responsibilities for you if you
|
31 |
-
distribute copies of the software, or if you modify it.
|
32 |
-
|
33 |
-
For example, if you distribute copies of such a program, whether
|
34 |
-
gratis or for a fee, you must give the recipients all the rights that
|
35 |
-
you have. You must make sure that they, too, receive or can get the
|
36 |
-
source code. And you must show them these terms so they know their
|
37 |
-
rights.
|
38 |
-
|
39 |
-
We protect your rights with two steps: (1) copyright the software, and
|
40 |
-
(2) offer you this license which gives you legal permission to copy,
|
41 |
-
distribute and/or modify the software.
|
42 |
-
|
43 |
-
Also, for each author's protection and ours, we want to make certain
|
44 |
-
that everyone understands that there is no warranty for this free
|
45 |
-
software. If the software is modified by someone else and passed on, we
|
46 |
-
want its recipients to know that what they have is not the original, so
|
47 |
-
that any problems introduced by others will not reflect on the original
|
48 |
-
authors' reputations.
|
49 |
-
|
50 |
-
Finally, any free program is threatened constantly by software
|
51 |
-
patents. We wish to avoid the danger that redistributors of a free
|
52 |
-
program will individually obtain patent licenses, in effect making the
|
53 |
-
program proprietary. To prevent this, we have made it clear that any
|
54 |
-
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
-
|
56 |
-
The precise terms and conditions for copying, distribution and
|
57 |
-
modification follow.
|
58 |
-
|
59 |
-
GNU GENERAL PUBLIC LICENSE
|
60 |
-
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
-
|
62 |
-
0. This License applies to any program or other work which contains
|
63 |
-
a notice placed by the copyright holder saying it may be distributed
|
64 |
-
under the terms of this General Public License. The "Program", below,
|
65 |
-
refers to any such program or work, and a "work based on the Program"
|
66 |
-
means either the Program or any derivative work under copyright law:
|
67 |
-
that is to say, a work containing the Program or a portion of it,
|
68 |
-
either verbatim or with modifications and/or translated into another
|
69 |
-
language. (Hereinafter, translation is included without limitation in
|
70 |
-
the term "modification".) Each licensee is addressed as "you".
|
71 |
-
|
72 |
-
Activities other than copying, distribution and modification are not
|
73 |
-
covered by this License; they are outside its scope. The act of
|
74 |
-
running the Program is not restricted, and the output from the Program
|
75 |
-
is covered only if its contents constitute a work based on the
|
76 |
-
Program (independent of having been made by running the Program).
|
77 |
-
Whether that is true depends on what the Program does.
|
78 |
-
|
79 |
-
1. You may copy and distribute verbatim copies of the Program's
|
80 |
-
source code as you receive it, in any medium, provided that you
|
81 |
-
conspicuously and appropriately publish on each copy an appropriate
|
82 |
-
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
-
notices that refer to this License and to the absence of any warranty;
|
84 |
-
and give any other recipients of the Program a copy of this License
|
85 |
-
along with the Program.
|
86 |
-
|
87 |
-
You may charge a fee for the physical act of transferring a copy, and
|
88 |
-
you may at your option offer warranty protection in exchange for a fee.
|
89 |
-
|
90 |
-
2. You may modify your copy or copies of the Program or any portion
|
91 |
-
of it, thus forming a work based on the Program, and copy and
|
92 |
-
distribute such modifications or work under the terms of Section 1
|
93 |
-
above, provided that you also meet all of these conditions:
|
94 |
-
|
95 |
-
a) You must cause the modified files to carry prominent notices
|
96 |
-
stating that you changed the files and the date of any change.
|
97 |
-
|
98 |
-
b) You must cause any work that you distribute or publish, that in
|
99 |
-
whole or in part contains or is derived from the Program or any
|
100 |
-
part thereof, to be licensed as a whole at no charge to all third
|
101 |
-
parties under the terms of this License.
|
102 |
-
|
103 |
-
c) If the modified program normally reads commands interactively
|
104 |
-
when run, you must cause it, when started running for such
|
105 |
-
interactive use in the most ordinary way, to print or display an
|
106 |
-
announcement including an appropriate copyright notice and a
|
107 |
-
notice that there is no warranty (or else, saying that you provide
|
108 |
-
a warranty) and that users may redistribute the program under
|
109 |
-
these conditions, and telling the user how to view a copy of this
|
110 |
-
License. (Exception: if the Program itself is interactive but
|
111 |
-
does not normally print such an announcement, your work based on
|
112 |
-
the Program is not required to print an announcement.)
|
113 |
-
|
114 |
-
These requirements apply to the modified work as a whole. If
|
115 |
-
identifiable sections of that work are not derived from the Program,
|
116 |
-
and can be reasonably considered independent and separate works in
|
117 |
-
themselves, then this License, and its terms, do not apply to those
|
118 |
-
sections when you distribute them as separate works. But when you
|
119 |
-
distribute the same sections as part of a whole which is a work based
|
120 |
-
on the Program, the distribution of the whole must be on the terms of
|
121 |
-
this License, whose permissions for other licensees extend to the
|
122 |
-
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
-
|
124 |
-
Thus, it is not the intent of this section to claim rights or contest
|
125 |
-
your rights to work written entirely by you; rather, the intent is to
|
126 |
-
exercise the right to control the distribution of derivative or
|
127 |
-
collective works based on the Program.
|
128 |
-
|
129 |
-
In addition, mere aggregation of another work not based on the Program
|
130 |
-
with the Program (or with a work based on the Program) on a volume of
|
131 |
-
a storage or distribution medium does not bring the other work under
|
132 |
-
the scope of this License.
|
133 |
-
|
134 |
-
3. You may copy and distribute the Program (or a work based on it,
|
135 |
-
under Section 2) in object code or executable form under the terms of
|
136 |
-
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
-
|
138 |
-
a) Accompany it with the complete corresponding machine-readable
|
139 |
-
source code, which must be distributed under the terms of Sections
|
140 |
-
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
-
|
142 |
-
b) Accompany it with a written offer, valid for at least three
|
143 |
-
years, to give any third party, for a charge no more than your
|
144 |
-
cost of physically performing source distribution, a complete
|
145 |
-
machine-readable copy of the corresponding source code, to be
|
146 |
-
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
-
customarily used for software interchange; or,
|
148 |
-
|
149 |
-
c) Accompany it with the information you received as to the offer
|
150 |
-
to distribute corresponding source code. (This alternative is
|
151 |
-
allowed only for noncommercial distribution and only if you
|
152 |
-
received the program in object code or executable form with such
|
153 |
-
an offer, in accord with Subsection b above.)
|
154 |
-
|
155 |
-
The source code for a work means the preferred form of the work for
|
156 |
-
making modifications to it. For an executable work, complete source
|
157 |
-
code means all the source code for all modules it contains, plus any
|
158 |
-
associated interface definition files, plus the scripts used to
|
159 |
-
control compilation and installation of the executable. However, as a
|
160 |
-
special exception, the source code distributed need not include
|
161 |
-
anything that is normally distributed (in either source or binary
|
162 |
-
form) with the major components (compiler, kernel, and so on) of the
|
163 |
-
operating system on which the executable runs, unless that component
|
164 |
-
itself accompanies the executable.
|
165 |
-
|
166 |
-
If distribution of executable or object code is made by offering
|
167 |
-
access to copy from a designated place, then offering equivalent
|
168 |
-
access to copy the source code from the same place counts as
|
169 |
-
distribution of the source code, even though third parties are not
|
170 |
-
compelled to copy the source along with the object code.
|
171 |
-
|
172 |
-
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
-
except as expressly provided under this License. Any attempt
|
174 |
-
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
-
void, and will automatically terminate your rights under this License.
|
176 |
-
However, parties who have received copies, or rights, from you under
|
177 |
-
this License will not have their licenses terminated so long as such
|
178 |
-
parties remain in full compliance.
|
179 |
-
|
180 |
-
5. You are not required to accept this License, since you have not
|
181 |
-
signed it. However, nothing else grants you permission to modify or
|
182 |
-
distribute the Program or its derivative works. These actions are
|
183 |
-
prohibited by law if you do not accept this License. Therefore, by
|
184 |
-
modifying or distributing the Program (or any work based on the
|
185 |
-
Program), you indicate your acceptance of this License to do so, and
|
186 |
-
all its terms and conditions for copying, distributing or modifying
|
187 |
-
the Program or works based on it.
|
188 |
-
|
189 |
-
6. Each time you redistribute the Program (or any work based on the
|
190 |
-
Program), the recipient automatically receives a license from the
|
191 |
-
original licensor to copy, distribute or modify the Program subject to
|
192 |
-
these terms and conditions. You may not impose any further
|
193 |
-
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
-
You are not responsible for enforcing compliance by third parties to
|
195 |
-
this License.
|
196 |
-
|
197 |
-
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
-
infringement or for any other reason (not limited to patent issues),
|
199 |
-
conditions are imposed on you (whether by court order, agreement or
|
200 |
-
otherwise) that contradict the conditions of this License, they do not
|
201 |
-
excuse you from the conditions of this License. If you cannot
|
202 |
-
distribute so as to satisfy simultaneously your obligations under this
|
203 |
-
License and any other pertinent obligations, then as a consequence you
|
204 |
-
may not distribute the Program at all. For example, if a patent
|
205 |
-
license would not permit royalty-free redistribution of the Program by
|
206 |
-
all those who receive copies directly or indirectly through you, then
|
207 |
-
the only way you could satisfy both it and this License would be to
|
208 |
-
refrain entirely from distribution of the Program.
|
209 |
-
|
210 |
-
If any portion of this section is held invalid or unenforceable under
|
211 |
-
any particular circumstance, the balance of the section is intended to
|
212 |
-
apply and the section as a whole is intended to apply in other
|
213 |
-
circumstances.
|
214 |
-
|
215 |
-
It is not the purpose of this section to induce you to infringe any
|
216 |
-
patents or other property right claims or to contest validity of any
|
217 |
-
such claims; this section has the sole purpose of protecting the
|
218 |
-
integrity of the free software distribution system, which is
|
219 |
-
implemented by public license practices. Many people have made
|
220 |
-
generous contributions to the wide range of software distributed
|
221 |
-
through that system in reliance on consistent application of that
|
222 |
-
system; it is up to the author/donor to decide if he or she is willing
|
223 |
-
to distribute software through any other system and a licensee cannot
|
224 |
-
impose that choice.
|
225 |
-
|
226 |
-
This section is intended to make thoroughly clear what is believed to
|
227 |
-
be a consequence of the rest of this License.
|
228 |
-
|
229 |
-
8. If the distribution and/or use of the Program is restricted in
|
230 |
-
certain countries either by patents or by copyrighted interfaces, the
|
231 |
-
original copyright holder who places the Program under this License
|
232 |
-
may add an explicit geographical distribution limitation excluding
|
233 |
-
those countries, so that distribution is permitted only in or among
|
234 |
-
countries not thus excluded. In such case, this License incorporates
|
235 |
-
the limitation as if written in the body of this License.
|
236 |
-
|
237 |
-
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
-
of the General Public License from time to time. Such new versions will
|
239 |
-
be similar in spirit to the present version, but may differ in detail to
|
240 |
-
address new problems or concerns.
|
241 |
-
|
242 |
-
Each version is given a distinguishing version number. If the Program
|
243 |
-
specifies a version number of this License which applies to it and "any
|
244 |
-
later version", you have the option of following the terms and conditions
|
245 |
-
either of that version or of any later version published by the Free
|
246 |
-
Software Foundation. If the Program does not specify a version number of
|
247 |
-
this License, you may choose any version ever published by the Free Software
|
248 |
-
Foundation.
|
249 |
-
|
250 |
-
10. If you wish to incorporate parts of the Program into other free
|
251 |
-
programs whose distribution conditions are different, write to the author
|
252 |
-
to ask for permission. For software which is copyrighted by the Free
|
253 |
-
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
-
make exceptions for this. Our decision will be guided by the two goals
|
255 |
-
of preserving the free status of all derivatives of our free software and
|
256 |
-
of promoting the sharing and reuse of software generally.
|
257 |
-
|
258 |
-
NO WARRANTY
|
259 |
-
|
260 |
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
-
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
-
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
-
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
-
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
-
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
-
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
-
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
-
REPAIR OR CORRECTION.
|
269 |
-
|
270 |
-
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
-
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
-
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
-
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
-
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
-
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
-
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
-
POSSIBILITY OF SUCH DAMAGES.
|
279 |
-
|
280 |
-
END OF TERMS AND CONDITIONS
|
281 |
-
|
282 |
-
How to Apply These Terms to Your New Programs
|
283 |
-
|
284 |
-
If you develop a new program, and you want it to be of the greatest
|
285 |
-
possible use to the public, the best way to achieve this is to make it
|
286 |
-
free software which everyone can redistribute and change under these terms.
|
287 |
-
|
288 |
-
To do so, attach the following notices to the program. It is safest
|
289 |
-
to attach them to the start of each source file to most effectively
|
290 |
-
convey the exclusion of warranty; and each file should have at least
|
291 |
-
the "copyright" line and a pointer to where the full notice is found.
|
292 |
-
|
293 |
-
<one line to give the program's name and a brief idea of what it does.>
|
294 |
-
Copyright (C) <year> <name of author>
|
295 |
-
|
296 |
-
This program is free software; you can redistribute it and/or modify
|
297 |
-
it under the terms of the GNU General Public License as published by
|
298 |
-
the Free Software Foundation; either version 2 of the License, or
|
299 |
-
(at your option) any later version.
|
300 |
-
|
301 |
-
This program is distributed in the hope that it will be useful,
|
302 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
-
GNU General Public License for more details.
|
305 |
-
|
306 |
-
You should have received a copy of the GNU General Public License along
|
307 |
-
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
-
|
310 |
-
Also add information on how to contact you by electronic and paper mail.
|
311 |
-
|
312 |
-
If the program is interactive, make it output a short notice like this
|
313 |
-
when it starts in an interactive mode:
|
314 |
-
|
315 |
-
Gnomovision version 69, Copyright (C) year name of author
|
316 |
-
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
-
This is free software, and you are welcome to redistribute it
|
318 |
-
under certain conditions; type `show c' for details.
|
319 |
-
|
320 |
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
-
parts of the General Public License. Of course, the commands you use may
|
322 |
-
be called something other than `show w' and `show c'; they could even be
|
323 |
-
mouse-clicks or menu items--whatever suits your program.
|
324 |
-
|
325 |
-
You should also get your employer (if you work as a programmer) or your
|
326 |
-
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
-
necessary. Here is a sample; alter the names:
|
328 |
-
|
329 |
-
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
-
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
-
|
332 |
-
<signature of Ty Coon>, 1 April 1989
|
333 |
-
Ty Coon, President of Vice
|
334 |
-
|
335 |
-
This General Public License does not permit incorporating your program into
|
336 |
-
proprietary programs. If your program is a subroutine library, you may
|
337 |
-
consider it more useful to permit linking proprietary applications with the
|
338 |
-
library. If this is what you want to do, use the GNU Lesser General
|
339 |
-
Public License instead of this License.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/COPYING3
DELETED
@@ -1,674 +0,0 @@
|
|
1 |
-
GNU GENERAL PUBLIC LICENSE
|
2 |
-
Version 3, 29 June 2007
|
3 |
-
|
4 |
-
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
5 |
-
Everyone is permitted to copy and distribute verbatim copies
|
6 |
-
of this license document, but changing it is not allowed.
|
7 |
-
|
8 |
-
Preamble
|
9 |
-
|
10 |
-
The GNU General Public License is a free, copyleft license for
|
11 |
-
software and other kinds of works.
|
12 |
-
|
13 |
-
The licenses for most software and other practical works are designed
|
14 |
-
to take away your freedom to share and change the works. By contrast,
|
15 |
-
the GNU General Public License is intended to guarantee your freedom to
|
16 |
-
share and change all versions of a program--to make sure it remains free
|
17 |
-
software for all its users. We, the Free Software Foundation, use the
|
18 |
-
GNU General Public License for most of our software; it applies also to
|
19 |
-
any other work released this way by its authors. You can apply it to
|
20 |
-
your programs, too.
|
21 |
-
|
22 |
-
When we speak of free software, we are referring to freedom, not
|
23 |
-
price. Our General Public Licenses are designed to make sure that you
|
24 |
-
have the freedom to distribute copies of free software (and charge for
|
25 |
-
them if you wish), that you receive source code or can get it if you
|
26 |
-
want it, that you can change the software or use pieces of it in new
|
27 |
-
free programs, and that you know you can do these things.
|
28 |
-
|
29 |
-
To protect your rights, we need to prevent others from denying you
|
30 |
-
these rights or asking you to surrender the rights. Therefore, you have
|
31 |
-
certain responsibilities if you distribute copies of the software, or if
|
32 |
-
you modify it: responsibilities to respect the freedom of others.
|
33 |
-
|
34 |
-
For example, if you distribute copies of such a program, whether
|
35 |
-
gratis or for a fee, you must pass on to the recipients the same
|
36 |
-
freedoms that you received. You must make sure that they, too, receive
|
37 |
-
or can get the source code. And you must show them these terms so they
|
38 |
-
know their rights.
|
39 |
-
|
40 |
-
Developers that use the GNU GPL protect your rights with two steps:
|
41 |
-
(1) assert copyright on the software, and (2) offer you this License
|
42 |
-
giving you legal permission to copy, distribute and/or modify it.
|
43 |
-
|
44 |
-
For the developers' and authors' protection, the GPL clearly explains
|
45 |
-
that there is no warranty for this free software. For both users' and
|
46 |
-
authors' sake, the GPL requires that modified versions be marked as
|
47 |
-
changed, so that their problems will not be attributed erroneously to
|
48 |
-
authors of previous versions.
|
49 |
-
|
50 |
-
Some devices are designed to deny users access to install or run
|
51 |
-
modified versions of the software inside them, although the manufacturer
|
52 |
-
can do so. This is fundamentally incompatible with the aim of
|
53 |
-
protecting users' freedom to change the software. The systematic
|
54 |
-
pattern of such abuse occurs in the area of products for individuals to
|
55 |
-
use, which is precisely where it is most unacceptable. Therefore, we
|
56 |
-
have designed this version of the GPL to prohibit the practice for those
|
57 |
-
products. If such problems arise substantially in other domains, we
|
58 |
-
stand ready to extend this provision to those domains in future versions
|
59 |
-
of the GPL, as needed to protect the freedom of users.
|
60 |
-
|
61 |
-
Finally, every program is threatened constantly by software patents.
|
62 |
-
States should not allow patents to restrict development and use of
|
63 |
-
software on general-purpose computers, but in those that do, we wish to
|
64 |
-
avoid the special danger that patents applied to a free program could
|
65 |
-
make it effectively proprietary. To prevent this, the GPL assures that
|
66 |
-
patents cannot be used to render the program non-free.
|
67 |
-
|
68 |
-
The precise terms and conditions for copying, distribution and
|
69 |
-
modification follow.
|
70 |
-
|
71 |
-
TERMS AND CONDITIONS
|
72 |
-
|
73 |
-
0. Definitions.
|
74 |
-
|
75 |
-
"This License" refers to version 3 of the GNU General Public License.
|
76 |
-
|
77 |
-
"Copyright" also means copyright-like laws that apply to other kinds of
|
78 |
-
works, such as semiconductor masks.
|
79 |
-
|
80 |
-
"The Program" refers to any copyrightable work licensed under this
|
81 |
-
License. Each licensee is addressed as "you". "Licensees" and
|
82 |
-
"recipients" may be individuals or organizations.
|
83 |
-
|
84 |
-
To "modify" a work means to copy from or adapt all or part of the work
|
85 |
-
in a fashion requiring copyright permission, other than the making of an
|
86 |
-
exact copy. The resulting work is called a "modified version" of the
|
87 |
-
earlier work or a work "based on" the earlier work.
|
88 |
-
|
89 |
-
A "covered work" means either the unmodified Program or a work based
|
90 |
-
on the Program.
|
91 |
-
|
92 |
-
To "propagate" a work means to do anything with it that, without
|
93 |
-
permission, would make you directly or secondarily liable for
|
94 |
-
infringement under applicable copyright law, except executing it on a
|
95 |
-
computer or modifying a private copy. Propagation includes copying,
|
96 |
-
distribution (with or without modification), making available to the
|
97 |
-
public, and in some countries other activities as well.
|
98 |
-
|
99 |
-
To "convey" a work means any kind of propagation that enables other
|
100 |
-
parties to make or receive copies. Mere interaction with a user through
|
101 |
-
a computer network, with no transfer of a copy, is not conveying.
|
102 |
-
|
103 |
-
An interactive user interface displays "Appropriate Legal Notices"
|
104 |
-
to the extent that it includes a convenient and prominently visible
|
105 |
-
feature that (1) displays an appropriate copyright notice, and (2)
|
106 |
-
tells the user that there is no warranty for the work (except to the
|
107 |
-
extent that warranties are provided), that licensees may convey the
|
108 |
-
work under this License, and how to view a copy of this License. If
|
109 |
-
the interface presents a list of user commands or options, such as a
|
110 |
-
menu, a prominent item in the list meets this criterion.
|
111 |
-
|
112 |
-
1. Source Code.
|
113 |
-
|
114 |
-
The "source code" for a work means the preferred form of the work
|
115 |
-
for making modifications to it. "Object code" means any non-source
|
116 |
-
form of a work.
|
117 |
-
|
118 |
-
A "Standard Interface" means an interface that either is an official
|
119 |
-
standard defined by a recognized standards body, or, in the case of
|
120 |
-
interfaces specified for a particular programming language, one that
|
121 |
-
is widely used among developers working in that language.
|
122 |
-
|
123 |
-
The "System Libraries" of an executable work include anything, other
|
124 |
-
than the work as a whole, that (a) is included in the normal form of
|
125 |
-
packaging a Major Component, but which is not part of that Major
|
126 |
-
Component, and (b) serves only to enable use of the work with that
|
127 |
-
Major Component, or to implement a Standard Interface for which an
|
128 |
-
implementation is available to the public in source code form. A
|
129 |
-
"Major Component", in this context, means a major essential component
|
130 |
-
(kernel, window system, and so on) of the specific operating system
|
131 |
-
(if any) on which the executable work runs, or a compiler used to
|
132 |
-
produce the work, or an object code interpreter used to run it.
|
133 |
-
|
134 |
-
The "Corresponding Source" for a work in object code form means all
|
135 |
-
the source code needed to generate, install, and (for an executable
|
136 |
-
work) run the object code and to modify the work, including scripts to
|
137 |
-
control those activities. However, it does not include the work's
|
138 |
-
System Libraries, or general-purpose tools or generally available free
|
139 |
-
programs which are used unmodified in performing those activities but
|
140 |
-
which are not part of the work. For example, Corresponding Source
|
141 |
-
includes interface definition files associated with source files for
|
142 |
-
the work, and the source code for shared libraries and dynamically
|
143 |
-
linked subprograms that the work is specifically designed to require,
|
144 |
-
such as by intimate data communication or control flow between those
|
145 |
-
subprograms and other parts of the work.
|
146 |
-
|
147 |
-
The Corresponding Source need not include anything that users
|
148 |
-
can regenerate automatically from other parts of the Corresponding
|
149 |
-
Source.
|
150 |
-
|
151 |
-
The Corresponding Source for a work in source code form is that
|
152 |
-
same work.
|
153 |
-
|
154 |
-
2. Basic Permissions.
|
155 |
-
|
156 |
-
All rights granted under this License are granted for the term of
|
157 |
-
copyright on the Program, and are irrevocable provided the stated
|
158 |
-
conditions are met. This License explicitly affirms your unlimited
|
159 |
-
permission to run the unmodified Program. The output from running a
|
160 |
-
covered work is covered by this License only if the output, given its
|
161 |
-
content, constitutes a covered work. This License acknowledges your
|
162 |
-
rights of fair use or other equivalent, as provided by copyright law.
|
163 |
-
|
164 |
-
You may make, run and propagate covered works that you do not
|
165 |
-
convey, without conditions so long as your license otherwise remains
|
166 |
-
in force. You may convey covered works to others for the sole purpose
|
167 |
-
of having them make modifications exclusively for you, or provide you
|
168 |
-
with facilities for running those works, provided that you comply with
|
169 |
-
the terms of this License in conveying all material for which you do
|
170 |
-
not control copyright. Those thus making or running the covered works
|
171 |
-
for you must do so exclusively on your behalf, under your direction
|
172 |
-
and control, on terms that prohibit them from making any copies of
|
173 |
-
your copyrighted material outside their relationship with you.
|
174 |
-
|
175 |
-
Conveying under any other circumstances is permitted solely under
|
176 |
-
the conditions stated below. Sublicensing is not allowed; section 10
|
177 |
-
makes it unnecessary.
|
178 |
-
|
179 |
-
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
180 |
-
|
181 |
-
No covered work shall be deemed part of an effective technological
|
182 |
-
measure under any applicable law fulfilling obligations under article
|
183 |
-
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
184 |
-
similar laws prohibiting or restricting circumvention of such
|
185 |
-
measures.
|
186 |
-
|
187 |
-
When you convey a covered work, you waive any legal power to forbid
|
188 |
-
circumvention of technological measures to the extent such circumvention
|
189 |
-
is effected by exercising rights under this License with respect to
|
190 |
-
the covered work, and you disclaim any intention to limit operation or
|
191 |
-
modification of the work as a means of enforcing, against the work's
|
192 |
-
users, your or third parties' legal rights to forbid circumvention of
|
193 |
-
technological measures.
|
194 |
-
|
195 |
-
4. Conveying Verbatim Copies.
|
196 |
-
|
197 |
-
You may convey verbatim copies of the Program's source code as you
|
198 |
-
receive it, in any medium, provided that you conspicuously and
|
199 |
-
appropriately publish on each copy an appropriate copyright notice;
|
200 |
-
keep intact all notices stating that this License and any
|
201 |
-
non-permissive terms added in accord with section 7 apply to the code;
|
202 |
-
keep intact all notices of the absence of any warranty; and give all
|
203 |
-
recipients a copy of this License along with the Program.
|
204 |
-
|
205 |
-
You may charge any price or no price for each copy that you convey,
|
206 |
-
and you may offer support or warranty protection for a fee.
|
207 |
-
|
208 |
-
5. Conveying Modified Source Versions.
|
209 |
-
|
210 |
-
You may convey a work based on the Program, or the modifications to
|
211 |
-
produce it from the Program, in the form of source code under the
|
212 |
-
terms of section 4, provided that you also meet all of these conditions:
|
213 |
-
|
214 |
-
a) The work must carry prominent notices stating that you modified
|
215 |
-
it, and giving a relevant date.
|
216 |
-
|
217 |
-
b) The work must carry prominent notices stating that it is
|
218 |
-
released under this License and any conditions added under section
|
219 |
-
7. This requirement modifies the requirement in section 4 to
|
220 |
-
"keep intact all notices".
|
221 |
-
|
222 |
-
c) You must license the entire work, as a whole, under this
|
223 |
-
License to anyone who comes into possession of a copy. This
|
224 |
-
License will therefore apply, along with any applicable section 7
|
225 |
-
additional terms, to the whole of the work, and all its parts,
|
226 |
-
regardless of how they are packaged. This License gives no
|
227 |
-
permission to license the work in any other way, but it does not
|
228 |
-
invalidate such permission if you have separately received it.
|
229 |
-
|
230 |
-
d) If the work has interactive user interfaces, each must display
|
231 |
-
Appropriate Legal Notices; however, if the Program has interactive
|
232 |
-
interfaces that do not display Appropriate Legal Notices, your
|
233 |
-
work need not make them do so.
|
234 |
-
|
235 |
-
A compilation of a covered work with other separate and independent
|
236 |
-
works, which are not by their nature extensions of the covered work,
|
237 |
-
and which are not combined with it such as to form a larger program,
|
238 |
-
in or on a volume of a storage or distribution medium, is called an
|
239 |
-
"aggregate" if the compilation and its resulting copyright are not
|
240 |
-
used to limit the access or legal rights of the compilation's users
|
241 |
-
beyond what the individual works permit. Inclusion of a covered work
|
242 |
-
in an aggregate does not cause this License to apply to the other
|
243 |
-
parts of the aggregate.
|
244 |
-
|
245 |
-
6. Conveying Non-Source Forms.
|
246 |
-
|
247 |
-
You may convey a covered work in object code form under the terms
|
248 |
-
of sections 4 and 5, provided that you also convey the
|
249 |
-
machine-readable Corresponding Source under the terms of this License,
|
250 |
-
in one of these ways:
|
251 |
-
|
252 |
-
a) Convey the object code in, or embodied in, a physical product
|
253 |
-
(including a physical distribution medium), accompanied by the
|
254 |
-
Corresponding Source fixed on a durable physical medium
|
255 |
-
customarily used for software interchange.
|
256 |
-
|
257 |
-
b) Convey the object code in, or embodied in, a physical product
|
258 |
-
(including a physical distribution medium), accompanied by a
|
259 |
-
written offer, valid for at least three years and valid for as
|
260 |
-
long as you offer spare parts or customer support for that product
|
261 |
-
model, to give anyone who possesses the object code either (1) a
|
262 |
-
copy of the Corresponding Source for all the software in the
|
263 |
-
product that is covered by this License, on a durable physical
|
264 |
-
medium customarily used for software interchange, for a price no
|
265 |
-
more than your reasonable cost of physically performing this
|
266 |
-
conveying of source, or (2) access to copy the
|
267 |
-
Corresponding Source from a network server at no charge.
|
268 |
-
|
269 |
-
c) Convey individual copies of the object code with a copy of the
|
270 |
-
written offer to provide the Corresponding Source. This
|
271 |
-
alternative is allowed only occasionally and noncommercially, and
|
272 |
-
only if you received the object code with such an offer, in accord
|
273 |
-
with subsection 6b.
|
274 |
-
|
275 |
-
d) Convey the object code by offering access from a designated
|
276 |
-
place (gratis or for a charge), and offer equivalent access to the
|
277 |
-
Corresponding Source in the same way through the same place at no
|
278 |
-
further charge. You need not require recipients to copy the
|
279 |
-
Corresponding Source along with the object code. If the place to
|
280 |
-
copy the object code is a network server, the Corresponding Source
|
281 |
-
may be on a different server (operated by you or a third party)
|
282 |
-
that supports equivalent copying facilities, provided you maintain
|
283 |
-
clear directions next to the object code saying where to find the
|
284 |
-
Corresponding Source. Regardless of what server hosts the
|
285 |
-
Corresponding Source, you remain obligated to ensure that it is
|
286 |
-
available for as long as needed to satisfy these requirements.
|
287 |
-
|
288 |
-
e) Convey the object code using peer-to-peer transmission, provided
|
289 |
-
you inform other peers where the object code and Corresponding
|
290 |
-
Source of the work are being offered to the general public at no
|
291 |
-
charge under subsection 6d.
|
292 |
-
|
293 |
-
A separable portion of the object code, whose source code is excluded
|
294 |
-
from the Corresponding Source as a System Library, need not be
|
295 |
-
included in conveying the object code work.
|
296 |
-
|
297 |
-
A "User Product" is either (1) a "consumer product", which means any
|
298 |
-
tangible personal property which is normally used for personal, family,
|
299 |
-
or household purposes, or (2) anything designed or sold for incorporation
|
300 |
-
into a dwelling. In determining whether a product is a consumer product,
|
301 |
-
doubtful cases shall be resolved in favor of coverage. For a particular
|
302 |
-
product received by a particular user, "normally used" refers to a
|
303 |
-
typical or common use of that class of product, regardless of the status
|
304 |
-
of the particular user or of the way in which the particular user
|
305 |
-
actually uses, or expects or is expected to use, the product. A product
|
306 |
-
is a consumer product regardless of whether the product has substantial
|
307 |
-
commercial, industrial or non-consumer uses, unless such uses represent
|
308 |
-
the only significant mode of use of the product.
|
309 |
-
|
310 |
-
"Installation Information" for a User Product means any methods,
|
311 |
-
procedures, authorization keys, or other information required to install
|
312 |
-
and execute modified versions of a covered work in that User Product from
|
313 |
-
a modified version of its Corresponding Source. The information must
|
314 |
-
suffice to ensure that the continued functioning of the modified object
|
315 |
-
code is in no case prevented or interfered with solely because
|
316 |
-
modification has been made.
|
317 |
-
|
318 |
-
If you convey an object code work under this section in, or with, or
|
319 |
-
specifically for use in, a User Product, and the conveying occurs as
|
320 |
-
part of a transaction in which the right of possession and use of the
|
321 |
-
User Product is transferred to the recipient in perpetuity or for a
|
322 |
-
fixed term (regardless of how the transaction is characterized), the
|
323 |
-
Corresponding Source conveyed under this section must be accompanied
|
324 |
-
by the Installation Information. But this requirement does not apply
|
325 |
-
if neither you nor any third party retains the ability to install
|
326 |
-
modified object code on the User Product (for example, the work has
|
327 |
-
been installed in ROM).
|
328 |
-
|
329 |
-
The requirement to provide Installation Information does not include a
|
330 |
-
requirement to continue to provide support service, warranty, or updates
|
331 |
-
for a work that has been modified or installed by the recipient, or for
|
332 |
-
the User Product in which it has been modified or installed. Access to a
|
333 |
-
network may be denied when the modification itself materially and
|
334 |
-
adversely affects the operation of the network or violates the rules and
|
335 |
-
protocols for communication across the network.
|
336 |
-
|
337 |
-
Corresponding Source conveyed, and Installation Information provided,
|
338 |
-
in accord with this section must be in a format that is publicly
|
339 |
-
documented (and with an implementation available to the public in
|
340 |
-
source code form), and must require no special password or key for
|
341 |
-
unpacking, reading or copying.
|
342 |
-
|
343 |
-
7. Additional Terms.
|
344 |
-
|
345 |
-
"Additional permissions" are terms that supplement the terms of this
|
346 |
-
License by making exceptions from one or more of its conditions.
|
347 |
-
Additional permissions that are applicable to the entire Program shall
|
348 |
-
be treated as though they were included in this License, to the extent
|
349 |
-
that they are valid under applicable law. If additional permissions
|
350 |
-
apply only to part of the Program, that part may be used separately
|
351 |
-
under those permissions, but the entire Program remains governed by
|
352 |
-
this License without regard to the additional permissions.
|
353 |
-
|
354 |
-
When you convey a copy of a covered work, you may at your option
|
355 |
-
remove any additional permissions from that copy, or from any part of
|
356 |
-
it. (Additional permissions may be written to require their own
|
357 |
-
removal in certain cases when you modify the work.) You may place
|
358 |
-
additional permissions on material, added by you to a covered work,
|
359 |
-
for which you have or can give appropriate copyright permission.
|
360 |
-
|
361 |
-
Notwithstanding any other provision of this License, for material you
|
362 |
-
add to a covered work, you may (if authorized by the copyright holders of
|
363 |
-
that material) supplement the terms of this License with terms:
|
364 |
-
|
365 |
-
a) Disclaiming warranty or limiting liability differently from the
|
366 |
-
terms of sections 15 and 16 of this License; or
|
367 |
-
|
368 |
-
b) Requiring preservation of specified reasonable legal notices or
|
369 |
-
author attributions in that material or in the Appropriate Legal
|
370 |
-
Notices displayed by works containing it; or
|
371 |
-
|
372 |
-
c) Prohibiting misrepresentation of the origin of that material, or
|
373 |
-
requiring that modified versions of such material be marked in
|
374 |
-
reasonable ways as different from the original version; or
|
375 |
-
|
376 |
-
d) Limiting the use for publicity purposes of names of licensors or
|
377 |
-
authors of the material; or
|
378 |
-
|
379 |
-
e) Declining to grant rights under trademark law for use of some
|
380 |
-
trade names, trademarks, or service marks; or
|
381 |
-
|
382 |
-
f) Requiring indemnification of licensors and authors of that
|
383 |
-
material by anyone who conveys the material (or modified versions of
|
384 |
-
it) with contractual assumptions of liability to the recipient, for
|
385 |
-
any liability that these contractual assumptions directly impose on
|
386 |
-
those licensors and authors.
|
387 |
-
|
388 |
-
All other non-permissive additional terms are considered "further
|
389 |
-
restrictions" within the meaning of section 10. If the Program as you
|
390 |
-
received it, or any part of it, contains a notice stating that it is
|
391 |
-
governed by this License along with a term that is a further
|
392 |
-
restriction, you may remove that term. If a license document contains
|
393 |
-
a further restriction but permits relicensing or conveying under this
|
394 |
-
License, you may add to a covered work material governed by the terms
|
395 |
-
of that license document, provided that the further restriction does
|
396 |
-
not survive such relicensing or conveying.
|
397 |
-
|
398 |
-
If you add terms to a covered work in accord with this section, you
|
399 |
-
must place, in the relevant source files, a statement of the
|
400 |
-
additional terms that apply to those files, or a notice indicating
|
401 |
-
where to find the applicable terms.
|
402 |
-
|
403 |
-
Additional terms, permissive or non-permissive, may be stated in the
|
404 |
-
form of a separately written license, or stated as exceptions;
|
405 |
-
the above requirements apply either way.
|
406 |
-
|
407 |
-
8. Termination.
|
408 |
-
|
409 |
-
You may not propagate or modify a covered work except as expressly
|
410 |
-
provided under this License. Any attempt otherwise to propagate or
|
411 |
-
modify it is void, and will automatically terminate your rights under
|
412 |
-
this License (including any patent licenses granted under the third
|
413 |
-
paragraph of section 11).
|
414 |
-
|
415 |
-
However, if you cease all violation of this License, then your
|
416 |
-
license from a particular copyright holder is reinstated (a)
|
417 |
-
provisionally, unless and until the copyright holder explicitly and
|
418 |
-
finally terminates your license, and (b) permanently, if the copyright
|
419 |
-
holder fails to notify you of the violation by some reasonable means
|
420 |
-
prior to 60 days after the cessation.
|
421 |
-
|
422 |
-
Moreover, your license from a particular copyright holder is
|
423 |
-
reinstated permanently if the copyright holder notifies you of the
|
424 |
-
violation by some reasonable means, this is the first time you have
|
425 |
-
received notice of violation of this License (for any work) from that
|
426 |
-
copyright holder, and you cure the violation prior to 30 days after
|
427 |
-
your receipt of the notice.
|
428 |
-
|
429 |
-
Termination of your rights under this section does not terminate the
|
430 |
-
licenses of parties who have received copies or rights from you under
|
431 |
-
this License. If your rights have been terminated and not permanently
|
432 |
-
reinstated, you do not qualify to receive new licenses for the same
|
433 |
-
material under section 10.
|
434 |
-
|
435 |
-
9. Acceptance Not Required for Having Copies.
|
436 |
-
|
437 |
-
You are not required to accept this License in order to receive or
|
438 |
-
run a copy of the Program. Ancillary propagation of a covered work
|
439 |
-
occurring solely as a consequence of using peer-to-peer transmission
|
440 |
-
to receive a copy likewise does not require acceptance. However,
|
441 |
-
nothing other than this License grants you permission to propagate or
|
442 |
-
modify any covered work. These actions infringe copyright if you do
|
443 |
-
not accept this License. Therefore, by modifying or propagating a
|
444 |
-
covered work, you indicate your acceptance of this License to do so.
|
445 |
-
|
446 |
-
10. Automatic Licensing of Downstream Recipients.
|
447 |
-
|
448 |
-
Each time you convey a covered work, the recipient automatically
|
449 |
-
receives a license from the original licensors, to run, modify and
|
450 |
-
propagate that work, subject to this License. You are not responsible
|
451 |
-
for enforcing compliance by third parties with this License.
|
452 |
-
|
453 |
-
An "entity transaction" is a transaction transferring control of an
|
454 |
-
organization, or substantially all assets of one, or subdividing an
|
455 |
-
organization, or merging organizations. If propagation of a covered
|
456 |
-
work results from an entity transaction, each party to that
|
457 |
-
transaction who receives a copy of the work also receives whatever
|
458 |
-
licenses to the work the party's predecessor in interest had or could
|
459 |
-
give under the previous paragraph, plus a right to possession of the
|
460 |
-
Corresponding Source of the work from the predecessor in interest, if
|
461 |
-
the predecessor has it or can get it with reasonable efforts.
|
462 |
-
|
463 |
-
You may not impose any further restrictions on the exercise of the
|
464 |
-
rights granted or affirmed under this License. For example, you may
|
465 |
-
not impose a license fee, royalty, or other charge for exercise of
|
466 |
-
rights granted under this License, and you may not initiate litigation
|
467 |
-
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
468 |
-
any patent claim is infringed by making, using, selling, offering for
|
469 |
-
sale, or importing the Program or any portion of it.
|
470 |
-
|
471 |
-
11. Patents.
|
472 |
-
|
473 |
-
A "contributor" is a copyright holder who authorizes use under this
|
474 |
-
License of the Program or a work on which the Program is based. The
|
475 |
-
work thus licensed is called the contributor's "contributor version".
|
476 |
-
|
477 |
-
A contributor's "essential patent claims" are all patent claims
|
478 |
-
owned or controlled by the contributor, whether already acquired or
|
479 |
-
hereafter acquired, that would be infringed by some manner, permitted
|
480 |
-
by this License, of making, using, or selling its contributor version,
|
481 |
-
but do not include claims that would be infringed only as a
|
482 |
-
consequence of further modification of the contributor version. For
|
483 |
-
purposes of this definition, "control" includes the right to grant
|
484 |
-
patent sublicenses in a manner consistent with the requirements of
|
485 |
-
this License.
|
486 |
-
|
487 |
-
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
488 |
-
patent license under the contributor's essential patent claims, to
|
489 |
-
make, use, sell, offer for sale, import and otherwise run, modify and
|
490 |
-
propagate the contents of its contributor version.
|
491 |
-
|
492 |
-
In the following three paragraphs, a "patent license" is any express
|
493 |
-
agreement or commitment, however denominated, not to enforce a patent
|
494 |
-
(such as an express permission to practice a patent or covenant not to
|
495 |
-
sue for patent infringement). To "grant" such a patent license to a
|
496 |
-
party means to make such an agreement or commitment not to enforce a
|
497 |
-
patent against the party.
|
498 |
-
|
499 |
-
If you convey a covered work, knowingly relying on a patent license,
|
500 |
-
and the Corresponding Source of the work is not available for anyone
|
501 |
-
to copy, free of charge and under the terms of this License, through a
|
502 |
-
publicly available network server or other readily accessible means,
|
503 |
-
then you must either (1) cause the Corresponding Source to be so
|
504 |
-
available, or (2) arrange to deprive yourself of the benefit of the
|
505 |
-
patent license for this particular work, or (3) arrange, in a manner
|
506 |
-
consistent with the requirements of this License, to extend the patent
|
507 |
-
license to downstream recipients. "Knowingly relying" means you have
|
508 |
-
actual knowledge that, but for the patent license, your conveying the
|
509 |
-
covered work in a country, or your recipient's use of the covered work
|
510 |
-
in a country, would infringe one or more identifiable patents in that
|
511 |
-
country that you have reason to believe are valid.
|
512 |
-
|
513 |
-
If, pursuant to or in connection with a single transaction or
|
514 |
-
arrangement, you convey, or propagate by procuring conveyance of, a
|
515 |
-
covered work, and grant a patent license to some of the parties
|
516 |
-
receiving the covered work authorizing them to use, propagate, modify
|
517 |
-
or convey a specific copy of the covered work, then the patent license
|
518 |
-
you grant is automatically extended to all recipients of the covered
|
519 |
-
work and works based on it.
|
520 |
-
|
521 |
-
A patent license is "discriminatory" if it does not include within
|
522 |
-
the scope of its coverage, prohibits the exercise of, or is
|
523 |
-
conditioned on the non-exercise of one or more of the rights that are
|
524 |
-
specifically granted under this License. You may not convey a covered
|
525 |
-
work if you are a party to an arrangement with a third party that is
|
526 |
-
in the business of distributing software, under which you make payment
|
527 |
-
to the third party based on the extent of your activity of conveying
|
528 |
-
the work, and under which the third party grants, to any of the
|
529 |
-
parties who would receive the covered work from you, a discriminatory
|
530 |
-
patent license (a) in connection with copies of the covered work
|
531 |
-
conveyed by you (or copies made from those copies), or (b) primarily
|
532 |
-
for and in connection with specific products or compilations that
|
533 |
-
contain the covered work, unless you entered into that arrangement,
|
534 |
-
or that patent license was granted, prior to 28 March 2007.
|
535 |
-
|
536 |
-
Nothing in this License shall be construed as excluding or limiting
|
537 |
-
any implied license or other defenses to infringement that may
|
538 |
-
otherwise be available to you under applicable patent law.
|
539 |
-
|
540 |
-
12. No Surrender of Others' Freedom.
|
541 |
-
|
542 |
-
If conditions are imposed on you (whether by court order, agreement or
|
543 |
-
otherwise) that contradict the conditions of this License, they do not
|
544 |
-
excuse you from the conditions of this License. If you cannot convey a
|
545 |
-
covered work so as to satisfy simultaneously your obligations under this
|
546 |
-
License and any other pertinent obligations, then as a consequence you may
|
547 |
-
not convey it at all. For example, if you agree to terms that obligate you
|
548 |
-
to collect a royalty for further conveying from those to whom you convey
|
549 |
-
the Program, the only way you could satisfy both those terms and this
|
550 |
-
License would be to refrain entirely from conveying the Program.
|
551 |
-
|
552 |
-
13. Use with the GNU Affero General Public License.
|
553 |
-
|
554 |
-
Notwithstanding any other provision of this License, you have
|
555 |
-
permission to link or combine any covered work with a work licensed
|
556 |
-
under version 3 of the GNU Affero General Public License into a single
|
557 |
-
combined work, and to convey the resulting work. The terms of this
|
558 |
-
License will continue to apply to the part which is the covered work,
|
559 |
-
but the special requirements of the GNU Affero General Public License,
|
560 |
-
section 13, concerning interaction through a network will apply to the
|
561 |
-
combination as such.
|
562 |
-
|
563 |
-
14. Revised Versions of this License.
|
564 |
-
|
565 |
-
The Free Software Foundation may publish revised and/or new versions of
|
566 |
-
the GNU General Public License from time to time. Such new versions will
|
567 |
-
be similar in spirit to the present version, but may differ in detail to
|
568 |
-
address new problems or concerns.
|
569 |
-
|
570 |
-
Each version is given a distinguishing version number. If the
|
571 |
-
Program specifies that a certain numbered version of the GNU General
|
572 |
-
Public License "or any later version" applies to it, you have the
|
573 |
-
option of following the terms and conditions either of that numbered
|
574 |
-
version or of any later version published by the Free Software
|
575 |
-
Foundation. If the Program does not specify a version number of the
|
576 |
-
GNU General Public License, you may choose any version ever published
|
577 |
-
by the Free Software Foundation.
|
578 |
-
|
579 |
-
If the Program specifies that a proxy can decide which future
|
580 |
-
versions of the GNU General Public License can be used, that proxy's
|
581 |
-
public statement of acceptance of a version permanently authorizes you
|
582 |
-
to choose that version for the Program.
|
583 |
-
|
584 |
-
Later license versions may give you additional or different
|
585 |
-
permissions. However, no additional obligations are imposed on any
|
586 |
-
author or copyright holder as a result of your choosing to follow a
|
587 |
-
later version.
|
588 |
-
|
589 |
-
15. Disclaimer of Warranty.
|
590 |
-
|
591 |
-
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
592 |
-
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
593 |
-
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
594 |
-
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
595 |
-
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
596 |
-
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
597 |
-
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
598 |
-
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
599 |
-
|
600 |
-
16. Limitation of Liability.
|
601 |
-
|
602 |
-
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
603 |
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
604 |
-
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
605 |
-
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
606 |
-
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
607 |
-
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
608 |
-
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
609 |
-
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
610 |
-
SUCH DAMAGES.
|
611 |
-
|
612 |
-
17. Interpretation of Sections 15 and 16.
|
613 |
-
|
614 |
-
If the disclaimer of warranty and limitation of liability provided
|
615 |
-
above cannot be given local legal effect according to their terms,
|
616 |
-
reviewing courts shall apply local law that most closely approximates
|
617 |
-
an absolute waiver of all civil liability in connection with the
|
618 |
-
Program, unless a warranty or assumption of liability accompanies a
|
619 |
-
copy of the Program in return for a fee.
|
620 |
-
|
621 |
-
END OF TERMS AND CONDITIONS
|
622 |
-
|
623 |
-
How to Apply These Terms to Your New Programs
|
624 |
-
|
625 |
-
If you develop a new program, and you want it to be of the greatest
|
626 |
-
possible use to the public, the best way to achieve this is to make it
|
627 |
-
free software which everyone can redistribute and change under these terms.
|
628 |
-
|
629 |
-
To do so, attach the following notices to the program. It is safest
|
630 |
-
to attach them to the start of each source file to most effectively
|
631 |
-
state the exclusion of warranty; and each file should have at least
|
632 |
-
the "copyright" line and a pointer to where the full notice is found.
|
633 |
-
|
634 |
-
<one line to give the program's name and a brief idea of what it does.>
|
635 |
-
Copyright (C) <year> <name of author>
|
636 |
-
|
637 |
-
This program is free software: you can redistribute it and/or modify
|
638 |
-
it under the terms of the GNU General Public License as published by
|
639 |
-
the Free Software Foundation, either version 3 of the License, or
|
640 |
-
(at your option) any later version.
|
641 |
-
|
642 |
-
This program is distributed in the hope that it will be useful,
|
643 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
644 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
645 |
-
GNU General Public License for more details.
|
646 |
-
|
647 |
-
You should have received a copy of the GNU General Public License
|
648 |
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
649 |
-
|
650 |
-
Also add information on how to contact you by electronic and paper mail.
|
651 |
-
|
652 |
-
If the program does terminal interaction, make it output a short
|
653 |
-
notice like this when it starts in an interactive mode:
|
654 |
-
|
655 |
-
<program> Copyright (C) <year> <name of author>
|
656 |
-
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
657 |
-
This is free software, and you are welcome to redistribute it
|
658 |
-
under certain conditions; type `show c' for details.
|
659 |
-
|
660 |
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
661 |
-
parts of the General Public License. Of course, your program's commands
|
662 |
-
might be different; for a GUI interface, you would use an "about box".
|
663 |
-
|
664 |
-
You should also get your employer (if you work as a programmer) or school,
|
665 |
-
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
666 |
-
For more information on this, and how to apply and follow the GNU GPL, see
|
667 |
-
<http://www.gnu.org/licenses/>.
|
668 |
-
|
669 |
-
The GNU General Public License does not permit incorporating your program
|
670 |
-
into proprietary programs. If your program is a subroutine library, you
|
671 |
-
may consider it more useful to permit linking proprietary applications with
|
672 |
-
the library. If this is what you want to do, use the GNU Lesser General
|
673 |
-
Public License instead of this License. But first, please read
|
674 |
-
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/ChangeLog
DELETED
The diff for this file is too large to render.
See raw diff
|
|
poppler-24.01.0/ConfigureChecks.cmake
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
# Copyright 2008 Pino Toscano, <[email protected]>
|
2 |
-
#
|
3 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
4 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
5 |
-
|
6 |
-
include(CheckIncludeFile)
|
7 |
-
include(CheckIncludeFileCXX)
|
8 |
-
include(CheckIncludeFiles)
|
9 |
-
include(CheckSymbolExists)
|
10 |
-
include(CheckFunctionExists)
|
11 |
-
include(CheckLibraryExists)
|
12 |
-
include(CheckTypeSize)
|
13 |
-
include(CheckCSourceCompiles)
|
14 |
-
include(CMakePushCheckState)
|
15 |
-
|
16 |
-
cmake_push_check_state()
|
17 |
-
# this is going to be defined via config.h, and impacts Android's stdio.h
|
18 |
-
if (_FILE_OFFSET_BITS)
|
19 |
-
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_FILE_OFFSET_BITS=${_FILE_OFFSET_BITS})
|
20 |
-
endif()
|
21 |
-
|
22 |
-
check_include_files(dlfcn.h HAVE_DLFCN_H)
|
23 |
-
check_include_files(fcntl.h HAVE_FCNTL_H)
|
24 |
-
check_include_files(stdlib.h HAVE_STDLIB_H)
|
25 |
-
check_include_files(sys/mman.h HAVE_SYS_MMAN_H)
|
26 |
-
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
|
27 |
-
check_include_files(unistd.h HAVE_UNISTD_H)
|
28 |
-
|
29 |
-
check_function_exists(fseek64 HAVE_FSEEK64)
|
30 |
-
check_symbol_exists(fseeko "stdio.h" HAVE_FSEEKO)
|
31 |
-
check_function_exists(ftell64 HAVE_FTELL64)
|
32 |
-
check_function_exists(pread64 HAVE_PREAD64)
|
33 |
-
check_function_exists(lseek64 HAVE_LSEEK64)
|
34 |
-
check_function_exists(gmtime_r HAVE_GMTIME_R)
|
35 |
-
check_function_exists(timegm HAVE_TIMEGM)
|
36 |
-
check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
|
37 |
-
check_function_exists(localtime_r HAVE_LOCALTIME_R)
|
38 |
-
check_function_exists(popen HAVE_POPEN)
|
39 |
-
check_function_exists(mkstemp HAVE_MKSTEMP)
|
40 |
-
check_function_exists(strtok_r HAVE_STRTOK_R)
|
41 |
-
|
42 |
-
macro(CHECK_FOR_DIR include var)
|
43 |
-
check_c_source_compiles(
|
44 |
-
"#include <${include}>
|
45 |
-
|
46 |
-
int main(int argc, char *argv[])
|
47 |
-
{
|
48 |
-
DIR* d = 0;
|
49 |
-
return 0;
|
50 |
-
}
|
51 |
-
" ${var})
|
52 |
-
endmacro(CHECK_FOR_DIR)
|
53 |
-
check_for_dir("dirent.h" HAVE_DIRENT_H)
|
54 |
-
check_for_dir("ndir.h" HAVE_NDIR_H)
|
55 |
-
check_for_dir("sys/dir.h" HAVE_SYS_DIR_H)
|
56 |
-
check_for_dir("sys/ndir.h" HAVE_SYS_NDIR_H)
|
57 |
-
|
58 |
-
check_function_exists("nanosleep" HAVE_NANOSLEEP)
|
59 |
-
if(NOT HAVE_NANOSLEEP)
|
60 |
-
check_library_exists("rt" "nanosleep" "" LIB_RT_HAS_NANOSLEEP)
|
61 |
-
endif(NOT HAVE_NANOSLEEP)
|
62 |
-
|
63 |
-
cmake_pop_check_state()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/INSTALL
DELETED
@@ -1,108 +0,0 @@
|
|
1 |
-
Installation Instructions
|
2 |
-
*************************
|
3 |
-
|
4 |
-
Basic Installation
|
5 |
-
==================
|
6 |
-
|
7 |
-
mkdir build
|
8 |
-
cd build
|
9 |
-
cmake ..
|
10 |
-
make
|
11 |
-
make install
|
12 |
-
|
13 |
-
|
14 |
-
CMake configuration options can be set using the -D option. eg
|
15 |
-
|
16 |
-
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=release
|
17 |
-
|
18 |
-
|
19 |
-
Build Options
|
20 |
-
=============
|
21 |
-
|
22 |
-
Set install prefix:
|
23 |
-
|
24 |
-
-DCMAKE_INSTALL_PREFIX=<path>
|
25 |
-
|
26 |
-
Set build type. This sets the standard compiler flags for the build
|
27 |
-
type.
|
28 |
-
|
29 |
-
-DCMAKE_BUILD_TYPE=debug or -DCMAKE_BUILD_TYPE=release
|
30 |
-
|
31 |
-
Set compiler flags:
|
32 |
-
|
33 |
-
-DCMAKE_CXX_FLAGS=<flags> or set CXXFLAGS environment variable
|
34 |
-
|
35 |
-
Set linker flags:
|
36 |
-
|
37 |
-
-DCMAKE_LD_FLAGS=<flags> or set LDFLAGS environment variable
|
38 |
-
|
39 |
-
|
40 |
-
Optional Features
|
41 |
-
=================
|
42 |
-
|
43 |
-
-D<FEATURE>=<ON|OFF>
|
44 |
-
|
45 |
-
eg
|
46 |
-
|
47 |
-
-DENABLE_LIBCURL=ON -DBUILD_GTK_TESTS=OFF
|
48 |
-
|
49 |
-
A list of all options can be display with the commmand:
|
50 |
-
|
51 |
-
egrep '^ *(option|set.*STRING)' CMakeLists.txt
|
52 |
-
|
53 |
-
Alternatively, the options can be edited by running "ccmake ." in the
|
54 |
-
build directory.
|
55 |
-
|
56 |
-
|
57 |
-
Cross Compiling
|
58 |
-
===============
|
59 |
-
|
60 |
-
A toolchain file is required to specify the target specific compiler
|
61 |
-
tools. Run cmake with the option:
|
62 |
-
|
63 |
-
-DCMAKE_TOOLCHAIN_FILE=<Toolchain file>
|
64 |
-
|
65 |
-
A sample toolchain for a 64-bit mingw build is shown below. Replace
|
66 |
-
/path/to/win/root with the install prefix for the target environment.
|
67 |
-
|
68 |
-
set(CMAKE_SYSTEM_NAME Windows)
|
69 |
-
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
70 |
-
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
71 |
-
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
72 |
-
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /path/to/win/root )
|
73 |
-
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
74 |
-
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
75 |
-
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
76 |
-
|
77 |
-
|
78 |
-
Debugging Options
|
79 |
-
=================
|
80 |
-
|
81 |
-
Debug Build Types
|
82 |
-
-----------------
|
83 |
-
Release build with debugging information:
|
84 |
-
-DCMAKE_BUILD_TYPE=relwithdebinfo
|
85 |
-
|
86 |
-
Debug build with optimization except for some code re-ordering optimizations:
|
87 |
-
-DCMAKE_BUILD_TYPE=debug
|
88 |
-
|
89 |
-
Debug build with no optimization:
|
90 |
-
-DCMAKE_BUILD_TYPE=debugfull
|
91 |
-
|
92 |
-
Release build with debugging and profiling information:
|
93 |
-
-DCMAKE_BUILD_TYPE=profile
|
94 |
-
|
95 |
-
|
96 |
-
Address Sanitizer
|
97 |
-
-----------------
|
98 |
-
Ensure the extra cmake modules are available (may be a separate
|
99 |
-
package) then use -DECM_ENABLE_SANITIZERS to specify the santizers. eg
|
100 |
-
|
101 |
-
-DECM_ENABLE_SANITIZERS='address;leak;undefined'
|
102 |
-
|
103 |
-
Some options may only be available with clang. Use
|
104 |
-
-DCMAKE_CXX_COMPILER=clang++ to build with clang.
|
105 |
-
|
106 |
-
The sanitizer can also be combined with fuzz testing by using Clang 6.0
|
107 |
-
or later and additionally enabling the sanitizer fuzzer which
|
108 |
-
will enable the fuzz target cpp/tests/pdf_fuzzer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/NEWS
DELETED
The diff for this file is too large to render.
See raw diff
|
|
poppler-24.01.0/README-XPDF
DELETED
@@ -1,423 +0,0 @@
|
|
1 |
-
Xpdf
|
2 |
-
====
|
3 |
-
|
4 |
-
version 3.03
|
5 |
-
2011-aug-15
|
6 |
-
|
7 |
-
The Xpdf software and documentation are
|
8 |
-
copyright 1996-2011, 2022 Glyph & Cog, LLC.
|
9 |
-
|
10 |
-
Email: [email protected]
|
11 |
-
WWW: http://www.foolabs.com/xpdf/
|
12 |
-
|
13 |
-
The PDF data structures, operators, and specification are
|
14 |
-
copyright 1985-2006 Adobe Systems Inc.
|
15 |
-
|
16 |
-
|
17 |
-
What is Xpdf?
|
18 |
-
-------------
|
19 |
-
|
20 |
-
Xpdf is an open source viewer for Portable Document Format (PDF)
|
21 |
-
files. (These are also sometimes also called 'Acrobat' files, from
|
22 |
-
the name of Adobe's PDF software.) The Xpdf project also includes a
|
23 |
-
PDF text extractor, PDF-to-PostScript converter, and various other
|
24 |
-
utilities.
|
25 |
-
|
26 |
-
Xpdf runs under the X Window System on UNIX, VMS, and OS/2. The non-X
|
27 |
-
components (pdftops, pdftotext, etc.) also run on Windows and Mac OSX
|
28 |
-
systems and should run on pretty much any system with a decent C++
|
29 |
-
compiler. Xpdf will run on 32-bit and 64-bit machines.
|
30 |
-
|
31 |
-
|
32 |
-
License & Distribution
|
33 |
-
----------------------
|
34 |
-
|
35 |
-
Xpdf is licensed under the GNU General Pulbic License (GPL), version 2
|
36 |
-
or 3. This means that you can distribute derivatives of Xpdf under
|
37 |
-
any of the following:
|
38 |
-
- GPL v2 only
|
39 |
-
- GPL v3 only
|
40 |
-
- GPL v2 or v3
|
41 |
-
|
42 |
-
The Xpdf source package includes the text of both GPL versions:
|
43 |
-
COPYING for GPL v2, COPYING3 for GPL v3.
|
44 |
-
|
45 |
-
Please note that Xpdf is NOT licensed under "any later version" of the
|
46 |
-
GPL, as I have no idea what those versions will look like.
|
47 |
-
|
48 |
-
If you are redistributing unmodified copies of Xpdf (or any of the
|
49 |
-
Xpdf tools) in binary form, you need to include all of the
|
50 |
-
documentation: README, man pages (or help files), COPYING, and
|
51 |
-
COPYING3.
|
52 |
-
|
53 |
-
If you want to incorporate the Xpdf source code into another program
|
54 |
-
(or create a modified version of Xpdf), and you are distributing that
|
55 |
-
program, you have two options: release your program under the GPL (v2
|
56 |
-
and/or v3), or purchase a commercial Xpdf source license.
|
57 |
-
|
58 |
-
If you're interested in commercial licensing, please see the Glyph &
|
59 |
-
Cog web site:
|
60 |
-
|
61 |
-
http://www.glyphandcog.com/
|
62 |
-
|
63 |
-
|
64 |
-
Compatibility
|
65 |
-
-------------
|
66 |
-
|
67 |
-
Xpdf is developed and tested on Linux.
|
68 |
-
|
69 |
-
In addition, it has been compiled by others on Solaris, AIX, HP-UX,
|
70 |
-
Digital Unix, Irix, and numerous other Unix implementations, as well
|
71 |
-
as VMS and OS/2. It should work on pretty much any system which runs
|
72 |
-
X11 and has Unix-like libraries. You'll need ANSI C++ and C compilers
|
73 |
-
to compile it.
|
74 |
-
|
75 |
-
The non-X components of Xpdf (pdftops, pdftotext, pdfinfo, pdffonts,
|
76 |
-
pdfdetach, pdftoppm, and pdfimages) can also be compiled on Windows
|
77 |
-
and Mac OSX systems. See the Xpdf web page for details.
|
78 |
-
|
79 |
-
If you compile Xpdf for a system not listed on the web page, please
|
80 |
-
let me know. If you're willing to make your binary available by ftp
|
81 |
-
or on the web, I'll be happy to add a link from the Xpdf web page. I
|
82 |
-
have decided not to host any binaries I didn't compile myself (for
|
83 |
-
disk space and support reasons).
|
84 |
-
|
85 |
-
If you can't get Xpdf to compile on your system, send me email and
|
86 |
-
I'll try to help.
|
87 |
-
|
88 |
-
Xpdf has been ported to the Acorn, Amiga, BeOS, and EPOC. See the
|
89 |
-
Xpdf web page for links.
|
90 |
-
|
91 |
-
|
92 |
-
Getting Xpdf
|
93 |
-
------------
|
94 |
-
|
95 |
-
The latest version is available from:
|
96 |
-
|
97 |
-
http://www.foolabs.com/xpdf/
|
98 |
-
|
99 |
-
or:
|
100 |
-
|
101 |
-
ftp://ftp.foolabs.com/pub/xpdf/
|
102 |
-
|
103 |
-
Source code and several precompiled executables are available.
|
104 |
-
|
105 |
-
Announcements of new versions are posted to comp.text.pdf and emailed
|
106 |
-
to a list of people. If you'd like to receive email notification of
|
107 |
-
new versions, just let me know.
|
108 |
-
|
109 |
-
|
110 |
-
Running Xpdf
|
111 |
-
------------
|
112 |
-
|
113 |
-
To run xpdf, simply type:
|
114 |
-
|
115 |
-
xpdf file.pdf
|
116 |
-
|
117 |
-
To generate a PostScript file, hit the "print" button in xpdf, or run
|
118 |
-
pdftops:
|
119 |
-
|
120 |
-
pdftops file.pdf
|
121 |
-
|
122 |
-
To generate a plain text file, run pdftotext:
|
123 |
-
|
124 |
-
pdftotext file.pdf
|
125 |
-
|
126 |
-
There are five additional utilities (which are fully described in
|
127 |
-
their man pages):
|
128 |
-
|
129 |
-
pdfinfo -- dumps a PDF file's Info dictionary (plus some other
|
130 |
-
useful information)
|
131 |
-
pdffonts -- lists the fonts used in a PDF file along with various
|
132 |
-
information for each font
|
133 |
-
pdfdetach -- lists or extracts embedded files (attachments) from a
|
134 |
-
PDF file
|
135 |
-
pdftoppm -- converts a PDF file to a series of PPM/PGM/PBM-format
|
136 |
-
bitmaps
|
137 |
-
pdfimages -- extracts the images from a PDF file
|
138 |
-
|
139 |
-
Command line options and many other details are described in the man
|
140 |
-
pages (xpdf(1), etc.) and the VMS help files (xpdf.hlp, etc.).
|
141 |
-
|
142 |
-
All of these utilities read an optional configuration file: see the
|
143 |
-
xpdfrc(5) man page.
|
144 |
-
|
145 |
-
|
146 |
-
Upgrading from Xpdf 3.02 (and earlier)
|
147 |
-
--------------------------------------
|
148 |
-
|
149 |
-
The font configuration system has been changed. Previous versions
|
150 |
-
used mostly separate commands to configure fonts for display and for
|
151 |
-
PostScript output. As of 3.03, configuration options that make sense
|
152 |
-
for both display and PS output have been unified.
|
153 |
-
|
154 |
-
The following xpdfrc commands have been removed:
|
155 |
-
* displayFontT1, displayFontTT: replaced with fontFile
|
156 |
-
* displayNamedCIDFontT1, displayNamedCIDFontTT: replaced with fontFile
|
157 |
-
* displayCIDFontT1, displayCIDFontTT: replaced with fontFileCC
|
158 |
-
* psFont: replaced with psResidentFont
|
159 |
-
* psNamedFont16: replaced with psResidentFont16
|
160 |
-
* psFont16: replaced with psResidentFontCC
|
161 |
-
|
162 |
-
See the xpdfrc(5) man page for more information on the new commands.
|
163 |
-
|
164 |
-
Pdftops will now embed external 16-bit fonts (configured with the
|
165 |
-
fontFileCC command) when the PDF file refers to a non-embedded font.
|
166 |
-
It does not do any subsetting (yet), so the resulting PS files will be
|
167 |
-
large.
|
168 |
-
|
169 |
-
|
170 |
-
Compiling Xpdf
|
171 |
-
--------------
|
172 |
-
|
173 |
-
See the separate file, INSTALL.
|
174 |
-
|
175 |
-
|
176 |
-
Bugs
|
177 |
-
----
|
178 |
-
|
179 |
-
If you find a bug in Xpdf, i.e., if it prints an error message,
|
180 |
-
crashes, or incorrectly displays a document, and you don't see that
|
181 |
-
bug listed here, please send me email, with a pointer (URL, ftp site,
|
182 |
-
etc.) to the PDF file.
|
183 |
-
|
184 |
-
|
185 |
-
Acknowledgments
|
186 |
-
---------------
|
187 |
-
|
188 |
-
Thanks to:
|
189 |
-
|
190 |
-
* Patrick Voigt for help with the remote server code.
|
191 |
-
* Patrick Moreau, Martin P.J. Zinser, and David Mathog for the VMS
|
192 |
-
port.
|
193 |
-
* David Boldt and Rick Rodgers for sample man pages.
|
194 |
-
* Brendan Miller for the icon idea.
|
195 |
-
* Olly Betts for help testing pdftotext.
|
196 |
-
* Peter Ganten for the OS/2 port.
|
197 |
-
* Michael Richmond for the Win32 port of pdftops and pdftotext and the
|
198 |
-
xpdf/cygwin/XFree86 build instructions.
|
199 |
-
* Frank M. Siegert for improvements in the PostScript code.
|
200 |
-
* Leo Smiers for the decryption patches.
|
201 |
-
* Rainer Menzner for creating t1lib, and for helping me adapt it to
|
202 |
-
xpdf.
|
203 |
-
* Pine Tree Systems A/S for funding the OPI and EPS support in
|
204 |
-
pdftops.
|
205 |
-
* Easy Software Products for funding several improvements to the
|
206 |
-
PostScript output code.
|
207 |
-
* Tom Kacvinsky for help with FreeType and for being my interface to
|
208 |
-
the FreeType team.
|
209 |
-
* Theppitak Karoonboonyanan for help with Thai support.
|
210 |
-
* Leonard Rosenthol for help and contributions on a bunch of things.
|
211 |
-
* Alexandros Diamantidis and Maria Adaloglou for help with Greek
|
212 |
-
support.
|
213 |
-
* Lawrence Lai for help with the CJK Unicode maps.
|
214 |
-
|
215 |
-
Various people have contributed modifications made for use by the
|
216 |
-
pdftex project:
|
217 |
-
|
218 |
-
* Han The Thanh
|
219 |
-
* Martin Schröder of ArtCom GmbH
|
220 |
-
|
221 |
-
|
222 |
-
References
|
223 |
-
----------
|
224 |
-
|
225 |
-
Adobe Systems Inc., _PDF Reference, sixth edition: Adobe Portable
|
226 |
-
Document Format version 1.7_.
|
227 |
-
http://www.adobe.com/devnet/pdf/pdf_reference.html
|
228 |
-
[The manual for PDF version 1.7.]
|
229 |
-
|
230 |
-
Adobe Systems Inc., "Errata for the PDF Reference, sixth edition,
|
231 |
-
version 1.7", October 16, 2006.
|
232 |
-
http://www.adobe.com/devnet/pdf/pdf_reference.html
|
233 |
-
[The errata for the PDF 1.7 spec.]
|
234 |
-
|
235 |
-
Adobe Systems Inc., _PostScript Language Reference_, 3rd ed.
|
236 |
-
Addison-Wesley, 1999, ISBN 0-201-37922-8.
|
237 |
-
[The official PostScript manual.]
|
238 |
-
|
239 |
-
Adobe Systems, Inc., _The Type 42 Font Format Specification_,
|
240 |
-
Adobe Developer Support Technical Specification #5012. 1998.
|
241 |
-
http://partners.adobe.com/asn/developer/pdfs/tn/5012.Type42_Spec.pdf
|
242 |
-
[Type 42 is the format used to embed TrueType fonts in PostScript
|
243 |
-
files.]
|
244 |
-
|
245 |
-
Adobe Systems, Inc., _Adobe CMap and CIDFont Files Specification_,
|
246 |
-
Adobe Developer Support Technical Specification #5014. 1995.
|
247 |
-
http://www.adobe.com/supportservice/devrelations/PDFS/TN/5014.CIDFont_Spec.pdf
|
248 |
-
[CMap file format needed for Japanese and Chinese font support.]
|
249 |
-
|
250 |
-
Adobe Systems, Inc., _Adobe-Japan1-4 Character Collection for
|
251 |
-
CID-Keyed Fonts_, Adobe Developer Support Technical Note #5078.
|
252 |
-
2000.
|
253 |
-
http://partners.adobe.com/asn/developer/PDFS/TN/5078.CID_Glyph.pdf
|
254 |
-
[The Adobe Japanese character set.]
|
255 |
-
|
256 |
-
Adobe Systems, Inc., _Adobe-GB1-4 Character Collection for
|
257 |
-
CID-Keyed Fonts_, Adobe Developer Support Technical Note #5079.
|
258 |
-
2000.
|
259 |
-
http://partners.adobe.com/asn/developer/pdfs/tn/5079.Adobe-GB1-4.pdf
|
260 |
-
[The Adobe Chinese GB (simplified) character set.]
|
261 |
-
|
262 |
-
Adobe Systems, Inc., _Adobe-CNS1-3 Character Collection for
|
263 |
-
CID-Keyed Fonts_, Adobe Developer Support Technical Note #5080.
|
264 |
-
2000.
|
265 |
-
http://partners.adobe.com/asn/developer/PDFS/TN/5080.CNS_CharColl.pdf
|
266 |
-
[The Adobe Chinese CNS (traditional) character set.]
|
267 |
-
|
268 |
-
Adobe Systems Inc., _Supporting the DCT Filters in PostScript Level
|
269 |
-
2_, Adobe Developer Support Technical Note #5116. 1992.
|
270 |
-
http://www.adobe.com/supportservice/devrelations/PDFS/TN/5116.PS2_DCT.PDF
|
271 |
-
[Description of the DCTDecode filter parameters.]
|
272 |
-
|
273 |
-
Adobe Systems Inc., _Open Prepress Interface (OPI) Specification -
|
274 |
-
Version 2.0_, Adobe Developer Support Technical Note #5660. 2000.
|
275 |
-
http://partners.adobe.com/asn/developer/PDFS/TN/5660.OPI_2.0.pdf
|
276 |
-
|
277 |
-
Adobe Systems Inc., CMap files.
|
278 |
-
ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/
|
279 |
-
[The actual CMap files for the 16-bit CJK encodings.]
|
280 |
-
|
281 |
-
Adobe Systems Inc., Unicode glyph lists.
|
282 |
-
http://partners.adobe.com/asn/developer/type/unicodegn.html
|
283 |
-
http://partners.adobe.com/asn/developer/type/glyphlist.txt
|
284 |
-
http://partners.adobe.com/asn/developer/type/corporateuse.txt
|
285 |
-
http://partners.adobe.com/asn/developer/type/zapfdingbats.txt
|
286 |
-
[Mappings between character names to Unicode.]
|
287 |
-
|
288 |
-
Adobe Systems Inc., OpenType Specification v. 1.4.
|
289 |
-
http://partners.adobe.com/public/developer/opentype/index_spec.html
|
290 |
-
[The OpenType font format spec.]
|
291 |
-
|
292 |
-
Aldus Corp., _OPI: Open Prepress Interface Specification 1.3_. 1993.
|
293 |
-
http://partners.adobe.com/asn/developer/PDFS/TN/OPI_13.pdf
|
294 |
-
|
295 |
-
Anonymous, RC4 source code.
|
296 |
-
ftp://ftp.ox.ac.uk/pub/crypto/misc/rc4.tar.gz
|
297 |
-
ftp://idea.sec.dsi.unimi.it/pub/crypt/code/rc4.tar.gz
|
298 |
-
[This is the algorithm used to encrypt PDF files.]
|
299 |
-
|
300 |
-
T. Boutell, et al., "PNG (Portable Network Graphics) Specification,
|
301 |
-
Version 1.0". RFC 2083.
|
302 |
-
[PDF uses the PNG filter algorithms.]
|
303 |
-
|
304 |
-
CCITT, "Information Technology - Digital Compression and Coding of
|
305 |
-
Continuous-tone Still Images - Requirements and Guidelines", CCITT
|
306 |
-
Recommendation T.81.
|
307 |
-
http://www.w3.org/Graphics/JPEG/
|
308 |
-
[The official JPEG spec.]
|
309 |
-
|
310 |
-
A. Chernov, "Registration of a Cyrillic Character Set". RFC 1489.
|
311 |
-
[Documentation for the KOI8-R Cyrillic encoding.]
|
312 |
-
|
313 |
-
Roman Czyborra, "The ISO 8859 Alphabet Soup".
|
314 |
-
http://czyborra.com/charsets/iso8859.html
|
315 |
-
[Documentation on the various ISO 859 encodings.]
|
316 |
-
|
317 |
-
L. Peter Deutsch, "ZLIB Compressed Data Format Specification version
|
318 |
-
3.3". RFC 1950.
|
319 |
-
[Information on the general format used in FlateDecode streams.]
|
320 |
-
|
321 |
-
L. Peter Deutsch, "DEFLATE Compressed Data Format Specification
|
322 |
-
version 1.3". RFC 1951.
|
323 |
-
[The definition of the compression algorithm used in FlateDecode
|
324 |
-
streams.]
|
325 |
-
|
326 |
-
Morris Dworkin, "Recommendation for Block Cipher Modes of Operation",
|
327 |
-
National Institute of Standards, NIST Special Publication 800-38A,
|
328 |
-
2001.
|
329 |
-
[The cipher block chaining (CBC) mode used with AES in PDF files.]
|
330 |
-
|
331 |
-
Federal Information Processing Standards Publication 197 (FIPS PUBS
|
332 |
-
197), "Advanced Encryption Standard (AES)", November 26, 2001.
|
333 |
-
[AES encryption, used in PDF 1.6.]
|
334 |
-
|
335 |
-
Jim Flowers, "X Logical Font Description Conventions", Version 1.5, X
|
336 |
-
Consortium Standard, X Version 11, Release 6.1.
|
337 |
-
ftp://ftp.x.org/pub/R6.1/xc/doc/hardcopy/XLFD/xlfd.PS.Z
|
338 |
-
[The official specification of X font descriptors, including font
|
339 |
-
transformation matrices.]
|
340 |
-
|
341 |
-
Foley, van Dam, Feiner, and Hughes, _Computer Graphics: Principles and
|
342 |
-
Practice_, 2nd ed. Addison-Wesley, 1990, ISBN 0-201-12110-7.
|
343 |
-
[Colorspace conversion functions, Bezier spline math.]
|
344 |
-
|
345 |
-
Robert L. Hummel, _Programmer's Technical Reference: Data and Fax
|
346 |
-
Communications_. Ziff-Davis Press, 1993, ISBN 1-56276-077-7.
|
347 |
-
[CCITT Group 3 and 4 fax decoding.]
|
348 |
-
|
349 |
-
ISO/IEC, _Information technology -- Lossy/lossless coding of bi-level
|
350 |
-
images_. ISO/IEC 14492, First edition (2001-12-15).
|
351 |
-
http://webstore.ansi.org/
|
352 |
-
[The official JBIG2 standard. The final draft of this spec is
|
353 |
-
available from http://www.jpeg.org/jbighomepage.html.]
|
354 |
-
|
355 |
-
ISO/IEC, _Information technology -- JPEG 2000 image coding system --
|
356 |
-
Part 1: Core coding system_. ISO/IEC 15444-1, First edition
|
357 |
-
(2000-12-15).
|
358 |
-
http://webstore.ansi.org/
|
359 |
-
[The official JPEG 2000 standard. The final committee draft of this
|
360 |
-
spec is available from http://www.jpeg.org/JPEG2000.html, but there
|
361 |
-
were changes made to the bitstream format between that draft and the
|
362 |
-
published spec.]
|
363 |
-
|
364 |
-
ITU, "Standardization of Group 3 facsimile terminals for document
|
365 |
-
transmission", ITU-T Recommendation T.4, 1999.
|
366 |
-
ITU, "Facsimile coding schemes and coding control functions for Group 4
|
367 |
-
facsimile apparatus", ITU-T Recommendation T.6, 1993.
|
368 |
-
http://www.itu.int/
|
369 |
-
[The official Group 3 and 4 fax standards - used by the CCITTFaxDecode
|
370 |
-
stream, as well as the JBIG2Decode stream.]
|
371 |
-
|
372 |
-
B. Kaliski, "PKCS #5: Password-Based Cryptography Specification,
|
373 |
-
Version 2.0". RFC 2898.
|
374 |
-
[Defines the padding scheme used with AES encryption in PDF files.]
|
375 |
-
|
376 |
-
Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz, "Practical
|
377 |
-
Fast 1-D DCT Algorithms with 11 Multiplications". IEEE Intl. Conf. on
|
378 |
-
Acoustics, Speech & Signal Processing, 1989, 988-991.
|
379 |
-
[The fast IDCT algorithm used in the DCTDecode filter.]
|
380 |
-
|
381 |
-
Microsoft, _TrueType 1.0 Font Files_, rev. 1.66. 1995.
|
382 |
-
http://www.microsoft.com/typography/tt/tt.htm
|
383 |
-
[The TrueType font spec (in MS Word format, naturally).]
|
384 |
-
|
385 |
-
V. Ostromoukhov, R.D. Hersch, "Stochastic Clustered-Dot Dithering",
|
386 |
-
Conf. Color Imaging: Device-Independent Color, Color Hardcopy, and
|
387 |
-
Graphic Arts IV, 1999, SPIE Vol. 3648, 496-505.
|
388 |
-
http://diwww.epfl.ch/w3lsp/publications/colour/scd.html
|
389 |
-
[The stochastic dithering algorithm used in Xpdf.]
|
390 |
-
|
391 |
-
P. Peterlin, "ISO 8859-2 (Latin 2) Resources".
|
392 |
-
http://sizif.mf.uni-lj.si/linux/cee/iso8859-2.html
|
393 |
-
[This is a web page with all sorts of useful Latin-2 character set and
|
394 |
-
font information.]
|
395 |
-
|
396 |
-
Charles Poynton, "Color FAQ".
|
397 |
-
http://www.inforamp.net/~poynton/ColorFAQ.html
|
398 |
-
[The mapping from the CIE 1931 (XYZ) color space to RGB.]
|
399 |
-
|
400 |
-
R. Rivest, "The MD5 Message-Digest Algorithm". RFC 1321.
|
401 |
-
[MD5 is used in PDF document encryption.]
|
402 |
-
|
403 |
-
Thai Industrial Standard, "Standard for Thai Character Codes for
|
404 |
-
Computers", TIS-620-2533 (1990).
|
405 |
-
http://www.nectec.or.th/it-standards/std620/std620.htm
|
406 |
-
[The TIS-620 Thai encoding.]
|
407 |
-
|
408 |
-
Unicode Consortium, "Unicode Home Page".
|
409 |
-
http://www.unicode.org/
|
410 |
-
[Online copy of the Unicode spec.]
|
411 |
-
|
412 |
-
W3C Recommendation, "PNG (Portable Network Graphics) Specification
|
413 |
-
Version 1.0".
|
414 |
-
http://www.w3.org/Graphics/PNG/
|
415 |
-
[Defines the PNG image predictor.]
|
416 |
-
|
417 |
-
Gregory K. Wallace, "The JPEG Still Picture Compression Standard".
|
418 |
-
ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz
|
419 |
-
[Good description of the JPEG standard. Also published in CACM, April
|
420 |
-
1991, and submitted to IEEE Transactions on Consumer Electronics.]
|
421 |
-
|
422 |
-
F. Yergeau, "UTF-8, a transformation format of ISO 10646". RFC 2279.
|
423 |
-
[A commonly used Unicode encoding.]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/README.contributors
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
If you want to become or are a poppler contributor, this is a README for you, keep reading!
|
2 |
-
|
3 |
-
Licensing
|
4 |
-
---------
|
5 |
-
Only send patches to poppler if you agree to license (or relicense) them under
|
6 |
-
GPLv2 and later (or something more permissive that can be "upgraded" to GPLv2
|
7 |
-
and later). If you do not agree to this license, please explain the problem / bug
|
8 |
-
and how you would solve it in words instead of code.
|
9 |
-
|
10 |
-
By default all patches attached to the gitlab instance or sent to the mailing list
|
11 |
-
will be assumed to agree with the licensing expressed here.
|
12 |
-
|
13 |
-
Channels of contact
|
14 |
-
-------------------
|
15 |
-
Poppler has three main channels of contact:
|
16 |
-
* The poppler mailing list http://lists.freedesktop.org/mailman/listinfo/poppler
|
17 |
-
* The poppler gitlab instance https://gitlab.freedesktop.org/poppler/poppler/
|
18 |
-
* The #poppler channel at the IRC freenode network
|
19 |
-
Do not hesitate to drop by talk to people there.
|
20 |
-
|
21 |
-
clang-format
|
22 |
-
------------
|
23 |
-
We introduced clang-format mandatory usage in July 2020.
|
24 |
-
If you want git blame to ignore the revision in which we did the mass change you can do
|
25 |
-
git config blame.ignoreRevsFile .git-blame-ignore-revs
|
26 |
-
on your clone
|
27 |
-
|
28 |
-
To get the clang-format warnings locally instead at CI time we recommend you
|
29 |
-
to copy the hooks/pre-commit to your .git
|
30 |
-
cp hooks/pre-commit .git/hooks/
|
31 |
-
|
32 |
-
We are using clang-format 15 on CI. Unfortunately clang-format is not totally
|
33 |
-
compatible with older versions of itself. If CI gives you trouble but your local
|
34 |
-
clang-format disagrees, just apply the changes suggested by CI and then commit
|
35 |
-
with the --no-verify flag. If you get stuck, don't hesitate to ask the reviewer
|
36 |
-
to help and they will reformat your commits :)
|
37 |
-
|
38 |
-
Merge requests
|
39 |
-
--------------
|
40 |
-
|
41 |
-
When creating a new merge request on gitlab make sure it has a clear title and
|
42 |
-
the description includes any extra details that might be helpful for the
|
43 |
-
reviewer, such as what the aim of the change is and decisions made during
|
44 |
-
implementation.
|
45 |
-
|
46 |
-
Also, check "Allow commits from members who can merge to the target branch" as
|
47 |
-
that enables rebase on landing. See the gitlab docs for details:
|
48 |
-
|
49 |
-
https://docs.gitlab.com/ee/user/project/merge_requests/allow_collaboration.html
|
50 |
-
|
51 |
-
And keep hacking on poppler!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/README.md
DELETED
@@ -1,107 +0,0 @@
|
|
1 |
-
Poppler, a PDF rendering library
|
2 |
-
================================
|
3 |
-
|
4 |
-
This is Poppler, a library for rendering PDF files, and examining or
|
5 |
-
modifying their structure. Poppler originally came from the XPDF
|
6 |
-
sources; please see the file [README-XPDF](README-XPDF) for the
|
7 |
-
original xpdf-3.03 README.
|
8 |
-
|
9 |
-
Note that **Poppler is licensed under the GPL**, not the LGPL, so
|
10 |
-
programs which call Poppler must be licensed under the GPL as well.
|
11 |
-
See the section [History and GPL
|
12 |
-
licensing](#history-and-gpl-licensing) for more information.
|
13 |
-
|
14 |
-
# Source code
|
15 |
-
|
16 |
-
Poppler's source code is maintained as a Git repository in
|
17 |
-
[`gitlab.freedesktop.org`][gitlab]. You can fork that repository and
|
18 |
-
submit merge requests.
|
19 |
-
|
20 |
-
[gitlab]: https://gitlab.freedesktop.org/poppler/poppler
|
21 |
-
|
22 |
-
# Reporting bugs
|
23 |
-
|
24 |
-
Please report bugs at
|
25 |
-
https://gitlab.freedesktop.org/poppler/poppler/issues
|
26 |
-
|
27 |
-
If you want to report a rendering or parsing bug, or a missing PDF
|
28 |
-
feature, please provide an example PDF file as an attachment to your
|
29 |
-
bug report. It really helps if you can minimize the PDF to only the
|
30 |
-
items required to reproduce the bug or the missing feature, but it is
|
31 |
-
not absolutely required. **Please be careful** of publishing PDF
|
32 |
-
files that you don't want other people to see, or files whose
|
33 |
-
copyright does not allow redistribution; the bug tracker is a public
|
34 |
-
resource and attachments are visible to everyone.
|
35 |
-
|
36 |
-
# Security
|
37 |
-
|
38 |
-
Poppler is highly sensitive to security bugs, since it deals mainly
|
39 |
-
with untrusted files downloaded from the Internet.
|
40 |
-
|
41 |
-
If you find a crash in Poppler, or if a tool like
|
42 |
-
Valgrind/asan/ubsan/msan detect a problem, please report a bug at
|
43 |
-
https://gitlab.freedesktop.org/poppler/poppler/issues
|
44 |
-
|
45 |
-
# Stable and unstable APIs
|
46 |
-
|
47 |
-
Poppler provides stable, public APIs for its various front-ends, and
|
48 |
-
an unstable API for Poppler's own internal use. The following
|
49 |
-
directories in Poppler's source tree have the **stable APIs**:
|
50 |
-
|
51 |
-
* [cpp](cpp) - Stable C++ API for examining the structure of a PDF
|
52 |
-
file and rendering it to a raster image.
|
53 |
-
|
54 |
-
* [glib](glib) - Stable C API with Glib/GObject idioms, to examine the
|
55 |
-
structure of a PDF file, and to render its pages to [Cairo]
|
56 |
-
contexts.
|
57 |
-
|
58 |
-
* [qt5](qt5) - Stable C++ API with [Qt5] idioms, to examine the
|
59 |
-
structure of a PDF file, and to render its pages to `QPainter` or
|
60 |
-
`QImage` objects.
|
61 |
-
|
62 |
-
**WARNING:** Poppler also provides direct access to its internals,
|
63 |
-
since various tools historically use the C++ header files that came
|
64 |
-
from XPDF and which became the basis for Poppler.
|
65 |
-
|
66 |
-
* [poppler](poppler) - **UNSTABLE, INTERNAL C++ API** to operate
|
67 |
-
directly on Poppler's internal representation of PDF files. *If you
|
68 |
-
use this API, you are on your own*. This API may change at any
|
69 |
-
time, even among minor versions of Poppler!
|
70 |
-
|
71 |
-
[Cairo]: https://www.cairographics.org/
|
72 |
-
[Qt5]: https://www.qt.io/
|
73 |
-
|
74 |
-
# History and GPL licensing
|
75 |
-
|
76 |
-
Poppler is a fork of the xpdf PDF viewer developed by Derek Noonburg
|
77 |
-
of Glyph and Cog, LLC. The purpose of forking xpdf is twofold.
|
78 |
-
First, we want to provide PDF rendering functionality as a shared
|
79 |
-
library, to centralize the maintenance effort. Today a number of
|
80 |
-
applications incorporate the xpdf code base, and whenever a security
|
81 |
-
issue is discovered, all these applications exchange patches and put
|
82 |
-
out new releases. In turn, all distributions must package and release
|
83 |
-
new version of these xpdf based viewers. It's safe to say that
|
84 |
-
there's a lot of duplicated effort with the current situation. Even if
|
85 |
-
poppler in the short term introduces yet another xpdf derived code
|
86 |
-
base to the world, we hope that over time these applications will
|
87 |
-
adopt poppler. After all, we only need one application to use poppler
|
88 |
-
to break even.
|
89 |
-
|
90 |
-
Second, we would like to move libpoppler forward in a number of areas
|
91 |
-
that don't fit within the goals of xpdf. By design, xpdf depends on
|
92 |
-
very few libraries and runs a wide range of X based platforms. This
|
93 |
-
is a strong feature and reasonable design goal. However, with poppler
|
94 |
-
we would like to replace parts of xpdf that are now available as
|
95 |
-
standard components of modern Unix desktop environments. One such
|
96 |
-
example is fontconfig, which solves the problem of matching and
|
97 |
-
locating fonts on the system, in a standardized and well understood
|
98 |
-
way. Another example is cairo, which provides high quality 2D
|
99 |
-
rendering.
|
100 |
-
|
101 |
-
Please note that xpdf, and thus poppler, is licensed under the GPL,
|
102 |
-
not the LGPL. Consequently, any application using poppler must also
|
103 |
-
be licensed under the GPL. If you want to incorporate Xpdf based PDF
|
104 |
-
rendering in a closed source product, please contact Glyph & Cog
|
105 |
-
(www.glyphandcog.com) for commercial licensing options. Note that
|
106 |
-
this only allows you to use xpdf in a closed source product,
|
107 |
-
not poppler itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/_clang-format
DELETED
@@ -1,77 +0,0 @@
|
|
1 |
-
# Copyright (C) 2016 Olivier Goffart <[email protected]>
|
2 |
-
#
|
3 |
-
# You may use this file under the terms of the 3-clause BSD license.
|
4 |
-
# See the file LICENSE from this package for details.
|
5 |
-
|
6 |
-
---
|
7 |
-
BasedOnStyle: WebKit
|
8 |
-
|
9 |
-
Standard: Cpp11
|
10 |
-
|
11 |
-
ColumnLimit: 240
|
12 |
-
# How much weight do extra characters after the line length limit have.
|
13 |
-
# PenaltyExcessCharacter: 4
|
14 |
-
|
15 |
-
# Disable reflow of qdoc comments: indentation rules are different.
|
16 |
-
# Translation comments are also excluded.
|
17 |
-
CommentPragmas: "^!|^:"
|
18 |
-
|
19 |
-
# We want a space between the type and the star for pointer types.
|
20 |
-
PointerBindsToType: false
|
21 |
-
|
22 |
-
# We use template< without space.
|
23 |
-
SpaceAfterTemplateKeyword: false
|
24 |
-
|
25 |
-
# We want to break before the operators, but not before a '='.
|
26 |
-
BreakBeforeBinaryOperators: NonAssignment
|
27 |
-
|
28 |
-
# Braces are usually attached, but not after functions or class declarations.
|
29 |
-
BreakBeforeBraces: Custom
|
30 |
-
BraceWrapping:
|
31 |
-
AfterClass: true
|
32 |
-
AfterControlStatement: false
|
33 |
-
AfterEnum: true
|
34 |
-
AfterFunction: true
|
35 |
-
AfterNamespace: false
|
36 |
-
AfterObjCDeclaration: false
|
37 |
-
AfterStruct: true
|
38 |
-
AfterUnion: false
|
39 |
-
BeforeCatch: false
|
40 |
-
BeforeElse: false
|
41 |
-
IndentBraces: false
|
42 |
-
|
43 |
-
# When constructor initializers do not fit on one line, put them each on a new line.
|
44 |
-
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
45 |
-
# Indent initializers by 4 spaces
|
46 |
-
ConstructorInitializerIndentWidth: 4
|
47 |
-
|
48 |
-
# Indent width for line continuations.
|
49 |
-
ContinuationIndentWidth: 8
|
50 |
-
|
51 |
-
# No indentation for namespaces.
|
52 |
-
NamespaceIndentation: None
|
53 |
-
|
54 |
-
# Allow indentation for preprocessing directives (if/ifdef/endif). https://reviews.llvm.org/rL312125
|
55 |
-
IndentPPDirectives: AfterHash
|
56 |
-
|
57 |
-
# Horizontally align arguments after an open bracket.
|
58 |
-
# The coding style does not specify the following, but this is what gives
|
59 |
-
# results closest to the existing code.
|
60 |
-
AlignAfterOpenBracket: true
|
61 |
-
AlwaysBreakTemplateDeclarations: true
|
62 |
-
|
63 |
-
# Ideally we should also allow less short function in a single line, but
|
64 |
-
# clang-format does not handle that.
|
65 |
-
AllowShortFunctionsOnASingleLine: Inline
|
66 |
-
|
67 |
-
# The coding style specifies some include order categories, but also tells to
|
68 |
-
# separate categories with an empty line. It does not specify the order within
|
69 |
-
# the categories. Since the SortInclude feature of clang-format does not
|
70 |
-
# re-order includes separated by empty lines, the feature is not used.
|
71 |
-
SortIncludes: false
|
72 |
-
|
73 |
-
# macros for which the opening brace stays attached.
|
74 |
-
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH, forever, Q_FOREVER, QBENCHMARK, QBENCHMARK_ONCE ]
|
75 |
-
|
76 |
-
# Break constructor initializers before the colon and after the commas.
|
77 |
-
BreakConstructorInitializers: BeforeColon
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/COPYING-CMAKE-SCRIPTS
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
Redistribution and use in source and binary forms, with or without
|
2 |
-
modification, are permitted provided that the following conditions
|
3 |
-
are met:
|
4 |
-
|
5 |
-
1. Redistributions of source code must retain the copyright
|
6 |
-
notice, this list of conditions and the following disclaimer.
|
7 |
-
2. Redistributions in binary form must reproduce the copyright
|
8 |
-
notice, this list of conditions and the following disclaimer in the
|
9 |
-
documentation and/or other materials provided with the distribution.
|
10 |
-
3. The name of the author may not be used to endorse or promote products
|
11 |
-
derived from this software without specific prior written permission.
|
12 |
-
|
13 |
-
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
14 |
-
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
15 |
-
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16 |
-
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
17 |
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18 |
-
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
19 |
-
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
20 |
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
21 |
-
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
22 |
-
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/CheckFileOffsetBits.c
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
#include <sys/types.h>
|
2 |
-
|
3 |
-
#define KB ((off_t)1024)
|
4 |
-
#define MB ((off_t)1024 * KB)
|
5 |
-
#define GB ((off_t)1024 * MB)
|
6 |
-
#define TB ((off_t)1024 * GB)
|
7 |
-
int t2[(((64 * GB - 1) % 671088649) == 268434537) && (((TB - (64 * GB - 1) + 255) % 1792151290) == 305159546) ? 1 : -1];
|
8 |
-
|
9 |
-
int main()
|
10 |
-
{
|
11 |
-
;
|
12 |
-
return 0;
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/CheckFileOffsetBits.cmake
DELETED
@@ -1,44 +0,0 @@
|
|
1 |
-
# - Check if _FILE_OFFSET_BITS macro needed for large files
|
2 |
-
# CHECK_FILE_OFFSET_BITS ()
|
3 |
-
#
|
4 |
-
# The following variables may be set before calling this macro to
|
5 |
-
# modify the way the check is run:
|
6 |
-
#
|
7 |
-
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
8 |
-
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
9 |
-
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
10 |
-
# Copyright (c) 2009, Michihiro NAKAJIMA
|
11 |
-
#
|
12 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
13 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
14 |
-
|
15 |
-
#INCLUDE(CheckCXXSourceCompiles)
|
16 |
-
|
17 |
-
GET_FILENAME_COMPONENT(_selfdir_CheckFileOffsetBits
|
18 |
-
"${CMAKE_CURRENT_LIST_FILE}" PATH)
|
19 |
-
|
20 |
-
MACRO (CHECK_FILE_OFFSET_BITS)
|
21 |
-
IF(NOT DEFINED _FILE_OFFSET_BITS)
|
22 |
-
MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files")
|
23 |
-
TRY_COMPILE(__WITHOUT_FILE_OFFSET_BITS_64
|
24 |
-
${CMAKE_CURRENT_BINARY_DIR}
|
25 |
-
${_selfdir_CheckFileOffsetBits}/CheckFileOffsetBits.c
|
26 |
-
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS})
|
27 |
-
IF(NOT __WITHOUT_FILE_OFFSET_BITS_64)
|
28 |
-
TRY_COMPILE(__WITH_FILE_OFFSET_BITS_64
|
29 |
-
${CMAKE_CURRENT_BINARY_DIR}
|
30 |
-
${_selfdir_CheckFileOffsetBits}/CheckFileOffsetBits.c
|
31 |
-
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_FILE_OFFSET_BITS=64)
|
32 |
-
ENDIF(NOT __WITHOUT_FILE_OFFSET_BITS_64)
|
33 |
-
|
34 |
-
IF(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64)
|
35 |
-
SET(_FILE_OFFSET_BITS 64 CACHE INTERNAL "_FILE_OFFSET_BITS macro needed for large files")
|
36 |
-
MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files - needed")
|
37 |
-
ELSE(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64)
|
38 |
-
SET(_FILE_OFFSET_BITS "" CACHE INTERNAL "_FILE_OFFSET_BITS macro needed for large files")
|
39 |
-
MESSAGE(STATUS "Checking _FILE_OFFSET_BITS for large files - not needed")
|
40 |
-
ENDIF(NOT __WITHOUT_FILE_OFFSET_BITS_64 AND __WITH_FILE_OFFSET_BITS_64)
|
41 |
-
ENDIF(NOT DEFINED _FILE_OFFSET_BITS)
|
42 |
-
|
43 |
-
ENDMACRO (CHECK_FILE_OFFSET_BITS)
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindCairo.cmake
DELETED
@@ -1,62 +0,0 @@
|
|
1 |
-
# - try to find Cairo
|
2 |
-
# Once done this will define
|
3 |
-
#
|
4 |
-
# CAIRO_FOUND - system has Cairo
|
5 |
-
# CAIRO_CFLAGS - the Cairo CFlags
|
6 |
-
# CAIRO_INCLUDE_DIRS - the Cairo include directories
|
7 |
-
# CAIRO_LIBRARIES - Link these to use Cairo
|
8 |
-
#
|
9 |
-
# Copyright (C) 2007, 2010, Pino Toscano, <[email protected]>
|
10 |
-
#
|
11 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
12 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
13 |
-
|
14 |
-
if(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
|
15 |
-
|
16 |
-
# in cache already
|
17 |
-
set(CAIRO_FOUND TRUE)
|
18 |
-
|
19 |
-
else(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
|
20 |
-
|
21 |
-
if(NOT WIN32)
|
22 |
-
# use pkg-config to get the directories and then use these values
|
23 |
-
# in the FIND_PATH() and FIND_LIBRARY() calls
|
24 |
-
find_package(PkgConfig REQUIRED)
|
25 |
-
if(Cairo_FIND_VERSION_COUNT GREATER 0)
|
26 |
-
set(_cairo_version_cmp ">=${Cairo_FIND_VERSION}")
|
27 |
-
endif(Cairo_FIND_VERSION_COUNT GREATER 0)
|
28 |
-
pkg_check_modules(_pc_cairo cairo${_cairo_version_cmp})
|
29 |
-
if(_pc_cairo_FOUND)
|
30 |
-
set(CAIRO_FOUND TRUE)
|
31 |
-
endif(_pc_cairo_FOUND)
|
32 |
-
else(NOT WIN32)
|
33 |
-
# assume so, for now
|
34 |
-
set(CAIRO_FOUND TRUE)
|
35 |
-
endif(NOT WIN32)
|
36 |
-
|
37 |
-
if(CAIRO_FOUND)
|
38 |
-
# set it back as false
|
39 |
-
set(CAIRO_FOUND FALSE)
|
40 |
-
|
41 |
-
find_library(CAIRO_LIBRARY cairo
|
42 |
-
HINTS ${_pc_cairo_LIBRARY_DIRS}
|
43 |
-
)
|
44 |
-
set(CAIRO_LIBRARIES "${CAIRO_LIBRARY}")
|
45 |
-
|
46 |
-
find_path(CAIRO_INCLUDE_DIR cairo.h
|
47 |
-
HINTS ${_pc_cairo_INCLUDE_DIRS}
|
48 |
-
PATH_SUFFIXES cairo
|
49 |
-
)
|
50 |
-
set(CAIRO_INCLUDE_DIRS "${CAIRO_INCLUDE_DIR};${_pc_cairo_INCLUDE_DIRS}")
|
51 |
-
|
52 |
-
include(FindPackageHandleStandardArgs)
|
53 |
-
find_package_handle_standard_args(Cairo DEFAULT_MSG CAIRO_LIBRARIES CAIRO_INCLUDE_DIRS)
|
54 |
-
endif(CAIRO_FOUND)
|
55 |
-
|
56 |
-
endif(CAIRO_INCLUDE_DIRS AND CAIRO_LIBRARIES)
|
57 |
-
|
58 |
-
mark_as_advanced(
|
59 |
-
CAIRO_CFLAGS
|
60 |
-
CAIRO_INCLUDE_DIRS
|
61 |
-
CAIRO_LIBRARIES
|
62 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindGLIB.cmake
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
# - try to find the GLIB libraries
|
2 |
-
# Once done this will define
|
3 |
-
#
|
4 |
-
# GLIB_FOUND - system has GLib
|
5 |
-
# GLIB2_CFLAGS - the GLib CFlags
|
6 |
-
# GLIB2_LIBRARIES - Link these to use GLib
|
7 |
-
#
|
8 |
-
# Copyright 2008-2010 Pino Toscano, <[email protected]>
|
9 |
-
# Copyright 2013 Michael Weiser, <[email protected]>
|
10 |
-
#
|
11 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
12 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
13 |
-
|
14 |
-
include(FindPackageHandleStandardArgs)
|
15 |
-
|
16 |
-
find_package(PkgConfig REQUIRED)
|
17 |
-
|
18 |
-
pkg_check_modules(GLIB2 IMPORTED_TARGET "glib-2.0>=${GLIB_REQUIRED}" "gobject-2.0>=${GLIB_REQUIRED}" "gio-2.0>=${GLIB_REQUIRED}")
|
19 |
-
|
20 |
-
find_package_handle_standard_args(GLIB DEFAULT_MSG GLIB2_LIBRARIES GLIB2_CFLAGS)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindGObjectIntrospection.cmake
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
# - try to find gobject-introspection
|
2 |
-
#
|
3 |
-
# Once done this will define
|
4 |
-
#
|
5 |
-
# INTROSPECTION_FOUND - system has gobject-introspection
|
6 |
-
# INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner
|
7 |
-
# INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler
|
8 |
-
# INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate
|
9 |
-
# INTROSPECTION_GIRDIR
|
10 |
-
# INTROSPECTION_TYPELIBDIR
|
11 |
-
# INTROSPECTION_CFLAGS
|
12 |
-
# INTROSPECTION_LIBS
|
13 |
-
#
|
14 |
-
# Copyright (C) 2010, Pino Toscano, <[email protected]>
|
15 |
-
#
|
16 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
17 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
18 |
-
|
19 |
-
macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname)
|
20 |
-
execute_process(
|
21 |
-
COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0
|
22 |
-
OUTPUT_VARIABLE _result
|
23 |
-
RESULT_VARIABLE _null
|
24 |
-
)
|
25 |
-
|
26 |
-
if (_null)
|
27 |
-
else()
|
28 |
-
string(REGEX REPLACE "[\r\n]" " " _result "${_result}")
|
29 |
-
string(REGEX REPLACE " +$" "" _result "${_result}")
|
30 |
-
separate_arguments(_result)
|
31 |
-
set(${_outvar} ${_result} CACHE INTERNAL "")
|
32 |
-
endif()
|
33 |
-
endmacro(_GIR_GET_PKGCONFIG_VAR)
|
34 |
-
|
35 |
-
find_package(PkgConfig)
|
36 |
-
if(PKG_CONFIG_FOUND)
|
37 |
-
if(PACKAGE_FIND_VERSION_COUNT GREATER 0)
|
38 |
-
set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}")
|
39 |
-
endif()
|
40 |
-
pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp})
|
41 |
-
if(_pc_gir_FOUND)
|
42 |
-
set(INTROSPECTION_FOUND TRUE)
|
43 |
-
_gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner")
|
44 |
-
_gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler")
|
45 |
-
_gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate")
|
46 |
-
_gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir")
|
47 |
-
_gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir")
|
48 |
-
set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}")
|
49 |
-
set(INTROSPECTION_LIBS "${_pc_gir_LIBS}")
|
50 |
-
endif()
|
51 |
-
endif()
|
52 |
-
|
53 |
-
mark_as_advanced(
|
54 |
-
INTROSPECTION_SCANNER
|
55 |
-
INTROSPECTION_COMPILER
|
56 |
-
INTROSPECTION_GENERATE
|
57 |
-
INTROSPECTION_GIRDIR
|
58 |
-
INTROSPECTION_TYPELIBDIR
|
59 |
-
INTROSPECTION_CFLAGS
|
60 |
-
INTROSPECTION_LIBS
|
61 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindGTK.cmake
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
# - try to find GTK libraries
|
2 |
-
# Once done this will define
|
3 |
-
#
|
4 |
-
# GTK_FOUND - system has GTK
|
5 |
-
# GTK3_CFLAGS - the GTK CFlags
|
6 |
-
# GTK3_LIBRARIES - Link these to use GTK
|
7 |
-
#
|
8 |
-
# Copyright 2008-2010 Pino Toscano, <[email protected]>
|
9 |
-
#
|
10 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
11 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
12 |
-
|
13 |
-
# NOTE: As of cmake v3.18, built-in FindGTK is *only* valid for GTK1
|
14 |
-
|
15 |
-
include(FindPackageHandleStandardArgs)
|
16 |
-
|
17 |
-
find_package(PkgConfig REQUIRED)
|
18 |
-
|
19 |
-
pkg_check_modules(GTK3 IMPORTED_TARGET "gtk+-3.0>=${GTK_REQUIRED}" "gdk-pixbuf-2.0>=${GDK_PIXBUF_REQUIRED}")
|
20 |
-
|
21 |
-
find_package_handle_standard_args(GTK DEFAULT_MSG GTK3_LIBRARIES GTK3_CFLAGS)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindLCMS2.cmake
DELETED
@@ -1,73 +0,0 @@
|
|
1 |
-
# - Find LCMS2
|
2 |
-
# Find the LCMS2 includes and library
|
3 |
-
# This module defines
|
4 |
-
# LCMS2_INCLUDE_DIR, where to find lcms.h
|
5 |
-
# LCMS2_LIBRARIES, the libraries needed to use LCMS2.
|
6 |
-
# LCMS2_VERSION, The value of LCMS_VERSION defined in lcms.h
|
7 |
-
# LCMS2_FOUND, If false, do not try to use LCMS2.
|
8 |
-
|
9 |
-
|
10 |
-
# Copyright (c) 2008, Adrian Page, <[email protected]>
|
11 |
-
# Copyright (c) 2009, Cyrille Berger, <[email protected]>
|
12 |
-
#
|
13 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
14 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
15 |
-
|
16 |
-
|
17 |
-
# use pkg-config to get the directories and then use these values
|
18 |
-
# in the FIND_PATH() and FIND_LIBRARY() calls
|
19 |
-
if(NOT WIN32)
|
20 |
-
find_package(PkgConfig)
|
21 |
-
pkg_check_modules(PC_LCMS2 lcms2)
|
22 |
-
set(LCMS2_DEFINITIONS ${PC_LCMS2_CFLAGS_OTHER})
|
23 |
-
endif(NOT WIN32)
|
24 |
-
|
25 |
-
find_path(LCMS2_INCLUDE_DIR lcms2.h
|
26 |
-
PATHS
|
27 |
-
${PC_LCMS2_INCLUDEDIR}
|
28 |
-
${PC_LCMS2_INCLUDE_DIRS}
|
29 |
-
PATH_SUFFIXES lcms2 liblcms2
|
30 |
-
)
|
31 |
-
|
32 |
-
find_library(LCMS2_LIBRARIES NAMES lcms2 liblcms2 lcms-2 liblcms-2
|
33 |
-
PATHS
|
34 |
-
${PC_LCMS2_LIBDIR}
|
35 |
-
${PC_LCMS2_LIBRARY_DIRS}
|
36 |
-
PATH_SUFFIXES lcms2
|
37 |
-
)
|
38 |
-
|
39 |
-
if(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES)
|
40 |
-
set(LCMS2_FOUND TRUE)
|
41 |
-
else(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES)
|
42 |
-
set(LCMS2_FOUND FALSE)
|
43 |
-
endif(LCMS2_INCLUDE_DIR AND LCMS2_LIBRARIES)
|
44 |
-
|
45 |
-
if(LCMS2_FOUND)
|
46 |
-
file(READ ${LCMS2_INCLUDE_DIR}/lcms2.h LCMS2_VERSION_CONTENT)
|
47 |
-
string(REGEX MATCH "#define LCMS_VERSION[ ]*[0-9]*\n" LCMS2_VERSION_MATCH ${LCMS2_VERSION_CONTENT})
|
48 |
-
if(LCMS2_VERSION_MATCH)
|
49 |
-
string(REGEX REPLACE "#define LCMS_VERSION[ ]*([0-9]*)\n" "\\1" LCMS2_VERSION ${LCMS2_VERSION_MATCH})
|
50 |
-
if(NOT LCMS2_FIND_QUIETLY)
|
51 |
-
string(SUBSTRING ${LCMS2_VERSION} 0 1 LCMS2_MAJOR_VERSION)
|
52 |
-
string(SUBSTRING ${LCMS2_VERSION} 1 2 LCMS2_MINOR_VERSION)
|
53 |
-
message(STATUS "Found lcms version ${LCMS2_MAJOR_VERSION}.${LCMS2_MINOR_VERSION}, ${LCMS2_LIBRARIES}")
|
54 |
-
endif(NOT LCMS2_FIND_QUIETLY)
|
55 |
-
else(LCMS2_VERSION_MATCH)
|
56 |
-
if(NOT LCMS2_FIND_QUIETLY)
|
57 |
-
message(STATUS "Found lcms2 but failed to find version ${LCMS2_LIBRARIES}")
|
58 |
-
endif(NOT LCMS2_FIND_QUIETLY)
|
59 |
-
set(LCMS2_VERSION NOTFOUND)
|
60 |
-
endif(LCMS2_VERSION_MATCH)
|
61 |
-
else(LCMS2_FOUND)
|
62 |
-
if(NOT LCMS2_FIND_QUIETLY)
|
63 |
-
if(LCMS2_FIND_REQUIRED)
|
64 |
-
message(FATAL_ERROR "Required package lcms2 NOT found")
|
65 |
-
else(LCMS2_FIND_REQUIRED)
|
66 |
-
message(STATUS "lcms2 NOT found")
|
67 |
-
endif(LCMS2_FIND_REQUIRED)
|
68 |
-
endif(NOT LCMS2_FIND_QUIETLY)
|
69 |
-
endif(LCMS2_FOUND)
|
70 |
-
|
71 |
-
mark_as_advanced(LCMS2_INCLUDE_DIR LCMS2_LIBRARIES LCMS2_VERSION)
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/FindNSS3.cmake
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
# - try to find NSS3 libraries
|
2 |
-
# Once done this will define
|
3 |
-
#
|
4 |
-
# NSS3_FOUND - system has NSS3
|
5 |
-
# PkgConfig::NSS3 - Use this in target_link_libraries to bring both includes and link libraries
|
6 |
-
#
|
7 |
-
# Copyright 2015 André Guerreiro, <[email protected]>
|
8 |
-
# Copyright 2022 Albert Astals Cid, <[email protected]>
|
9 |
-
#
|
10 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
11 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
12 |
-
|
13 |
-
include(FindPackageHandleStandardArgs)
|
14 |
-
|
15 |
-
find_package(PkgConfig REQUIRED)
|
16 |
-
|
17 |
-
pkg_check_modules(NSS3 IMPORTED_TARGET "nss>=3.49")
|
18 |
-
|
19 |
-
find_package_handle_standard_args(NSS3 DEFAULT_MSG NSS3_LIBRARIES NSS3_CFLAGS)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/GObjectIntrospectionMacros.cmake
DELETED
@@ -1,95 +0,0 @@
|
|
1 |
-
# Copyright (C) 2010, Pino Toscano, <[email protected]>
|
2 |
-
#
|
3 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
4 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
5 |
-
|
6 |
-
macro(_gir_list_prefix _outvar _listvar _prefix)
|
7 |
-
set(${_outvar})
|
8 |
-
foreach(_item IN LISTS ${_listvar})
|
9 |
-
list(APPEND ${_outvar} ${_prefix}${_item})
|
10 |
-
endforeach()
|
11 |
-
endmacro(_gir_list_prefix)
|
12 |
-
|
13 |
-
macro(gir_add_introspections introspections_girs)
|
14 |
-
|
15 |
-
set(_gir_girs)
|
16 |
-
set(_gir_typelibs)
|
17 |
-
|
18 |
-
foreach(gir IN LISTS ${introspections_girs})
|
19 |
-
|
20 |
-
set(_gir_name "${gir}")
|
21 |
-
|
22 |
-
## Transform the gir filename to something which can reference through a variable
|
23 |
-
## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
|
24 |
-
string(REPLACE "-" "_" _gir_name "${_gir_name}")
|
25 |
-
string(REPLACE "." "_" _gir_name "${_gir_name}")
|
26 |
-
|
27 |
-
# Namespace and Version is either fetched from the gir filename
|
28 |
-
# or the _NAMESPACE/_VERSION variable combo
|
29 |
-
set(_gir_namespace "${${_gir_name}_NAMESPACE}")
|
30 |
-
if (_gir_namespace STREQUAL "")
|
31 |
-
string(REGEX REPLACE "([^-]+)-.*" "\\1" _gir_namespace "${gir}")
|
32 |
-
endif ()
|
33 |
-
set(_gir_version "${${_gir_name}_VERSION}")
|
34 |
-
if (_gir_version STREQUAL "")
|
35 |
-
string(REGEX REPLACE ".*-([^-]+).gir" "\\1" _gir_version "${gir}")
|
36 |
-
endif ()
|
37 |
-
|
38 |
-
# _PROGRAM is an optional variable which needs it's own --program argument
|
39 |
-
set(_gir_program "${${_gir_name}_PROGRAM}")
|
40 |
-
if (NOT _gir_program STREQUAL "")
|
41 |
-
set(_gir_program "--program=${_gir_program}")
|
42 |
-
endif ()
|
43 |
-
|
44 |
-
# Variables which provides a list of things
|
45 |
-
_gir_list_prefix(_gir_libraries ${_gir_name}_LIBS "--library=")
|
46 |
-
_gir_list_prefix(_gir_packages ${_gir_name}_PACKAGES "--pkg=")
|
47 |
-
_gir_list_prefix(_gir_includes ${_gir_name}_INCLUDES "--include=")
|
48 |
-
_gir_list_prefix(_gir_export_packages ${_gir_name}_EXPORT_PACKAGES "--pkg-export=")
|
49 |
-
|
50 |
-
# Reuse the LIBTOOL variable from by automake if it's set
|
51 |
-
set(_gir_libtool "--no-libtool")
|
52 |
-
|
53 |
-
add_custom_command(
|
54 |
-
COMMAND ${INTROSPECTION_SCANNER}
|
55 |
-
${INTROSPECTION_SCANNER_ARGS}
|
56 |
-
--namespace=${_gir_namespace}
|
57 |
-
--nsversion=${_gir_version}
|
58 |
-
${_gir_libtool}
|
59 |
-
${_gir_program}
|
60 |
-
${_gir_libraries}
|
61 |
-
${_gir_packages}
|
62 |
-
${_gir_includes}
|
63 |
-
${_gir_export_packages}
|
64 |
-
${${_gir_name}_SCANNERFLAGS}
|
65 |
-
${${_gir_name}_CFLAGS}
|
66 |
-
${${_gir_name}_FILES}
|
67 |
-
--output ${CMAKE_CURRENT_BINARY_DIR}/${gir}
|
68 |
-
DEPENDS ${${_gir_name}_FILES}
|
69 |
-
${${_gir_name}_LIBS}
|
70 |
-
OUTPUT ${gir}
|
71 |
-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
72 |
-
VERBATIM
|
73 |
-
)
|
74 |
-
list(APPEND _gir_girs ${CMAKE_CURRENT_BINARY_DIR}/${gir})
|
75 |
-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${gir} DESTINATION ${CMAKE_INSTALL_DATADIR}/gir-1.0)
|
76 |
-
|
77 |
-
string(REPLACE ".gir" ".typelib" _typelib "${gir}")
|
78 |
-
add_custom_command(
|
79 |
-
COMMAND ${INTROSPECTION_COMPILER}
|
80 |
-
${INTROSPECTION_COMPILER_ARGS}
|
81 |
-
--includedir=.
|
82 |
-
${CMAKE_CURRENT_BINARY_DIR}/${gir}
|
83 |
-
-o ${CMAKE_CURRENT_BINARY_DIR}/${_typelib}
|
84 |
-
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir}
|
85 |
-
OUTPUT ${_typelib}
|
86 |
-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
87 |
-
)
|
88 |
-
list(APPEND _gir_typelibs ${CMAKE_CURRENT_BINARY_DIR}/${_typelib})
|
89 |
-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DESTINATION ${CMAKE_INSTALL_LIBDIR}/girepository-1.0)
|
90 |
-
|
91 |
-
endforeach()
|
92 |
-
|
93 |
-
add_custom_target(gir-typelibs ALL DEPENDS ${_gir_typelibs})
|
94 |
-
|
95 |
-
endmacro(gir_add_introspections)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/MacroOptionalFindPackage.cmake
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION()
|
2 |
-
# MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
|
3 |
-
# This macro is a combination of OPTION() and FIND_PACKAGE(), it
|
4 |
-
# works like FIND_PACKAGE(), but additionally it automatically creates
|
5 |
-
# an option name WITH_<name>, which can be disabled via the cmake GUI.
|
6 |
-
# or via -DWITH_<name>=OFF
|
7 |
-
# The standard <name>_FOUND variables can be used in the same way
|
8 |
-
# as when using the normal FIND_PACKAGE()
|
9 |
-
|
10 |
-
# Copyright (c) 2006-2010 Alexander Neundorf, <[email protected]>
|
11 |
-
#
|
12 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
13 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
14 |
-
|
15 |
-
# This is just a helper macro to set a bunch of variables empty.
|
16 |
-
# We don't know whether the package uses UPPERCASENAME or CamelCaseName, so we try both:
|
17 |
-
macro(_MOFP_SET_EMPTY_IF_DEFINED _name _var)
|
18 |
-
if(DEFINED ${_name}_${_var})
|
19 |
-
set(${_name}_${_var} "")
|
20 |
-
endif(DEFINED ${_name}_${_var})
|
21 |
-
|
22 |
-
string(TOUPPER ${_name} _nameUpper)
|
23 |
-
if(DEFINED ${_nameUpper}_${_var})
|
24 |
-
set(${_nameUpper}_${_var} "")
|
25 |
-
endif(DEFINED ${_nameUpper}_${_var})
|
26 |
-
endmacro(_MOFP_SET_EMPTY_IF_DEFINED _package _var)
|
27 |
-
|
28 |
-
|
29 |
-
macro (MACRO_OPTIONAL_FIND_PACKAGE _name )
|
30 |
-
option(WITH_${_name} "Search for ${_name} package" ON)
|
31 |
-
if (WITH_${_name})
|
32 |
-
find_package(${_name} ${ARGN})
|
33 |
-
else (WITH_${_name})
|
34 |
-
string(TOUPPER ${_name} _nameUpper)
|
35 |
-
set(${_name}_FOUND FALSE)
|
36 |
-
set(${_nameUpper}_FOUND FALSE)
|
37 |
-
|
38 |
-
_mofp_set_empty_if_defined(${_name} INCLUDE_DIRS)
|
39 |
-
_mofp_set_empty_if_defined(${_name} INCLUDE_DIR)
|
40 |
-
_mofp_set_empty_if_defined(${_name} INCLUDES)
|
41 |
-
_mofp_set_empty_if_defined(${_name} LIBRARY)
|
42 |
-
_mofp_set_empty_if_defined(${_name} LIBRARIES)
|
43 |
-
_mofp_set_empty_if_defined(${_name} LIBS)
|
44 |
-
_mofp_set_empty_if_defined(${_name} FLAGS)
|
45 |
-
_mofp_set_empty_if_defined(${_name} DEFINITIONS)
|
46 |
-
endif (WITH_${_name})
|
47 |
-
endmacro (MACRO_OPTIONAL_FIND_PACKAGE)
|
48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/PopplerDefaults.cmake
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
# enable the testing facilities
|
2 |
-
enable_testing()
|
3 |
-
|
4 |
-
# put the include directories of the sources before other include paths
|
5 |
-
# (eg, system includes)
|
6 |
-
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
|
7 |
-
|
8 |
-
# colored output
|
9 |
-
set(CMAKE_COLOR_MAKEFILE ON)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cmake/modules/PopplerMacros.cmake
DELETED
@@ -1,199 +0,0 @@
|
|
1 |
-
# Copyright 2008 Pino Toscano, <[email protected]>
|
2 |
-
#
|
3 |
-
# Redistribution and use is allowed according to the terms of the BSD license.
|
4 |
-
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
5 |
-
|
6 |
-
macro(POPPLER_ADD_TEST exe build_flag)
|
7 |
-
set(build_test ${${build_flag}})
|
8 |
-
|
9 |
-
# Omit the disabled test binaries from the "all" target
|
10 |
-
if(NOT build_test)
|
11 |
-
set(_add_executable_param ${_add_executable_param} EXCLUDE_FROM_ALL)
|
12 |
-
endif(NOT build_test)
|
13 |
-
|
14 |
-
add_executable(${exe} ${_add_executable_param} ${ARGN})
|
15 |
-
|
16 |
-
# if the tests are EXCLUDE_FROM_ALL, add a target "buildtests" to build all tests
|
17 |
-
# Don't try to use custom targets if building with Visual Studio
|
18 |
-
if(NOT build_test AND NOT MSVC_IDE)
|
19 |
-
get_property(_buildtestsAdded GLOBAL PROPERTY BUILDTESTS_ADDED)
|
20 |
-
if(NOT _buildtestsAdded)
|
21 |
-
add_custom_target(buildtests)
|
22 |
-
set_property(GLOBAL PROPERTY BUILDTESTS_ADDED TRUE)
|
23 |
-
endif(NOT _buildtestsAdded)
|
24 |
-
add_dependencies(buildtests ${exe})
|
25 |
-
endif(NOT build_test AND NOT MSVC_IDE)
|
26 |
-
endmacro(POPPLER_ADD_TEST)
|
27 |
-
|
28 |
-
macro(POPPLER_CREATE_INSTALL_PKGCONFIG generated_file install_location)
|
29 |
-
configure_file(${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY)
|
30 |
-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} DESTINATION ${install_location})
|
31 |
-
endmacro(POPPLER_CREATE_INSTALL_PKGCONFIG)
|
32 |
-
|
33 |
-
macro(SHOW_END_MESSAGE what value)
|
34 |
-
string(LENGTH ${what} length_what)
|
35 |
-
math(EXPR left_char "20 - ${length_what}")
|
36 |
-
set(blanks)
|
37 |
-
foreach(_i RANGE 1 ${left_char})
|
38 |
-
set(blanks "${blanks} ")
|
39 |
-
endforeach(_i)
|
40 |
-
|
41 |
-
message(" ${what}:${blanks} ${value}")
|
42 |
-
endmacro(SHOW_END_MESSAGE)
|
43 |
-
|
44 |
-
macro(SHOW_END_MESSAGE_YESNO what enabled)
|
45 |
-
if(${enabled})
|
46 |
-
set(enabled_string "yes")
|
47 |
-
else(${enabled})
|
48 |
-
set(enabled_string "no")
|
49 |
-
endif(${enabled})
|
50 |
-
|
51 |
-
show_end_message("${what}" "${enabled_string}")
|
52 |
-
endmacro(SHOW_END_MESSAGE_YESNO)
|
53 |
-
|
54 |
-
macro(POPPLER_CHECK_LINK_FLAG flag var)
|
55 |
-
set(_save_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
|
56 |
-
include(CheckCXXSourceCompiles)
|
57 |
-
set(CMAKE_REQUIRED_LIBRARIES "${flag}")
|
58 |
-
check_cxx_source_compiles("int main() { return 0; }" ${var})
|
59 |
-
set(CMAKE_REQUIRED_LIBRARIES "${_save_CMAKE_REQUIRED_LIBRARIES}")
|
60 |
-
endmacro(POPPLER_CHECK_LINK_FLAG)
|
61 |
-
|
62 |
-
|
63 |
-
set(CMAKE_SYSTEM_INCLUDE_PATH ${CMAKE_SYSTEM_INCLUDE_PATH}
|
64 |
-
"${CMAKE_INSTALL_PREFIX}/include" )
|
65 |
-
|
66 |
-
set(CMAKE_SYSTEM_PROGRAM_PATH ${CMAKE_SYSTEM_PROGRAM_PATH}
|
67 |
-
"${CMAKE_INSTALL_PREFIX}/bin" )
|
68 |
-
|
69 |
-
set(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_SYSTEM_LIBRARY_PATH}
|
70 |
-
"${CMAKE_INSTALL_PREFIX}/lib" )
|
71 |
-
|
72 |
-
# under Windows dlls may be also installed in bin/
|
73 |
-
if(WIN32)
|
74 |
-
set(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_SYSTEM_LIBRARY_PATH}
|
75 |
-
"${CMAKE_INSTALL_PREFIX}/bin" )
|
76 |
-
endif(WIN32)
|
77 |
-
|
78 |
-
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
79 |
-
set(CMAKE_BUILD_TYPE RelWithDebInfo)
|
80 |
-
endif(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
81 |
-
|
82 |
-
string(TOUPPER "${CMAKE_BUILD_TYPE}" _CMAKE_BUILD_TYPE_UPPER)
|
83 |
-
set(_known_build_types RELWITHDEBINFO;RELEASE;DEBUG;DEBUGFULL;PROFILE)
|
84 |
-
# We override CMAKE_CXX_FLAGS_${_CMAKE_BUILD_TYPE_UPPER} below. If the user
|
85 |
-
# selects a CMAKE_BUILD_TYPE that is not handled by the logic below, we will
|
86 |
-
# end up dropping the previous flags (e.g. those set in a cross-compilation
|
87 |
-
# CMake toolchain file). To avoid surprising compilation errors, we emit an
|
88 |
-
# error in that case, so that the user can handle the passed CMAKE_BUILD_TYPE
|
89 |
-
# in the compiler flags logic below.
|
90 |
-
if (NOT "${_CMAKE_BUILD_TYPE_UPPER}" IN_LIST _known_build_types)
|
91 |
-
message(FATAL_ERROR "Unsupported CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
|
92 |
-
endif()
|
93 |
-
set(_save_cflags "${CMAKE_C_FLAGS}")
|
94 |
-
set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
|
95 |
-
|
96 |
-
if(CMAKE_COMPILER_IS_GNUCXX)
|
97 |
-
# set the default compile warnings
|
98 |
-
set(_warn "-Wall -Wextra -Wpedantic")
|
99 |
-
set(_warn "${_warn} -Wno-unused-parameter")
|
100 |
-
set(_warn "${_warn} -Wcast-align")
|
101 |
-
set(_warn "${_warn} -Wformat-security")
|
102 |
-
set(_warn "${_warn} -Wframe-larger-than=65536")
|
103 |
-
set(_warn "${_warn} -Wlogical-op")
|
104 |
-
set(_warn "${_warn} -Wmissing-format-attribute")
|
105 |
-
set(_warn "${_warn} -Wnon-virtual-dtor")
|
106 |
-
set(_warn "${_warn} -Woverloaded-virtual")
|
107 |
-
set(_warn "${_warn} -Wmissing-declarations")
|
108 |
-
set(_warn "${_warn} -Wundef")
|
109 |
-
set(_warn "${_warn} -Wzero-as-null-pointer-constant")
|
110 |
-
set(_warn "${_warn} -Wshadow")
|
111 |
-
set(_warn "${_warn} -Wsuggest-override")
|
112 |
-
|
113 |
-
# set extra warnings
|
114 |
-
set(_warnx "${_warnx} -Wconversion")
|
115 |
-
set(_warnx "${_warnx} -Wuseless-cast")
|
116 |
-
|
117 |
-
set(DEFAULT_COMPILE_WARNINGS "${_warn}")
|
118 |
-
set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
|
119 |
-
|
120 |
-
set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -fno-operator-names -D_DEFAULT_SOURCE")
|
121 |
-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
|
122 |
-
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
123 |
-
set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
|
124 |
-
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline")
|
125 |
-
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
|
126 |
-
set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE")
|
127 |
-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
|
128 |
-
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
|
129 |
-
set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
|
130 |
-
set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline")
|
131 |
-
set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
|
132 |
-
|
133 |
-
poppler_check_link_flag("-Wl,--as-needed" GCC_HAS_AS_NEEDED)
|
134 |
-
if(GCC_HAS_AS_NEEDED)
|
135 |
-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed")
|
136 |
-
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
|
137 |
-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
|
138 |
-
endif(GCC_HAS_AS_NEEDED)
|
139 |
-
set(_compiler_flags_changed 1)
|
140 |
-
endif (CMAKE_COMPILER_IS_GNUCXX)
|
141 |
-
|
142 |
-
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
143 |
-
# set the default compile warnings
|
144 |
-
set(_warn "-Wall -Wextra -Wpedantic")
|
145 |
-
set(_warn "${_warn} -Wno-unused-parameter")
|
146 |
-
set(_warn "${_warn} -Wcast-align")
|
147 |
-
set(_warn "${_warn} -Wformat-security")
|
148 |
-
set(_warn "${_warn} -Wframe-larger-than=65536")
|
149 |
-
set(_warn "${_warn} -Wmissing-format-attribute")
|
150 |
-
set(_warn "${_warn} -Wnon-virtual-dtor")
|
151 |
-
set(_warn "${_warn} -Woverloaded-virtual")
|
152 |
-
set(_warn "${_warn} -Wmissing-declarations")
|
153 |
-
set(_warn "${_warn} -Wundef")
|
154 |
-
set(_warn "${_warn} -Wzero-as-null-pointer-constant")
|
155 |
-
set(_warn "${_warn} -Wshadow")
|
156 |
-
set(_warn "${_warn} -Wweak-vtables")
|
157 |
-
|
158 |
-
# set extra warnings
|
159 |
-
set(_warnx "${_warnx} -Wconversion")
|
160 |
-
|
161 |
-
set(DEFAULT_COMPILE_WARNINGS "${_warn}")
|
162 |
-
set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
|
163 |
-
|
164 |
-
set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE")
|
165 |
-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
|
166 |
-
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
167 |
-
# clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
|
168 |
-
set(CMAKE_CXX_FLAGS_DEBUG "-g")
|
169 |
-
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline")
|
170 |
-
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
|
171 |
-
set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE")
|
172 |
-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
|
173 |
-
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
|
174 |
-
# clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
|
175 |
-
set(CMAKE_C_FLAGS_DEBUG "-g")
|
176 |
-
set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline")
|
177 |
-
set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
|
178 |
-
set(_compiler_flags_changed 1)
|
179 |
-
endif()
|
180 |
-
|
181 |
-
if(CMAKE_C_COMPILER MATCHES "icc")
|
182 |
-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
|
183 |
-
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
184 |
-
set(CMAKE_CXX_FLAGS_DEBUG "-O2 -g -0b0 -noalign")
|
185 |
-
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g -Ob0 -noalign")
|
186 |
-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
|
187 |
-
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
|
188 |
-
set(CMAKE_C_FLAGS_DEBUG "-O2 -g -Ob0 -noalign")
|
189 |
-
set(CMAKE_C_FLAGS_DEBUGFULL "-g -Ob0 -noalign")
|
190 |
-
set(_compiler_flags_changed 1)
|
191 |
-
endif(CMAKE_C_COMPILER MATCHES "icc")
|
192 |
-
|
193 |
-
if(_compiler_flags_changed)
|
194 |
-
# Ensure that the previous CMAKE_{C,CXX}_FLAGS are included in the current configuration flags.
|
195 |
-
foreach(_build_type ${_known_build_types})
|
196 |
-
set(CMAKE_CXX_FLAGS_${_build_type} "${CMAKE_CXX_FLAGS_${_build_type}} ${_save_cxxflags}")
|
197 |
-
set(CMAKE_C_FLAGS_${_build_type} "${CMAKE_C_FLAGS_${_build_type}} ${_save_cflags}")
|
198 |
-
endforeach()
|
199 |
-
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/config.h.cmake
DELETED
@@ -1,196 +0,0 @@
|
|
1 |
-
/* config.h. Generated from config.h.cmake by cmake. */
|
2 |
-
|
3 |
-
/* Build against libcurl. */
|
4 |
-
#cmakedefine ENABLE_LIBCURL 1
|
5 |
-
|
6 |
-
/* Use libjpeg instead of builtin jpeg decoder. */
|
7 |
-
#cmakedefine ENABLE_LIBJPEG 1
|
8 |
-
|
9 |
-
/* Use libopenjpeg instead of builtin jpeg2000 decoder. */
|
10 |
-
#cmakedefine ENABLE_LIBOPENJPEG 1
|
11 |
-
|
12 |
-
/* Build against libtiff. */
|
13 |
-
#cmakedefine ENABLE_LIBTIFF 1
|
14 |
-
|
15 |
-
/* Build against libpng. */
|
16 |
-
#cmakedefine ENABLE_LIBPNG 1
|
17 |
-
|
18 |
-
/* Do not hardcode the library location */
|
19 |
-
#cmakedefine ENABLE_RELOCATABLE 1
|
20 |
-
|
21 |
-
/* Use zlib instead of builtin zlib decoder to uncompress flate streams. */
|
22 |
-
#cmakedefine ENABLE_ZLIB_UNCOMPRESS 1
|
23 |
-
|
24 |
-
/* Build against libnss3 for digital signature validation */
|
25 |
-
#cmakedefine ENABLE_NSS3 1
|
26 |
-
|
27 |
-
/* Build against libgpgme for digital signature validation */
|
28 |
-
#cmakedefine ENABLE_GPGME 1
|
29 |
-
|
30 |
-
/* Signatures enabled */
|
31 |
-
#cmakedefine ENABLE_SIGNATURES 1
|
32 |
-
|
33 |
-
/* Default signature backend */
|
34 |
-
#cmakedefine DEFAULT_SIGNATURE_BACKEND "${DEFAULT_SIGNATURE_BACKEND}"
|
35 |
-
|
36 |
-
/* Use cairo for rendering. */
|
37 |
-
#cmakedefine HAVE_CAIRO 1
|
38 |
-
|
39 |
-
/* Do we have any DCT decoder?. */
|
40 |
-
#cmakedefine HAVE_DCT_DECODER 1
|
41 |
-
|
42 |
-
/* Do we have any JPX decoder?. */
|
43 |
-
#cmakedefine HAVE_JPX_DECODER 1
|
44 |
-
|
45 |
-
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
46 |
-
*/
|
47 |
-
#cmakedefine HAVE_DIRENT_H 1
|
48 |
-
|
49 |
-
/* Define to 1 if you have the <dlfcn.h> header file. */
|
50 |
-
#cmakedefine HAVE_DLFCN_H 1
|
51 |
-
|
52 |
-
/* Define to 1 if you have the <fcntl.h> header file. */
|
53 |
-
#cmakedefine HAVE_FCNTL_H 1
|
54 |
-
|
55 |
-
/* Define to 1 if you have the `fseek64' function. */
|
56 |
-
#cmakedefine HAVE_FSEEK64 1
|
57 |
-
|
58 |
-
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
59 |
-
#cmakedefine HAVE_FSEEKO 1
|
60 |
-
|
61 |
-
/* Define to 1 if you have the `ftell64' function. */
|
62 |
-
#cmakedefine HAVE_FTELL64 1
|
63 |
-
|
64 |
-
/* Define to 1 if you have the `pread64' function. */
|
65 |
-
#cmakedefine HAVE_PREAD64 1
|
66 |
-
|
67 |
-
/* Define to 1 if you have the `lseek64' function. */
|
68 |
-
#cmakedefine HAVE_LSEEK64 1
|
69 |
-
|
70 |
-
/* Defines if gettimeofday is available on your system */
|
71 |
-
#cmakedefine HAVE_GETTIMEOFDAY 1
|
72 |
-
|
73 |
-
/* Defines if gmtime_r is available on your system */
|
74 |
-
#cmakedefine HAVE_GMTIME_R 1
|
75 |
-
|
76 |
-
/* Defines if timegm is available on your system */
|
77 |
-
#cmakedefine HAVE_TIMEGM 1
|
78 |
-
|
79 |
-
/* Define to 1 if you have the `z' library (-lz). */
|
80 |
-
#cmakedefine HAVE_LIBZ 1
|
81 |
-
|
82 |
-
/* Defines if localtime_r is available on your system */
|
83 |
-
#cmakedefine HAVE_LOCALTIME_R 1
|
84 |
-
|
85 |
-
/* Define to 1 if you have the `mkstemp' function. */
|
86 |
-
#cmakedefine HAVE_MKSTEMP 1
|
87 |
-
|
88 |
-
/* Defines if strtok_r is available on your system */
|
89 |
-
#cmakedefine HAVE_STRTOK_R 1
|
90 |
-
|
91 |
-
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
92 |
-
#cmakedefine HAVE_NDIR_H 1
|
93 |
-
|
94 |
-
/* Define to 1 if you have the `popen' function. */
|
95 |
-
#cmakedefine HAVE_POPEN 1
|
96 |
-
|
97 |
-
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
98 |
-
*/
|
99 |
-
#cmakedefine HAVE_SYS_DIR_H 1
|
100 |
-
|
101 |
-
/* Define to 1 if you have the <sys/mman.h> header file. */
|
102 |
-
#cmakedefine HAVE_SYS_MMAN_H 1
|
103 |
-
|
104 |
-
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
105 |
-
*/
|
106 |
-
#cmakedefine HAVE_SYS_NDIR_H 1
|
107 |
-
|
108 |
-
/* Define to 1 if you have the <sys/stat.h> header file. */
|
109 |
-
#cmakedefine HAVE_SYS_STAT_H 1
|
110 |
-
|
111 |
-
/* Define to 1 if you have the <unistd.h> header file. */
|
112 |
-
#cmakedefine HAVE_UNISTD_H 1
|
113 |
-
|
114 |
-
/* Define to 1 if you have a big endian machine */
|
115 |
-
#cmakedefine WORDS_BIGENDIAN 1
|
116 |
-
|
117 |
-
/* Define as const if the declaration of iconv() needs const. */
|
118 |
-
#define ICONV_CONST ${ICONV_CONST}
|
119 |
-
|
120 |
-
/* Generate OPI comments in PS output. */
|
121 |
-
#cmakedefine OPI_SUPPORT 1
|
122 |
-
|
123 |
-
/* Name of package */
|
124 |
-
#define PACKAGE "poppler"
|
125 |
-
|
126 |
-
/* Define to the address where bug reports for this package should be sent. */
|
127 |
-
#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=poppler"
|
128 |
-
|
129 |
-
/* Define to the full name of this package. */
|
130 |
-
#define PACKAGE_NAME "poppler"
|
131 |
-
|
132 |
-
/* Define to the full name and version of this package. */
|
133 |
-
#define PACKAGE_STRING "poppler ${POPPLER_VERSION}"
|
134 |
-
|
135 |
-
/* Define to the one symbol short name of this package. */
|
136 |
-
#define PACKAGE_TARNAME "poppler"
|
137 |
-
|
138 |
-
/* Define to the home page for this package. */
|
139 |
-
#define PACKAGE_URL ""
|
140 |
-
|
141 |
-
/* Define to the version of this package. */
|
142 |
-
#define PACKAGE_VERSION "${POPPLER_VERSION}"
|
143 |
-
|
144 |
-
/* Poppler data dir */
|
145 |
-
#define POPPLER_DATADIR "${POPPLER_DATADIR}"
|
146 |
-
|
147 |
-
/* Support for curl based doc builder is compiled in. */
|
148 |
-
#cmakedefine POPPLER_HAS_CURL_SUPPORT 1
|
149 |
-
|
150 |
-
/* Enable word list support. */
|
151 |
-
#cmakedefine TEXTOUT_WORD_LIST 1
|
152 |
-
|
153 |
-
/* Defines if use cms */
|
154 |
-
#cmakedefine USE_CMS 1
|
155 |
-
|
156 |
-
/* Use single precision arithmetic in the Splash backend */
|
157 |
-
#cmakedefine USE_FLOAT 1
|
158 |
-
|
159 |
-
/* Version number of package */
|
160 |
-
#define VERSION "${POPPLER_VERSION}"
|
161 |
-
|
162 |
-
/* Use fontconfig font configuration backend */
|
163 |
-
#cmakedefine WITH_FONTCONFIGURATION_FONTCONFIG 1
|
164 |
-
|
165 |
-
/* Use win32 font configuration backend */
|
166 |
-
#cmakedefine WITH_FONTCONFIGURATION_WIN32 1
|
167 |
-
|
168 |
-
/* Use android font configuration backend */
|
169 |
-
#cmakedefine WITH_FONTCONFIGURATION_ANDROID 1
|
170 |
-
|
171 |
-
/* OpenJPEG with the OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG flag */
|
172 |
-
#cmakedefine WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG 1
|
173 |
-
|
174 |
-
/* MS defined snprintf as deprecated but then added it in Visual Studio 2015. */
|
175 |
-
#if defined(_MSC_VER) && _MSC_VER < 1900
|
176 |
-
#define snprintf _snprintf
|
177 |
-
#endif
|
178 |
-
|
179 |
-
//------------------------------------------------------------------------
|
180 |
-
// popen
|
181 |
-
//------------------------------------------------------------------------
|
182 |
-
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
183 |
-
#define popen _popen
|
184 |
-
#define pclose _pclose
|
185 |
-
#define strncasecmp _strnicmp
|
186 |
-
#define strcasecmp _stricmp
|
187 |
-
#endif
|
188 |
-
|
189 |
-
/* Number of bits in a file offset, on hosts where this is settable. */
|
190 |
-
#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
|
191 |
-
|
192 |
-
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
193 |
-
/* TODO This is wrong, port if needed #undef _LARGEFILE_SOURCE */
|
194 |
-
|
195 |
-
/* Define for large files, on AIX-style hosts. */
|
196 |
-
/* TODO This is wrong, port if needed #undef _LARGE_FILES */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/CMakeLists.txt
DELETED
@@ -1,52 +0,0 @@
|
|
1 |
-
include_directories(
|
2 |
-
${CMAKE_CURRENT_SOURCE_DIR}
|
3 |
-
${CMAKE_CURRENT_BINARY_DIR}
|
4 |
-
)
|
5 |
-
|
6 |
-
configure_file(poppler-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/poppler-version.h @ONLY)
|
7 |
-
|
8 |
-
add_subdirectory(tests)
|
9 |
-
|
10 |
-
set(poppler_cpp_SRCS
|
11 |
-
poppler-destination.cpp
|
12 |
-
poppler-document.cpp
|
13 |
-
poppler-embedded-file.cpp
|
14 |
-
poppler-font.cpp
|
15 |
-
poppler-global.cpp
|
16 |
-
poppler-image.cpp
|
17 |
-
poppler-page.cpp
|
18 |
-
poppler-page-renderer.cpp
|
19 |
-
poppler-page-transition.cpp
|
20 |
-
poppler-private.cpp
|
21 |
-
poppler-rectangle.cpp
|
22 |
-
poppler-toc.cpp
|
23 |
-
poppler-version.cpp
|
24 |
-
)
|
25 |
-
|
26 |
-
add_library(poppler-cpp ${poppler_cpp_SRCS})
|
27 |
-
generate_export_header(poppler-cpp BASE_NAME poppler-cpp EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/poppler_cpp_export.h")
|
28 |
-
set_target_properties(poppler-cpp PROPERTIES VERSION 0.11.0 SOVERSION 0)
|
29 |
-
if(MINGW AND BUILD_SHARED_LIBS)
|
30 |
-
get_target_property(POPPLER_CPP_SOVERSION poppler-cpp SOVERSION)
|
31 |
-
set_target_properties(poppler-cpp PROPERTIES SUFFIX "-${POPPLER_CPP_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
32 |
-
endif()
|
33 |
-
target_link_libraries(poppler-cpp poppler Iconv::Iconv)
|
34 |
-
install(TARGETS poppler-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
35 |
-
|
36 |
-
install(FILES
|
37 |
-
poppler-destination.h
|
38 |
-
poppler-document.h
|
39 |
-
poppler-embedded-file.h
|
40 |
-
poppler-font.h
|
41 |
-
poppler-font-private.h
|
42 |
-
poppler-global.h
|
43 |
-
poppler-image.h
|
44 |
-
poppler-page.h
|
45 |
-
poppler-page-renderer.h
|
46 |
-
poppler-page-transition.h
|
47 |
-
poppler-rectangle.h
|
48 |
-
poppler-toc.h
|
49 |
-
${CMAKE_CURRENT_BINARY_DIR}/poppler_cpp_export.h
|
50 |
-
${CMAKE_CURRENT_BINARY_DIR}/poppler-version.h
|
51 |
-
DESTINATION include/poppler/cpp)
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/Doxyfile
DELETED
@@ -1,1634 +0,0 @@
|
|
1 |
-
# Doxyfile 1.7.1
|
2 |
-
|
3 |
-
# This file describes the settings to be used by the documentation system
|
4 |
-
# doxygen (www.doxygen.org) for a project
|
5 |
-
#
|
6 |
-
# All text after a hash (#) is considered a comment and will be ignored
|
7 |
-
# The format is:
|
8 |
-
# TAG = value [value, ...]
|
9 |
-
# For lists items can also be appended using:
|
10 |
-
# TAG += value [value, ...]
|
11 |
-
# Values that contain spaces should be placed between quotes (" ")
|
12 |
-
|
13 |
-
#---------------------------------------------------------------------------
|
14 |
-
# Project related configuration options
|
15 |
-
#---------------------------------------------------------------------------
|
16 |
-
|
17 |
-
# This tag specifies the encoding used for all characters in the config file
|
18 |
-
# that follow. The default is UTF-8 which is also the encoding used for all
|
19 |
-
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
20 |
-
# iconv built into libc) for the transcoding. See
|
21 |
-
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
22 |
-
|
23 |
-
DOXYFILE_ENCODING = UTF-8
|
24 |
-
|
25 |
-
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
26 |
-
# by quotes) that should identify the project.
|
27 |
-
|
28 |
-
PROJECT_NAME = "Poppler CPP"
|
29 |
-
|
30 |
-
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
31 |
-
# This could be handy for archiving the generated documentation or
|
32 |
-
# if some version control system is used.
|
33 |
-
|
34 |
-
PROJECT_NUMBER = 24.01.0
|
35 |
-
|
36 |
-
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
37 |
-
# base path where the generated documentation will be put.
|
38 |
-
# If a relative path is entered, it will be relative to the location
|
39 |
-
# where doxygen was started. If left blank the current directory will be used.
|
40 |
-
|
41 |
-
OUTPUT_DIRECTORY =
|
42 |
-
|
43 |
-
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
44 |
-
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
45 |
-
# format and will distribute the generated files over these directories.
|
46 |
-
# Enabling this option can be useful when feeding doxygen a huge amount of
|
47 |
-
# source files, where putting all generated files in the same directory would
|
48 |
-
# otherwise cause performance problems for the file system.
|
49 |
-
|
50 |
-
CREATE_SUBDIRS = NO
|
51 |
-
|
52 |
-
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
|
53 |
-
# documentation generated by doxygen is written. Doxygen will use this
|
54 |
-
# information to generate all constant output in the proper language.
|
55 |
-
# The default language is English, other supported languages are:
|
56 |
-
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
|
57 |
-
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
|
58 |
-
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
|
59 |
-
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
|
60 |
-
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
|
61 |
-
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
|
62 |
-
|
63 |
-
OUTPUT_LANGUAGE = English
|
64 |
-
|
65 |
-
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
|
66 |
-
# include brief member descriptions after the members that are listed in
|
67 |
-
# the file and class documentation (similar to JavaDoc).
|
68 |
-
# Set to NO to disable this.
|
69 |
-
|
70 |
-
BRIEF_MEMBER_DESC = NO
|
71 |
-
|
72 |
-
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
|
73 |
-
# the brief description of a member or function before the detailed description.
|
74 |
-
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
|
75 |
-
# brief descriptions will be completely suppressed.
|
76 |
-
|
77 |
-
REPEAT_BRIEF = YES
|
78 |
-
|
79 |
-
# This tag implements a quasi-intelligent brief description abbreviator
|
80 |
-
# that is used to form the text in various listings. Each string
|
81 |
-
# in this list, if found as the leading text of the brief description, will be
|
82 |
-
# stripped from the text and the result after processing the whole list, is
|
83 |
-
# used as the annotated text. Otherwise, the brief description is used as-is.
|
84 |
-
# If left blank, the following values are used ("$name" is automatically
|
85 |
-
# replaced with the name of the entity): "The $name class" "The $name widget"
|
86 |
-
# "The $name file" "is" "provides" "specifies" "contains"
|
87 |
-
# "represents" "a" "an" "the"
|
88 |
-
|
89 |
-
ABBREVIATE_BRIEF =
|
90 |
-
|
91 |
-
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
|
92 |
-
# Doxygen will generate a detailed section even if there is only a brief
|
93 |
-
# description.
|
94 |
-
|
95 |
-
ALWAYS_DETAILED_SEC = YES
|
96 |
-
|
97 |
-
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
|
98 |
-
# inherited members of a class in the documentation of that class as if those
|
99 |
-
# members were ordinary class members. Constructors, destructors and assignment
|
100 |
-
# operators of the base classes will not be shown.
|
101 |
-
|
102 |
-
INLINE_INHERITED_MEMB = NO
|
103 |
-
|
104 |
-
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
|
105 |
-
# path before files name in the file list and in the header files. If set
|
106 |
-
# to NO the shortest path that makes the file name unique will be used.
|
107 |
-
|
108 |
-
FULL_PATH_NAMES = YES
|
109 |
-
|
110 |
-
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
|
111 |
-
# can be used to strip a user-defined part of the path. Stripping is
|
112 |
-
# only done if one of the specified strings matches the left-hand part of
|
113 |
-
# the path. The tag can be used to show relative paths in the file list.
|
114 |
-
# If left blank the directory from which doxygen is run is used as the
|
115 |
-
# path to strip.
|
116 |
-
|
117 |
-
STRIP_FROM_PATH =
|
118 |
-
|
119 |
-
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
|
120 |
-
# the path mentioned in the documentation of a class, which tells
|
121 |
-
# the reader which header file to include in order to use a class.
|
122 |
-
# If left blank only the name of the header file containing the class
|
123 |
-
# definition is used. Otherwise one should specify the include paths that
|
124 |
-
# are normally passed to the compiler using the -I flag.
|
125 |
-
|
126 |
-
STRIP_FROM_INC_PATH =
|
127 |
-
|
128 |
-
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
|
129 |
-
# (but less readable) file names. This can be useful is your file systems
|
130 |
-
# doesn't support long names like on DOS, Mac, or CD-ROM.
|
131 |
-
|
132 |
-
SHORT_NAMES = NO
|
133 |
-
|
134 |
-
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
|
135 |
-
# will interpret the first line (until the first dot) of a JavaDoc-style
|
136 |
-
# comment as the brief description. If set to NO, the JavaDoc
|
137 |
-
# comments will behave just like regular Qt-style comments
|
138 |
-
# (thus requiring an explicit @brief command for a brief description.)
|
139 |
-
|
140 |
-
JAVADOC_AUTOBRIEF = YES
|
141 |
-
|
142 |
-
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
|
143 |
-
# interpret the first line (until the first dot) of a Qt-style
|
144 |
-
# comment as the brief description. If set to NO, the comments
|
145 |
-
# will behave just like regular Qt-style comments (thus requiring
|
146 |
-
# an explicit \brief command for a brief description.)
|
147 |
-
|
148 |
-
QT_AUTOBRIEF = NO
|
149 |
-
|
150 |
-
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
|
151 |
-
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
|
152 |
-
# comments) as a brief description. This used to be the default behaviour.
|
153 |
-
# The new default is to treat a multi-line C++ comment block as a detailed
|
154 |
-
# description. Set this tag to YES if you prefer the old behaviour instead.
|
155 |
-
|
156 |
-
MULTILINE_CPP_IS_BRIEF = NO
|
157 |
-
|
158 |
-
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
159 |
-
# member inherits the documentation from any documented member that it
|
160 |
-
# re-implements.
|
161 |
-
|
162 |
-
INHERIT_DOCS = YES
|
163 |
-
|
164 |
-
# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
|
165 |
-
# a new page for each member. If set to NO, the documentation of a member will
|
166 |
-
# be part of the file/class/namespace that contains it.
|
167 |
-
|
168 |
-
SEPARATE_MEMBER_PAGES = NO
|
169 |
-
|
170 |
-
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
|
171 |
-
# Doxygen uses this value to replace tabs by spaces in code fragments.
|
172 |
-
|
173 |
-
TAB_SIZE = 8
|
174 |
-
|
175 |
-
# This tag can be used to specify a number of aliases that acts
|
176 |
-
# as commands in the documentation. An alias has the form "name=value".
|
177 |
-
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
|
178 |
-
# put the command \sideeffect (or @sideeffect) in the documentation, which
|
179 |
-
# will result in a user-defined paragraph with heading "Side Effects:".
|
180 |
-
# You can put \n's in the value part of an alias to insert newlines.
|
181 |
-
|
182 |
-
ALIASES =
|
183 |
-
|
184 |
-
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
|
185 |
-
# sources only. Doxygen will then generate output that is more tailored for C.
|
186 |
-
# For instance, some of the names that are used will be different. The list
|
187 |
-
# of all members will be omitted, etc.
|
188 |
-
|
189 |
-
OPTIMIZE_OUTPUT_FOR_C = NO
|
190 |
-
|
191 |
-
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
|
192 |
-
# sources only. Doxygen will then generate output that is more tailored for
|
193 |
-
# Java. For instance, namespaces will be presented as packages, qualified
|
194 |
-
# scopes will look different, etc.
|
195 |
-
|
196 |
-
OPTIMIZE_OUTPUT_JAVA = NO
|
197 |
-
|
198 |
-
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
|
199 |
-
# sources only. Doxygen will then generate output that is more tailored for
|
200 |
-
# Fortran.
|
201 |
-
|
202 |
-
OPTIMIZE_FOR_FORTRAN = NO
|
203 |
-
|
204 |
-
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
|
205 |
-
# sources. Doxygen will then generate output that is tailored for
|
206 |
-
# VHDL.
|
207 |
-
|
208 |
-
OPTIMIZE_OUTPUT_VHDL = NO
|
209 |
-
|
210 |
-
# Doxygen selects the parser to use depending on the extension of the files it
|
211 |
-
# parses. With this tag you can assign which parser to use for a given extension.
|
212 |
-
# Doxygen has a built-in mapping, but you can override or extend it using this
|
213 |
-
# tag. The format is ext=language, where ext is a file extension, and language
|
214 |
-
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
|
215 |
-
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
|
216 |
-
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
|
217 |
-
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
|
218 |
-
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
|
219 |
-
|
220 |
-
EXTENSION_MAPPING = in=C++
|
221 |
-
|
222 |
-
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
|
223 |
-
# to include (a tag file for) the STL sources as input, then you should
|
224 |
-
# set this tag to YES in order to let doxygen match functions declarations and
|
225 |
-
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
|
226 |
-
# func(std::string) {}). This also make the inheritance and collaboration
|
227 |
-
# diagrams that involve STL classes more complete and accurate.
|
228 |
-
|
229 |
-
BUILTIN_STL_SUPPORT = YES
|
230 |
-
|
231 |
-
# If you use Microsoft's C++/CLI language, you should set this option to YES to
|
232 |
-
# enable parsing support.
|
233 |
-
|
234 |
-
CPP_CLI_SUPPORT = NO
|
235 |
-
|
236 |
-
# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
|
237 |
-
# Doxygen will parse them like normal C++ but will assume all classes use public
|
238 |
-
# instead of private inheritance when no explicit protection keyword is present.
|
239 |
-
|
240 |
-
SIP_SUPPORT = NO
|
241 |
-
|
242 |
-
# For Microsoft's IDL there are propget and propput attributes to indicate getter
|
243 |
-
# and setter methods for a property. Setting this option to YES (the default)
|
244 |
-
# will make doxygen to replace the get and set methods by a property in the
|
245 |
-
# documentation. This will only work if the methods are indeed getting or
|
246 |
-
# setting a simple type. If this is not the case, or you want to show the
|
247 |
-
# methods anyway, you should set this option to NO.
|
248 |
-
|
249 |
-
IDL_PROPERTY_SUPPORT = YES
|
250 |
-
|
251 |
-
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
|
252 |
-
# tag is set to YES, then doxygen will reuse the documentation of the first
|
253 |
-
# member in the group (if any) for the other members of the group. By default
|
254 |
-
# all members of a group must be documented explicitly.
|
255 |
-
|
256 |
-
DISTRIBUTE_GROUP_DOC = NO
|
257 |
-
|
258 |
-
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
|
259 |
-
# the same type (for instance a group of public functions) to be put as a
|
260 |
-
# subgroup of that type (e.g. under the Public Functions section). Set it to
|
261 |
-
# NO to prevent subgrouping. Alternatively, this can be done per class using
|
262 |
-
# the \nosubgrouping command.
|
263 |
-
|
264 |
-
SUBGROUPING = YES
|
265 |
-
|
266 |
-
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
267 |
-
# is documented as struct, union, or enum with the name of the typedef. So
|
268 |
-
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
269 |
-
# with name TypeT. When disabled the typedef will appear as a member of a file,
|
270 |
-
# namespace, or class. And the struct will be named TypeS. This can typically
|
271 |
-
# be useful for C code in case the coding convention dictates that all compound
|
272 |
-
# types are typedef'ed and only the typedef is referenced, never the tag name.
|
273 |
-
|
274 |
-
TYPEDEF_HIDES_STRUCT = NO
|
275 |
-
|
276 |
-
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
|
277 |
-
# determine which symbols to keep in memory and which to flush to disk.
|
278 |
-
# When the cache is full, less often used symbols will be written to disk.
|
279 |
-
# For small to medium size projects (<1000 input files) the default value is
|
280 |
-
# probably good enough. For larger projects a too small cache size can cause
|
281 |
-
# doxygen to be busy swapping symbols to and from disk most of the time
|
282 |
-
# causing a significant performance penality.
|
283 |
-
# If the system has enough physical memory increasing the cache will improve the
|
284 |
-
# performance by keeping more symbols in memory. Note that the value works on
|
285 |
-
# a logarithmic scale so increasing the size by one will rougly double the
|
286 |
-
# memory usage. The cache size is given by this formula:
|
287 |
-
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
288 |
-
# corresponding to a cache size of 2^16 = 65536 symbols
|
289 |
-
|
290 |
-
SYMBOL_CACHE_SIZE = 0
|
291 |
-
|
292 |
-
#---------------------------------------------------------------------------
|
293 |
-
# Build related configuration options
|
294 |
-
#---------------------------------------------------------------------------
|
295 |
-
|
296 |
-
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
297 |
-
# documentation are documented, even if no documentation was available.
|
298 |
-
# Private class members and static file members will be hidden unless
|
299 |
-
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
300 |
-
|
301 |
-
EXTRACT_ALL = NO
|
302 |
-
|
303 |
-
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
304 |
-
# will be included in the documentation.
|
305 |
-
|
306 |
-
EXTRACT_PRIVATE = NO
|
307 |
-
|
308 |
-
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
309 |
-
# will be included in the documentation.
|
310 |
-
|
311 |
-
EXTRACT_STATIC = NO
|
312 |
-
|
313 |
-
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
|
314 |
-
# defined locally in source files will be included in the documentation.
|
315 |
-
# If set to NO only classes defined in header files are included.
|
316 |
-
|
317 |
-
EXTRACT_LOCAL_CLASSES = NO
|
318 |
-
|
319 |
-
# This flag is only useful for Objective-C code. When set to YES local
|
320 |
-
# methods, which are defined in the implementation section but not in
|
321 |
-
# the interface are included in the documentation.
|
322 |
-
# If set to NO (the default) only methods in the interface are included.
|
323 |
-
|
324 |
-
EXTRACT_LOCAL_METHODS = NO
|
325 |
-
|
326 |
-
# If this flag is set to YES, the members of anonymous namespaces will be
|
327 |
-
# extracted and appear in the documentation as a namespace called
|
328 |
-
# 'anonymous_namespace{file}', where file will be replaced with the base
|
329 |
-
# name of the file that contains the anonymous namespace. By default
|
330 |
-
# anonymous namespace are hidden.
|
331 |
-
|
332 |
-
EXTRACT_ANON_NSPACES = NO
|
333 |
-
|
334 |
-
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
|
335 |
-
# undocumented members of documented classes, files or namespaces.
|
336 |
-
# If set to NO (the default) these members will be included in the
|
337 |
-
# various overviews, but no documentation section is generated.
|
338 |
-
# This option has no effect if EXTRACT_ALL is enabled.
|
339 |
-
|
340 |
-
HIDE_UNDOC_MEMBERS = NO
|
341 |
-
|
342 |
-
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
343 |
-
# undocumented classes that are normally visible in the class hierarchy.
|
344 |
-
# If set to NO (the default) these classes will be included in the various
|
345 |
-
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
346 |
-
|
347 |
-
HIDE_UNDOC_CLASSES = NO
|
348 |
-
|
349 |
-
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
|
350 |
-
# friend (class|struct|union) declarations.
|
351 |
-
# If set to NO (the default) these declarations will be included in the
|
352 |
-
# documentation.
|
353 |
-
|
354 |
-
HIDE_FRIEND_COMPOUNDS = YES
|
355 |
-
|
356 |
-
# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
|
357 |
-
# documentation blocks found inside the body of a function.
|
358 |
-
# If set to NO (the default) these blocks will be appended to the
|
359 |
-
# function's detailed documentation block.
|
360 |
-
|
361 |
-
HIDE_IN_BODY_DOCS = NO
|
362 |
-
|
363 |
-
# The INTERNAL_DOCS tag determines if documentation
|
364 |
-
# that is typed after a \internal command is included. If the tag is set
|
365 |
-
# to NO (the default) then the documentation will be excluded.
|
366 |
-
# Set it to YES to include the internal documentation.
|
367 |
-
|
368 |
-
INTERNAL_DOCS = NO
|
369 |
-
|
370 |
-
# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
|
371 |
-
# file names in lower-case letters. If set to YES upper-case letters are also
|
372 |
-
# allowed. This is useful if you have classes or files whose names only differ
|
373 |
-
# in case and if your file system supports case sensitive file names. Windows
|
374 |
-
# and Mac users are advised to set this option to NO.
|
375 |
-
|
376 |
-
CASE_SENSE_NAMES = YES
|
377 |
-
|
378 |
-
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
|
379 |
-
# will show members with their full class and namespace scopes in the
|
380 |
-
# documentation. If set to YES the scope will be hidden.
|
381 |
-
|
382 |
-
HIDE_SCOPE_NAMES = NO
|
383 |
-
|
384 |
-
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
|
385 |
-
# will put a list of the files that are included by a file in the documentation
|
386 |
-
# of that file.
|
387 |
-
|
388 |
-
SHOW_INCLUDE_FILES = YES
|
389 |
-
|
390 |
-
# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
|
391 |
-
# will list include files with double quotes in the documentation
|
392 |
-
# rather than with sharp brackets.
|
393 |
-
|
394 |
-
FORCE_LOCAL_INCLUDES = NO
|
395 |
-
|
396 |
-
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
|
397 |
-
# is inserted in the documentation for inline members.
|
398 |
-
|
399 |
-
INLINE_INFO = NO
|
400 |
-
|
401 |
-
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
|
402 |
-
# will sort the (detailed) documentation of file and class members
|
403 |
-
# alphabetically by member name. If set to NO the members will appear in
|
404 |
-
# declaration order.
|
405 |
-
|
406 |
-
SORT_MEMBER_DOCS = YES
|
407 |
-
|
408 |
-
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
|
409 |
-
# brief documentation of file, namespace and class members alphabetically
|
410 |
-
# by member name. If set to NO (the default) the members will appear in
|
411 |
-
# declaration order.
|
412 |
-
|
413 |
-
SORT_BRIEF_DOCS = YES
|
414 |
-
|
415 |
-
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
|
416 |
-
# will sort the (brief and detailed) documentation of class members so that
|
417 |
-
# constructors and destructors are listed first. If set to NO (the default)
|
418 |
-
# the constructors will appear in the respective orders defined by
|
419 |
-
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
|
420 |
-
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
|
421 |
-
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
|
422 |
-
|
423 |
-
SORT_MEMBERS_CTORS_1ST = YES
|
424 |
-
|
425 |
-
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
|
426 |
-
# hierarchy of group names into alphabetical order. If set to NO (the default)
|
427 |
-
# the group names will appear in their defined order.
|
428 |
-
|
429 |
-
SORT_GROUP_NAMES = NO
|
430 |
-
|
431 |
-
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
|
432 |
-
# sorted by fully-qualified names, including namespaces. If set to
|
433 |
-
# NO (the default), the class list will be sorted only by class name,
|
434 |
-
# not including the namespace part.
|
435 |
-
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
|
436 |
-
# Note: This option applies only to the class list, not to the
|
437 |
-
# alphabetical list.
|
438 |
-
|
439 |
-
SORT_BY_SCOPE_NAME = YES
|
440 |
-
|
441 |
-
# The GENERATE_TODOLIST tag can be used to enable (YES) or
|
442 |
-
# disable (NO) the todo list. This list is created by putting \todo
|
443 |
-
# commands in the documentation.
|
444 |
-
|
445 |
-
GENERATE_TODOLIST = YES
|
446 |
-
|
447 |
-
# The GENERATE_TESTLIST tag can be used to enable (YES) or
|
448 |
-
# disable (NO) the test list. This list is created by putting \test
|
449 |
-
# commands in the documentation.
|
450 |
-
|
451 |
-
GENERATE_TESTLIST = YES
|
452 |
-
|
453 |
-
# The GENERATE_BUGLIST tag can be used to enable (YES) or
|
454 |
-
# disable (NO) the bug list. This list is created by putting \bug
|
455 |
-
# commands in the documentation.
|
456 |
-
|
457 |
-
GENERATE_BUGLIST = YES
|
458 |
-
|
459 |
-
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
|
460 |
-
# disable (NO) the deprecated list. This list is created by putting
|
461 |
-
# \deprecated commands in the documentation.
|
462 |
-
|
463 |
-
GENERATE_DEPRECATEDLIST= YES
|
464 |
-
|
465 |
-
# The ENABLED_SECTIONS tag can be used to enable conditional
|
466 |
-
# documentation sections, marked by \if sectionname ... \endif.
|
467 |
-
|
468 |
-
ENABLED_SECTIONS =
|
469 |
-
|
470 |
-
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
|
471 |
-
# the initial value of a variable or define consists of for it to appear in
|
472 |
-
# the documentation. If the initializer consists of more lines than specified
|
473 |
-
# here it will be hidden. Use a value of 0 to hide initializers completely.
|
474 |
-
# The appearance of the initializer of individual variables and defines in the
|
475 |
-
# documentation can be controlled using \showinitializer or \hideinitializer
|
476 |
-
# command in the documentation regardless of this setting.
|
477 |
-
|
478 |
-
MAX_INITIALIZER_LINES = 30
|
479 |
-
|
480 |
-
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
|
481 |
-
# at the bottom of the documentation of classes and structs. If set to YES the
|
482 |
-
# list will mention the files that were used to generate the documentation.
|
483 |
-
|
484 |
-
SHOW_USED_FILES = NO
|
485 |
-
|
486 |
-
# If the sources in your project are distributed over multiple directories
|
487 |
-
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
|
488 |
-
# in the documentation. The default is NO.
|
489 |
-
|
490 |
-
SHOW_DIRECTORIES = NO
|
491 |
-
|
492 |
-
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
|
493 |
-
# This will remove the Files entry from the Quick Index and from the
|
494 |
-
# Folder Tree View (if specified). The default is YES.
|
495 |
-
|
496 |
-
SHOW_FILES = YES
|
497 |
-
|
498 |
-
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
|
499 |
-
# Namespaces page.
|
500 |
-
# This will remove the Namespaces entry from the Quick Index
|
501 |
-
# and from the Folder Tree View (if specified). The default is YES.
|
502 |
-
|
503 |
-
SHOW_NAMESPACES = YES
|
504 |
-
|
505 |
-
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
|
506 |
-
# doxygen should invoke to get the current version for each file (typically from
|
507 |
-
# the version control system). Doxygen will invoke the program by executing (via
|
508 |
-
# popen()) the command <command> <input-file>, where <command> is the value of
|
509 |
-
# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
|
510 |
-
# provided by doxygen. Whatever the program writes to standard output
|
511 |
-
# is used as the file version. See the manual for examples.
|
512 |
-
|
513 |
-
FILE_VERSION_FILTER =
|
514 |
-
|
515 |
-
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
|
516 |
-
# by doxygen. The layout file controls the global structure of the generated
|
517 |
-
# output files in an output format independent way. The create the layout file
|
518 |
-
# that represents doxygen's defaults, run doxygen with the -l option.
|
519 |
-
# You can optionally specify a file name after the option, if omitted
|
520 |
-
# DoxygenLayout.xml will be used as the name of the layout file.
|
521 |
-
|
522 |
-
LAYOUT_FILE =
|
523 |
-
|
524 |
-
#---------------------------------------------------------------------------
|
525 |
-
# configuration options related to warning and progress messages
|
526 |
-
#---------------------------------------------------------------------------
|
527 |
-
|
528 |
-
# The QUIET tag can be used to turn on/off the messages that are generated
|
529 |
-
# by doxygen. Possible values are YES and NO. If left blank NO is used.
|
530 |
-
|
531 |
-
QUIET = NO
|
532 |
-
|
533 |
-
# The WARNINGS tag can be used to turn on/off the warning messages that are
|
534 |
-
# generated by doxygen. Possible values are YES and NO. If left blank
|
535 |
-
# NO is used.
|
536 |
-
|
537 |
-
WARNINGS = YES
|
538 |
-
|
539 |
-
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
|
540 |
-
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
|
541 |
-
# automatically be disabled.
|
542 |
-
|
543 |
-
WARN_IF_UNDOCUMENTED = YES
|
544 |
-
|
545 |
-
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
|
546 |
-
# potential errors in the documentation, such as not documenting some
|
547 |
-
# parameters in a documented function, or documenting parameters that
|
548 |
-
# don't exist or using markup commands wrongly.
|
549 |
-
|
550 |
-
WARN_IF_DOC_ERROR = YES
|
551 |
-
|
552 |
-
# This WARN_NO_PARAMDOC option can be abled to get warnings for
|
553 |
-
# functions that are documented, but have no documentation for their parameters
|
554 |
-
# or return value. If set to NO (the default) doxygen will only warn about
|
555 |
-
# wrong or incomplete parameter documentation, but not about the absence of
|
556 |
-
# documentation.
|
557 |
-
|
558 |
-
WARN_NO_PARAMDOC = NO
|
559 |
-
|
560 |
-
# The WARN_FORMAT tag determines the format of the warning messages that
|
561 |
-
# doxygen can produce. The string should contain the $file, $line, and $text
|
562 |
-
# tags, which will be replaced by the file and line number from which the
|
563 |
-
# warning originated and the warning text. Optionally the format may contain
|
564 |
-
# $version, which will be replaced by the version of the file (if it could
|
565 |
-
# be obtained via FILE_VERSION_FILTER)
|
566 |
-
|
567 |
-
WARN_FORMAT = "$file:$line: $text "
|
568 |
-
|
569 |
-
# The WARN_LOGFILE tag can be used to specify a file to which warning
|
570 |
-
# and error messages should be written. If left blank the output is written
|
571 |
-
# to stderr.
|
572 |
-
|
573 |
-
WARN_LOGFILE =
|
574 |
-
|
575 |
-
#---------------------------------------------------------------------------
|
576 |
-
# configuration options related to the input files
|
577 |
-
#---------------------------------------------------------------------------
|
578 |
-
|
579 |
-
# The INPUT tag can be used to specify the files and/or directories that contain
|
580 |
-
# documented source files. You may enter file names like "myfile.cpp" or
|
581 |
-
# directories like "/usr/src/myproject". Separate the files or directories
|
582 |
-
# with spaces.
|
583 |
-
|
584 |
-
INPUT =
|
585 |
-
|
586 |
-
# This tag can be used to specify the character encoding of the source files
|
587 |
-
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
588 |
-
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
589 |
-
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
|
590 |
-
# the list of possible encodings.
|
591 |
-
|
592 |
-
INPUT_ENCODING = UTF-8
|
593 |
-
|
594 |
-
# If the value of the INPUT tag contains directories, you can use the
|
595 |
-
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
596 |
-
# and *.h) to filter out the source-files in the directories. If left
|
597 |
-
# blank the following patterns are tested:
|
598 |
-
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
599 |
-
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
600 |
-
|
601 |
-
FILE_PATTERNS = *.cpp \
|
602 |
-
*.h \
|
603 |
-
*.h.in \
|
604 |
-
*.dox
|
605 |
-
|
606 |
-
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
607 |
-
# should be searched for input files as well. Possible values are YES and NO.
|
608 |
-
# If left blank NO is used.
|
609 |
-
|
610 |
-
RECURSIVE = NO
|
611 |
-
|
612 |
-
# The EXCLUDE tag can be used to specify files and/or directories that should
|
613 |
-
# excluded from the INPUT source files. This way you can easily exclude a
|
614 |
-
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
615 |
-
|
616 |
-
EXCLUDE =
|
617 |
-
|
618 |
-
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
619 |
-
# directories that are symbolic links (a Unix filesystem feature) are excluded
|
620 |
-
# from the input.
|
621 |
-
|
622 |
-
EXCLUDE_SYMLINKS = NO
|
623 |
-
|
624 |
-
# If the value of the INPUT tag contains directories, you can use the
|
625 |
-
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
|
626 |
-
# certain files from those directories. Note that the wildcards are matched
|
627 |
-
# against the file with absolute path, so to exclude all test directories
|
628 |
-
# for example use the pattern */test/*
|
629 |
-
|
630 |
-
EXCLUDE_PATTERNS = *-private.*
|
631 |
-
|
632 |
-
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
|
633 |
-
# (namespaces, classes, functions, etc.) that should be excluded from the
|
634 |
-
# output. The symbol name can be a fully qualified name, a word, or if the
|
635 |
-
# wildcard * is used, a substring. Examples: ANamespace, AClass,
|
636 |
-
# AClass::ANamespace, ANamespace::*Test
|
637 |
-
|
638 |
-
EXCLUDE_SYMBOLS = poppler::detail, \
|
639 |
-
poppler::*_private
|
640 |
-
|
641 |
-
# The EXAMPLE_PATH tag can be used to specify one or more files or
|
642 |
-
# directories that contain example code fragments that are included (see
|
643 |
-
# the \include command).
|
644 |
-
|
645 |
-
EXAMPLE_PATH =
|
646 |
-
|
647 |
-
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
648 |
-
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
649 |
-
# and *.h) to filter out the source-files in the directories. If left
|
650 |
-
# blank all files are included.
|
651 |
-
|
652 |
-
EXAMPLE_PATTERNS =
|
653 |
-
|
654 |
-
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
|
655 |
-
# searched for input files to be used with the \include or \dontinclude
|
656 |
-
# commands irrespective of the value of the RECURSIVE tag.
|
657 |
-
# Possible values are YES and NO. If left blank NO is used.
|
658 |
-
|
659 |
-
EXAMPLE_RECURSIVE = NO
|
660 |
-
|
661 |
-
# The IMAGE_PATH tag can be used to specify one or more files or
|
662 |
-
# directories that contain image that are included in the documentation (see
|
663 |
-
# the \image command).
|
664 |
-
|
665 |
-
IMAGE_PATH =
|
666 |
-
|
667 |
-
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
668 |
-
# invoke to filter for each input file. Doxygen will invoke the filter program
|
669 |
-
# by executing (via popen()) the command <filter> <input-file>, where <filter>
|
670 |
-
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
|
671 |
-
# input file. Doxygen will then use the output that the filter program writes
|
672 |
-
# to standard output.
|
673 |
-
# If FILTER_PATTERNS is specified, this tag will be
|
674 |
-
# ignored.
|
675 |
-
|
676 |
-
INPUT_FILTER =
|
677 |
-
|
678 |
-
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
|
679 |
-
# basis.
|
680 |
-
# Doxygen will compare the file name with each pattern and apply the
|
681 |
-
# filter if there is a match.
|
682 |
-
# The filters are a list of the form:
|
683 |
-
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
|
684 |
-
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
|
685 |
-
# is applied to all files.
|
686 |
-
|
687 |
-
FILTER_PATTERNS =
|
688 |
-
|
689 |
-
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
|
690 |
-
# INPUT_FILTER) will be used to filter the input files when producing source
|
691 |
-
# files to browse (i.e. when SOURCE_BROWSER is set to YES).
|
692 |
-
|
693 |
-
FILTER_SOURCE_FILES = NO
|
694 |
-
|
695 |
-
#---------------------------------------------------------------------------
|
696 |
-
# configuration options related to source browsing
|
697 |
-
#---------------------------------------------------------------------------
|
698 |
-
|
699 |
-
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
|
700 |
-
# be generated. Documented entities will be cross-referenced with these sources.
|
701 |
-
# Note: To get rid of all source code in the generated output, make sure also
|
702 |
-
# VERBATIM_HEADERS is set to NO.
|
703 |
-
|
704 |
-
SOURCE_BROWSER = NO
|
705 |
-
|
706 |
-
# Setting the INLINE_SOURCES tag to YES will include the body
|
707 |
-
# of functions and classes directly in the documentation.
|
708 |
-
|
709 |
-
INLINE_SOURCES = NO
|
710 |
-
|
711 |
-
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
|
712 |
-
# doxygen to hide any special comment blocks from generated source code
|
713 |
-
# fragments. Normal C and C++ comments will always remain visible.
|
714 |
-
|
715 |
-
STRIP_CODE_COMMENTS = YES
|
716 |
-
|
717 |
-
# If the REFERENCED_BY_RELATION tag is set to YES
|
718 |
-
# then for each documented function all documented
|
719 |
-
# functions referencing it will be listed.
|
720 |
-
|
721 |
-
REFERENCED_BY_RELATION = NO
|
722 |
-
|
723 |
-
# If the REFERENCES_RELATION tag is set to YES
|
724 |
-
# then for each documented function all documented entities
|
725 |
-
# called/used by that function will be listed.
|
726 |
-
|
727 |
-
REFERENCES_RELATION = NO
|
728 |
-
|
729 |
-
# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
|
730 |
-
# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
|
731 |
-
# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
|
732 |
-
# link to the source code.
|
733 |
-
# Otherwise they will link to the documentation.
|
734 |
-
|
735 |
-
REFERENCES_LINK_SOURCE = YES
|
736 |
-
|
737 |
-
# If the USE_HTAGS tag is set to YES then the references to source code
|
738 |
-
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
739 |
-
# built-in source browser. The htags tool is part of GNU's global source
|
740 |
-
# tagging system (see http://www.gnu.org/software/global/global.html). You
|
741 |
-
# will need version 4.8.6 or higher.
|
742 |
-
|
743 |
-
USE_HTAGS = NO
|
744 |
-
|
745 |
-
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
|
746 |
-
# will generate a verbatim copy of the header file for each class for
|
747 |
-
# which an include is specified. Set to NO to disable this.
|
748 |
-
|
749 |
-
VERBATIM_HEADERS = YES
|
750 |
-
|
751 |
-
#---------------------------------------------------------------------------
|
752 |
-
# configuration options related to the alphabetical class index
|
753 |
-
#---------------------------------------------------------------------------
|
754 |
-
|
755 |
-
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
|
756 |
-
# of all compounds will be generated. Enable this if the project
|
757 |
-
# contains a lot of classes, structs, unions or interfaces.
|
758 |
-
|
759 |
-
ALPHABETICAL_INDEX = YES
|
760 |
-
|
761 |
-
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
|
762 |
-
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
|
763 |
-
# in which this list will be split (can be a number in the range [1..20])
|
764 |
-
|
765 |
-
COLS_IN_ALPHA_INDEX = 4
|
766 |
-
|
767 |
-
# In case all classes in a project start with a common prefix, all
|
768 |
-
# classes will be put under the same header in the alphabetical index.
|
769 |
-
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
|
770 |
-
# should be ignored while generating the index headers.
|
771 |
-
|
772 |
-
IGNORE_PREFIX =
|
773 |
-
|
774 |
-
#---------------------------------------------------------------------------
|
775 |
-
# configuration options related to the HTML output
|
776 |
-
#---------------------------------------------------------------------------
|
777 |
-
|
778 |
-
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
|
779 |
-
# generate HTML output.
|
780 |
-
|
781 |
-
GENERATE_HTML = YES
|
782 |
-
|
783 |
-
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
|
784 |
-
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
785 |
-
# put in front of it. If left blank `html' will be used as the default path.
|
786 |
-
|
787 |
-
HTML_OUTPUT = APIDOCS-html
|
788 |
-
|
789 |
-
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
|
790 |
-
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
|
791 |
-
# doxygen will generate files with .html extension.
|
792 |
-
|
793 |
-
HTML_FILE_EXTENSION = .html
|
794 |
-
|
795 |
-
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
796 |
-
# each generated HTML page. If it is left blank doxygen will generate a
|
797 |
-
# standard header.
|
798 |
-
|
799 |
-
HTML_HEADER =
|
800 |
-
|
801 |
-
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
|
802 |
-
# each generated HTML page. If it is left blank doxygen will generate a
|
803 |
-
# standard footer.
|
804 |
-
|
805 |
-
HTML_FOOTER =
|
806 |
-
|
807 |
-
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
|
808 |
-
# style sheet that is used by each HTML page. It can be used to
|
809 |
-
# fine-tune the look of the HTML output. If the tag is left blank doxygen
|
810 |
-
# will generate a default style sheet. Note that doxygen will try to copy
|
811 |
-
# the style sheet file to the HTML output directory, so don't put your own
|
812 |
-
# stylesheet in the HTML output directory as well, or it will be erased!
|
813 |
-
|
814 |
-
HTML_STYLESHEET =
|
815 |
-
|
816 |
-
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
817 |
-
# Doxygen will adjust the colors in the stylesheet and background images
|
818 |
-
# according to this color. Hue is specified as an angle on a colorwheel,
|
819 |
-
# see http://en.wikipedia.org/wiki/Hue for more information.
|
820 |
-
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
821 |
-
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
822 |
-
# The allowed range is 0 to 359.
|
823 |
-
|
824 |
-
HTML_COLORSTYLE_HUE = 220
|
825 |
-
|
826 |
-
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
|
827 |
-
# the colors in the HTML output. For a value of 0 the output will use
|
828 |
-
# grayscales only. A value of 255 will produce the most vivid colors.
|
829 |
-
|
830 |
-
HTML_COLORSTYLE_SAT = 100
|
831 |
-
|
832 |
-
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
|
833 |
-
# the luminance component of the colors in the HTML output. Values below
|
834 |
-
# 100 gradually make the output lighter, whereas values above 100 make
|
835 |
-
# the output darker. The value divided by 100 is the actual gamma applied,
|
836 |
-
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
|
837 |
-
# and 100 does not change the gamma.
|
838 |
-
|
839 |
-
HTML_COLORSTYLE_GAMMA = 80
|
840 |
-
|
841 |
-
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
|
842 |
-
# page will contain the date and time when the page was generated. Setting
|
843 |
-
# this to NO can help when comparing the output of multiple runs.
|
844 |
-
|
845 |
-
HTML_TIMESTAMP = NO
|
846 |
-
|
847 |
-
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
848 |
-
# files or namespaces will be aligned in HTML using tables. If set to
|
849 |
-
# NO a bullet list will be used.
|
850 |
-
|
851 |
-
HTML_ALIGN_MEMBERS = YES
|
852 |
-
|
853 |
-
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
|
854 |
-
# documentation will contain sections that can be hidden and shown after the
|
855 |
-
# page has loaded. For this to work a browser that supports
|
856 |
-
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
|
857 |
-
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
|
858 |
-
|
859 |
-
HTML_DYNAMIC_SECTIONS = NO
|
860 |
-
|
861 |
-
# If the GENERATE_DOCSET tag is set to YES, additional index files
|
862 |
-
# will be generated that can be used as input for Apple's Xcode 3
|
863 |
-
# integrated development environment, introduced with OSX 10.5 (Leopard).
|
864 |
-
# To create a documentation set, doxygen will generate a Makefile in the
|
865 |
-
# HTML output directory. Running make will produce the docset in that
|
866 |
-
# directory and running "make install" will install the docset in
|
867 |
-
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
868 |
-
# it at startup.
|
869 |
-
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
870 |
-
# for more information.
|
871 |
-
|
872 |
-
GENERATE_DOCSET = NO
|
873 |
-
|
874 |
-
# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
|
875 |
-
# feed. A documentation feed provides an umbrella under which multiple
|
876 |
-
# documentation sets from a single provider (such as a company or product suite)
|
877 |
-
# can be grouped.
|
878 |
-
|
879 |
-
DOCSET_FEEDNAME = "Doxygen generated docs"
|
880 |
-
|
881 |
-
# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
|
882 |
-
# should uniquely identify the documentation set bundle. This should be a
|
883 |
-
# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
|
884 |
-
# will append .docset to the name.
|
885 |
-
|
886 |
-
DOCSET_BUNDLE_ID = org.doxygen.Project
|
887 |
-
|
888 |
-
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
|
889 |
-
# the documentation publisher. This should be a reverse domain-name style
|
890 |
-
# string, e.g. com.mycompany.MyDocSet.documentation.
|
891 |
-
|
892 |
-
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
893 |
-
|
894 |
-
# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
|
895 |
-
|
896 |
-
DOCSET_PUBLISHER_NAME = Publisher
|
897 |
-
|
898 |
-
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
|
899 |
-
# will be generated that can be used as input for tools like the
|
900 |
-
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
|
901 |
-
# of the generated HTML documentation.
|
902 |
-
|
903 |
-
GENERATE_HTMLHELP = NO
|
904 |
-
|
905 |
-
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
|
906 |
-
# be used to specify the file name of the resulting .chm file. You
|
907 |
-
# can add a path in front of the file if the result should not be
|
908 |
-
# written to the html output directory.
|
909 |
-
|
910 |
-
CHM_FILE =
|
911 |
-
|
912 |
-
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
|
913 |
-
# be used to specify the location (absolute path including file name) of
|
914 |
-
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
|
915 |
-
# the HTML help compiler on the generated index.hhp.
|
916 |
-
|
917 |
-
HHC_LOCATION =
|
918 |
-
|
919 |
-
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
|
920 |
-
# controls if a separate .chi index file is generated (YES) or that
|
921 |
-
# it should be included in the master .chm file (NO).
|
922 |
-
|
923 |
-
GENERATE_CHI = NO
|
924 |
-
|
925 |
-
# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
|
926 |
-
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
|
927 |
-
# content.
|
928 |
-
|
929 |
-
CHM_INDEX_ENCODING =
|
930 |
-
|
931 |
-
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
|
932 |
-
# controls whether a binary table of contents is generated (YES) or a
|
933 |
-
# normal table of contents (NO) in the .chm file.
|
934 |
-
|
935 |
-
BINARY_TOC = NO
|
936 |
-
|
937 |
-
# The TOC_EXPAND flag can be set to YES to add extra items for group members
|
938 |
-
# to the contents of the HTML help documentation and to the tree view.
|
939 |
-
|
940 |
-
TOC_EXPAND = NO
|
941 |
-
|
942 |
-
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
|
943 |
-
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
|
944 |
-
# that can be used as input for Qt's qhelpgenerator to generate a
|
945 |
-
# Qt Compressed Help (.qch) of the generated HTML documentation.
|
946 |
-
|
947 |
-
GENERATE_QHP = NO
|
948 |
-
|
949 |
-
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
|
950 |
-
# be used to specify the file name of the resulting .qch file.
|
951 |
-
# The path specified is relative to the HTML output folder.
|
952 |
-
|
953 |
-
QCH_FILE =
|
954 |
-
|
955 |
-
# The QHP_NAMESPACE tag specifies the namespace to use when generating
|
956 |
-
# Qt Help Project output. For more information please see
|
957 |
-
# http://doc.trolltech.com/qthelpproject.html#namespace
|
958 |
-
|
959 |
-
QHP_NAMESPACE = org.doxygen.Project
|
960 |
-
|
961 |
-
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
|
962 |
-
# Qt Help Project output. For more information please see
|
963 |
-
# http://doc.trolltech.com/qthelpproject.html#virtual-folders
|
964 |
-
|
965 |
-
QHP_VIRTUAL_FOLDER = doc
|
966 |
-
|
967 |
-
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
|
968 |
-
# add. For more information please see
|
969 |
-
# http://doc.trolltech.com/qthelpproject.html#custom-filters
|
970 |
-
|
971 |
-
QHP_CUST_FILTER_NAME =
|
972 |
-
|
973 |
-
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
|
974 |
-
# custom filter to add. For more information please see
|
975 |
-
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
|
976 |
-
# Qt Help Project / Custom Filters</a>.
|
977 |
-
|
978 |
-
QHP_CUST_FILTER_ATTRS =
|
979 |
-
|
980 |
-
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
|
981 |
-
# project's
|
982 |
-
# filter section matches.
|
983 |
-
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
|
984 |
-
# Qt Help Project / Filter Attributes</a>.
|
985 |
-
|
986 |
-
QHP_SECT_FILTER_ATTRS =
|
987 |
-
|
988 |
-
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
|
989 |
-
# be used to specify the location of Qt's qhelpgenerator.
|
990 |
-
# If non-empty doxygen will try to run qhelpgenerator on the generated
|
991 |
-
# .qhp file.
|
992 |
-
|
993 |
-
QHG_LOCATION =
|
994 |
-
|
995 |
-
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
|
996 |
-
# will be generated, which together with the HTML files, form an Eclipse help
|
997 |
-
# plugin. To install this plugin and make it available under the help contents
|
998 |
-
# menu in Eclipse, the contents of the directory containing the HTML and XML
|
999 |
-
# files needs to be copied into the plugins directory of eclipse. The name of
|
1000 |
-
# the directory within the plugins directory should be the same as
|
1001 |
-
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
|
1002 |
-
# the help appears.
|
1003 |
-
|
1004 |
-
GENERATE_ECLIPSEHELP = NO
|
1005 |
-
|
1006 |
-
# A unique identifier for the eclipse help plugin. When installing the plugin
|
1007 |
-
# the directory name containing the HTML and XML files should also have
|
1008 |
-
# this name.
|
1009 |
-
|
1010 |
-
ECLIPSE_DOC_ID = org.doxygen.Project
|
1011 |
-
|
1012 |
-
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
|
1013 |
-
# top of each HTML page. The value NO (the default) enables the index and
|
1014 |
-
# the value YES disables it.
|
1015 |
-
|
1016 |
-
DISABLE_INDEX = NO
|
1017 |
-
|
1018 |
-
# This tag can be used to set the number of enum values (range [1..20])
|
1019 |
-
# that doxygen will group on one line in the generated HTML documentation.
|
1020 |
-
|
1021 |
-
ENUM_VALUES_PER_LINE = 1
|
1022 |
-
|
1023 |
-
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
|
1024 |
-
# structure should be generated to display hierarchical information.
|
1025 |
-
# If the tag value is set to YES, a side panel will be generated
|
1026 |
-
# containing a tree-like index structure (just like the one that
|
1027 |
-
# is generated for HTML Help). For this to work a browser that supports
|
1028 |
-
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
|
1029 |
-
# Windows users are probably better off using the HTML help feature.
|
1030 |
-
|
1031 |
-
GENERATE_TREEVIEW = NO
|
1032 |
-
|
1033 |
-
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
|
1034 |
-
# and Class Hierarchy pages using a tree view instead of an ordered list.
|
1035 |
-
|
1036 |
-
USE_INLINE_TREES = NO
|
1037 |
-
|
1038 |
-
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
1039 |
-
# used to set the initial width (in pixels) of the frame in which the tree
|
1040 |
-
# is shown.
|
1041 |
-
|
1042 |
-
TREEVIEW_WIDTH = 250
|
1043 |
-
|
1044 |
-
# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
|
1045 |
-
# links to external symbols imported via tag files in a separate window.
|
1046 |
-
|
1047 |
-
EXT_LINKS_IN_WINDOW = NO
|
1048 |
-
|
1049 |
-
# Use this tag to change the font size of Latex formulas included
|
1050 |
-
# as images in the HTML documentation. The default is 10. Note that
|
1051 |
-
# when you change the font size after a successful doxygen run you need
|
1052 |
-
# to manually remove any form_*.png images from the HTML output directory
|
1053 |
-
# to force them to be regenerated.
|
1054 |
-
|
1055 |
-
FORMULA_FONTSIZE = 10
|
1056 |
-
|
1057 |
-
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
|
1058 |
-
# generated for formulas are transparent PNGs. Transparent PNGs are
|
1059 |
-
# not supported properly for IE 6.0, but are supported on all modern browsers.
|
1060 |
-
# Note that when changing this option you need to delete any form_*.png files
|
1061 |
-
# in the HTML output before the changes have effect.
|
1062 |
-
|
1063 |
-
FORMULA_TRANSPARENT = YES
|
1064 |
-
|
1065 |
-
# When the SEARCHENGINE tag is enabled doxygen will generate a search box
|
1066 |
-
# for the HTML output. The underlying search engine uses javascript
|
1067 |
-
# and DHTML and should work on any modern browser. Note that when using
|
1068 |
-
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
|
1069 |
-
# (GENERATE_DOCSET) there is already a search function so this one should
|
1070 |
-
# typically be disabled. For large projects the javascript based search engine
|
1071 |
-
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
|
1072 |
-
|
1073 |
-
SEARCHENGINE = NO
|
1074 |
-
|
1075 |
-
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
1076 |
-
# implemented using a PHP enabled web server instead of at the web client
|
1077 |
-
# using Javascript. Doxygen will generate the search PHP script and index
|
1078 |
-
# file to put on the web server. The advantage of the server
|
1079 |
-
# based approach is that it scales better to large projects and allows
|
1080 |
-
# full text search. The disadvances is that it is more difficult to setup
|
1081 |
-
# and does not have live searching capabilities.
|
1082 |
-
|
1083 |
-
SERVER_BASED_SEARCH = NO
|
1084 |
-
|
1085 |
-
#---------------------------------------------------------------------------
|
1086 |
-
# configuration options related to the LaTeX output
|
1087 |
-
#---------------------------------------------------------------------------
|
1088 |
-
|
1089 |
-
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
1090 |
-
# generate Latex output.
|
1091 |
-
|
1092 |
-
GENERATE_LATEX = NO
|
1093 |
-
|
1094 |
-
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
1095 |
-
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
1096 |
-
# put in front of it. If left blank `latex' will be used as the default path.
|
1097 |
-
|
1098 |
-
LATEX_OUTPUT = APIDOCS-latex
|
1099 |
-
|
1100 |
-
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
|
1101 |
-
# invoked. If left blank `latex' will be used as the default command name.
|
1102 |
-
# Note that when enabling USE_PDFLATEX this option is only used for
|
1103 |
-
# generating bitmaps for formulas in the HTML output, but not in the
|
1104 |
-
# Makefile that is written to the output directory.
|
1105 |
-
|
1106 |
-
LATEX_CMD_NAME = latex
|
1107 |
-
|
1108 |
-
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
|
1109 |
-
# generate index for LaTeX. If left blank `makeindex' will be used as the
|
1110 |
-
# default command name.
|
1111 |
-
|
1112 |
-
MAKEINDEX_CMD_NAME = makeindex
|
1113 |
-
|
1114 |
-
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
|
1115 |
-
# LaTeX documents. This may be useful for small projects and may help to
|
1116 |
-
# save some trees in general.
|
1117 |
-
|
1118 |
-
COMPACT_LATEX = NO
|
1119 |
-
|
1120 |
-
# The PAPER_TYPE tag can be used to set the paper type that is used
|
1121 |
-
# by the printer. Possible values are: a4, a4wide, letter, legal and
|
1122 |
-
# executive. If left blank a4wide will be used.
|
1123 |
-
|
1124 |
-
PAPER_TYPE = a4wide
|
1125 |
-
|
1126 |
-
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
|
1127 |
-
# packages that should be included in the LaTeX output.
|
1128 |
-
|
1129 |
-
EXTRA_PACKAGES =
|
1130 |
-
|
1131 |
-
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
|
1132 |
-
# the generated latex document. The header should contain everything until
|
1133 |
-
# the first chapter. If it is left blank doxygen will generate a
|
1134 |
-
# standard header. Notice: only use this tag if you know what you are doing!
|
1135 |
-
|
1136 |
-
LATEX_HEADER =
|
1137 |
-
|
1138 |
-
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
1139 |
-
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
1140 |
-
# contain links (just like the HTML output) instead of page references
|
1141 |
-
# This makes the output suitable for online browsing using a pdf viewer.
|
1142 |
-
|
1143 |
-
PDF_HYPERLINKS = NO
|
1144 |
-
|
1145 |
-
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
|
1146 |
-
# plain latex in the generated Makefile. Set this option to YES to get a
|
1147 |
-
# higher quality PDF documentation.
|
1148 |
-
|
1149 |
-
USE_PDFLATEX = NO
|
1150 |
-
|
1151 |
-
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
|
1152 |
-
# command to the generated LaTeX files. This will instruct LaTeX to keep
|
1153 |
-
# running if errors occur, instead of asking the user for help.
|
1154 |
-
# This option is also used when generating formulas in HTML.
|
1155 |
-
|
1156 |
-
LATEX_BATCHMODE = NO
|
1157 |
-
|
1158 |
-
# If LATEX_HIDE_INDICES is set to YES then doxygen will not
|
1159 |
-
# include the index chapters (such as File Index, Compound Index, etc.)
|
1160 |
-
# in the output.
|
1161 |
-
|
1162 |
-
LATEX_HIDE_INDICES = NO
|
1163 |
-
|
1164 |
-
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
|
1165 |
-
# source code with syntax highlighting in the LaTeX output.
|
1166 |
-
# Note that which sources are shown also depends on other settings
|
1167 |
-
# such as SOURCE_BROWSER.
|
1168 |
-
|
1169 |
-
LATEX_SOURCE_CODE = NO
|
1170 |
-
|
1171 |
-
#---------------------------------------------------------------------------
|
1172 |
-
# configuration options related to the RTF output
|
1173 |
-
#---------------------------------------------------------------------------
|
1174 |
-
|
1175 |
-
# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
|
1176 |
-
# The RTF output is optimized for Word 97 and may not look very pretty with
|
1177 |
-
# other RTF readers or editors.
|
1178 |
-
|
1179 |
-
GENERATE_RTF = NO
|
1180 |
-
|
1181 |
-
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
|
1182 |
-
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
1183 |
-
# put in front of it. If left blank `rtf' will be used as the default path.
|
1184 |
-
|
1185 |
-
RTF_OUTPUT = rtf
|
1186 |
-
|
1187 |
-
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
|
1188 |
-
# RTF documents. This may be useful for small projects and may help to
|
1189 |
-
# save some trees in general.
|
1190 |
-
|
1191 |
-
COMPACT_RTF = NO
|
1192 |
-
|
1193 |
-
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
|
1194 |
-
# will contain hyperlink fields. The RTF file will
|
1195 |
-
# contain links (just like the HTML output) instead of page references.
|
1196 |
-
# This makes the output suitable for online browsing using WORD or other
|
1197 |
-
# programs which support those fields.
|
1198 |
-
# Note: wordpad (write) and others do not support links.
|
1199 |
-
|
1200 |
-
RTF_HYPERLINKS = NO
|
1201 |
-
|
1202 |
-
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
1203 |
-
# config file, i.e. a series of assignments. You only have to provide
|
1204 |
-
# replacements, missing definitions are set to their default value.
|
1205 |
-
|
1206 |
-
RTF_STYLESHEET_FILE =
|
1207 |
-
|
1208 |
-
# Set optional variables used in the generation of an rtf document.
|
1209 |
-
# Syntax is similar to doxygen's config file.
|
1210 |
-
|
1211 |
-
RTF_EXTENSIONS_FILE =
|
1212 |
-
|
1213 |
-
#---------------------------------------------------------------------------
|
1214 |
-
# configuration options related to the man page output
|
1215 |
-
#---------------------------------------------------------------------------
|
1216 |
-
|
1217 |
-
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
|
1218 |
-
# generate man pages
|
1219 |
-
|
1220 |
-
GENERATE_MAN = NO
|
1221 |
-
|
1222 |
-
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
|
1223 |
-
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
1224 |
-
# put in front of it. If left blank `man' will be used as the default path.
|
1225 |
-
|
1226 |
-
MAN_OUTPUT = man
|
1227 |
-
|
1228 |
-
# The MAN_EXTENSION tag determines the extension that is added to
|
1229 |
-
# the generated man pages (default is the subroutine's section .3)
|
1230 |
-
|
1231 |
-
MAN_EXTENSION = .3
|
1232 |
-
|
1233 |
-
# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
|
1234 |
-
# then it will generate one additional man file for each entity
|
1235 |
-
# documented in the real man page(s). These additional files
|
1236 |
-
# only source the real man page, but without them the man command
|
1237 |
-
# would be unable to find the correct page. The default is NO.
|
1238 |
-
|
1239 |
-
MAN_LINKS = NO
|
1240 |
-
|
1241 |
-
#---------------------------------------------------------------------------
|
1242 |
-
# configuration options related to the XML output
|
1243 |
-
#---------------------------------------------------------------------------
|
1244 |
-
|
1245 |
-
# If the GENERATE_XML tag is set to YES Doxygen will
|
1246 |
-
# generate an XML file that captures the structure of
|
1247 |
-
# the code including all documentation.
|
1248 |
-
|
1249 |
-
GENERATE_XML = NO
|
1250 |
-
|
1251 |
-
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
|
1252 |
-
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
1253 |
-
# put in front of it. If left blank `xml' will be used as the default path.
|
1254 |
-
|
1255 |
-
XML_OUTPUT = xml
|
1256 |
-
|
1257 |
-
# The XML_SCHEMA tag can be used to specify an XML schema,
|
1258 |
-
# which can be used by a validating XML parser to check the
|
1259 |
-
# syntax of the XML files.
|
1260 |
-
|
1261 |
-
XML_SCHEMA =
|
1262 |
-
|
1263 |
-
# The XML_DTD tag can be used to specify an XML DTD,
|
1264 |
-
# which can be used by a validating XML parser to check the
|
1265 |
-
# syntax of the XML files.
|
1266 |
-
|
1267 |
-
XML_DTD =
|
1268 |
-
|
1269 |
-
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
|
1270 |
-
# dump the program listings (including syntax highlighting
|
1271 |
-
# and cross-referencing information) to the XML output. Note that
|
1272 |
-
# enabling this will significantly increase the size of the XML output.
|
1273 |
-
|
1274 |
-
XML_PROGRAMLISTING = YES
|
1275 |
-
|
1276 |
-
#---------------------------------------------------------------------------
|
1277 |
-
# configuration options for the AutoGen Definitions output
|
1278 |
-
#---------------------------------------------------------------------------
|
1279 |
-
|
1280 |
-
# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
|
1281 |
-
# generate an AutoGen Definitions (see autogen.sf.net) file
|
1282 |
-
# that captures the structure of the code including all
|
1283 |
-
# documentation. Note that this feature is still experimental
|
1284 |
-
# and incomplete at the moment.
|
1285 |
-
|
1286 |
-
GENERATE_AUTOGEN_DEF = NO
|
1287 |
-
|
1288 |
-
#---------------------------------------------------------------------------
|
1289 |
-
# configuration options related to the Perl module output
|
1290 |
-
#---------------------------------------------------------------------------
|
1291 |
-
|
1292 |
-
# If the GENERATE_PERLMOD tag is set to YES Doxygen will
|
1293 |
-
# generate a Perl module file that captures the structure of
|
1294 |
-
# the code including all documentation. Note that this
|
1295 |
-
# feature is still experimental and incomplete at the
|
1296 |
-
# moment.
|
1297 |
-
|
1298 |
-
GENERATE_PERLMOD = NO
|
1299 |
-
|
1300 |
-
# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
|
1301 |
-
# the necessary Makefile rules, Perl scripts and LaTeX code to be able
|
1302 |
-
# to generate PDF and DVI output from the Perl module output.
|
1303 |
-
|
1304 |
-
PERLMOD_LATEX = NO
|
1305 |
-
|
1306 |
-
# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
|
1307 |
-
# nicely formatted so it can be parsed by a human reader.
|
1308 |
-
# This is useful
|
1309 |
-
# if you want to understand what is going on.
|
1310 |
-
# On the other hand, if this
|
1311 |
-
# tag is set to NO the size of the Perl module output will be much smaller
|
1312 |
-
# and Perl will parse it just the same.
|
1313 |
-
|
1314 |
-
PERLMOD_PRETTY = YES
|
1315 |
-
|
1316 |
-
# The names of the make variables in the generated doxyrules.make file
|
1317 |
-
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
|
1318 |
-
# This is useful so different doxyrules.make files included by the same
|
1319 |
-
# Makefile don't overwrite each other's variables.
|
1320 |
-
|
1321 |
-
PERLMOD_MAKEVAR_PREFIX =
|
1322 |
-
|
1323 |
-
#---------------------------------------------------------------------------
|
1324 |
-
# Configuration options related to the preprocessor
|
1325 |
-
#---------------------------------------------------------------------------
|
1326 |
-
|
1327 |
-
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
|
1328 |
-
# evaluate all C-preprocessor directives found in the sources and include
|
1329 |
-
# files.
|
1330 |
-
|
1331 |
-
ENABLE_PREPROCESSING = YES
|
1332 |
-
|
1333 |
-
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
|
1334 |
-
# names in the source code. If set to NO (the default) only conditional
|
1335 |
-
# compilation will be performed. Macro expansion can be done in a controlled
|
1336 |
-
# way by setting EXPAND_ONLY_PREDEF to YES.
|
1337 |
-
|
1338 |
-
MACRO_EXPANSION = YES
|
1339 |
-
|
1340 |
-
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
|
1341 |
-
# then the macro expansion is limited to the macros specified with the
|
1342 |
-
# PREDEFINED and EXPAND_AS_DEFINED tags.
|
1343 |
-
|
1344 |
-
EXPAND_ONLY_PREDEF = YES
|
1345 |
-
|
1346 |
-
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
1347 |
-
# in the INCLUDE_PATH (see below) will be search if a #include is found.
|
1348 |
-
|
1349 |
-
SEARCH_INCLUDES = YES
|
1350 |
-
|
1351 |
-
# The INCLUDE_PATH tag can be used to specify one or more directories that
|
1352 |
-
# contain include files that are not input files but should be processed by
|
1353 |
-
# the preprocessor.
|
1354 |
-
|
1355 |
-
INCLUDE_PATH =
|
1356 |
-
|
1357 |
-
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
|
1358 |
-
# patterns (like *.h and *.hpp) to filter out the header-files in the
|
1359 |
-
# directories. If left blank, the patterns specified with FILE_PATTERNS will
|
1360 |
-
# be used.
|
1361 |
-
|
1362 |
-
INCLUDE_FILE_PATTERNS =
|
1363 |
-
|
1364 |
-
# The PREDEFINED tag can be used to specify one or more macro names that
|
1365 |
-
# are defined before the preprocessor is started (similar to the -D option of
|
1366 |
-
# gcc). The argument of the tag is a list of macros of the form: name
|
1367 |
-
# or name=definition (no spaces). If the definition and the = are
|
1368 |
-
# omitted =1 is assumed. To prevent a macro definition from being
|
1369 |
-
# undefined via #undef or recursively expanded use the := operator
|
1370 |
-
# instead of the = operator.
|
1371 |
-
|
1372 |
-
PREDEFINED = "POPPLER_CPP_EXPORT="
|
1373 |
-
|
1374 |
-
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
|
1375 |
-
# this tag can be used to specify a list of macro names that should be expanded.
|
1376 |
-
# The macro definition that is found in the sources will be used.
|
1377 |
-
# Use the PREDEFINED tag if you want to use a different macro definition.
|
1378 |
-
|
1379 |
-
EXPAND_AS_DEFINED =
|
1380 |
-
|
1381 |
-
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
|
1382 |
-
# doxygen's preprocessor will remove all function-like macros that are alone
|
1383 |
-
# on a line, have an all uppercase name, and do not end with a semicolon. Such
|
1384 |
-
# function macros are typically used for boiler-plate code, and will confuse
|
1385 |
-
# the parser if not removed.
|
1386 |
-
|
1387 |
-
SKIP_FUNCTION_MACROS = YES
|
1388 |
-
|
1389 |
-
#---------------------------------------------------------------------------
|
1390 |
-
# Configuration::additions related to external references
|
1391 |
-
#---------------------------------------------------------------------------
|
1392 |
-
|
1393 |
-
# The TAGFILES option can be used to specify one or more tagfiles.
|
1394 |
-
# Optionally an initial location of the external documentation
|
1395 |
-
# can be added for each tagfile. The format of a tag file without
|
1396 |
-
# this location is as follows:
|
1397 |
-
#
|
1398 |
-
# TAGFILES = file1 file2 ...
|
1399 |
-
# Adding location for the tag files is done as follows:
|
1400 |
-
#
|
1401 |
-
# TAGFILES = file1=loc1 "file2 = loc2" ...
|
1402 |
-
# where "loc1" and "loc2" can be relative or absolute paths or
|
1403 |
-
# URLs. If a location is present for each tag, the installdox tool
|
1404 |
-
# does not have to be run to correct the links.
|
1405 |
-
# Note that each tag file must have a unique name
|
1406 |
-
# (where the name does NOT include the path)
|
1407 |
-
# If a tag file is not located in the directory in which doxygen
|
1408 |
-
# is run, you must also specify the path to the tagfile here.
|
1409 |
-
|
1410 |
-
TAGFILES =
|
1411 |
-
|
1412 |
-
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
|
1413 |
-
# a tag file that is based on the input files it reads.
|
1414 |
-
|
1415 |
-
GENERATE_TAGFILE =
|
1416 |
-
|
1417 |
-
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
|
1418 |
-
# in the class index. If set to NO only the inherited external classes
|
1419 |
-
# will be listed.
|
1420 |
-
|
1421 |
-
ALLEXTERNALS = NO
|
1422 |
-
|
1423 |
-
# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
|
1424 |
-
# in the modules index. If set to NO, only the current project's groups will
|
1425 |
-
# be listed.
|
1426 |
-
|
1427 |
-
EXTERNAL_GROUPS = YES
|
1428 |
-
|
1429 |
-
# The PERL_PATH should be the absolute path and name of the perl script
|
1430 |
-
# interpreter (i.e. the result of `which perl').
|
1431 |
-
|
1432 |
-
PERL_PATH = /usr/bin/perl
|
1433 |
-
|
1434 |
-
#---------------------------------------------------------------------------
|
1435 |
-
# Configuration options related to the dot tool
|
1436 |
-
#---------------------------------------------------------------------------
|
1437 |
-
|
1438 |
-
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
|
1439 |
-
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
|
1440 |
-
# or super classes. Setting the tag to NO turns the diagrams off. Note that
|
1441 |
-
# this option is superseded by the HAVE_DOT option below. This is only a
|
1442 |
-
# fallback. It is recommended to install and use dot, since it yields more
|
1443 |
-
# powerful graphs.
|
1444 |
-
|
1445 |
-
CLASS_DIAGRAMS = YES
|
1446 |
-
|
1447 |
-
# You can define message sequence charts within doxygen comments using the \msc
|
1448 |
-
# command. Doxygen will then run the mscgen tool (see
|
1449 |
-
# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
|
1450 |
-
# documentation. The MSCGEN_PATH tag allows you to specify the directory where
|
1451 |
-
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
1452 |
-
# default search path.
|
1453 |
-
|
1454 |
-
MSCGEN_PATH =
|
1455 |
-
|
1456 |
-
# If set to YES, the inheritance and collaboration graphs will hide
|
1457 |
-
# inheritance and usage relations if the target is undocumented
|
1458 |
-
# or is not a class.
|
1459 |
-
|
1460 |
-
HIDE_UNDOC_RELATIONS = YES
|
1461 |
-
|
1462 |
-
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
|
1463 |
-
# available from the path. This tool is part of Graphviz, a graph visualization
|
1464 |
-
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
|
1465 |
-
# have no effect if this option is set to NO (the default)
|
1466 |
-
|
1467 |
-
HAVE_DOT = YES
|
1468 |
-
|
1469 |
-
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
|
1470 |
-
# allowed to run in parallel. When set to 0 (the default) doxygen will
|
1471 |
-
# base this on the number of processors available in the system. You can set it
|
1472 |
-
# explicitly to a value larger than 0 to get control over the balance
|
1473 |
-
# between CPU load and processing speed.
|
1474 |
-
|
1475 |
-
DOT_NUM_THREADS = 0
|
1476 |
-
|
1477 |
-
# By default doxygen will write a font called FreeSans.ttf to the output
|
1478 |
-
# directory and reference it in all dot files that doxygen generates. This
|
1479 |
-
# font does not include all possible unicode characters however, so when you need
|
1480 |
-
# these (or just want a differently looking font) you can specify the font name
|
1481 |
-
# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
|
1482 |
-
# which can be done by putting it in a standard location or by setting the
|
1483 |
-
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
|
1484 |
-
# containing the font.
|
1485 |
-
|
1486 |
-
DOT_FONTNAME = FreeSans
|
1487 |
-
|
1488 |
-
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
|
1489 |
-
# The default size is 10pt.
|
1490 |
-
|
1491 |
-
DOT_FONTSIZE = 10
|
1492 |
-
|
1493 |
-
# By default doxygen will tell dot to use the output directory to look for the
|
1494 |
-
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
|
1495 |
-
# different font using DOT_FONTNAME you can set the path where dot
|
1496 |
-
# can find it using this tag.
|
1497 |
-
|
1498 |
-
DOT_FONTPATH =
|
1499 |
-
|
1500 |
-
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
1501 |
-
# will generate a graph for each documented class showing the direct and
|
1502 |
-
# indirect inheritance relations. Setting this tag to YES will force the
|
1503 |
-
# the CLASS_DIAGRAMS tag to NO.
|
1504 |
-
|
1505 |
-
CLASS_GRAPH = YES
|
1506 |
-
|
1507 |
-
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
|
1508 |
-
# will generate a graph for each documented class showing the direct and
|
1509 |
-
# indirect implementation dependencies (inheritance, containment, and
|
1510 |
-
# class references variables) of the class with other documented classes.
|
1511 |
-
|
1512 |
-
COLLABORATION_GRAPH = NO
|
1513 |
-
|
1514 |
-
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
|
1515 |
-
# will generate a graph for groups, showing the direct groups dependencies
|
1516 |
-
|
1517 |
-
GROUP_GRAPHS = YES
|
1518 |
-
|
1519 |
-
# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
|
1520 |
-
# collaboration diagrams in a style similar to the OMG's Unified Modeling
|
1521 |
-
# Language.
|
1522 |
-
|
1523 |
-
UML_LOOK = NO
|
1524 |
-
|
1525 |
-
# If set to YES, the inheritance and collaboration graphs will show the
|
1526 |
-
# relations between templates and their instances.
|
1527 |
-
|
1528 |
-
TEMPLATE_RELATIONS = NO
|
1529 |
-
|
1530 |
-
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
|
1531 |
-
# tags are set to YES then doxygen will generate a graph for each documented
|
1532 |
-
# file showing the direct and indirect include dependencies of the file with
|
1533 |
-
# other documented files.
|
1534 |
-
|
1535 |
-
INCLUDE_GRAPH = YES
|
1536 |
-
|
1537 |
-
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
|
1538 |
-
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
|
1539 |
-
# documented header file showing the documented files that directly or
|
1540 |
-
# indirectly include this file.
|
1541 |
-
|
1542 |
-
INCLUDED_BY_GRAPH = YES
|
1543 |
-
|
1544 |
-
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
|
1545 |
-
# doxygen will generate a call dependency graph for every global function
|
1546 |
-
# or class method. Note that enabling this option will significantly increase
|
1547 |
-
# the time of a run. So in most cases it will be better to enable call graphs
|
1548 |
-
# for selected functions only using the \callgraph command.
|
1549 |
-
|
1550 |
-
CALL_GRAPH = NO
|
1551 |
-
|
1552 |
-
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
|
1553 |
-
# doxygen will generate a caller dependency graph for every global function
|
1554 |
-
# or class method. Note that enabling this option will significantly increase
|
1555 |
-
# the time of a run. So in most cases it will be better to enable caller
|
1556 |
-
# graphs for selected functions only using the \callergraph command.
|
1557 |
-
|
1558 |
-
CALLER_GRAPH = NO
|
1559 |
-
|
1560 |
-
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
|
1561 |
-
# will graphical hierarchy of all classes instead of a textual one.
|
1562 |
-
|
1563 |
-
GRAPHICAL_HIERARCHY = YES
|
1564 |
-
|
1565 |
-
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
|
1566 |
-
# then doxygen will show the dependencies a directory has on other directories
|
1567 |
-
# in a graphical way. The dependency relations are determined by the #include
|
1568 |
-
# relations between the files in the directories.
|
1569 |
-
|
1570 |
-
DIRECTORY_GRAPH = YES
|
1571 |
-
|
1572 |
-
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
|
1573 |
-
# generated by dot. Possible values are png, jpg, or gif
|
1574 |
-
# If left blank png will be used.
|
1575 |
-
|
1576 |
-
DOT_IMAGE_FORMAT = png
|
1577 |
-
|
1578 |
-
# The tag DOT_PATH can be used to specify the path where the dot tool can be
|
1579 |
-
# found. If left blank, it is assumed the dot tool can be found in the path.
|
1580 |
-
|
1581 |
-
DOT_PATH =
|
1582 |
-
|
1583 |
-
# The DOTFILE_DIRS tag can be used to specify one or more directories that
|
1584 |
-
# contain dot files that are included in the documentation (see the
|
1585 |
-
# \dotfile command).
|
1586 |
-
|
1587 |
-
DOTFILE_DIRS =
|
1588 |
-
|
1589 |
-
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
|
1590 |
-
# nodes that will be shown in the graph. If the number of nodes in a graph
|
1591 |
-
# becomes larger than this value, doxygen will truncate the graph, which is
|
1592 |
-
# visualized by representing a node as a red box. Note that doxygen if the
|
1593 |
-
# number of direct children of the root node in a graph is already larger than
|
1594 |
-
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
|
1595 |
-
# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
|
1596 |
-
|
1597 |
-
DOT_GRAPH_MAX_NODES = 50
|
1598 |
-
|
1599 |
-
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
|
1600 |
-
# graphs generated by dot. A depth value of 3 means that only nodes reachable
|
1601 |
-
# from the root by following a path via at most 3 edges will be shown. Nodes
|
1602 |
-
# that lay further from the root node will be omitted. Note that setting this
|
1603 |
-
# option to 1 or 2 may greatly reduce the computation time needed for large
|
1604 |
-
# code bases. Also note that the size of a graph can be further restricted by
|
1605 |
-
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
|
1606 |
-
|
1607 |
-
MAX_DOT_GRAPH_DEPTH = 0
|
1608 |
-
|
1609 |
-
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
|
1610 |
-
# background. This is disabled by default, because dot on Windows does not
|
1611 |
-
# seem to support this out of the box. Warning: Depending on the platform used,
|
1612 |
-
# enabling this option may lead to badly anti-aliased labels on the edges of
|
1613 |
-
# a graph (i.e. they become hard to read).
|
1614 |
-
|
1615 |
-
DOT_TRANSPARENT = NO
|
1616 |
-
|
1617 |
-
# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
|
1618 |
-
# files in one run (i.e. multiple -o and -T options on the command line). This
|
1619 |
-
# makes dot run faster, but since only newer versions of dot (>1.8.10)
|
1620 |
-
# support this, this feature is disabled by default.
|
1621 |
-
|
1622 |
-
DOT_MULTI_TARGETS = NO
|
1623 |
-
|
1624 |
-
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
|
1625 |
-
# generate a legend page explaining the meaning of the various boxes and
|
1626 |
-
# arrows in the dot generated graphs.
|
1627 |
-
|
1628 |
-
GENERATE_LEGEND = YES
|
1629 |
-
|
1630 |
-
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
|
1631 |
-
# remove the intermediate dot files that are used to generate
|
1632 |
-
# the various graphs.
|
1633 |
-
|
1634 |
-
DOT_CLEANUP = YES
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/Mainpage.dox
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
\mainpage The Poppler CPP interface library
|
3 |
-
|
4 |
-
The Poppler CPP interface library, called libpoppler-cpp, is a library that
|
5 |
-
allows C++ programmers to easily load and render PDF files using the Poppler
|
6 |
-
library. Unlike the other Poppler frontends, it has no additional
|
7 |
-
requirements, so can be used in any C++ application.
|
8 |
-
|
9 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-destination-private.h
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2019, Masamichi Hosoda <[email protected]>
|
3 |
-
*
|
4 |
-
* This program is free software; you can redistribute it and/or modify
|
5 |
-
* it under the terms of the GNU General Public License as published by
|
6 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
7 |
-
* any later version.
|
8 |
-
*
|
9 |
-
* This program is distributed in the hope that it will be useful,
|
10 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
-
* GNU General Public License for more details.
|
13 |
-
*
|
14 |
-
* You should have received a copy of the GNU General Public License
|
15 |
-
* along with this program; if not, write to the Free Software
|
16 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
17 |
-
*/
|
18 |
-
|
19 |
-
#ifndef POPPLER_DESTINATION_PRIVATE_H
|
20 |
-
#define POPPLER_DESTINATION_PRIVATE_H
|
21 |
-
|
22 |
-
#include "poppler-global.h"
|
23 |
-
#include "poppler-destination.h"
|
24 |
-
|
25 |
-
#include "Object.h"
|
26 |
-
|
27 |
-
class PDFDoc;
|
28 |
-
class LinkDest;
|
29 |
-
|
30 |
-
namespace poppler {
|
31 |
-
|
32 |
-
class destination_private
|
33 |
-
{
|
34 |
-
public:
|
35 |
-
destination_private(const LinkDest *ld, PDFDoc *doc);
|
36 |
-
|
37 |
-
destination::type_enum type;
|
38 |
-
bool page_number_unresolved;
|
39 |
-
union {
|
40 |
-
Ref page_ref;
|
41 |
-
int page_number;
|
42 |
-
};
|
43 |
-
double left, bottom;
|
44 |
-
double right, top;
|
45 |
-
double zoom;
|
46 |
-
bool change_left : 1, change_top : 1;
|
47 |
-
bool change_zoom : 1;
|
48 |
-
|
49 |
-
PDFDoc *pdf_doc;
|
50 |
-
};
|
51 |
-
|
52 |
-
}
|
53 |
-
|
54 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-destination.cpp
DELETED
@@ -1,273 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2019, Masamichi Hosoda <[email protected]>
|
3 |
-
* Copyright (C) 2019 Albert Astals Cid <[email protected]>
|
4 |
-
* Copyright (C) 2022, Oliver Sander <[email protected]>
|
5 |
-
*
|
6 |
-
* This program is free software; you can redistribute it and/or modify
|
7 |
-
* it under the terms of the GNU General Public License as published by
|
8 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
9 |
-
* any later version.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program; if not, write to the Free Software
|
18 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
19 |
-
*/
|
20 |
-
|
21 |
-
/**
|
22 |
-
\file poppler-destination.h
|
23 |
-
*/
|
24 |
-
#include "poppler-destination.h"
|
25 |
-
|
26 |
-
#include "poppler-destination-private.h"
|
27 |
-
|
28 |
-
#include "PDFDoc.h"
|
29 |
-
#include "Link.h"
|
30 |
-
|
31 |
-
#include <utility>
|
32 |
-
|
33 |
-
using namespace poppler;
|
34 |
-
|
35 |
-
destination_private::destination_private(const LinkDest *ld, PDFDoc *doc) : pdf_doc(doc)
|
36 |
-
{
|
37 |
-
if (!ld) {
|
38 |
-
type = destination::unknown;
|
39 |
-
return;
|
40 |
-
}
|
41 |
-
|
42 |
-
switch (ld->getKind()) {
|
43 |
-
case ::destXYZ:
|
44 |
-
type = destination::xyz;
|
45 |
-
break;
|
46 |
-
case ::destFit:
|
47 |
-
type = destination::fit;
|
48 |
-
break;
|
49 |
-
case ::destFitH:
|
50 |
-
type = destination::fit_h;
|
51 |
-
break;
|
52 |
-
case ::destFitV:
|
53 |
-
type = destination::fit_v;
|
54 |
-
break;
|
55 |
-
case ::destFitR:
|
56 |
-
type = destination::fit_r;
|
57 |
-
break;
|
58 |
-
case ::destFitB:
|
59 |
-
type = destination::fit_b;
|
60 |
-
break;
|
61 |
-
case ::destFitBH:
|
62 |
-
type = destination::fit_b_h;
|
63 |
-
break;
|
64 |
-
case ::destFitBV:
|
65 |
-
type = destination::fit_b_v;
|
66 |
-
break;
|
67 |
-
default:
|
68 |
-
type = destination::unknown;
|
69 |
-
break;
|
70 |
-
}
|
71 |
-
|
72 |
-
if (!ld->isPageRef()) {
|
73 |
-
// The page number has been resolved.
|
74 |
-
page_number_unresolved = false;
|
75 |
-
page_number = ld->getPageNum();
|
76 |
-
} else if (doc) {
|
77 |
-
// It is necessary to resolve the page number by its accessor.
|
78 |
-
page_number_unresolved = true;
|
79 |
-
page_ref = ld->getPageRef();
|
80 |
-
} else {
|
81 |
-
// The page number cannot be resolved because there is no PDFDoc.
|
82 |
-
page_number_unresolved = false;
|
83 |
-
page_number = 0;
|
84 |
-
}
|
85 |
-
|
86 |
-
left = ld->getLeft();
|
87 |
-
bottom = ld->getBottom();
|
88 |
-
right = ld->getRight();
|
89 |
-
top = ld->getTop();
|
90 |
-
zoom = ld->getZoom();
|
91 |
-
change_left = ld->getChangeLeft();
|
92 |
-
change_top = ld->getChangeTop();
|
93 |
-
change_zoom = ld->getChangeZoom();
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
\class poppler::destination poppler-destination.h "poppler/cpp/poppler-destination.h"
|
98 |
-
|
99 |
-
The information about a destination used in a PDF %document.
|
100 |
-
*/
|
101 |
-
|
102 |
-
/**
|
103 |
-
\enum poppler::destination::type_enum
|
104 |
-
|
105 |
-
The various types of destinations available in a PDF %document.
|
106 |
-
*/
|
107 |
-
/**
|
108 |
-
\var poppler::destination::type_enum poppler::destination::unknown
|
109 |
-
|
110 |
-
unknown destination
|
111 |
-
*/
|
112 |
-
/**
|
113 |
-
\var poppler::destination::type_enum poppler::destination::xyz
|
114 |
-
|
115 |
-
go to page with coordinates (left, top) positioned at the upper-left
|
116 |
-
corner of the window and the contents of the page magnified
|
117 |
-
by the factor zoom
|
118 |
-
*/
|
119 |
-
/**
|
120 |
-
\var poppler::destination::type_enum poppler::destination::fit
|
121 |
-
|
122 |
-
go to page with its contents magnified just enough to fit the entire page
|
123 |
-
within the window both horizontally and vertically
|
124 |
-
*/
|
125 |
-
/**
|
126 |
-
\var poppler::destination::type_enum poppler::destination::fit_h
|
127 |
-
|
128 |
-
go to page with the vertical coordinate top positioned at the top edge
|
129 |
-
of the window and the contents of the page magnified just enough to fit
|
130 |
-
the entire width of the page within the window
|
131 |
-
*/
|
132 |
-
/**
|
133 |
-
\var poppler::destination::type_enum poppler::destination::fit_v
|
134 |
-
|
135 |
-
go to page with the horizontal coordinate left positioned at the left edge
|
136 |
-
of the window and the contents of the page magnified just enough to fit
|
137 |
-
the entire height of the page within the window
|
138 |
-
*/
|
139 |
-
/**
|
140 |
-
\var poppler::destination::type_enum poppler::destination::fit_r
|
141 |
-
|
142 |
-
go to page with its contents magnified just enough to fit the rectangle
|
143 |
-
specified by the coordinates left, bottom, right, and top entirely
|
144 |
-
within the window both horizontally and vertically
|
145 |
-
*/
|
146 |
-
/**
|
147 |
-
\var poppler::destination::type_enum poppler::destination::fit_b
|
148 |
-
|
149 |
-
go to page with its contents magnified just enough to fit its bounding box
|
150 |
-
entirely within the window both horizontally and vertically
|
151 |
-
*/
|
152 |
-
/**
|
153 |
-
\var poppler::destination::type_enum poppler::destination::fit_b_h
|
154 |
-
|
155 |
-
go to page with the vertical coordinate top positioned at the top edge
|
156 |
-
of the window and the contents of the page magnified just enough to fit
|
157 |
-
the entire width of its bounding box within the window
|
158 |
-
*/
|
159 |
-
/**
|
160 |
-
\var poppler::destination::type_enum poppler::destination::fit_b_v
|
161 |
-
|
162 |
-
go to page with the horizontal coordinate left positioned at the left edge
|
163 |
-
of the window and the contents of the page magnified just enough to fit
|
164 |
-
the entire height of its bounding box within the window
|
165 |
-
*/
|
166 |
-
|
167 |
-
destination::destination(destination_private *dd) : d(dd) { }
|
168 |
-
|
169 |
-
/**
|
170 |
-
Move constructor.
|
171 |
-
*/
|
172 |
-
destination::destination(destination &&other) noexcept
|
173 |
-
{
|
174 |
-
*this = std::move(other);
|
175 |
-
}
|
176 |
-
|
177 |
-
/**
|
178 |
-
\returns the type of the destination
|
179 |
-
*/
|
180 |
-
destination::type_enum destination::type() const
|
181 |
-
{
|
182 |
-
return d->type;
|
183 |
-
}
|
184 |
-
|
185 |
-
/**
|
186 |
-
\note It is necessary not to destruct parent poppler::document
|
187 |
-
before calling this function for the first time.
|
188 |
-
|
189 |
-
\returns the page number of the destination
|
190 |
-
*/
|
191 |
-
int destination::page_number() const
|
192 |
-
{
|
193 |
-
if (d->page_number_unresolved) {
|
194 |
-
d->page_number_unresolved = false;
|
195 |
-
d->page_number = d->pdf_doc->findPage(d->page_ref);
|
196 |
-
}
|
197 |
-
|
198 |
-
return d->page_number;
|
199 |
-
}
|
200 |
-
|
201 |
-
/**
|
202 |
-
\returns the left coordinate of the destination
|
203 |
-
*/
|
204 |
-
double destination::left() const
|
205 |
-
{
|
206 |
-
return d->left;
|
207 |
-
}
|
208 |
-
|
209 |
-
/**
|
210 |
-
\returns the bottom coordinate of the destination
|
211 |
-
*/
|
212 |
-
double destination::bottom() const
|
213 |
-
{
|
214 |
-
return d->bottom;
|
215 |
-
}
|
216 |
-
|
217 |
-
/**
|
218 |
-
\returns the right coordinate of the destination
|
219 |
-
*/
|
220 |
-
double destination::right() const
|
221 |
-
{
|
222 |
-
return d->right;
|
223 |
-
}
|
224 |
-
|
225 |
-
/**
|
226 |
-
\returns the top coordinate of the destination
|
227 |
-
*/
|
228 |
-
double destination::top() const
|
229 |
-
{
|
230 |
-
return d->top;
|
231 |
-
}
|
232 |
-
|
233 |
-
/**
|
234 |
-
\returns the scale factor of the destination
|
235 |
-
*/
|
236 |
-
double destination::zoom() const
|
237 |
-
{
|
238 |
-
return d->zoom;
|
239 |
-
}
|
240 |
-
|
241 |
-
/**
|
242 |
-
\returns whether left coordinate should be changed
|
243 |
-
*/
|
244 |
-
bool destination::is_change_left() const
|
245 |
-
{
|
246 |
-
return d->change_left;
|
247 |
-
}
|
248 |
-
|
249 |
-
/**
|
250 |
-
\returns whether top coordinate should be changed
|
251 |
-
*/
|
252 |
-
bool destination::is_change_top() const
|
253 |
-
{
|
254 |
-
return d->change_top;
|
255 |
-
}
|
256 |
-
|
257 |
-
/**
|
258 |
-
\returns whether scale factor should be changed
|
259 |
-
*/
|
260 |
-
bool destination::is_change_zoom() const
|
261 |
-
{
|
262 |
-
return d->change_zoom;
|
263 |
-
}
|
264 |
-
|
265 |
-
/**
|
266 |
-
Move assignment operator.
|
267 |
-
*/
|
268 |
-
destination &destination::operator=(destination &&other) noexcept = default;
|
269 |
-
|
270 |
-
/**
|
271 |
-
Destructor.
|
272 |
-
*/
|
273 |
-
destination::~destination() = default;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-destination.h
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2019, Masamichi Hosoda <[email protected]>
|
3 |
-
* Copyright (C) 2019, 2021, Albert Astals Cid <[email protected]>
|
4 |
-
* Copyright (C) 2022, Oliver Sander <[email protected]>
|
5 |
-
*
|
6 |
-
* This program is free software; you can redistribute it and/or modify
|
7 |
-
* it under the terms of the GNU General Public License as published by
|
8 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
9 |
-
* any later version.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program; if not, write to the Free Software
|
18 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
19 |
-
*/
|
20 |
-
|
21 |
-
#ifndef POPPLER_DESTINATION_H
|
22 |
-
#define POPPLER_DESTINATION_H
|
23 |
-
|
24 |
-
#include <memory>
|
25 |
-
#include "poppler-global.h"
|
26 |
-
|
27 |
-
namespace poppler {
|
28 |
-
class destination_private;
|
29 |
-
|
30 |
-
class POPPLER_CPP_EXPORT destination : public poppler::noncopyable
|
31 |
-
{
|
32 |
-
public:
|
33 |
-
enum type_enum
|
34 |
-
{
|
35 |
-
unknown,
|
36 |
-
xyz,
|
37 |
-
fit,
|
38 |
-
fit_h,
|
39 |
-
fit_v,
|
40 |
-
fit_r,
|
41 |
-
fit_b,
|
42 |
-
fit_b_h,
|
43 |
-
fit_b_v
|
44 |
-
};
|
45 |
-
|
46 |
-
~destination();
|
47 |
-
destination(destination &&other) noexcept;
|
48 |
-
|
49 |
-
type_enum type() const;
|
50 |
-
int page_number() const;
|
51 |
-
double left() const;
|
52 |
-
double bottom() const;
|
53 |
-
double right() const;
|
54 |
-
double top() const;
|
55 |
-
double zoom() const;
|
56 |
-
bool is_change_left() const;
|
57 |
-
bool is_change_top() const;
|
58 |
-
bool is_change_zoom() const;
|
59 |
-
|
60 |
-
destination &operator=(destination &&other) noexcept;
|
61 |
-
|
62 |
-
private:
|
63 |
-
explicit destination(destination_private *dd);
|
64 |
-
|
65 |
-
std::unique_ptr<destination_private> d;
|
66 |
-
friend class document;
|
67 |
-
};
|
68 |
-
|
69 |
-
}
|
70 |
-
|
71 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-document-private.h
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2011, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2018, 2020, 2022, Albert Astals Cid <[email protected]>
|
4 |
-
* Copyright (C) 2018, 2020, Adam Reichold <[email protected]>
|
5 |
-
*
|
6 |
-
* This program is free software; you can redistribute it and/or modify
|
7 |
-
* it under the terms of the GNU General Public License as published by
|
8 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
9 |
-
* any later version.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program; if not, write to the Free Software
|
18 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
19 |
-
*/
|
20 |
-
|
21 |
-
#ifndef POPPLER_DOCUMENT_PRIVATE_H
|
22 |
-
#define POPPLER_DOCUMENT_PRIVATE_H
|
23 |
-
|
24 |
-
#include "poppler-global.h"
|
25 |
-
|
26 |
-
#include "poppler-config.h"
|
27 |
-
#include "GooString.h"
|
28 |
-
#include "PDFDoc.h"
|
29 |
-
#include "GlobalParams.h"
|
30 |
-
|
31 |
-
#include <vector>
|
32 |
-
|
33 |
-
namespace poppler {
|
34 |
-
|
35 |
-
class document;
|
36 |
-
class embedded_file;
|
37 |
-
|
38 |
-
class document_private : private GlobalParamsIniter
|
39 |
-
{
|
40 |
-
public:
|
41 |
-
document_private(std::unique_ptr<GooString> &&file_path, const std::string &owner_password, const std::string &user_password);
|
42 |
-
document_private(byte_array *file_data, const std::string &owner_password, const std::string &user_password);
|
43 |
-
document_private(const char *file_data, int file_data_length, const std::string &owner_password, const std::string &user_password);
|
44 |
-
~document_private();
|
45 |
-
|
46 |
-
static document *check_document(document_private *doc, byte_array *file_data);
|
47 |
-
|
48 |
-
PDFDoc *doc;
|
49 |
-
byte_array doc_data;
|
50 |
-
const char *raw_doc_data;
|
51 |
-
int raw_doc_data_length;
|
52 |
-
bool is_locked;
|
53 |
-
std::vector<embedded_file *> embedded_files;
|
54 |
-
|
55 |
-
private:
|
56 |
-
document_private();
|
57 |
-
};
|
58 |
-
|
59 |
-
}
|
60 |
-
|
61 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-document.cpp
DELETED
@@ -1,1230 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2011, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2016 Jakub Alba <[email protected]>
|
4 |
-
* Copyright (C) 2017, 2022, Albert Astals Cid <[email protected]>
|
5 |
-
* Copyright (C) 2018, 2020, Adam Reichold <[email protected]>
|
6 |
-
* Copyright (C) 2019, Masamichi Hosoda <[email protected]>
|
7 |
-
* Copyright (C) 2019, 2020, Oliver Sander <[email protected]>
|
8 |
-
*
|
9 |
-
* This program is free software; you can redistribute it and/or modify
|
10 |
-
* it under the terms of the GNU General Public License as published by
|
11 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
12 |
-
* any later version.
|
13 |
-
*
|
14 |
-
* This program is distributed in the hope that it will be useful,
|
15 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
-
* GNU General Public License for more details.
|
18 |
-
*
|
19 |
-
* You should have received a copy of the GNU General Public License
|
20 |
-
* along with this program; if not, write to the Free Software
|
21 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
22 |
-
*/
|
23 |
-
|
24 |
-
/**
|
25 |
-
\file poppler-document.h
|
26 |
-
*/
|
27 |
-
#include "poppler-destination.h"
|
28 |
-
#include "poppler-document.h"
|
29 |
-
#include "poppler-embedded-file.h"
|
30 |
-
#include "poppler-page.h"
|
31 |
-
#include "poppler-toc.h"
|
32 |
-
|
33 |
-
#include "poppler-destination-private.h"
|
34 |
-
#include "poppler-document-private.h"
|
35 |
-
#include "poppler-embedded-file-private.h"
|
36 |
-
#include "poppler-page-private.h"
|
37 |
-
#include "poppler-private.h"
|
38 |
-
#include "poppler-toc-private.h"
|
39 |
-
|
40 |
-
#include "Catalog.h"
|
41 |
-
#include "DateInfo.h"
|
42 |
-
#include "ErrorCodes.h"
|
43 |
-
#include "GlobalParams.h"
|
44 |
-
#include "Link.h"
|
45 |
-
#include "Outline.h"
|
46 |
-
|
47 |
-
#include <algorithm>
|
48 |
-
#include <iterator>
|
49 |
-
#include <memory>
|
50 |
-
|
51 |
-
using namespace poppler;
|
52 |
-
|
53 |
-
document_private::document_private(std::unique_ptr<GooString> &&file_path, const std::string &owner_password, const std::string &user_password) : document_private()
|
54 |
-
{
|
55 |
-
doc = new PDFDoc(std::move(file_path), GooString(owner_password.c_str()), GooString(user_password.c_str()));
|
56 |
-
}
|
57 |
-
|
58 |
-
document_private::document_private(byte_array *file_data, const std::string &owner_password, const std::string &user_password) : document_private()
|
59 |
-
{
|
60 |
-
file_data->swap(doc_data);
|
61 |
-
MemStream *memstr = new MemStream(&doc_data[0], 0, doc_data.size(), Object(objNull));
|
62 |
-
doc = new PDFDoc(memstr, GooString(owner_password.c_str()), GooString(user_password.c_str()));
|
63 |
-
}
|
64 |
-
|
65 |
-
document_private::document_private(const char *file_data, int file_data_length, const std::string &owner_password, const std::string &user_password) : document_private()
|
66 |
-
{
|
67 |
-
raw_doc_data = file_data;
|
68 |
-
raw_doc_data_length = file_data_length;
|
69 |
-
MemStream *memstr = new MemStream(raw_doc_data, 0, raw_doc_data_length, Object(objNull));
|
70 |
-
doc = new PDFDoc(memstr, GooString(owner_password.c_str()), GooString(user_password.c_str()));
|
71 |
-
}
|
72 |
-
|
73 |
-
document_private::document_private() : GlobalParamsIniter(detail::error_function), doc(nullptr), raw_doc_data(nullptr), raw_doc_data_length(0), is_locked(false) { }
|
74 |
-
|
75 |
-
document_private::~document_private()
|
76 |
-
{
|
77 |
-
delete_all(embedded_files);
|
78 |
-
|
79 |
-
delete doc;
|
80 |
-
}
|
81 |
-
|
82 |
-
document *document_private::check_document(document_private *doc, byte_array *file_data)
|
83 |
-
{
|
84 |
-
if (doc->doc->isOk() || doc->doc->getErrorCode() == errEncrypted) {
|
85 |
-
if (doc->doc->getErrorCode() == errEncrypted) {
|
86 |
-
doc->is_locked = true;
|
87 |
-
}
|
88 |
-
return new document(*doc);
|
89 |
-
} else {
|
90 |
-
// put back the document data where it was before
|
91 |
-
if (file_data) {
|
92 |
-
file_data->swap(doc->doc_data);
|
93 |
-
}
|
94 |
-
delete doc;
|
95 |
-
}
|
96 |
-
return nullptr;
|
97 |
-
}
|
98 |
-
|
99 |
-
/**
|
100 |
-
\class poppler::document poppler-document.h "poppler/cpp/poppler-document.h"
|
101 |
-
|
102 |
-
Represents a PDF %document.
|
103 |
-
*/
|
104 |
-
|
105 |
-
/**
|
106 |
-
\enum poppler::document::page_mode_enum
|
107 |
-
|
108 |
-
The various page modes available in a PDF %document.
|
109 |
-
*/
|
110 |
-
/**
|
111 |
-
\var poppler::document::page_mode_enum poppler::document::use_none
|
112 |
-
|
113 |
-
The %document specifies no particular page mode.
|
114 |
-
*/
|
115 |
-
/**
|
116 |
-
\var poppler::document::page_mode_enum poppler::document::use_outlines
|
117 |
-
|
118 |
-
The %document specifies its TOC (table of contents) should be open.
|
119 |
-
*/
|
120 |
-
/**
|
121 |
-
\var poppler::document::page_mode_enum poppler::document::use_thumbs
|
122 |
-
|
123 |
-
The %document specifies that should be open a view of the thumbnails of its
|
124 |
-
pages.
|
125 |
-
*/
|
126 |
-
/**
|
127 |
-
\var poppler::document::page_mode_enum poppler::document::fullscreen
|
128 |
-
|
129 |
-
The %document specifies it wants to be open in a fullscreen mode.
|
130 |
-
*/
|
131 |
-
/**
|
132 |
-
\var poppler::document::page_mode_enum poppler::document::use_oc
|
133 |
-
|
134 |
-
The %document specifies that should be open a view of its Optional Content
|
135 |
-
(also known as layers).
|
136 |
-
*/
|
137 |
-
/**
|
138 |
-
\var poppler::document::page_mode_enum poppler::document::use_attach
|
139 |
-
|
140 |
-
The %document specifies that should be open a view of its %document-level
|
141 |
-
attachments.
|
142 |
-
*/
|
143 |
-
|
144 |
-
document::document(document_private &dd) : d(&dd) { }
|
145 |
-
|
146 |
-
document::~document()
|
147 |
-
{
|
148 |
-
delete d;
|
149 |
-
}
|
150 |
-
|
151 |
-
/**
|
152 |
-
\returns whether the current %document is locked
|
153 |
-
*/
|
154 |
-
bool document::is_locked() const
|
155 |
-
{
|
156 |
-
return d->is_locked;
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
Unlocks the current document, if locked.
|
161 |
-
|
162 |
-
\returns the new locking status of the document
|
163 |
-
*/
|
164 |
-
bool document::unlock(const std::string &owner_password, const std::string &user_password)
|
165 |
-
{
|
166 |
-
if (d->is_locked) {
|
167 |
-
document_private *newdoc = nullptr;
|
168 |
-
if (d->doc_data.size() > 0) {
|
169 |
-
newdoc = new document_private(&d->doc_data, owner_password, user_password);
|
170 |
-
} else if (d->raw_doc_data) {
|
171 |
-
newdoc = new document_private(d->raw_doc_data, d->raw_doc_data_length, owner_password, user_password);
|
172 |
-
} else {
|
173 |
-
newdoc = new document_private(std::make_unique<GooString>(d->doc->getFileName()), owner_password, user_password);
|
174 |
-
}
|
175 |
-
if (!newdoc->doc->isOk()) {
|
176 |
-
d->doc_data.swap(newdoc->doc_data);
|
177 |
-
delete newdoc;
|
178 |
-
} else {
|
179 |
-
delete d;
|
180 |
-
d = newdoc;
|
181 |
-
d->is_locked = false;
|
182 |
-
}
|
183 |
-
}
|
184 |
-
return d->is_locked;
|
185 |
-
}
|
186 |
-
|
187 |
-
/**
|
188 |
-
\returns the eventual page mode specified by the current PDF %document
|
189 |
-
*/
|
190 |
-
document::page_mode_enum document::page_mode() const
|
191 |
-
{
|
192 |
-
switch (d->doc->getCatalog()->getPageMode()) {
|
193 |
-
case Catalog::pageModeNone:
|
194 |
-
return use_none;
|
195 |
-
case Catalog::pageModeOutlines:
|
196 |
-
return use_outlines;
|
197 |
-
case Catalog::pageModeThumbs:
|
198 |
-
return use_thumbs;
|
199 |
-
case Catalog::pageModeFullScreen:
|
200 |
-
return fullscreen;
|
201 |
-
case Catalog::pageModeOC:
|
202 |
-
return use_oc;
|
203 |
-
case Catalog::pageModeAttach:
|
204 |
-
return use_attach;
|
205 |
-
default:
|
206 |
-
return use_none;
|
207 |
-
}
|
208 |
-
}
|
209 |
-
|
210 |
-
/**
|
211 |
-
\returns the eventual page layout specified by the current PDF %document
|
212 |
-
*/
|
213 |
-
document::page_layout_enum document::page_layout() const
|
214 |
-
{
|
215 |
-
switch (d->doc->getCatalog()->getPageLayout()) {
|
216 |
-
case Catalog::pageLayoutNone:
|
217 |
-
return no_layout;
|
218 |
-
case Catalog::pageLayoutSinglePage:
|
219 |
-
return single_page;
|
220 |
-
case Catalog::pageLayoutOneColumn:
|
221 |
-
return one_column;
|
222 |
-
case Catalog::pageLayoutTwoColumnLeft:
|
223 |
-
return two_column_left;
|
224 |
-
case Catalog::pageLayoutTwoColumnRight:
|
225 |
-
return two_column_right;
|
226 |
-
case Catalog::pageLayoutTwoPageLeft:
|
227 |
-
return two_page_left;
|
228 |
-
case Catalog::pageLayoutTwoPageRight:
|
229 |
-
return two_page_right;
|
230 |
-
default:
|
231 |
-
return no_layout;
|
232 |
-
}
|
233 |
-
}
|
234 |
-
|
235 |
-
/**
|
236 |
-
Gets the version of the current PDF %document.
|
237 |
-
|
238 |
-
Example:
|
239 |
-
\code
|
240 |
-
poppler::document *doc = ...;
|
241 |
-
// for example, if the document is PDF 1.6:
|
242 |
-
int major = 0, minor = 0;
|
243 |
-
doc->get_pdf_version(&major, &minor);
|
244 |
-
// major == 1
|
245 |
-
// minor == 6
|
246 |
-
\endcode
|
247 |
-
|
248 |
-
\param major if not NULL, will be set to the "major" number of the version
|
249 |
-
\param minor if not NULL, will be set to the "minor" number of the version
|
250 |
-
*/
|
251 |
-
void document::get_pdf_version(int *major, int *minor) const
|
252 |
-
{
|
253 |
-
if (major) {
|
254 |
-
*major = d->doc->getPDFMajorVersion();
|
255 |
-
}
|
256 |
-
if (minor) {
|
257 |
-
*minor = d->doc->getPDFMinorVersion();
|
258 |
-
}
|
259 |
-
}
|
260 |
-
|
261 |
-
/**
|
262 |
-
\returns all the information keys available in the %document
|
263 |
-
\see info_key, info_date
|
264 |
-
*/
|
265 |
-
std::vector<std::string> document::info_keys() const
|
266 |
-
{
|
267 |
-
if (d->is_locked) {
|
268 |
-
return std::vector<std::string>();
|
269 |
-
}
|
270 |
-
|
271 |
-
Object info = d->doc->getDocInfo();
|
272 |
-
if (!info.isDict()) {
|
273 |
-
return std::vector<std::string>();
|
274 |
-
}
|
275 |
-
|
276 |
-
Dict *info_dict = info.getDict();
|
277 |
-
std::vector<std::string> keys(info_dict->getLength());
|
278 |
-
for (int i = 0; i < info_dict->getLength(); ++i) {
|
279 |
-
keys[i] = std::string(info_dict->getKey(i));
|
280 |
-
}
|
281 |
-
|
282 |
-
return keys;
|
283 |
-
}
|
284 |
-
|
285 |
-
/**
|
286 |
-
Gets the value of the specified \p key of the document information.
|
287 |
-
|
288 |
-
\returns the value for the \p key, or an empty string if not available
|
289 |
-
\see info_keys, info_date
|
290 |
-
*/
|
291 |
-
ustring document::info_key(const std::string &key) const
|
292 |
-
{
|
293 |
-
if (d->is_locked) {
|
294 |
-
return ustring();
|
295 |
-
}
|
296 |
-
|
297 |
-
std::unique_ptr<GooString> goo_value(d->doc->getDocInfoStringEntry(key.c_str()));
|
298 |
-
if (!goo_value.get()) {
|
299 |
-
return ustring();
|
300 |
-
}
|
301 |
-
|
302 |
-
return detail::unicode_GooString_to_ustring(goo_value.get());
|
303 |
-
}
|
304 |
-
|
305 |
-
/**
|
306 |
-
Sets the value of the specified \p key of the %document information to \p val.
|
307 |
-
If \p val is empty, the entry specified by \p key is removed.
|
308 |
-
|
309 |
-
\returns true on success, false on failure
|
310 |
-
*/
|
311 |
-
bool document::set_info_key(const std::string &key, const ustring &val)
|
312 |
-
{
|
313 |
-
if (d->is_locked) {
|
314 |
-
return false;
|
315 |
-
}
|
316 |
-
|
317 |
-
GooString *goo_val;
|
318 |
-
|
319 |
-
if (val.empty()) {
|
320 |
-
goo_val = nullptr;
|
321 |
-
} else {
|
322 |
-
goo_val = detail::ustring_to_unicode_GooString(val);
|
323 |
-
}
|
324 |
-
|
325 |
-
d->doc->setDocInfoStringEntry(key.c_str(), goo_val);
|
326 |
-
return true;
|
327 |
-
}
|
328 |
-
|
329 |
-
/**
|
330 |
-
Gets the time_type value of the specified \p key of the document
|
331 |
-
information.
|
332 |
-
|
333 |
-
\returns the time_t value for the \p key
|
334 |
-
\see info_keys, info_date
|
335 |
-
*/
|
336 |
-
time_type document::info_date(const std::string &key) const
|
337 |
-
{
|
338 |
-
if (d->is_locked) {
|
339 |
-
return time_type(-1);
|
340 |
-
}
|
341 |
-
|
342 |
-
std::unique_ptr<GooString> goo_date(d->doc->getDocInfoStringEntry(key.c_str()));
|
343 |
-
if (!goo_date.get()) {
|
344 |
-
return time_type(-1);
|
345 |
-
}
|
346 |
-
|
347 |
-
return static_cast<time_type>(dateStringToTime(goo_date.get()));
|
348 |
-
}
|
349 |
-
|
350 |
-
/**
|
351 |
-
Gets the time_t value of the specified \p key of the document
|
352 |
-
information.
|
353 |
-
|
354 |
-
\returns the time_t value for the \p key
|
355 |
-
\see info_keys, info_date
|
356 |
-
*/
|
357 |
-
time_t document::info_date_t(const std::string &key) const
|
358 |
-
{
|
359 |
-
if (d->is_locked) {
|
360 |
-
return time_t(-1);
|
361 |
-
}
|
362 |
-
|
363 |
-
std::unique_ptr<GooString> goo_date(d->doc->getDocInfoStringEntry(key.c_str()));
|
364 |
-
if (!goo_date.get()) {
|
365 |
-
return time_t(-1);
|
366 |
-
}
|
367 |
-
|
368 |
-
return dateStringToTime(goo_date.get());
|
369 |
-
}
|
370 |
-
|
371 |
-
/**
|
372 |
-
Sets the time_type value of the specified \p key of the %document information
|
373 |
-
to \p val.
|
374 |
-
If \p val == time_type(-1), the entry specified by \p key is removed.
|
375 |
-
|
376 |
-
\returns true on success, false on failure
|
377 |
-
*/
|
378 |
-
bool document::set_info_date(const std::string &key, time_type val)
|
379 |
-
{
|
380 |
-
if (d->is_locked) {
|
381 |
-
return false;
|
382 |
-
}
|
383 |
-
|
384 |
-
GooString *goo_date;
|
385 |
-
|
386 |
-
if (val == time_type(-1)) {
|
387 |
-
goo_date = nullptr;
|
388 |
-
} else {
|
389 |
-
time_t t = static_cast<time_t>(val);
|
390 |
-
goo_date = timeToDateString(&t);
|
391 |
-
}
|
392 |
-
|
393 |
-
d->doc->setDocInfoStringEntry(key.c_str(), goo_date);
|
394 |
-
return true;
|
395 |
-
}
|
396 |
-
|
397 |
-
/**
|
398 |
-
Sets the time_t value of the specified \p key of the %document information
|
399 |
-
to \p val.
|
400 |
-
If \p val == time_t(-1), the entry specified by \p key is removed.
|
401 |
-
|
402 |
-
\returns true on success, false on failure
|
403 |
-
*/
|
404 |
-
bool document::set_info_date_t(const std::string &key, time_t val)
|
405 |
-
{
|
406 |
-
if (d->is_locked) {
|
407 |
-
return false;
|
408 |
-
}
|
409 |
-
|
410 |
-
GooString *goo_date;
|
411 |
-
|
412 |
-
if (val == time_t(-1)) {
|
413 |
-
goo_date = nullptr;
|
414 |
-
} else {
|
415 |
-
goo_date = timeToDateString(&val);
|
416 |
-
}
|
417 |
-
|
418 |
-
d->doc->setDocInfoStringEntry(key.c_str(), goo_date);
|
419 |
-
return true;
|
420 |
-
}
|
421 |
-
|
422 |
-
/**
|
423 |
-
Gets the %document's title.
|
424 |
-
|
425 |
-
\returns the document's title, or an empty string if not available
|
426 |
-
\see set_title, info_key
|
427 |
-
*/
|
428 |
-
ustring document::get_title() const
|
429 |
-
{
|
430 |
-
if (d->is_locked) {
|
431 |
-
return ustring();
|
432 |
-
}
|
433 |
-
|
434 |
-
std::unique_ptr<GooString> goo_title(d->doc->getDocInfoTitle());
|
435 |
-
if (!goo_title.get()) {
|
436 |
-
return ustring();
|
437 |
-
}
|
438 |
-
|
439 |
-
return detail::unicode_GooString_to_ustring(goo_title.get());
|
440 |
-
}
|
441 |
-
|
442 |
-
/**
|
443 |
-
Sets the %document's title to \p title.
|
444 |
-
If \p title is empty, the %document's title is removed.
|
445 |
-
|
446 |
-
\returns true on success, false on failure
|
447 |
-
*/
|
448 |
-
bool document::set_title(const ustring &title)
|
449 |
-
{
|
450 |
-
if (d->is_locked) {
|
451 |
-
return false;
|
452 |
-
}
|
453 |
-
|
454 |
-
GooString *goo_title;
|
455 |
-
|
456 |
-
if (title.empty()) {
|
457 |
-
goo_title = nullptr;
|
458 |
-
} else {
|
459 |
-
goo_title = detail::ustring_to_unicode_GooString(title);
|
460 |
-
}
|
461 |
-
|
462 |
-
d->doc->setDocInfoTitle(goo_title);
|
463 |
-
return true;
|
464 |
-
}
|
465 |
-
|
466 |
-
/**
|
467 |
-
Gets the document's author.
|
468 |
-
|
469 |
-
\returns the document's author, or an empty string if not available
|
470 |
-
\see set_author, info_key
|
471 |
-
*/
|
472 |
-
ustring document::get_author() const
|
473 |
-
{
|
474 |
-
if (d->is_locked) {
|
475 |
-
return ustring();
|
476 |
-
}
|
477 |
-
|
478 |
-
std::unique_ptr<GooString> goo_author(d->doc->getDocInfoAuthor());
|
479 |
-
if (!goo_author.get()) {
|
480 |
-
return ustring();
|
481 |
-
}
|
482 |
-
|
483 |
-
return detail::unicode_GooString_to_ustring(goo_author.get());
|
484 |
-
}
|
485 |
-
|
486 |
-
/**
|
487 |
-
Sets the %document's author to \p author.
|
488 |
-
If \p author is empty, the %document's author is removed.
|
489 |
-
|
490 |
-
\returns true on success, false on failure
|
491 |
-
*/
|
492 |
-
bool document::set_author(const ustring &author)
|
493 |
-
{
|
494 |
-
if (d->is_locked) {
|
495 |
-
return false;
|
496 |
-
}
|
497 |
-
|
498 |
-
GooString *goo_author;
|
499 |
-
|
500 |
-
if (author.empty()) {
|
501 |
-
goo_author = nullptr;
|
502 |
-
} else {
|
503 |
-
goo_author = detail::ustring_to_unicode_GooString(author);
|
504 |
-
}
|
505 |
-
|
506 |
-
d->doc->setDocInfoAuthor(goo_author);
|
507 |
-
return true;
|
508 |
-
}
|
509 |
-
|
510 |
-
/**
|
511 |
-
Gets the document's subject.
|
512 |
-
|
513 |
-
\returns the document's subject, or an empty string if not available
|
514 |
-
\see set_subject, info_key
|
515 |
-
*/
|
516 |
-
ustring document::get_subject() const
|
517 |
-
{
|
518 |
-
if (d->is_locked) {
|
519 |
-
return ustring();
|
520 |
-
}
|
521 |
-
|
522 |
-
std::unique_ptr<GooString> goo_subject(d->doc->getDocInfoSubject());
|
523 |
-
if (!goo_subject.get()) {
|
524 |
-
return ustring();
|
525 |
-
}
|
526 |
-
|
527 |
-
return detail::unicode_GooString_to_ustring(goo_subject.get());
|
528 |
-
}
|
529 |
-
|
530 |
-
/**
|
531 |
-
Sets the %document's subject to \p subject.
|
532 |
-
If \p subject is empty, the %document's subject is removed.
|
533 |
-
|
534 |
-
\returns true on success, false on failure
|
535 |
-
*/
|
536 |
-
bool document::set_subject(const ustring &subject)
|
537 |
-
{
|
538 |
-
if (d->is_locked) {
|
539 |
-
return false;
|
540 |
-
}
|
541 |
-
|
542 |
-
GooString *goo_subject;
|
543 |
-
|
544 |
-
if (subject.empty()) {
|
545 |
-
goo_subject = nullptr;
|
546 |
-
} else {
|
547 |
-
goo_subject = detail::ustring_to_unicode_GooString(subject);
|
548 |
-
}
|
549 |
-
|
550 |
-
d->doc->setDocInfoSubject(goo_subject);
|
551 |
-
return true;
|
552 |
-
}
|
553 |
-
|
554 |
-
/**
|
555 |
-
Gets the document's keywords.
|
556 |
-
|
557 |
-
\returns the document's keywords, or an empty string if not available
|
558 |
-
\see set_keywords, info_key
|
559 |
-
*/
|
560 |
-
ustring document::get_keywords() const
|
561 |
-
{
|
562 |
-
if (d->is_locked) {
|
563 |
-
return ustring();
|
564 |
-
}
|
565 |
-
|
566 |
-
std::unique_ptr<GooString> goo_keywords(d->doc->getDocInfoKeywords());
|
567 |
-
if (!goo_keywords.get()) {
|
568 |
-
return ustring();
|
569 |
-
}
|
570 |
-
|
571 |
-
return detail::unicode_GooString_to_ustring(goo_keywords.get());
|
572 |
-
}
|
573 |
-
|
574 |
-
/**
|
575 |
-
Sets the %document's keywords to \p keywords.
|
576 |
-
If \p keywords is empty, the %document's keywords are removed.
|
577 |
-
|
578 |
-
\returns true on success, false on failure
|
579 |
-
*/
|
580 |
-
bool document::set_keywords(const ustring &keywords)
|
581 |
-
{
|
582 |
-
if (d->is_locked) {
|
583 |
-
return false;
|
584 |
-
}
|
585 |
-
|
586 |
-
GooString *goo_keywords;
|
587 |
-
|
588 |
-
if (keywords.empty()) {
|
589 |
-
goo_keywords = nullptr;
|
590 |
-
} else {
|
591 |
-
goo_keywords = detail::ustring_to_unicode_GooString(keywords);
|
592 |
-
}
|
593 |
-
|
594 |
-
d->doc->setDocInfoKeywords(goo_keywords);
|
595 |
-
return true;
|
596 |
-
}
|
597 |
-
|
598 |
-
/**
|
599 |
-
Gets the document's creator.
|
600 |
-
|
601 |
-
\returns the document's creator, or an empty string if not available
|
602 |
-
\see set_creator, info_key
|
603 |
-
*/
|
604 |
-
ustring document::get_creator() const
|
605 |
-
{
|
606 |
-
if (d->is_locked) {
|
607 |
-
return ustring();
|
608 |
-
}
|
609 |
-
|
610 |
-
std::unique_ptr<GooString> goo_creator(d->doc->getDocInfoCreator());
|
611 |
-
if (!goo_creator.get()) {
|
612 |
-
return ustring();
|
613 |
-
}
|
614 |
-
|
615 |
-
return detail::unicode_GooString_to_ustring(goo_creator.get());
|
616 |
-
}
|
617 |
-
|
618 |
-
/**
|
619 |
-
Sets the %document's creator to \p creator.
|
620 |
-
If \p creator is empty, the %document's creator is removed.
|
621 |
-
|
622 |
-
\returns true on success, false on failure
|
623 |
-
*/
|
624 |
-
bool document::set_creator(const ustring &creator)
|
625 |
-
{
|
626 |
-
if (d->is_locked) {
|
627 |
-
return false;
|
628 |
-
}
|
629 |
-
|
630 |
-
GooString *goo_creator;
|
631 |
-
|
632 |
-
if (creator.empty()) {
|
633 |
-
goo_creator = nullptr;
|
634 |
-
} else {
|
635 |
-
goo_creator = detail::ustring_to_unicode_GooString(creator);
|
636 |
-
}
|
637 |
-
|
638 |
-
d->doc->setDocInfoCreator(goo_creator);
|
639 |
-
return true;
|
640 |
-
}
|
641 |
-
|
642 |
-
/**
|
643 |
-
Gets the document's producer.
|
644 |
-
|
645 |
-
\returns the document's producer, or an empty string if not available
|
646 |
-
\see set_producer, info_key
|
647 |
-
*/
|
648 |
-
ustring document::get_producer() const
|
649 |
-
{
|
650 |
-
if (d->is_locked) {
|
651 |
-
return ustring();
|
652 |
-
}
|
653 |
-
|
654 |
-
std::unique_ptr<GooString> goo_producer(d->doc->getDocInfoProducer());
|
655 |
-
if (!goo_producer.get()) {
|
656 |
-
return ustring();
|
657 |
-
}
|
658 |
-
|
659 |
-
return detail::unicode_GooString_to_ustring(goo_producer.get());
|
660 |
-
}
|
661 |
-
|
662 |
-
/**
|
663 |
-
Sets the %document's producer to \p producer.
|
664 |
-
If \p producer is empty, the %document's producer is removed.
|
665 |
-
|
666 |
-
\returns true on success, false on failure
|
667 |
-
*/
|
668 |
-
bool document::set_producer(const ustring &producer)
|
669 |
-
{
|
670 |
-
if (d->is_locked) {
|
671 |
-
return false;
|
672 |
-
}
|
673 |
-
|
674 |
-
GooString *goo_producer;
|
675 |
-
|
676 |
-
if (producer.empty()) {
|
677 |
-
goo_producer = nullptr;
|
678 |
-
} else {
|
679 |
-
goo_producer = detail::ustring_to_unicode_GooString(producer);
|
680 |
-
}
|
681 |
-
|
682 |
-
d->doc->setDocInfoProducer(goo_producer);
|
683 |
-
return true;
|
684 |
-
}
|
685 |
-
|
686 |
-
/**
|
687 |
-
Gets the document's creation date as a time_type value.
|
688 |
-
|
689 |
-
\returns the document's creation date as a time_type value
|
690 |
-
\see set_creation_date, info_date
|
691 |
-
*/
|
692 |
-
time_type document::get_creation_date() const
|
693 |
-
{
|
694 |
-
if (d->is_locked) {
|
695 |
-
return time_type(-1);
|
696 |
-
}
|
697 |
-
|
698 |
-
std::unique_ptr<GooString> goo_creation_date(d->doc->getDocInfoCreatDate());
|
699 |
-
if (!goo_creation_date.get()) {
|
700 |
-
return time_type(-1);
|
701 |
-
}
|
702 |
-
|
703 |
-
return static_cast<time_type>(dateStringToTime(goo_creation_date.get()));
|
704 |
-
}
|
705 |
-
|
706 |
-
/**
|
707 |
-
Gets the document's creation date as a time_t value.
|
708 |
-
|
709 |
-
\returns the document's creation date as a time_t value
|
710 |
-
\see set_creation_date, info_date
|
711 |
-
*/
|
712 |
-
time_t document::get_creation_date_t() const
|
713 |
-
{
|
714 |
-
if (d->is_locked) {
|
715 |
-
return time_t(-1);
|
716 |
-
}
|
717 |
-
|
718 |
-
std::unique_ptr<GooString> goo_creation_date(d->doc->getDocInfoCreatDate());
|
719 |
-
if (!goo_creation_date.get()) {
|
720 |
-
return time_t(-1);
|
721 |
-
}
|
722 |
-
|
723 |
-
return dateStringToTime(goo_creation_date.get());
|
724 |
-
}
|
725 |
-
|
726 |
-
/**
|
727 |
-
Sets the %document's creation date to \p creation_date.
|
728 |
-
If \p creation_date == time_type(-1), the %document's creation date is removed.
|
729 |
-
|
730 |
-
\returns true on success, false on failure
|
731 |
-
*/
|
732 |
-
bool document::set_creation_date(time_type creation_date)
|
733 |
-
{
|
734 |
-
if (d->is_locked) {
|
735 |
-
return false;
|
736 |
-
}
|
737 |
-
|
738 |
-
GooString *goo_creation_date;
|
739 |
-
|
740 |
-
if (creation_date == time_type(-1)) {
|
741 |
-
goo_creation_date = nullptr;
|
742 |
-
} else {
|
743 |
-
time_t t = static_cast<time_t>(creation_date);
|
744 |
-
goo_creation_date = timeToDateString(&t);
|
745 |
-
}
|
746 |
-
|
747 |
-
d->doc->setDocInfoCreatDate(goo_creation_date);
|
748 |
-
return true;
|
749 |
-
}
|
750 |
-
|
751 |
-
/**
|
752 |
-
Sets the %document's creation date to \p creation_date.
|
753 |
-
If \p creation_date == time_t(-1), the %document's creation date is removed.
|
754 |
-
|
755 |
-
\returns true on success, false on failure
|
756 |
-
*/
|
757 |
-
bool document::set_creation_date_t(time_t creation_date)
|
758 |
-
{
|
759 |
-
if (d->is_locked) {
|
760 |
-
return false;
|
761 |
-
}
|
762 |
-
|
763 |
-
GooString *goo_creation_date;
|
764 |
-
|
765 |
-
if (creation_date == time_t(-1)) {
|
766 |
-
goo_creation_date = nullptr;
|
767 |
-
} else {
|
768 |
-
goo_creation_date = timeToDateString(&creation_date);
|
769 |
-
}
|
770 |
-
|
771 |
-
d->doc->setDocInfoCreatDate(goo_creation_date);
|
772 |
-
return true;
|
773 |
-
}
|
774 |
-
|
775 |
-
/**
|
776 |
-
Gets the document's modification date as a time_type value.
|
777 |
-
|
778 |
-
\returns the document's modification date as a time_type value
|
779 |
-
\see set_modification_date, info_date
|
780 |
-
*/
|
781 |
-
time_type document::get_modification_date() const
|
782 |
-
{
|
783 |
-
if (d->is_locked) {
|
784 |
-
return time_type(-1);
|
785 |
-
}
|
786 |
-
|
787 |
-
std::unique_ptr<GooString> goo_modification_date(d->doc->getDocInfoModDate());
|
788 |
-
if (!goo_modification_date.get()) {
|
789 |
-
return time_type(-1);
|
790 |
-
}
|
791 |
-
|
792 |
-
return static_cast<time_type>(dateStringToTime(goo_modification_date.get()));
|
793 |
-
}
|
794 |
-
|
795 |
-
/**
|
796 |
-
Gets the document's modification date as a time_t value.
|
797 |
-
|
798 |
-
\returns the document's modification date as a time_t value
|
799 |
-
\see set_modification_date, info_date
|
800 |
-
*/
|
801 |
-
time_t document::get_modification_date_t() const
|
802 |
-
{
|
803 |
-
if (d->is_locked) {
|
804 |
-
return time_t(-1);
|
805 |
-
}
|
806 |
-
|
807 |
-
std::unique_ptr<GooString> goo_modification_date(d->doc->getDocInfoModDate());
|
808 |
-
if (!goo_modification_date.get()) {
|
809 |
-
return time_t(-1);
|
810 |
-
}
|
811 |
-
|
812 |
-
return dateStringToTime(goo_modification_date.get());
|
813 |
-
}
|
814 |
-
|
815 |
-
/**
|
816 |
-
Sets the %document's modification date to \p mod_date.
|
817 |
-
If \p mod_date == time_type(-1), the %document's modification date is removed.
|
818 |
-
|
819 |
-
\returns true on success, false on failure
|
820 |
-
*/
|
821 |
-
bool document::set_modification_date(time_type mod_date)
|
822 |
-
{
|
823 |
-
if (d->is_locked) {
|
824 |
-
return false;
|
825 |
-
}
|
826 |
-
|
827 |
-
GooString *goo_mod_date;
|
828 |
-
|
829 |
-
if (mod_date == time_type(-1)) {
|
830 |
-
goo_mod_date = nullptr;
|
831 |
-
} else {
|
832 |
-
time_t t = static_cast<time_t>(mod_date);
|
833 |
-
goo_mod_date = timeToDateString(&t);
|
834 |
-
}
|
835 |
-
|
836 |
-
d->doc->setDocInfoModDate(goo_mod_date);
|
837 |
-
return true;
|
838 |
-
}
|
839 |
-
|
840 |
-
/**
|
841 |
-
Sets the %document's modification date to \p mod_date.
|
842 |
-
If \p mod_date == time_t(-1), the %document's modification date is removed.
|
843 |
-
|
844 |
-
\returns true on success, false on failure
|
845 |
-
*/
|
846 |
-
bool document::set_modification_date_t(time_t mod_date)
|
847 |
-
{
|
848 |
-
if (d->is_locked) {
|
849 |
-
return false;
|
850 |
-
}
|
851 |
-
|
852 |
-
GooString *goo_mod_date;
|
853 |
-
|
854 |
-
if (mod_date == time_t(-1)) {
|
855 |
-
goo_mod_date = nullptr;
|
856 |
-
} else {
|
857 |
-
goo_mod_date = timeToDateString(&mod_date);
|
858 |
-
}
|
859 |
-
|
860 |
-
d->doc->setDocInfoModDate(goo_mod_date);
|
861 |
-
return true;
|
862 |
-
}
|
863 |
-
|
864 |
-
/**
|
865 |
-
Removes the %document's Info dictionary.
|
866 |
-
|
867 |
-
\returns true on success, false on failure
|
868 |
-
*/
|
869 |
-
bool document::remove_info()
|
870 |
-
{
|
871 |
-
if (d->is_locked) {
|
872 |
-
return false;
|
873 |
-
}
|
874 |
-
|
875 |
-
d->doc->removeDocInfo();
|
876 |
-
return true;
|
877 |
-
}
|
878 |
-
|
879 |
-
/**
|
880 |
-
\returns whether the document is encrypted
|
881 |
-
*/
|
882 |
-
bool document::is_encrypted() const
|
883 |
-
{
|
884 |
-
return d->doc->isEncrypted();
|
885 |
-
}
|
886 |
-
|
887 |
-
/**
|
888 |
-
\returns whether the document is linearized
|
889 |
-
*/
|
890 |
-
bool document::is_linearized() const
|
891 |
-
{
|
892 |
-
return d->doc->isLinearized();
|
893 |
-
}
|
894 |
-
|
895 |
-
/**
|
896 |
-
Check for available "document permission".
|
897 |
-
|
898 |
-
\returns whether the specified permission is allowed
|
899 |
-
*/
|
900 |
-
bool document::has_permission(permission_enum which) const
|
901 |
-
{
|
902 |
-
switch (which) {
|
903 |
-
case perm_print:
|
904 |
-
return d->doc->okToPrint();
|
905 |
-
case perm_change:
|
906 |
-
return d->doc->okToChange();
|
907 |
-
case perm_copy:
|
908 |
-
return d->doc->okToCopy();
|
909 |
-
case perm_add_notes:
|
910 |
-
return d->doc->okToAddNotes();
|
911 |
-
case perm_fill_forms:
|
912 |
-
return d->doc->okToFillForm();
|
913 |
-
case perm_accessibility:
|
914 |
-
return d->doc->okToAccessibility();
|
915 |
-
case perm_assemble:
|
916 |
-
return d->doc->okToAssemble();
|
917 |
-
case perm_print_high_resolution:
|
918 |
-
return d->doc->okToPrintHighRes();
|
919 |
-
}
|
920 |
-
return true;
|
921 |
-
}
|
922 |
-
|
923 |
-
/**
|
924 |
-
Reads the %document metadata string.
|
925 |
-
|
926 |
-
\return the %document metadata string
|
927 |
-
*/
|
928 |
-
ustring document::metadata() const
|
929 |
-
{
|
930 |
-
std::unique_ptr<GooString> md(d->doc->getCatalog()->readMetadata());
|
931 |
-
if (md.get()) {
|
932 |
-
return detail::unicode_GooString_to_ustring(md.get());
|
933 |
-
}
|
934 |
-
return ustring();
|
935 |
-
}
|
936 |
-
|
937 |
-
/**
|
938 |
-
Gets the IDs of the current PDF %document, if available.
|
939 |
-
|
940 |
-
\param permanent_id if not NULL, will be set to the permanent ID of the %document
|
941 |
-
\param update_id if not NULL, will be set to the update ID of the %document
|
942 |
-
|
943 |
-
\returns whether the document has the IDs
|
944 |
-
|
945 |
-
\since 0.16
|
946 |
-
*/
|
947 |
-
bool document::get_pdf_id(std::string *permanent_id, std::string *update_id) const
|
948 |
-
{
|
949 |
-
GooString goo_permanent_id;
|
950 |
-
GooString goo_update_id;
|
951 |
-
|
952 |
-
if (!d->doc->getID(permanent_id ? &goo_permanent_id : nullptr, update_id ? &goo_update_id : nullptr)) {
|
953 |
-
return false;
|
954 |
-
}
|
955 |
-
|
956 |
-
if (permanent_id) {
|
957 |
-
*permanent_id = goo_permanent_id.c_str();
|
958 |
-
}
|
959 |
-
if (update_id) {
|
960 |
-
*update_id = goo_update_id.c_str();
|
961 |
-
}
|
962 |
-
|
963 |
-
return true;
|
964 |
-
}
|
965 |
-
|
966 |
-
/**
|
967 |
-
Document page count.
|
968 |
-
|
969 |
-
\returns the number of pages of the document
|
970 |
-
*/
|
971 |
-
int document::pages() const
|
972 |
-
{
|
973 |
-
return d->doc->getNumPages();
|
974 |
-
}
|
975 |
-
|
976 |
-
/**
|
977 |
-
Document page by label reading.
|
978 |
-
|
979 |
-
This creates a new page representing the %document %page whose label is the
|
980 |
-
specified \p label. If there is no page with that \p label, NULL is returned.
|
981 |
-
|
982 |
-
\returns a new page object or NULL
|
983 |
-
*/
|
984 |
-
page *document::create_page(const ustring &label) const
|
985 |
-
{
|
986 |
-
std::unique_ptr<GooString> goolabel(detail::ustring_to_unicode_GooString(label));
|
987 |
-
int index = 0;
|
988 |
-
|
989 |
-
if (!d->doc->getCatalog()->labelToIndex(goolabel.get(), &index)) {
|
990 |
-
return nullptr;
|
991 |
-
}
|
992 |
-
return create_page(index);
|
993 |
-
}
|
994 |
-
|
995 |
-
/**
|
996 |
-
Document page by index reading.
|
997 |
-
|
998 |
-
This creates a new page representing the \p index -th %page of the %document.
|
999 |
-
\note the page indexes are in the range [0, pages()[.
|
1000 |
-
|
1001 |
-
\returns a new page object or NULL
|
1002 |
-
*/
|
1003 |
-
page *document::create_page(int index) const
|
1004 |
-
{
|
1005 |
-
if (index >= 0 && index < d->doc->getNumPages()) {
|
1006 |
-
page *p = new page(d, index);
|
1007 |
-
if (p->d->page) {
|
1008 |
-
return p;
|
1009 |
-
} else {
|
1010 |
-
delete p;
|
1011 |
-
return nullptr;
|
1012 |
-
}
|
1013 |
-
} else {
|
1014 |
-
return nullptr;
|
1015 |
-
}
|
1016 |
-
}
|
1017 |
-
|
1018 |
-
/**
|
1019 |
-
Reads all the font information of the %document.
|
1020 |
-
|
1021 |
-
\note this can be slow for big documents; prefer the use of a font_iterator
|
1022 |
-
to read incrementally page by page
|
1023 |
-
\see create_font_iterator
|
1024 |
-
*/
|
1025 |
-
std::vector<font_info> document::fonts() const
|
1026 |
-
{
|
1027 |
-
std::vector<font_info> result;
|
1028 |
-
font_iterator it(0, d);
|
1029 |
-
while (it.has_next()) {
|
1030 |
-
const std::vector<font_info> l = it.next();
|
1031 |
-
std::copy(l.begin(), l.end(), std::back_inserter(result));
|
1032 |
-
}
|
1033 |
-
return result;
|
1034 |
-
}
|
1035 |
-
|
1036 |
-
/**
|
1037 |
-
Creates a new font iterator.
|
1038 |
-
|
1039 |
-
This creates a new font iterator for reading the font information of the
|
1040 |
-
%document page by page, starting at the specified \p start_page (0 if not
|
1041 |
-
specified).
|
1042 |
-
|
1043 |
-
\returns a new font iterator
|
1044 |
-
*/
|
1045 |
-
font_iterator *document::create_font_iterator(int start_page) const
|
1046 |
-
{
|
1047 |
-
return new font_iterator(start_page, d);
|
1048 |
-
}
|
1049 |
-
|
1050 |
-
/**
|
1051 |
-
Reads the TOC (table of contents) of the %document.
|
1052 |
-
|
1053 |
-
\returns a new toc object if a TOC is available, NULL otherwise
|
1054 |
-
*/
|
1055 |
-
toc *document::create_toc() const
|
1056 |
-
{
|
1057 |
-
return toc_private::load_from_outline(d->doc->getOutline());
|
1058 |
-
}
|
1059 |
-
|
1060 |
-
/**
|
1061 |
-
Reads whether the current document has %document-level embedded files
|
1062 |
-
(attachments).
|
1063 |
-
|
1064 |
-
This is a very fast way to know whether there are embedded files (also known
|
1065 |
-
as "attachments") at the %document-level. Note this does not take into account
|
1066 |
-
files embedded in other ways (e.g. to annotations).
|
1067 |
-
|
1068 |
-
\returns whether the document has embedded files
|
1069 |
-
*/
|
1070 |
-
bool document::has_embedded_files() const
|
1071 |
-
{
|
1072 |
-
return d->doc->getCatalog()->numEmbeddedFiles() > 0;
|
1073 |
-
}
|
1074 |
-
|
1075 |
-
/**
|
1076 |
-
Reads all the %document-level embedded files of the %document.
|
1077 |
-
|
1078 |
-
\returns the %document-level embedded files
|
1079 |
-
*/
|
1080 |
-
std::vector<embedded_file *> document::embedded_files() const
|
1081 |
-
{
|
1082 |
-
if (d->is_locked) {
|
1083 |
-
return std::vector<embedded_file *>();
|
1084 |
-
}
|
1085 |
-
|
1086 |
-
if (d->embedded_files.empty() && d->doc->getCatalog()->numEmbeddedFiles() > 0) {
|
1087 |
-
const int num = d->doc->getCatalog()->numEmbeddedFiles();
|
1088 |
-
d->embedded_files.resize(num);
|
1089 |
-
for (int i = 0; i < num; ++i) {
|
1090 |
-
std::unique_ptr<FileSpec> fs = d->doc->getCatalog()->embeddedFile(i);
|
1091 |
-
d->embedded_files[i] = embedded_file_private::create(std::move(fs));
|
1092 |
-
}
|
1093 |
-
}
|
1094 |
-
return d->embedded_files;
|
1095 |
-
}
|
1096 |
-
|
1097 |
-
/**
|
1098 |
-
Creates a map of all the named destinations in the %document.
|
1099 |
-
|
1100 |
-
\note The destination names may contain \\0 and other binary values
|
1101 |
-
so they are not printable and cannot convert to null-terminated C strings.
|
1102 |
-
|
1103 |
-
\returns the map of the each name and destination
|
1104 |
-
|
1105 |
-
\since 0.74
|
1106 |
-
*/
|
1107 |
-
std::map<std::string, destination> document::create_destination_map() const
|
1108 |
-
{
|
1109 |
-
std::map<std::string, destination> m;
|
1110 |
-
|
1111 |
-
Catalog *catalog = d->doc->getCatalog();
|
1112 |
-
if (!catalog) {
|
1113 |
-
return m;
|
1114 |
-
}
|
1115 |
-
|
1116 |
-
// Iterate from name-dict
|
1117 |
-
const int nDests = catalog->numDests();
|
1118 |
-
for (int i = 0; i < nDests; ++i) {
|
1119 |
-
std::string key(catalog->getDestsName(i));
|
1120 |
-
std::unique_ptr<LinkDest> link_dest = catalog->getDestsDest(i);
|
1121 |
-
|
1122 |
-
if (link_dest) {
|
1123 |
-
destination dest(new destination_private(link_dest.get(), d->doc));
|
1124 |
-
|
1125 |
-
m.emplace(std::move(key), std::move(dest));
|
1126 |
-
}
|
1127 |
-
}
|
1128 |
-
|
1129 |
-
// Iterate from name-tree
|
1130 |
-
const int nDestsNameTree = catalog->numDestNameTree();
|
1131 |
-
for (int i = 0; i < nDestsNameTree; ++i) {
|
1132 |
-
std::string key(catalog->getDestNameTreeName(i)->c_str(), catalog->getDestNameTreeName(i)->getLength());
|
1133 |
-
std::unique_ptr<LinkDest> link_dest = catalog->getDestNameTreeDest(i);
|
1134 |
-
|
1135 |
-
if (link_dest) {
|
1136 |
-
destination dest(new destination_private(link_dest.get(), d->doc));
|
1137 |
-
|
1138 |
-
m.emplace(std::move(key), std::move(dest));
|
1139 |
-
}
|
1140 |
-
}
|
1141 |
-
|
1142 |
-
return m;
|
1143 |
-
}
|
1144 |
-
|
1145 |
-
/**
|
1146 |
-
Saves the %document to file \p file_name.
|
1147 |
-
|
1148 |
-
\returns true on success, false on failure
|
1149 |
-
*/
|
1150 |
-
bool document::save(const std::string &file_name) const
|
1151 |
-
{
|
1152 |
-
if (d->is_locked) {
|
1153 |
-
return false;
|
1154 |
-
}
|
1155 |
-
|
1156 |
-
GooString fname(file_name.c_str());
|
1157 |
-
return d->doc->saveAs(fname) == errNone;
|
1158 |
-
}
|
1159 |
-
|
1160 |
-
/**
|
1161 |
-
Saves the original version of the %document to file \p file_name.
|
1162 |
-
|
1163 |
-
\returns true on success, false on failure
|
1164 |
-
*/
|
1165 |
-
bool document::save_a_copy(const std::string &file_name) const
|
1166 |
-
{
|
1167 |
-
if (d->is_locked) {
|
1168 |
-
return false;
|
1169 |
-
}
|
1170 |
-
|
1171 |
-
GooString fname(file_name.c_str());
|
1172 |
-
return d->doc->saveWithoutChangesAs(fname) == errNone;
|
1173 |
-
}
|
1174 |
-
|
1175 |
-
/**
|
1176 |
-
Tries to load a PDF %document from the specified file.
|
1177 |
-
|
1178 |
-
\param file_name the file to open
|
1179 |
-
\returns a new document if the load succeeded (even if the document is locked),
|
1180 |
-
NULL otherwise
|
1181 |
-
*/
|
1182 |
-
document *document::load_from_file(const std::string &file_name, const std::string &owner_password, const std::string &user_password)
|
1183 |
-
{
|
1184 |
-
document_private *doc = new document_private(std::make_unique<GooString>(file_name.c_str()), owner_password, user_password);
|
1185 |
-
return document_private::check_document(doc, nullptr);
|
1186 |
-
}
|
1187 |
-
|
1188 |
-
/**
|
1189 |
-
Tries to load a PDF %document from the specified data.
|
1190 |
-
|
1191 |
-
\note if the loading succeeds, the document takes ownership of the
|
1192 |
-
\p file_data (swap()ing it)
|
1193 |
-
|
1194 |
-
\param file_data the data representing a document to open
|
1195 |
-
\returns a new document if the load succeeded (even if the document is locked),
|
1196 |
-
NULL otherwise
|
1197 |
-
*/
|
1198 |
-
document *document::load_from_data(byte_array *file_data, const std::string &owner_password, const std::string &user_password)
|
1199 |
-
{
|
1200 |
-
if (!file_data || file_data->size() < 10) {
|
1201 |
-
return nullptr;
|
1202 |
-
}
|
1203 |
-
|
1204 |
-
document_private *doc = new document_private(file_data, owner_password, user_password);
|
1205 |
-
return document_private::check_document(doc, file_data);
|
1206 |
-
}
|
1207 |
-
|
1208 |
-
/**
|
1209 |
-
Tries to load a PDF %document from the specified data buffer.
|
1210 |
-
|
1211 |
-
\note the buffer must remain valid for the whole lifetime of the returned
|
1212 |
-
document
|
1213 |
-
|
1214 |
-
\param file_data the data buffer representing a document to open
|
1215 |
-
\param file_data_length the length of the data buffer
|
1216 |
-
|
1217 |
-
\returns a new document if the load succeeded (even if the document is locked),
|
1218 |
-
NULL otherwise
|
1219 |
-
|
1220 |
-
\since 0.16
|
1221 |
-
*/
|
1222 |
-
document *document::load_from_raw_data(const char *file_data, int file_data_length, const std::string &owner_password, const std::string &user_password)
|
1223 |
-
{
|
1224 |
-
if (!file_data || file_data_length < 10) {
|
1225 |
-
return nullptr;
|
1226 |
-
}
|
1227 |
-
|
1228 |
-
document_private *doc = new document_private(file_data, file_data_length, owner_password, user_password);
|
1229 |
-
return document_private::check_document(doc, nullptr);
|
1230 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-document.h
DELETED
@@ -1,141 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2016 Jakub Alba <[email protected]>
|
4 |
-
* Copyright (C) 2019, Masamichi Hosoda <[email protected]>
|
5 |
-
* Copyright (C) 2019, 2021, 2022, Albert Astals Cid <[email protected]>
|
6 |
-
*
|
7 |
-
* This program is free software; you can redistribute it and/or modify
|
8 |
-
* it under the terms of the GNU General Public License as published by
|
9 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
10 |
-
* any later version.
|
11 |
-
*
|
12 |
-
* This program is distributed in the hope that it will be useful,
|
13 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
-
* GNU General Public License for more details.
|
16 |
-
*
|
17 |
-
* You should have received a copy of the GNU General Public License
|
18 |
-
* along with this program; if not, write to the Free Software
|
19 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
20 |
-
*/
|
21 |
-
|
22 |
-
#ifndef POPPLER_DOCUMENT_H
|
23 |
-
#define POPPLER_DOCUMENT_H
|
24 |
-
|
25 |
-
#include "poppler-global.h"
|
26 |
-
#include "poppler-font.h"
|
27 |
-
|
28 |
-
#include <map>
|
29 |
-
|
30 |
-
namespace poppler {
|
31 |
-
|
32 |
-
class destination;
|
33 |
-
class document_private;
|
34 |
-
class embedded_file;
|
35 |
-
class page;
|
36 |
-
class toc;
|
37 |
-
|
38 |
-
class POPPLER_CPP_EXPORT document : public poppler::noncopyable
|
39 |
-
{
|
40 |
-
public:
|
41 |
-
enum page_mode_enum
|
42 |
-
{
|
43 |
-
use_none,
|
44 |
-
use_outlines,
|
45 |
-
use_thumbs,
|
46 |
-
fullscreen,
|
47 |
-
use_oc,
|
48 |
-
use_attach
|
49 |
-
};
|
50 |
-
|
51 |
-
enum page_layout_enum
|
52 |
-
{
|
53 |
-
no_layout,
|
54 |
-
single_page,
|
55 |
-
one_column,
|
56 |
-
two_column_left,
|
57 |
-
two_column_right,
|
58 |
-
two_page_left,
|
59 |
-
two_page_right
|
60 |
-
};
|
61 |
-
|
62 |
-
~document();
|
63 |
-
|
64 |
-
bool is_locked() const;
|
65 |
-
bool unlock(const std::string &owner_password, const std::string &user_password);
|
66 |
-
|
67 |
-
page_mode_enum page_mode() const;
|
68 |
-
page_layout_enum page_layout() const;
|
69 |
-
void get_pdf_version(int *major, int *minor) const;
|
70 |
-
std::vector<std::string> info_keys() const;
|
71 |
-
|
72 |
-
ustring info_key(const std::string &key) const;
|
73 |
-
bool set_info_key(const std::string &key, const ustring &val);
|
74 |
-
|
75 |
-
[[deprecated]] time_type info_date(const std::string &key) const;
|
76 |
-
[[deprecated]] bool set_info_date(const std::string &key, time_type val);
|
77 |
-
time_t info_date_t(const std::string &key) const;
|
78 |
-
bool set_info_date_t(const std::string &key, time_t val);
|
79 |
-
|
80 |
-
ustring get_title() const;
|
81 |
-
bool set_title(const ustring &title);
|
82 |
-
ustring get_author() const;
|
83 |
-
bool set_author(const ustring &author);
|
84 |
-
ustring get_subject() const;
|
85 |
-
bool set_subject(const ustring &subject);
|
86 |
-
ustring get_keywords() const;
|
87 |
-
bool set_keywords(const ustring &keywords);
|
88 |
-
ustring get_creator() const;
|
89 |
-
bool set_creator(const ustring &creator);
|
90 |
-
ustring get_producer() const;
|
91 |
-
bool set_producer(const ustring &producer);
|
92 |
-
[[deprecated]] time_type get_creation_date() const;
|
93 |
-
[[deprecated]] bool set_creation_date(time_type creation_date);
|
94 |
-
time_t get_creation_date_t() const;
|
95 |
-
bool set_creation_date_t(time_t creation_date);
|
96 |
-
[[deprecated]] time_type get_modification_date() const;
|
97 |
-
[[deprecated]] bool set_modification_date(time_type mod_date);
|
98 |
-
time_t get_modification_date_t() const;
|
99 |
-
bool set_modification_date_t(time_t mod_date);
|
100 |
-
|
101 |
-
bool remove_info();
|
102 |
-
|
103 |
-
bool is_encrypted() const;
|
104 |
-
bool is_linearized() const;
|
105 |
-
bool has_permission(permission_enum which) const;
|
106 |
-
ustring metadata() const;
|
107 |
-
bool get_pdf_id(std::string *permanent_id, std::string *update_id) const;
|
108 |
-
|
109 |
-
int pages() const;
|
110 |
-
page *create_page(const ustring &label) const;
|
111 |
-
page *create_page(int index) const;
|
112 |
-
|
113 |
-
std::vector<font_info> fonts() const;
|
114 |
-
font_iterator *create_font_iterator(int start_page = 0) const;
|
115 |
-
|
116 |
-
toc *create_toc() const;
|
117 |
-
|
118 |
-
bool has_embedded_files() const;
|
119 |
-
std::vector<embedded_file *> embedded_files() const;
|
120 |
-
|
121 |
-
// Named destinations are bytestrings, not string.
|
122 |
-
// So we use std::string instead of ustring.
|
123 |
-
std::map<std::string, destination> create_destination_map() const;
|
124 |
-
|
125 |
-
bool save(const std::string &file_name) const;
|
126 |
-
bool save_a_copy(const std::string &file_name) const;
|
127 |
-
|
128 |
-
static document *load_from_file(const std::string &file_name, const std::string &owner_password = std::string(), const std::string &user_password = std::string());
|
129 |
-
static document *load_from_data(byte_array *file_data, const std::string &owner_password = std::string(), const std::string &user_password = std::string());
|
130 |
-
static document *load_from_raw_data(const char *file_data, int file_data_length, const std::string &owner_password = std::string(), const std::string &user_password = std::string());
|
131 |
-
|
132 |
-
private:
|
133 |
-
explicit document(document_private &dd);
|
134 |
-
|
135 |
-
document_private *d;
|
136 |
-
friend class document_private;
|
137 |
-
};
|
138 |
-
|
139 |
-
}
|
140 |
-
|
141 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-embedded-file-private.h
DELETED
@@ -1,41 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009, 2011, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2018, 2021, 2022, Albert Astals Cid <[email protected]>
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
8 |
-
* any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
18 |
-
*/
|
19 |
-
|
20 |
-
#ifndef POPPLER_EMBEDDED_FILE_PRIVATE_H
|
21 |
-
#define POPPLER_EMBEDDED_FILE_PRIVATE_H
|
22 |
-
|
23 |
-
#include <FileSpec.h>
|
24 |
-
|
25 |
-
#include <memory>
|
26 |
-
|
27 |
-
namespace poppler {
|
28 |
-
|
29 |
-
class embedded_file_private
|
30 |
-
{
|
31 |
-
public:
|
32 |
-
explicit embedded_file_private(std::unique_ptr<FileSpec> &&fs);
|
33 |
-
|
34 |
-
static embedded_file *create(std::unique_ptr<FileSpec> &&fs);
|
35 |
-
|
36 |
-
std::unique_ptr<FileSpec> file_spec;
|
37 |
-
};
|
38 |
-
|
39 |
-
}
|
40 |
-
|
41 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-embedded-file.cpp
DELETED
@@ -1,199 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2011, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2016 Jakub Alba <[email protected]>
|
4 |
-
* Copyright (C) 2018, 2020, 2022 Albert Astals Cid <[email protected]>
|
5 |
-
*
|
6 |
-
* This program is free software; you can redistribute it and/or modify
|
7 |
-
* it under the terms of the GNU General Public License as published by
|
8 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
9 |
-
* any later version.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program; if not, write to the Free Software
|
18 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
19 |
-
*/
|
20 |
-
|
21 |
-
/**
|
22 |
-
\file poppler-embedded-file.h
|
23 |
-
*/
|
24 |
-
#include "poppler-embedded-file.h"
|
25 |
-
|
26 |
-
#include "poppler-embedded-file-private.h"
|
27 |
-
#include "poppler-private.h"
|
28 |
-
|
29 |
-
#include "Object.h"
|
30 |
-
#include "Stream.h"
|
31 |
-
#include "Catalog.h"
|
32 |
-
#include "FileSpec.h"
|
33 |
-
#include "DateInfo.h"
|
34 |
-
|
35 |
-
using namespace poppler;
|
36 |
-
|
37 |
-
embedded_file_private::embedded_file_private(std::unique_ptr<FileSpec> &&fs) : file_spec(std::move(fs)) { }
|
38 |
-
|
39 |
-
embedded_file *embedded_file_private::create(std::unique_ptr<FileSpec> &&fs)
|
40 |
-
{
|
41 |
-
return new embedded_file(*new embedded_file_private(std::move(fs)));
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
\class poppler::embedded_file poppler-embedded-file.h "poppler/cpp/poppler-embedded-file.h"
|
46 |
-
|
47 |
-
Represents a file embedded in a PDF %document.
|
48 |
-
*/
|
49 |
-
|
50 |
-
embedded_file::embedded_file(embedded_file_private &dd) : d(&dd) { }
|
51 |
-
|
52 |
-
/**
|
53 |
-
Destroys the embedded file.
|
54 |
-
*/
|
55 |
-
embedded_file::~embedded_file()
|
56 |
-
{
|
57 |
-
delete d;
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
\returns whether the embedded file is valid
|
62 |
-
*/
|
63 |
-
bool embedded_file::is_valid() const
|
64 |
-
{
|
65 |
-
return d->file_spec->isOk();
|
66 |
-
}
|
67 |
-
|
68 |
-
/**
|
69 |
-
\returns the name of the embedded file
|
70 |
-
*/
|
71 |
-
std::string embedded_file::name() const
|
72 |
-
{
|
73 |
-
const GooString *goo = d->file_spec->getFileName();
|
74 |
-
return goo ? std::string(goo->c_str()) : std::string();
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
\returns the description of the embedded file
|
79 |
-
*/
|
80 |
-
ustring embedded_file::description() const
|
81 |
-
{
|
82 |
-
const GooString *goo = d->file_spec->getDescription();
|
83 |
-
return goo ? detail::unicode_GooString_to_ustring(goo) : ustring();
|
84 |
-
}
|
85 |
-
|
86 |
-
/**
|
87 |
-
\note this is not always available in the PDF %document, in that case this
|
88 |
-
will return \p -1.
|
89 |
-
|
90 |
-
\returns the size of the embedded file, if known
|
91 |
-
*/
|
92 |
-
int embedded_file::size() const
|
93 |
-
{
|
94 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
95 |
-
return ef ? ef->size() : -1;
|
96 |
-
}
|
97 |
-
|
98 |
-
/**
|
99 |
-
\returns the time_type representing the modification date of the embedded file,
|
100 |
-
if available
|
101 |
-
*/
|
102 |
-
time_type embedded_file::modification_date() const
|
103 |
-
{
|
104 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
105 |
-
const GooString *goo = ef ? ef->modDate() : nullptr;
|
106 |
-
return goo ? static_cast<time_type>(dateStringToTime(goo)) : time_type(-1);
|
107 |
-
}
|
108 |
-
|
109 |
-
/**
|
110 |
-
\returns the time_type representing the creation date of the embedded file,
|
111 |
-
if available
|
112 |
-
*/
|
113 |
-
time_type embedded_file::creation_date() const
|
114 |
-
{
|
115 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
116 |
-
const GooString *goo = ef ? ef->createDate() : nullptr;
|
117 |
-
return goo ? static_cast<time_type>(dateStringToTime(goo)) : time_type(-1);
|
118 |
-
}
|
119 |
-
|
120 |
-
/**
|
121 |
-
\returns the time_t representing the modification date of the embedded file,
|
122 |
-
if available
|
123 |
-
*/
|
124 |
-
time_t embedded_file::modification_date_t() const
|
125 |
-
{
|
126 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
127 |
-
const GooString *goo = ef ? ef->modDate() : nullptr;
|
128 |
-
return goo ? dateStringToTime(goo) : time_t(-1);
|
129 |
-
}
|
130 |
-
|
131 |
-
/**
|
132 |
-
\returns the time_t representing the creation date of the embedded file,
|
133 |
-
if available
|
134 |
-
*/
|
135 |
-
time_t embedded_file::creation_date_t() const
|
136 |
-
{
|
137 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
138 |
-
const GooString *goo = ef ? ef->createDate() : nullptr;
|
139 |
-
return goo ? dateStringToTime(goo) : time_t(-1);
|
140 |
-
}
|
141 |
-
|
142 |
-
/**
|
143 |
-
\returns the checksum of the embedded file
|
144 |
-
*/
|
145 |
-
byte_array embedded_file::checksum() const
|
146 |
-
{
|
147 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
148 |
-
const GooString *cs = ef ? ef->checksum() : nullptr;
|
149 |
-
if (!cs) {
|
150 |
-
return byte_array();
|
151 |
-
}
|
152 |
-
const char *ccs = cs->c_str();
|
153 |
-
byte_array data(cs->getLength());
|
154 |
-
for (int i = 0; i < cs->getLength(); ++i) {
|
155 |
-
data[i] = ccs[i];
|
156 |
-
}
|
157 |
-
return data;
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
\returns the MIME type of the embedded file, if available
|
162 |
-
*/
|
163 |
-
std::string embedded_file::mime_type() const
|
164 |
-
{
|
165 |
-
const EmbFile *ef = d->file_spec->getEmbeddedFile();
|
166 |
-
const GooString *goo = ef ? ef->mimeType() : nullptr;
|
167 |
-
return goo ? std::string(goo->c_str()) : std::string();
|
168 |
-
}
|
169 |
-
|
170 |
-
/**
|
171 |
-
Reads all the data of the embedded file.
|
172 |
-
|
173 |
-
\returns the data of the embedded file
|
174 |
-
*/
|
175 |
-
byte_array embedded_file::data() const
|
176 |
-
{
|
177 |
-
if (!is_valid()) {
|
178 |
-
return byte_array();
|
179 |
-
}
|
180 |
-
EmbFile *ef = d->file_spec->getEmbeddedFile();
|
181 |
-
Stream *stream = ef ? ef->stream() : nullptr;
|
182 |
-
if (!stream) {
|
183 |
-
return byte_array();
|
184 |
-
}
|
185 |
-
|
186 |
-
stream->reset();
|
187 |
-
byte_array ret(1024);
|
188 |
-
size_t data_len = 0;
|
189 |
-
int i;
|
190 |
-
while ((i = stream->getChar()) != EOF) {
|
191 |
-
if (data_len == ret.size()) {
|
192 |
-
ret.resize(ret.size() * 2);
|
193 |
-
}
|
194 |
-
ret[data_len] = (char)i;
|
195 |
-
++data_len;
|
196 |
-
}
|
197 |
-
ret.resize(data_len);
|
198 |
-
return ret;
|
199 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-embedded-file.h
DELETED
@@ -1,57 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2021, 2022, Albert Astals Cid <[email protected]>
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
8 |
-
* any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
18 |
-
*/
|
19 |
-
|
20 |
-
#ifndef POPPLER_EMBEDDED_FILE_H
|
21 |
-
#define POPPLER_EMBEDDED_FILE_H
|
22 |
-
|
23 |
-
#include "poppler-global.h"
|
24 |
-
|
25 |
-
#include <vector>
|
26 |
-
|
27 |
-
namespace poppler {
|
28 |
-
|
29 |
-
class embedded_file_private;
|
30 |
-
|
31 |
-
class POPPLER_CPP_EXPORT embedded_file : public poppler::noncopyable
|
32 |
-
{
|
33 |
-
public:
|
34 |
-
~embedded_file();
|
35 |
-
|
36 |
-
bool is_valid() const;
|
37 |
-
std::string name() const;
|
38 |
-
ustring description() const;
|
39 |
-
int size() const;
|
40 |
-
[[deprecated]] time_type modification_date() const;
|
41 |
-
[[deprecated]] time_type creation_date() const;
|
42 |
-
time_t modification_date_t() const;
|
43 |
-
time_t creation_date_t() const;
|
44 |
-
byte_array checksum() const;
|
45 |
-
std::string mime_type() const;
|
46 |
-
byte_array data() const;
|
47 |
-
|
48 |
-
private:
|
49 |
-
explicit embedded_file(embedded_file_private &dd);
|
50 |
-
|
51 |
-
embedded_file_private *d;
|
52 |
-
friend class embedded_file_private;
|
53 |
-
};
|
54 |
-
|
55 |
-
}
|
56 |
-
|
57 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-font-private.h
DELETED
@@ -1,68 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2015, Tamas Szekeres <[email protected]>
|
4 |
-
* Copyright (C) 2020, Suzuki Toshiya <[email protected]>
|
5 |
-
* Copyright (C) 2021, Albert Astals Cid <[email protected]>
|
6 |
-
*
|
7 |
-
* This program is free software; you can redistribute it and/or modify
|
8 |
-
* it under the terms of the GNU General Public License as published by
|
9 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
10 |
-
* any later version.
|
11 |
-
*
|
12 |
-
* This program is distributed in the hope that it will be useful,
|
13 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
-
* GNU General Public License for more details.
|
16 |
-
*
|
17 |
-
* You should have received a copy of the GNU General Public License
|
18 |
-
* along with this program; if not, write to the Free Software
|
19 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
20 |
-
*/
|
21 |
-
|
22 |
-
#include "poppler-font.h"
|
23 |
-
|
24 |
-
#include "poppler-document-private.h"
|
25 |
-
|
26 |
-
#include "FontInfo.h"
|
27 |
-
|
28 |
-
#include <algorithm>
|
29 |
-
|
30 |
-
using namespace poppler;
|
31 |
-
|
32 |
-
class poppler::font_info_private
|
33 |
-
{
|
34 |
-
public:
|
35 |
-
font_info_private() : type(font_info::unknown), is_embedded(false), is_subset(false) { }
|
36 |
-
explicit font_info_private(FontInfo *fi) : type((font_info::type_enum)fi->getType()), is_embedded(fi->getEmbedded()), is_subset(fi->getSubset())
|
37 |
-
{
|
38 |
-
if (fi->getName()) {
|
39 |
-
font_name = fi->getName()->c_str();
|
40 |
-
}
|
41 |
-
if (fi->getFile()) {
|
42 |
-
font_file = fi->getFile()->c_str();
|
43 |
-
}
|
44 |
-
|
45 |
-
ref = fi->getRef();
|
46 |
-
emb_ref = fi->getEmbRef();
|
47 |
-
}
|
48 |
-
|
49 |
-
std::string font_name;
|
50 |
-
std::string font_file;
|
51 |
-
font_info::type_enum type : 5;
|
52 |
-
bool is_embedded : 1;
|
53 |
-
bool is_subset : 1;
|
54 |
-
|
55 |
-
Ref ref;
|
56 |
-
Ref emb_ref;
|
57 |
-
};
|
58 |
-
|
59 |
-
class poppler::font_iterator_private
|
60 |
-
{
|
61 |
-
public:
|
62 |
-
font_iterator_private(int start_page, document_private *dd) : font_info_scanner(dd->doc, start_page), total_pages(dd->doc->getNumPages()), current_page((std::max)(start_page, 0)) { }
|
63 |
-
~font_iterator_private() { }
|
64 |
-
|
65 |
-
FontInfoScanner font_info_scanner;
|
66 |
-
int total_pages;
|
67 |
-
int current_page;
|
68 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-font.cpp
DELETED
@@ -1,190 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2015, Tamas Szekeres <[email protected]>
|
4 |
-
* Copyright (C) 2018, Adam Reichold <[email protected]>
|
5 |
-
* Copyright (C) 2019, Oliver Sander <[email protected]>
|
6 |
-
* Copyright (C) 2020, Suzuki Toshiya <[email protected]>
|
7 |
-
*
|
8 |
-
* This program is free software; you can redistribute it and/or modify
|
9 |
-
* it under the terms of the GNU General Public License as published by
|
10 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
11 |
-
* any later version.
|
12 |
-
*
|
13 |
-
* This program is distributed in the hope that it will be useful,
|
14 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
-
* GNU General Public License for more details.
|
17 |
-
*
|
18 |
-
* You should have received a copy of the GNU General Public License
|
19 |
-
* along with this program; if not, write to the Free Software
|
20 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
21 |
-
*/
|
22 |
-
|
23 |
-
/**
|
24 |
-
\file poppler-font.h
|
25 |
-
*/
|
26 |
-
#include "poppler-font.h"
|
27 |
-
|
28 |
-
#include "poppler-font-private.h"
|
29 |
-
|
30 |
-
#include "poppler-document-private.h"
|
31 |
-
|
32 |
-
#include "FontInfo.h"
|
33 |
-
|
34 |
-
#include <algorithm>
|
35 |
-
|
36 |
-
using namespace poppler;
|
37 |
-
|
38 |
-
/**
|
39 |
-
\class poppler::font_info poppler-font.h "poppler/cpp/poppler-font.h"
|
40 |
-
|
41 |
-
The information about a font used in a PDF %document.
|
42 |
-
*/
|
43 |
-
|
44 |
-
/**
|
45 |
-
\enum poppler::font_info::type_enum
|
46 |
-
|
47 |
-
The various types of fonts available in a PDF %document.
|
48 |
-
*/
|
49 |
-
|
50 |
-
/**
|
51 |
-
Constructs an invalid font information.
|
52 |
-
*/
|
53 |
-
font_info::font_info() : d(new font_info_private()) { }
|
54 |
-
|
55 |
-
font_info::font_info(font_info_private &dd) : d(&dd) { }
|
56 |
-
|
57 |
-
/**
|
58 |
-
Copy constructor.
|
59 |
-
*/
|
60 |
-
font_info::font_info(const font_info &fi) : d(new font_info_private(*fi.d)) { }
|
61 |
-
|
62 |
-
/**
|
63 |
-
Destructor.
|
64 |
-
*/
|
65 |
-
font_info::~font_info()
|
66 |
-
{
|
67 |
-
delete d;
|
68 |
-
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
\returns the name of the font
|
72 |
-
*/
|
73 |
-
std::string font_info::name() const
|
74 |
-
{
|
75 |
-
return d->font_name;
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
\returns the file name of the font, in case the font is not embedded nor subset
|
80 |
-
*/
|
81 |
-
std::string font_info::file() const
|
82 |
-
{
|
83 |
-
return d->font_file;
|
84 |
-
}
|
85 |
-
|
86 |
-
/**
|
87 |
-
\returns whether the font is totally embedded in the %document
|
88 |
-
*/
|
89 |
-
bool font_info::is_embedded() const
|
90 |
-
{
|
91 |
-
return d->is_embedded;
|
92 |
-
}
|
93 |
-
|
94 |
-
/**
|
95 |
-
\returns whether there is a subset of the font embedded in the %document
|
96 |
-
*/
|
97 |
-
bool font_info::is_subset() const
|
98 |
-
{
|
99 |
-
return d->is_subset;
|
100 |
-
}
|
101 |
-
|
102 |
-
/**
|
103 |
-
\returns the type of the font
|
104 |
-
*/
|
105 |
-
font_info::type_enum font_info::type() const
|
106 |
-
{
|
107 |
-
return d->type;
|
108 |
-
}
|
109 |
-
|
110 |
-
/**
|
111 |
-
Assignment operator.
|
112 |
-
*/
|
113 |
-
font_info &font_info::operator=(const font_info &fi)
|
114 |
-
{
|
115 |
-
if (this != &fi) {
|
116 |
-
*d = *fi.d;
|
117 |
-
}
|
118 |
-
return *this;
|
119 |
-
}
|
120 |
-
|
121 |
-
/**
|
122 |
-
\class poppler::font_iterator poppler-font.h "poppler/cpp/poppler-font.h"
|
123 |
-
|
124 |
-
Reads the fonts in the PDF %document page by page.
|
125 |
-
|
126 |
-
font_iterator is the way to collect the list of the fonts used in a PDF
|
127 |
-
%document, reading them incrementally page by page.
|
128 |
-
|
129 |
-
A typical usage of this might look like:
|
130 |
-
\code
|
131 |
-
poppler::font_iterator *it = doc->create_font_iterator();
|
132 |
-
while (it->has_next()) {
|
133 |
-
std::vector<poppler::font_info> fonts = it->next();
|
134 |
-
// do domething with the fonts
|
135 |
-
}
|
136 |
-
// after we are done with the iterator, it must be deleted
|
137 |
-
delete it;
|
138 |
-
\endcode
|
139 |
-
*/
|
140 |
-
|
141 |
-
font_iterator::font_iterator(int start_page, document_private *dd) : d(new font_iterator_private(start_page, dd)) { }
|
142 |
-
|
143 |
-
/**
|
144 |
-
Destructor.
|
145 |
-
*/
|
146 |
-
font_iterator::~font_iterator()
|
147 |
-
{
|
148 |
-
delete d;
|
149 |
-
}
|
150 |
-
|
151 |
-
/**
|
152 |
-
\returns the fonts of the current page and advances to the next one.
|
153 |
-
*/
|
154 |
-
std::vector<font_info> font_iterator::next()
|
155 |
-
{
|
156 |
-
if (!has_next()) {
|
157 |
-
return std::vector<font_info>();
|
158 |
-
}
|
159 |
-
|
160 |
-
++d->current_page;
|
161 |
-
|
162 |
-
/* FontInfoScanner::scan() receives a number how many pages to
|
163 |
-
* be scanned from the *current page*, not from the beginning.
|
164 |
-
* We restrict the font scanning to the current page only.
|
165 |
-
*/
|
166 |
-
const std::vector<FontInfo *> items = d->font_info_scanner.scan(1);
|
167 |
-
std::vector<font_info> fonts;
|
168 |
-
fonts.reserve(items.size());
|
169 |
-
for (FontInfo *entry : items) {
|
170 |
-
fonts.push_back(font_info(*new font_info_private(entry)));
|
171 |
-
delete entry;
|
172 |
-
}
|
173 |
-
return fonts;
|
174 |
-
}
|
175 |
-
|
176 |
-
/**
|
177 |
-
\returns whether the iterator has more pages to advance to
|
178 |
-
*/
|
179 |
-
bool font_iterator::has_next() const
|
180 |
-
{
|
181 |
-
return d->current_page < d->total_pages;
|
182 |
-
}
|
183 |
-
|
184 |
-
/**
|
185 |
-
\returns the current page
|
186 |
-
*/
|
187 |
-
int font_iterator::current_page() const
|
188 |
-
{
|
189 |
-
return d->current_page;
|
190 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-font.h
DELETED
@@ -1,95 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2020, Suzuki Toshiya <[email protected]>
|
4 |
-
* Copyright (C) 2021, Albert Astals Cid <[email protected]>
|
5 |
-
*
|
6 |
-
* This program is free software; you can redistribute it and/or modify
|
7 |
-
* it under the terms of the GNU General Public License as published by
|
8 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
9 |
-
* any later version.
|
10 |
-
*
|
11 |
-
* This program is distributed in the hope that it will be useful,
|
12 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14 |
-
* GNU General Public License for more details.
|
15 |
-
*
|
16 |
-
* You should have received a copy of the GNU General Public License
|
17 |
-
* along with this program; if not, write to the Free Software
|
18 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
19 |
-
*/
|
20 |
-
|
21 |
-
#ifndef POPPLER_FONT_H
|
22 |
-
#define POPPLER_FONT_H
|
23 |
-
|
24 |
-
#include "poppler-global.h"
|
25 |
-
|
26 |
-
#include <vector>
|
27 |
-
|
28 |
-
namespace poppler {
|
29 |
-
|
30 |
-
class document;
|
31 |
-
class document_private;
|
32 |
-
class font_info_private;
|
33 |
-
class font_iterator;
|
34 |
-
class font_iterator_private;
|
35 |
-
|
36 |
-
class POPPLER_CPP_EXPORT font_info
|
37 |
-
{
|
38 |
-
public:
|
39 |
-
enum type_enum
|
40 |
-
{
|
41 |
-
unknown,
|
42 |
-
type1,
|
43 |
-
type1c,
|
44 |
-
type1c_ot,
|
45 |
-
type3,
|
46 |
-
truetype,
|
47 |
-
truetype_ot,
|
48 |
-
cid_type0,
|
49 |
-
cid_type0c,
|
50 |
-
cid_type0c_ot,
|
51 |
-
cid_truetype,
|
52 |
-
cid_truetype_ot
|
53 |
-
};
|
54 |
-
|
55 |
-
font_info();
|
56 |
-
font_info(const font_info &fi);
|
57 |
-
~font_info();
|
58 |
-
|
59 |
-
std::string name() const;
|
60 |
-
std::string file() const;
|
61 |
-
bool is_embedded() const;
|
62 |
-
bool is_subset() const;
|
63 |
-
type_enum type() const;
|
64 |
-
|
65 |
-
font_info &operator=(const font_info &fi);
|
66 |
-
|
67 |
-
private:
|
68 |
-
explicit font_info(font_info_private &dd);
|
69 |
-
|
70 |
-
font_info_private *d;
|
71 |
-
friend class font_iterator;
|
72 |
-
friend class page;
|
73 |
-
};
|
74 |
-
|
75 |
-
class POPPLER_CPP_EXPORT font_iterator : public poppler::noncopyable
|
76 |
-
{
|
77 |
-
public:
|
78 |
-
~font_iterator();
|
79 |
-
|
80 |
-
std::vector<font_info> next();
|
81 |
-
bool has_next() const;
|
82 |
-
int current_page() const;
|
83 |
-
|
84 |
-
private:
|
85 |
-
font_iterator(int, document_private *dd);
|
86 |
-
|
87 |
-
font_iterator_private *d;
|
88 |
-
friend class document;
|
89 |
-
friend class page;
|
90 |
-
friend class page_private;
|
91 |
-
};
|
92 |
-
|
93 |
-
}
|
94 |
-
|
95 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-global.cpp
DELETED
@@ -1,403 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2010, Hib Eris <[email protected]>
|
4 |
-
* Copyright (C) 2014, 2015 Hans-Peter Deifel <[email protected]>
|
5 |
-
* Copyright (C) 2015, Tamas Szekeres <[email protected]>
|
6 |
-
* Copyright (C) 2016 Jakub Alba <[email protected]>
|
7 |
-
* Copyright (C) 2018, 2020-2022, Albert Astals Cid <[email protected]>
|
8 |
-
* Copyright (C) 2018 Suzuki Toshiya <[email protected]>
|
9 |
-
* Copyright (C) 2018, 2020, Adam Reichold <[email protected]>
|
10 |
-
* Copyright (C) 2022, Oliver Sander <[email protected]>
|
11 |
-
*
|
12 |
-
* This program is free software; you can redistribute it and/or modify
|
13 |
-
* it under the terms of the GNU General Public License as published by
|
14 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
15 |
-
* any later version.
|
16 |
-
*
|
17 |
-
* This program is distributed in the hope that it will be useful,
|
18 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20 |
-
* GNU General Public License for more details.
|
21 |
-
*
|
22 |
-
* You should have received a copy of the GNU General Public License
|
23 |
-
* along with this program; if not, write to the Free Software
|
24 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
25 |
-
*/
|
26 |
-
|
27 |
-
/**
|
28 |
-
\file poppler-global.h
|
29 |
-
*/
|
30 |
-
#include "poppler-global.h"
|
31 |
-
|
32 |
-
#include "poppler-private.h"
|
33 |
-
#include "poppler-document-private.h"
|
34 |
-
|
35 |
-
#include "DateInfo.h"
|
36 |
-
|
37 |
-
#include <algorithm>
|
38 |
-
|
39 |
-
#include <cerrno>
|
40 |
-
#include <cstring>
|
41 |
-
#include <ios>
|
42 |
-
#include <iostream>
|
43 |
-
|
44 |
-
#include <iconv.h>
|
45 |
-
|
46 |
-
#include "config.h"
|
47 |
-
|
48 |
-
namespace {
|
49 |
-
|
50 |
-
struct MiniIconv
|
51 |
-
{
|
52 |
-
MiniIconv(const char *to_code, const char *from_code) : i_(iconv_open(to_code, from_code)) { }
|
53 |
-
~MiniIconv()
|
54 |
-
{
|
55 |
-
if (is_valid()) {
|
56 |
-
iconv_close(i_);
|
57 |
-
}
|
58 |
-
}
|
59 |
-
MiniIconv(const MiniIconv &) = delete;
|
60 |
-
MiniIconv &operator=(const MiniIconv &) = delete;
|
61 |
-
bool is_valid() const { return i_ != (iconv_t)-1; }
|
62 |
-
explicit operator iconv_t() const { return i_; }
|
63 |
-
iconv_t i_;
|
64 |
-
};
|
65 |
-
|
66 |
-
}
|
67 |
-
|
68 |
-
using namespace poppler;
|
69 |
-
|
70 |
-
/**
|
71 |
-
\namespace poppler
|
72 |
-
|
73 |
-
Single namespace containing all the classes and functions of poppler-cpp.
|
74 |
-
*/
|
75 |
-
|
76 |
-
/**
|
77 |
-
\class poppler::noncopyable
|
78 |
-
|
79 |
-
A class that cannot be copied.
|
80 |
-
*/
|
81 |
-
|
82 |
-
/**
|
83 |
-
\enum poppler::rotation_enum
|
84 |
-
|
85 |
-
The case sensitivity.
|
86 |
-
*/
|
87 |
-
/**
|
88 |
-
\var poppler::rotation_enum poppler::rotate_0
|
89 |
-
|
90 |
-
A rotation of 0 degrees clockwise.
|
91 |
-
*/
|
92 |
-
/**
|
93 |
-
\var poppler::rotation_enum poppler::rotate_90
|
94 |
-
|
95 |
-
A rotation of 90 degrees clockwise.
|
96 |
-
*/
|
97 |
-
/**
|
98 |
-
\var poppler::rotation_enum poppler::rotate_180
|
99 |
-
|
100 |
-
A rotation of 180 degrees clockwise.
|
101 |
-
*/
|
102 |
-
/**
|
103 |
-
\var poppler::rotation_enum poppler::rotate_270
|
104 |
-
|
105 |
-
A rotation of 270 degrees clockwise.
|
106 |
-
*/
|
107 |
-
|
108 |
-
/**
|
109 |
-
\enum poppler::page_box_enum
|
110 |
-
|
111 |
-
A possible box of a page in a PDF %document.
|
112 |
-
*/
|
113 |
-
/**
|
114 |
-
\var poppler::page_box_enum poppler::media_box
|
115 |
-
|
116 |
-
The "media" box.
|
117 |
-
*/
|
118 |
-
/**
|
119 |
-
\var poppler::page_box_enum poppler::crop_box
|
120 |
-
|
121 |
-
The "crop" box.
|
122 |
-
*/
|
123 |
-
/**
|
124 |
-
\var poppler::page_box_enum poppler::bleed_box
|
125 |
-
|
126 |
-
The "bleed" box.
|
127 |
-
*/
|
128 |
-
/**
|
129 |
-
\var poppler::page_box_enum poppler::trim_box
|
130 |
-
|
131 |
-
The "trim" box.
|
132 |
-
*/
|
133 |
-
/**
|
134 |
-
\var poppler::page_box_enum poppler::art_box
|
135 |
-
|
136 |
-
The "art" box.
|
137 |
-
*/
|
138 |
-
|
139 |
-
/**
|
140 |
-
\enum poppler::permission_enum
|
141 |
-
|
142 |
-
A possible permission in a PDF %document.
|
143 |
-
*/
|
144 |
-
/**
|
145 |
-
\var poppler::permission_enum poppler::perm_print
|
146 |
-
|
147 |
-
The permission to allow the print of a %document.
|
148 |
-
*/
|
149 |
-
/**
|
150 |
-
\var poppler::permission_enum poppler::perm_change
|
151 |
-
|
152 |
-
The permission to change a %document.
|
153 |
-
|
154 |
-
This is a generic "change" permission, so other permissions could affect
|
155 |
-
some types of changes.
|
156 |
-
*/
|
157 |
-
/**
|
158 |
-
\var poppler::permission_enum poppler::perm_copy
|
159 |
-
|
160 |
-
The permission to allow the copy or extraction of the text in a %document.
|
161 |
-
*/
|
162 |
-
/**
|
163 |
-
\var poppler::permission_enum poppler::perm_add_notes
|
164 |
-
|
165 |
-
The permission to allow the addition or editing of annotations,
|
166 |
-
and the filling of interactive form fields (including signature fields).
|
167 |
-
*/
|
168 |
-
/**
|
169 |
-
\var poppler::permission_enum poppler::perm_fill_forms
|
170 |
-
|
171 |
-
The permission to allow the filling of interactive form fields
|
172 |
-
(including signature fields).
|
173 |
-
|
174 |
-
\note this permission can be set even when the \ref poppler::perm_add_notes "perm_add_notes"
|
175 |
-
is not: this means that only the filling of forms is allowed.
|
176 |
-
*/
|
177 |
-
/**
|
178 |
-
\var poppler::permission_enum poppler::perm_accessibility
|
179 |
-
|
180 |
-
The permission to allow the extracting of content (for example, text) for
|
181 |
-
accessibility usage (e.g. for a screen reader).
|
182 |
-
*/
|
183 |
-
/**
|
184 |
-
\var poppler::permission_enum poppler::perm_assemble
|
185 |
-
|
186 |
-
The permission to allow to "assemble" a %document.
|
187 |
-
|
188 |
-
This implies operations such as the insertion, the rotation and the deletion
|
189 |
-
of pages; the creation of bookmarks and thumbnail images.
|
190 |
-
|
191 |
-
\note this permission can be set even when the \ref poppler::perm_change "perm_change"
|
192 |
-
is not
|
193 |
-
*/
|
194 |
-
/**
|
195 |
-
\var poppler::permission_enum poppler::perm_print_high_resolution
|
196 |
-
|
197 |
-
The permission to allow the high resolution print of a %document.
|
198 |
-
*/
|
199 |
-
|
200 |
-
/**
|
201 |
-
\enum poppler::case_sensitivity_enum
|
202 |
-
|
203 |
-
The case sensitivity.
|
204 |
-
*/
|
205 |
-
|
206 |
-
noncopyable::noncopyable() { }
|
207 |
-
|
208 |
-
noncopyable::~noncopyable() { }
|
209 |
-
|
210 |
-
noncopyable &noncopyable::operator=(noncopyable &&other) noexcept = default;
|
211 |
-
|
212 |
-
ustring::ustring() { }
|
213 |
-
|
214 |
-
ustring::ustring(size_type len, value_type ch) : std::basic_string<value_type>(len, ch) { }
|
215 |
-
|
216 |
-
ustring::~ustring() { }
|
217 |
-
|
218 |
-
byte_array ustring::to_utf8() const
|
219 |
-
{
|
220 |
-
if (!size()) {
|
221 |
-
return byte_array();
|
222 |
-
}
|
223 |
-
|
224 |
-
#ifdef WORDS_BIGENDIAN
|
225 |
-
MiniIconv ic("UTF-8", "UTF-16BE");
|
226 |
-
#else
|
227 |
-
MiniIconv ic("UTF-8", "UTF-16LE");
|
228 |
-
#endif
|
229 |
-
if (!ic.is_valid()) {
|
230 |
-
return byte_array();
|
231 |
-
}
|
232 |
-
const value_type *me_data = data();
|
233 |
-
byte_array str(size() * sizeof(value_type));
|
234 |
-
char *str_data = &str[0];
|
235 |
-
size_t me_len_char = size() * sizeof(value_type);
|
236 |
-
size_t str_len_left = str.size();
|
237 |
-
size_t ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
|
238 |
-
if ((ir == (size_t)-1) && (errno == E2BIG)) {
|
239 |
-
const size_t delta = str_data - &str[0];
|
240 |
-
str_len_left += str.size();
|
241 |
-
str.resize(str.size() * 2);
|
242 |
-
str_data = &str[delta];
|
243 |
-
ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&me_data, &me_len_char, &str_data, &str_len_left);
|
244 |
-
if (ir == (size_t)-1) {
|
245 |
-
return byte_array();
|
246 |
-
}
|
247 |
-
}
|
248 |
-
str.resize(str.size() - str_len_left);
|
249 |
-
return str;
|
250 |
-
}
|
251 |
-
|
252 |
-
std::string ustring::to_latin1() const
|
253 |
-
{
|
254 |
-
if (!size()) {
|
255 |
-
return std::string();
|
256 |
-
}
|
257 |
-
|
258 |
-
const size_type mylength = size();
|
259 |
-
std::string ret(mylength, '\0');
|
260 |
-
const value_type *me = data();
|
261 |
-
for (size_type i = 0; i < mylength; ++i) {
|
262 |
-
ret[i] = (char)*me++;
|
263 |
-
}
|
264 |
-
return ret;
|
265 |
-
}
|
266 |
-
|
267 |
-
ustring ustring::from_utf8(const char *str, int len)
|
268 |
-
{
|
269 |
-
if (len <= 0) {
|
270 |
-
len = std::strlen(str);
|
271 |
-
if (len <= 0) {
|
272 |
-
return ustring();
|
273 |
-
}
|
274 |
-
}
|
275 |
-
|
276 |
-
#ifdef WORDS_BIGENDIAN
|
277 |
-
MiniIconv ic("UTF-16BE", "UTF-8");
|
278 |
-
#else
|
279 |
-
MiniIconv ic("UTF-16LE", "UTF-8");
|
280 |
-
#endif
|
281 |
-
if (!ic.is_valid()) {
|
282 |
-
return ustring();
|
283 |
-
}
|
284 |
-
|
285 |
-
// +1, because iconv inserts byte order marks
|
286 |
-
ustring ret(len + 1, 0);
|
287 |
-
char *ret_data = reinterpret_cast<char *>(&ret[0]);
|
288 |
-
char *str_data = const_cast<char *>(str);
|
289 |
-
size_t str_len_char = len;
|
290 |
-
size_t ret_len_left = ret.size() * sizeof(ustring::value_type);
|
291 |
-
size_t ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
|
292 |
-
if ((ir == (size_t)-1) && (errno == E2BIG)) {
|
293 |
-
const size_t delta = ret_data - reinterpret_cast<char *>(&ret[0]);
|
294 |
-
ret_len_left += ret.size() * sizeof(ustring::value_type);
|
295 |
-
ret.resize(ret.size() * 2);
|
296 |
-
ret_data = reinterpret_cast<char *>(&ret[0]) + delta;
|
297 |
-
ir = iconv(static_cast<iconv_t>(ic), (ICONV_CONST char **)&str_data, &str_len_char, &ret_data, &ret_len_left);
|
298 |
-
if (ir == (size_t)-1) {
|
299 |
-
return ustring();
|
300 |
-
}
|
301 |
-
}
|
302 |
-
ret.resize(ret.size() - ret_len_left / sizeof(ustring::value_type));
|
303 |
-
|
304 |
-
return ret;
|
305 |
-
}
|
306 |
-
|
307 |
-
ustring ustring::from_latin1(const std::string &str)
|
308 |
-
{
|
309 |
-
const size_type l = str.size();
|
310 |
-
if (!l) {
|
311 |
-
return ustring();
|
312 |
-
}
|
313 |
-
const char *c = str.data();
|
314 |
-
ustring ret(l, 0);
|
315 |
-
for (size_type i = 0; i < l; ++i) {
|
316 |
-
ret[i] = static_cast<unsigned char>(*c);
|
317 |
-
c++;
|
318 |
-
}
|
319 |
-
return ret;
|
320 |
-
}
|
321 |
-
|
322 |
-
/**
|
323 |
-
Converts a string representing a PDF date to a value compatible with time_type.
|
324 |
-
*/
|
325 |
-
time_type poppler::convert_date(const std::string &date)
|
326 |
-
{
|
327 |
-
GooString gooDateStr(date.c_str());
|
328 |
-
return static_cast<time_type>(dateStringToTime(&gooDateStr));
|
329 |
-
}
|
330 |
-
|
331 |
-
/**
|
332 |
-
Converts a string representing a PDF date to a value compatible with time_t.
|
333 |
-
*/
|
334 |
-
time_t poppler::convert_date_t(const std::string &date)
|
335 |
-
{
|
336 |
-
GooString gooDateStr(date.c_str());
|
337 |
-
return dateStringToTime(&gooDateStr);
|
338 |
-
}
|
339 |
-
|
340 |
-
std::ostream &poppler::operator<<(std::ostream &stream, const byte_array &array)
|
341 |
-
{
|
342 |
-
stream << "[";
|
343 |
-
const std::ios_base::fmtflags f = stream.flags();
|
344 |
-
std::hex(stream);
|
345 |
-
const char *data = &array[0];
|
346 |
-
const byte_array::size_type out_len = std::min<byte_array::size_type>(array.size(), 50);
|
347 |
-
for (byte_array::size_type i = 0; i < out_len; ++i) {
|
348 |
-
if (i != 0) {
|
349 |
-
stream << " ";
|
350 |
-
}
|
351 |
-
stream << ((data[i] & 0xf0) >> 4) << (data[i] & 0xf);
|
352 |
-
}
|
353 |
-
stream.flags(f);
|
354 |
-
if (out_len < array.size()) {
|
355 |
-
stream << " ...";
|
356 |
-
}
|
357 |
-
stream << "]";
|
358 |
-
return stream;
|
359 |
-
}
|
360 |
-
|
361 |
-
/**
|
362 |
-
* Sets a custom data directory for initialization of global parameters
|
363 |
-
*
|
364 |
-
* If no instances of \see document currently exist, this will save the
|
365 |
-
* given path as a custom data directory to be used when the first instance
|
366 |
-
* of the \see document is constructed.
|
367 |
-
*
|
368 |
-
* \returns true on success, false on failure
|
369 |
-
*
|
370 |
-
* \since 0.73.0
|
371 |
-
*/
|
372 |
-
bool poppler::set_data_dir(const std::string &new_data_dir)
|
373 |
-
{
|
374 |
-
return GlobalParamsIniter::setCustomDataDir(new_data_dir);
|
375 |
-
}
|
376 |
-
|
377 |
-
/**
|
378 |
-
\typedef poppler::debug_func
|
379 |
-
|
380 |
-
Debug/error function.
|
381 |
-
|
382 |
-
This function type is used for debugging & error output;
|
383 |
-
the first parameter is the actual message, the second is the unaltered
|
384 |
-
closure argument which was passed to the set_debug_error_function() call.
|
385 |
-
|
386 |
-
\since 0.30.0
|
387 |
-
*/
|
388 |
-
|
389 |
-
/**
|
390 |
-
Set a new debug/error output function.
|
391 |
-
|
392 |
-
If not set, by default error and debug messages will be sent to stderr.
|
393 |
-
|
394 |
-
\param debug_function the new debug function
|
395 |
-
\param closure user data which will be passed as-is to the debug function
|
396 |
-
|
397 |
-
\since 0.30.0
|
398 |
-
*/
|
399 |
-
void poppler::set_debug_error_function(debug_func debug_function, void *closure)
|
400 |
-
{
|
401 |
-
poppler::detail::user_debug_function = debug_function;
|
402 |
-
poppler::detail::debug_closure = closure;
|
403 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-global.h
DELETED
@@ -1,138 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2009-2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2010, Patrick Spendrin <[email protected]>
|
4 |
-
* Copyright (C) 2014, Hans-Peter Deifel <[email protected]>
|
5 |
-
* Copyright (C) 2018, Adam Reichold <[email protected]>
|
6 |
-
* Copyright (C) 2021, 2022, Albert Astals Cid <[email protected]>
|
7 |
-
* Copyright (C) 2022, Tobias C. Berner <[email protected]>
|
8 |
-
* Copyright (C) 2022, Oliver Sander <[email protected]>
|
9 |
-
*
|
10 |
-
* This program is free software; you can redistribute it and/or modify
|
11 |
-
* it under the terms of the GNU General Public License as published by
|
12 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
13 |
-
* any later version.
|
14 |
-
*
|
15 |
-
* This program is distributed in the hope that it will be useful,
|
16 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
-
* GNU General Public License for more details.
|
19 |
-
*
|
20 |
-
* You should have received a copy of the GNU General Public License
|
21 |
-
* along with this program; if not, write to the Free Software
|
22 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
23 |
-
*/
|
24 |
-
|
25 |
-
#ifndef POPPLER_GLOBAL_H
|
26 |
-
#define POPPLER_GLOBAL_H
|
27 |
-
|
28 |
-
#include "poppler_cpp_export.h"
|
29 |
-
|
30 |
-
#include <ctime>
|
31 |
-
#include <iosfwd>
|
32 |
-
#include <string>
|
33 |
-
#include <vector>
|
34 |
-
|
35 |
-
namespace poppler {
|
36 |
-
|
37 |
-
/// \cond DOXYGEN_SKIP_THIS
|
38 |
-
namespace detail {
|
39 |
-
|
40 |
-
class POPPLER_CPP_EXPORT noncopyable
|
41 |
-
{
|
42 |
-
public:
|
43 |
-
noncopyable(const noncopyable &) = delete;
|
44 |
-
const noncopyable &operator=(const noncopyable &) = delete;
|
45 |
-
|
46 |
-
protected:
|
47 |
-
noncopyable();
|
48 |
-
~noncopyable();
|
49 |
-
noncopyable &operator=(noncopyable &&other) noexcept;
|
50 |
-
};
|
51 |
-
|
52 |
-
}
|
53 |
-
|
54 |
-
typedef detail::noncopyable noncopyable;
|
55 |
-
/// \endcond
|
56 |
-
|
57 |
-
enum rotation_enum
|
58 |
-
{
|
59 |
-
rotate_0,
|
60 |
-
rotate_90,
|
61 |
-
rotate_180,
|
62 |
-
rotate_270
|
63 |
-
};
|
64 |
-
|
65 |
-
enum page_box_enum
|
66 |
-
{
|
67 |
-
media_box,
|
68 |
-
crop_box,
|
69 |
-
bleed_box,
|
70 |
-
trim_box,
|
71 |
-
art_box
|
72 |
-
};
|
73 |
-
|
74 |
-
enum permission_enum
|
75 |
-
{
|
76 |
-
perm_print,
|
77 |
-
perm_change,
|
78 |
-
perm_copy,
|
79 |
-
perm_add_notes,
|
80 |
-
perm_fill_forms,
|
81 |
-
perm_accessibility,
|
82 |
-
perm_assemble,
|
83 |
-
perm_print_high_resolution
|
84 |
-
};
|
85 |
-
|
86 |
-
enum case_sensitivity_enum
|
87 |
-
{
|
88 |
-
case_sensitive,
|
89 |
-
case_insensitive
|
90 |
-
};
|
91 |
-
|
92 |
-
typedef std::vector<char> byte_array;
|
93 |
-
|
94 |
-
typedef unsigned int /* time_t */ time_type;
|
95 |
-
|
96 |
-
// to disable warning only for this occurrence
|
97 |
-
#ifdef _MSC_VER
|
98 |
-
# pragma warning(push)
|
99 |
-
# pragma warning(disable : 4251) /* class 'A' needs to have dll interface for to be used by clients of class 'B'. */
|
100 |
-
#endif
|
101 |
-
class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned short>
|
102 |
-
{
|
103 |
-
public:
|
104 |
-
ustring();
|
105 |
-
ustring(size_type len, value_type ch);
|
106 |
-
~ustring();
|
107 |
-
|
108 |
-
byte_array to_utf8() const;
|
109 |
-
std::string to_latin1() const;
|
110 |
-
|
111 |
-
static ustring from_utf8(const char *str, int len = -1);
|
112 |
-
static ustring from_latin1(const std::string &str);
|
113 |
-
|
114 |
-
private:
|
115 |
-
// forbid implicit std::string conversions
|
116 |
-
explicit ustring(const std::string &);
|
117 |
-
explicit operator std::string() const;
|
118 |
-
ustring &operator=(const std::string &);
|
119 |
-
};
|
120 |
-
#ifdef _MSC_VER
|
121 |
-
# pragma warning(pop)
|
122 |
-
#endif
|
123 |
-
|
124 |
-
[[deprecated]] POPPLER_CPP_EXPORT time_type convert_date(const std::string &date);
|
125 |
-
|
126 |
-
POPPLER_CPP_EXPORT time_t convert_date_t(const std::string &date);
|
127 |
-
|
128 |
-
POPPLER_CPP_EXPORT std::ostream &operator<<(std::ostream &stream, const byte_array &array);
|
129 |
-
|
130 |
-
POPPLER_CPP_EXPORT bool set_data_dir(const std::string &new_data_dir);
|
131 |
-
|
132 |
-
typedef void (*debug_func)(const std::string &, void *);
|
133 |
-
|
134 |
-
POPPLER_CPP_EXPORT void set_debug_error_function(debug_func debug_function, void *closure);
|
135 |
-
|
136 |
-
}
|
137 |
-
|
138 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-image-private.h
DELETED
@@ -1,51 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2018, 2022, Albert Astals Cid <[email protected]>
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
8 |
-
* any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
18 |
-
*/
|
19 |
-
|
20 |
-
#ifndef POPPLER_IMAGE_PRIVATE_H
|
21 |
-
#define POPPLER_IMAGE_PRIVATE_H
|
22 |
-
|
23 |
-
#include "poppler-image.h"
|
24 |
-
|
25 |
-
namespace poppler {
|
26 |
-
|
27 |
-
class image_private
|
28 |
-
{
|
29 |
-
public:
|
30 |
-
image_private(int iwidth, int iheight, image::format_enum iformat);
|
31 |
-
~image_private();
|
32 |
-
|
33 |
-
image_private(const image_private &) = delete;
|
34 |
-
image_private &operator=(const image_private &) = delete;
|
35 |
-
|
36 |
-
static image_private *create_data(int width, int height, image::format_enum format);
|
37 |
-
static image_private *create_data(char *data, int width, int height, image::format_enum format);
|
38 |
-
|
39 |
-
int ref;
|
40 |
-
char *data;
|
41 |
-
int width;
|
42 |
-
int height;
|
43 |
-
int bytes_per_row;
|
44 |
-
int bytes_num;
|
45 |
-
image::format_enum format;
|
46 |
-
bool own_data : 1;
|
47 |
-
};
|
48 |
-
|
49 |
-
}
|
50 |
-
|
51 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-image.cpp
DELETED
@@ -1,515 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2010-2011, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2013 Adrian Johnson <[email protected]>
|
4 |
-
* Copyright (C) 2017-2019, 2021, Albert Astals Cid <[email protected]>
|
5 |
-
* Copyright (C) 2017, Jeroen Ooms <[email protected]>
|
6 |
-
* Copyright (C) 2018, Zsombor Hollay-Horvath <[email protected]>
|
7 |
-
* Copyright (C) 2018, Adam Reichold <[email protected]>
|
8 |
-
*
|
9 |
-
* This program is free software; you can redistribute it and/or modify
|
10 |
-
* it under the terms of the GNU General Public License as published by
|
11 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
12 |
-
* any later version.
|
13 |
-
*
|
14 |
-
* This program is distributed in the hope that it will be useful,
|
15 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
-
* GNU General Public License for more details.
|
18 |
-
*
|
19 |
-
* You should have received a copy of the GNU General Public License
|
20 |
-
* along with this program; if not, write to the Free Software
|
21 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
22 |
-
*/
|
23 |
-
|
24 |
-
/**
|
25 |
-
\file poppler-image.h
|
26 |
-
*/
|
27 |
-
#include "poppler-image.h"
|
28 |
-
|
29 |
-
#include "poppler-image-private.h"
|
30 |
-
|
31 |
-
#include <config.h>
|
32 |
-
#include "ImgWriter.h"
|
33 |
-
#if defined(ENABLE_LIBPNG)
|
34 |
-
# include "PNGWriter.h"
|
35 |
-
#endif
|
36 |
-
#if defined(ENABLE_LIBJPEG)
|
37 |
-
# include "JpegWriter.h"
|
38 |
-
#endif
|
39 |
-
#if defined(ENABLE_LIBTIFF)
|
40 |
-
# include "TiffWriter.h"
|
41 |
-
#endif
|
42 |
-
#include "NetPBMWriter.h"
|
43 |
-
|
44 |
-
#include <cstdlib>
|
45 |
-
#include <cstring>
|
46 |
-
#include <algorithm>
|
47 |
-
#include <memory>
|
48 |
-
#include <vector>
|
49 |
-
|
50 |
-
namespace {
|
51 |
-
|
52 |
-
struct FileCloser
|
53 |
-
{
|
54 |
-
inline explicit FileCloser(FILE *ff) : f(ff) { }
|
55 |
-
inline ~FileCloser() { (void)close(); }
|
56 |
-
FileCloser(const FileCloser &) = delete;
|
57 |
-
FileCloser &operator=(const FileCloser &) = delete;
|
58 |
-
inline bool close()
|
59 |
-
{
|
60 |
-
if (f) {
|
61 |
-
const int c = fclose(f);
|
62 |
-
f = nullptr;
|
63 |
-
return c == 0;
|
64 |
-
}
|
65 |
-
return true;
|
66 |
-
}
|
67 |
-
|
68 |
-
FILE *f;
|
69 |
-
};
|
70 |
-
|
71 |
-
int calc_bytes_per_row(int width, poppler::image::format_enum format)
|
72 |
-
{
|
73 |
-
switch (format) {
|
74 |
-
case poppler::image::format_invalid:
|
75 |
-
return 0;
|
76 |
-
case poppler::image::format_mono:
|
77 |
-
return (width + 7) >> 3;
|
78 |
-
case poppler::image::format_gray8:
|
79 |
-
return (width + 3) >> 2 << 2;
|
80 |
-
case poppler::image::format_rgb24:
|
81 |
-
case poppler::image::format_bgr24:
|
82 |
-
return (width * 3 + 3) >> 2 << 2;
|
83 |
-
case poppler::image::format_argb32:
|
84 |
-
return width * 4;
|
85 |
-
}
|
86 |
-
return 0;
|
87 |
-
}
|
88 |
-
|
89 |
-
NetPBMWriter::Format pnm_format(poppler::image::format_enum format)
|
90 |
-
{
|
91 |
-
switch (format) {
|
92 |
-
case poppler::image::format_invalid: // unused, anyway
|
93 |
-
case poppler::image::format_mono:
|
94 |
-
return NetPBMWriter::MONOCHROME;
|
95 |
-
case poppler::image::format_gray8:
|
96 |
-
case poppler::image::format_rgb24:
|
97 |
-
case poppler::image::format_bgr24:
|
98 |
-
case poppler::image::format_argb32:
|
99 |
-
return NetPBMWriter::RGB;
|
100 |
-
}
|
101 |
-
return NetPBMWriter::RGB;
|
102 |
-
}
|
103 |
-
|
104 |
-
}
|
105 |
-
|
106 |
-
using namespace poppler;
|
107 |
-
|
108 |
-
image_private::image_private(int iwidth, int iheight, image::format_enum iformat) : ref(1), data(nullptr), width(iwidth), height(iheight), bytes_per_row(0), bytes_num(0), format(iformat), own_data(true) { }
|
109 |
-
|
110 |
-
image_private::~image_private()
|
111 |
-
{
|
112 |
-
if (own_data) {
|
113 |
-
std::free(data);
|
114 |
-
}
|
115 |
-
}
|
116 |
-
|
117 |
-
image_private *image_private::create_data(int width, int height, image::format_enum format)
|
118 |
-
{
|
119 |
-
if (width <= 0 || height <= 0) {
|
120 |
-
return nullptr;
|
121 |
-
}
|
122 |
-
|
123 |
-
int bpr = calc_bytes_per_row(width, format);
|
124 |
-
if (bpr <= 0) {
|
125 |
-
return nullptr;
|
126 |
-
}
|
127 |
-
|
128 |
-
auto d = std::make_unique<image_private>(width, height, format);
|
129 |
-
d->bytes_num = bpr * height;
|
130 |
-
d->data = reinterpret_cast<char *>(std::malloc(d->bytes_num));
|
131 |
-
if (!d->data) {
|
132 |
-
return nullptr;
|
133 |
-
}
|
134 |
-
d->own_data = true;
|
135 |
-
d->bytes_per_row = bpr;
|
136 |
-
|
137 |
-
return d.release();
|
138 |
-
}
|
139 |
-
|
140 |
-
image_private *image_private::create_data(char *data, int width, int height, image::format_enum format)
|
141 |
-
{
|
142 |
-
if (width <= 0 || height <= 0 || !data) {
|
143 |
-
return nullptr;
|
144 |
-
}
|
145 |
-
|
146 |
-
int bpr = calc_bytes_per_row(width, format);
|
147 |
-
if (bpr <= 0) {
|
148 |
-
return nullptr;
|
149 |
-
}
|
150 |
-
|
151 |
-
image_private *d = new image_private(width, height, format);
|
152 |
-
d->bytes_num = bpr * height;
|
153 |
-
d->data = data;
|
154 |
-
d->own_data = false;
|
155 |
-
d->bytes_per_row = bpr;
|
156 |
-
|
157 |
-
return d;
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
\class poppler::image poppler-image.h "poppler/cpp/poppler-image.h"
|
162 |
-
|
163 |
-
A simple representation of image, with direct access to the data.
|
164 |
-
|
165 |
-
This class uses implicit sharing for the internal data, so it can be used as
|
166 |
-
value class. This also means any non-const operation will make sure that the
|
167 |
-
data used by current instance is not shared with other instances (ie
|
168 |
-
\em detaching), copying the shared data.
|
169 |
-
|
170 |
-
\since 0.16
|
171 |
-
*/
|
172 |
-
|
173 |
-
/**
|
174 |
-
\enum poppler::image::format_enum
|
175 |
-
|
176 |
-
The possible formats for an image.
|
177 |
-
|
178 |
-
format_gray8 and format_bgr24 were introduced in poppler 0.65.
|
179 |
-
*/
|
180 |
-
|
181 |
-
/**
|
182 |
-
Construct an invalid image.
|
183 |
-
*/
|
184 |
-
image::image() : d(nullptr) { }
|
185 |
-
|
186 |
-
/**
|
187 |
-
Construct a new image.
|
188 |
-
|
189 |
-
It allocates the storage needed for the image data; if the allocation fails,
|
190 |
-
the image is an invalid one.
|
191 |
-
|
192 |
-
\param iwidth the width for the image
|
193 |
-
\param iheight the height for the image
|
194 |
-
\param iformat the format for the bits of the image
|
195 |
-
*/
|
196 |
-
image::image(int iwidth, int iheight, image::format_enum iformat) : d(image_private::create_data(iwidth, iheight, iformat)) { }
|
197 |
-
|
198 |
-
/**
|
199 |
-
Construct a new image.
|
200 |
-
|
201 |
-
It uses the provide data buffer for the image, so you \b must ensure it
|
202 |
-
remains valid for the whole lifetime of the image.
|
203 |
-
|
204 |
-
\param idata the buffer to use for the image
|
205 |
-
\param iwidth the width for the image
|
206 |
-
\param iheight the height for the image
|
207 |
-
\param iformat the format for the bits of the image
|
208 |
-
*/
|
209 |
-
image::image(char *idata, int iwidth, int iheight, image::format_enum iformat) : d(image_private::create_data(idata, iwidth, iheight, iformat)) { }
|
210 |
-
|
211 |
-
/**
|
212 |
-
Copy constructor.
|
213 |
-
*/
|
214 |
-
image::image(const image &img) : d(img.d)
|
215 |
-
{
|
216 |
-
if (d) {
|
217 |
-
++d->ref;
|
218 |
-
}
|
219 |
-
}
|
220 |
-
|
221 |
-
/**
|
222 |
-
Destructor.
|
223 |
-
*/
|
224 |
-
image::~image()
|
225 |
-
{
|
226 |
-
if (d && !--d->ref) {
|
227 |
-
delete d;
|
228 |
-
}
|
229 |
-
}
|
230 |
-
|
231 |
-
/**
|
232 |
-
Image validity check.
|
233 |
-
|
234 |
-
\returns whether the image is valid.
|
235 |
-
*/
|
236 |
-
bool image::is_valid() const
|
237 |
-
{
|
238 |
-
return d && d->format != format_invalid;
|
239 |
-
}
|
240 |
-
|
241 |
-
/**
|
242 |
-
\returns the format of the image
|
243 |
-
*/
|
244 |
-
image::format_enum image::format() const
|
245 |
-
{
|
246 |
-
return d ? d->format : format_invalid;
|
247 |
-
}
|
248 |
-
|
249 |
-
/**
|
250 |
-
\returns whether the width of the image
|
251 |
-
*/
|
252 |
-
int image::width() const
|
253 |
-
{
|
254 |
-
return d ? d->width : 0;
|
255 |
-
}
|
256 |
-
|
257 |
-
/**
|
258 |
-
\returns whether the height of the image
|
259 |
-
*/
|
260 |
-
int image::height() const
|
261 |
-
{
|
262 |
-
return d ? d->height : 0;
|
263 |
-
}
|
264 |
-
|
265 |
-
/**
|
266 |
-
\returns the number of bytes in each row of the image
|
267 |
-
*/
|
268 |
-
int image::bytes_per_row() const
|
269 |
-
{
|
270 |
-
return d ? d->bytes_per_row : 0;
|
271 |
-
}
|
272 |
-
|
273 |
-
/**
|
274 |
-
Access to the image bits.
|
275 |
-
|
276 |
-
This function will detach and copy the shared data.
|
277 |
-
|
278 |
-
\returns the pointer to the first pixel
|
279 |
-
*/
|
280 |
-
char *image::data()
|
281 |
-
{
|
282 |
-
if (!d) {
|
283 |
-
return nullptr;
|
284 |
-
}
|
285 |
-
|
286 |
-
detach();
|
287 |
-
return d->data;
|
288 |
-
}
|
289 |
-
|
290 |
-
/**
|
291 |
-
Access to the image bits.
|
292 |
-
|
293 |
-
This function provides const access to the data.
|
294 |
-
|
295 |
-
\returns the pointer to the first pixel
|
296 |
-
*/
|
297 |
-
const char *image::const_data() const
|
298 |
-
{
|
299 |
-
return d ? d->data : nullptr;
|
300 |
-
}
|
301 |
-
|
302 |
-
/**
|
303 |
-
Copy of a slice of the image.
|
304 |
-
|
305 |
-
\param r the sub-area of this image to copy; if empty, the whole image is
|
306 |
-
copied
|
307 |
-
|
308 |
-
\returns a new image representing the specified part of the current image
|
309 |
-
*/
|
310 |
-
image image::copy(const rect &r) const
|
311 |
-
{
|
312 |
-
if (r.is_empty()) {
|
313 |
-
image img(*this);
|
314 |
-
img.detach();
|
315 |
-
return img;
|
316 |
-
}
|
317 |
-
|
318 |
-
// ### FIXME
|
319 |
-
return *this;
|
320 |
-
}
|
321 |
-
|
322 |
-
/**
|
323 |
-
Saves the current image to file.
|
324 |
-
|
325 |
-
Using this function it is possible to save the image to the specified
|
326 |
-
\p file_name, in the specified \p out_format and with a resolution of the
|
327 |
-
specified \p dpi.
|
328 |
-
|
329 |
-
Image formats commonly supported are:
|
330 |
-
\li PNG: \c png
|
331 |
-
\li JPEG: \c jpeg, \c jpg
|
332 |
-
\li TIFF: \c tiff
|
333 |
-
\li PNM: \c pnm (with Poppler >= 0.18)
|
334 |
-
|
335 |
-
If an image format is not supported (check the result of
|
336 |
-
supported_image_formats()), the saving fails.
|
337 |
-
|
338 |
-
\returns whether the saving succeeded
|
339 |
-
*/
|
340 |
-
bool image::save(const std::string &file_name, const std::string &out_format, int dpi) const
|
341 |
-
{
|
342 |
-
if (!is_valid() || file_name.empty() || out_format.empty()) {
|
343 |
-
return false;
|
344 |
-
}
|
345 |
-
|
346 |
-
std::string fmt = out_format;
|
347 |
-
std::transform(fmt.begin(), fmt.end(), fmt.begin(), tolower);
|
348 |
-
|
349 |
-
std::unique_ptr<ImgWriter> w;
|
350 |
-
const int actual_dpi = dpi == -1 ? 75 : dpi;
|
351 |
-
if (false) {
|
352 |
-
}
|
353 |
-
#if defined(ENABLE_LIBPNG)
|
354 |
-
else if (fmt == "png") {
|
355 |
-
w = std::make_unique<PNGWriter>();
|
356 |
-
}
|
357 |
-
#endif
|
358 |
-
#if defined(ENABLE_LIBJPEG)
|
359 |
-
else if (fmt == "jpeg" || fmt == "jpg") {
|
360 |
-
w = std::make_unique<JpegWriter>();
|
361 |
-
}
|
362 |
-
#endif
|
363 |
-
#if defined(ENABLE_LIBTIFF)
|
364 |
-
else if (fmt == "tiff") {
|
365 |
-
w = std::make_unique<TiffWriter>();
|
366 |
-
}
|
367 |
-
#endif
|
368 |
-
else if (fmt == "pnm") {
|
369 |
-
w = std::make_unique<NetPBMWriter>(pnm_format(d->format));
|
370 |
-
}
|
371 |
-
if (!w.get()) {
|
372 |
-
return false;
|
373 |
-
}
|
374 |
-
FILE *f = fopen(file_name.c_str(), "wb");
|
375 |
-
if (!f) {
|
376 |
-
return false;
|
377 |
-
}
|
378 |
-
const FileCloser fc(f);
|
379 |
-
if (!w->init(f, d->width, d->height, actual_dpi, actual_dpi)) {
|
380 |
-
return false;
|
381 |
-
}
|
382 |
-
switch (d->format) {
|
383 |
-
case format_invalid:
|
384 |
-
return false;
|
385 |
-
case format_mono:
|
386 |
-
return false;
|
387 |
-
case format_gray8: {
|
388 |
-
std::vector<unsigned char> row(3 * d->width);
|
389 |
-
char *hptr = d->data;
|
390 |
-
for (int y = 0; y < d->height; ++y) {
|
391 |
-
unsigned char *rowptr = &row[0];
|
392 |
-
for (int x = 0; x < d->width; ++x, rowptr += 3) {
|
393 |
-
rowptr[0] = *reinterpret_cast<unsigned char *>(hptr + x);
|
394 |
-
rowptr[1] = *reinterpret_cast<unsigned char *>(hptr + x);
|
395 |
-
rowptr[2] = *reinterpret_cast<unsigned char *>(hptr + x);
|
396 |
-
}
|
397 |
-
rowptr = &row[0];
|
398 |
-
if (!w->writeRow(&rowptr)) {
|
399 |
-
return false;
|
400 |
-
}
|
401 |
-
hptr += d->bytes_per_row;
|
402 |
-
}
|
403 |
-
break;
|
404 |
-
}
|
405 |
-
case format_bgr24: {
|
406 |
-
std::vector<unsigned char> row(3 * d->width);
|
407 |
-
char *hptr = d->data;
|
408 |
-
for (int y = 0; y < d->height; ++y) {
|
409 |
-
unsigned char *rowptr = &row[0];
|
410 |
-
for (int x = 0; x < d->width; ++x, rowptr += 3) {
|
411 |
-
rowptr[0] = *reinterpret_cast<unsigned char *>(hptr + x * 3 + 2);
|
412 |
-
rowptr[1] = *reinterpret_cast<unsigned char *>(hptr + x * 3 + 1);
|
413 |
-
rowptr[2] = *reinterpret_cast<unsigned char *>(hptr + x * 3);
|
414 |
-
}
|
415 |
-
rowptr = &row[0];
|
416 |
-
if (!w->writeRow(&rowptr)) {
|
417 |
-
return false;
|
418 |
-
}
|
419 |
-
hptr += d->bytes_per_row;
|
420 |
-
}
|
421 |
-
break;
|
422 |
-
}
|
423 |
-
case format_rgb24: {
|
424 |
-
char *hptr = d->data;
|
425 |
-
for (int y = 0; y < d->height; ++y) {
|
426 |
-
if (!w->writeRow(reinterpret_cast<unsigned char **>(&hptr))) {
|
427 |
-
return false;
|
428 |
-
}
|
429 |
-
hptr += d->bytes_per_row;
|
430 |
-
}
|
431 |
-
break;
|
432 |
-
}
|
433 |
-
case format_argb32: {
|
434 |
-
std::vector<unsigned char> row(3 * d->width);
|
435 |
-
char *hptr = d->data;
|
436 |
-
for (int y = 0; y < d->height; ++y) {
|
437 |
-
unsigned char *rowptr = &row[0];
|
438 |
-
for (int x = 0; x < d->width; ++x, rowptr += 3) {
|
439 |
-
const unsigned int pixel = *reinterpret_cast<unsigned int *>(hptr + x * 4);
|
440 |
-
rowptr[0] = (pixel >> 16) & 0xff;
|
441 |
-
rowptr[1] = (pixel >> 8) & 0xff;
|
442 |
-
rowptr[2] = pixel & 0xff;
|
443 |
-
}
|
444 |
-
rowptr = &row[0];
|
445 |
-
if (!w->writeRow(&rowptr)) {
|
446 |
-
return false;
|
447 |
-
}
|
448 |
-
hptr += d->bytes_per_row;
|
449 |
-
}
|
450 |
-
break;
|
451 |
-
}
|
452 |
-
}
|
453 |
-
|
454 |
-
if (!w->close()) {
|
455 |
-
return false;
|
456 |
-
}
|
457 |
-
|
458 |
-
return true;
|
459 |
-
}
|
460 |
-
|
461 |
-
/**
|
462 |
-
\returns a list of the supported image formats
|
463 |
-
*/
|
464 |
-
std::vector<std::string> image::supported_image_formats()
|
465 |
-
{
|
466 |
-
std::vector<std::string> formats;
|
467 |
-
#if defined(ENABLE_LIBPNG)
|
468 |
-
formats.emplace_back("png");
|
469 |
-
#endif
|
470 |
-
#if defined(ENABLE_LIBJPEG)
|
471 |
-
formats.emplace_back("jpeg");
|
472 |
-
formats.emplace_back("jpg");
|
473 |
-
#endif
|
474 |
-
#if defined(ENABLE_LIBTIFF)
|
475 |
-
formats.emplace_back("tiff");
|
476 |
-
#endif
|
477 |
-
formats.emplace_back("pnm");
|
478 |
-
return formats;
|
479 |
-
}
|
480 |
-
|
481 |
-
/**
|
482 |
-
Assignment operator.
|
483 |
-
*/
|
484 |
-
image &image::operator=(const image &img)
|
485 |
-
{
|
486 |
-
if (this == &img) {
|
487 |
-
return *this;
|
488 |
-
}
|
489 |
-
|
490 |
-
if (img.d) {
|
491 |
-
++img.d->ref;
|
492 |
-
}
|
493 |
-
image_private *old_d = d;
|
494 |
-
d = img.d;
|
495 |
-
if (old_d && !--old_d->ref) {
|
496 |
-
delete old_d;
|
497 |
-
}
|
498 |
-
return *this;
|
499 |
-
}
|
500 |
-
|
501 |
-
void image::detach()
|
502 |
-
{
|
503 |
-
if (d->ref == 1) {
|
504 |
-
return;
|
505 |
-
}
|
506 |
-
|
507 |
-
image_private *old_d = d;
|
508 |
-
d = image_private::create_data(old_d->width, old_d->height, old_d->format);
|
509 |
-
if (d) {
|
510 |
-
std::memcpy(d->data, old_d->data, old_d->bytes_num);
|
511 |
-
--old_d->ref;
|
512 |
-
} else {
|
513 |
-
d = old_d;
|
514 |
-
}
|
515 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
poppler-24.01.0/cpp/poppler-image.h
DELETED
@@ -1,74 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Copyright (C) 2010, Pino Toscano <[email protected]>
|
3 |
-
* Copyright (C) 2018, Zsombor Hollay-Horvath <[email protected]>
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation; either version 2, or (at your option)
|
8 |
-
* any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
18 |
-
*/
|
19 |
-
|
20 |
-
#ifndef POPPLER_IMAGE_H
|
21 |
-
#define POPPLER_IMAGE_H
|
22 |
-
|
23 |
-
#include "poppler-global.h"
|
24 |
-
#include "poppler-rectangle.h"
|
25 |
-
|
26 |
-
namespace poppler {
|
27 |
-
|
28 |
-
class image_private;
|
29 |
-
|
30 |
-
class POPPLER_CPP_EXPORT image
|
31 |
-
{
|
32 |
-
public:
|
33 |
-
enum format_enum
|
34 |
-
{
|
35 |
-
format_invalid,
|
36 |
-
format_mono,
|
37 |
-
format_rgb24,
|
38 |
-
format_argb32,
|
39 |
-
format_gray8,
|
40 |
-
format_bgr24
|
41 |
-
};
|
42 |
-
|
43 |
-
image();
|
44 |
-
image(int iwidth, int iheight, format_enum iformat);
|
45 |
-
image(char *idata, int iwidth, int iheight, format_enum iformat);
|
46 |
-
image(const image &img);
|
47 |
-
~image();
|
48 |
-
|
49 |
-
bool is_valid() const;
|
50 |
-
format_enum format() const;
|
51 |
-
int width() const;
|
52 |
-
int height() const;
|
53 |
-
char *data();
|
54 |
-
const char *const_data() const;
|
55 |
-
int bytes_per_row() const;
|
56 |
-
|
57 |
-
image copy(const rect &r = rect()) const;
|
58 |
-
|
59 |
-
bool save(const std::string &file_name, const std::string &out_format, int dpi = -1) const;
|
60 |
-
|
61 |
-
static std::vector<std::string> supported_image_formats();
|
62 |
-
|
63 |
-
image &operator=(const image &img);
|
64 |
-
|
65 |
-
private:
|
66 |
-
void detach();
|
67 |
-
|
68 |
-
image_private *d;
|
69 |
-
friend class image_private;
|
70 |
-
};
|
71 |
-
|
72 |
-
}
|
73 |
-
|
74 |
-
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|