Kaydet (Commit) b6f9eeb9 authored tarafından Miklos Vajna's avatar Miklos Vajna

external: bundle pdfium

Initial use case is to avoid creating a whole Draw document + a poppler
process for each and every PDF image we load in a document.

The MSVC patch is only to support MSVC 2013, as upstream already moved
to MSVC 2015.

Change-Id: I3c9dbac3e3de9f2e874ca4cfec0a9dd8a388b87c
Reviewed-on: https://gerrit.libreoffice.org/34022Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst af35c02a
......@@ -195,6 +195,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
$(call fetch_Optional,ORCUS,ORCUS_TARBALL) \
$(call fetch_Optional,OWNCLOUD_ANDROID_LIB,OWNCLOUD_ANDROID_LIB_TARBALL) \
$(call fetch_Optional,PAGEMAKER,PAGEMAKER_TARBALL) \
PDFIUM_TARBALL \
$(call fetch_Optional,POPPLER,POPPLER_TARBALL) \
$(call fetch_Optional,POSTGRESQL,POSTGRESQL_TARBALL) \
$(call fetch_Optional,PYTHON,PYTHON_TARBALL) \
......
......@@ -4058,4 +4058,15 @@ $(call gb_LinkTarget_set_include,$(1), \
$(call gb_LinkTarget_use_libraries,$(1),clew)
endef
define gb_LinkTarget__use_pdfium
$(call gb_LinkTarget_set_include,$(1),\
-I$(call gb_UnpackedTarball_get_dir,pdfium)/public \
$$(INCLUDE) \
)
$(call gb_LinkTarget_use_libraries,$(1),pdfium)
endef
$(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo,\
pdfium \
))
# vim: set noet sw=4 ts=4:
......@@ -138,6 +138,7 @@ export OWNCLOUD_ANDROID_LIB_MD5SUM := 593f0aa47bf2efc0efda2d28fae063b2
export OWNCLOUD_ANDROID_LIB_TARBALL := owncloud-android-library-0.9.4-no-binary-deps.tar.gz
export PAGEMAKER_MD5SUM := 5c4985a68be0b79d3f809da5e12b143c
export PAGEMAKER_TARBALL := libpagemaker-0.0.3.tar.bz2
export PDFIUM_TARBALL := 9ac66c71463f9440e3ccc996c5e66556-pdfium-3004.tar.bz2
export PIXMAN_TARBALL := e80ebae4da01e77f68744319f01d52a3-pixman-0.34.0.tar.gz
export PNG_MD5SUM := 897ccec1ebfb0922e83c2bfaa1be8748
export PNG_TARBALL := libpng-1.6.28.tar.gz
......
......@@ -88,6 +88,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,ORCUS,liborcus) \
$(call gb_Helper_optional,OWNCLOUD_ANDROID_LIB,owncloud-android-lib) \
$(call gb_Helper_optional,PAGEMAKER,libpagemaker) \
pdfium \
$(call gb_Helper_optional,POPPLER,poppler) \
$(call gb_Helper_optional,POSTGRESQL,postgresql) \
$(call gb_Helper_optional,PYTHON,$(if $(filter $(PYTHON_VERSION_MINOR),3),python33,python3)) \
......
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_Library_Library,pdfium))
$(eval $(call gb_Library_use_unpacked,pdfium,pdfium))
$(eval $(call gb_Library_set_warnings_not_errors,pdfium))
$(eval $(call gb_Library_set_include,pdfium,\
-I$(WORKDIR)/UnpackedTarball/pdfium \
$$(INCLUDE) \
))
$(eval $(call gb_Library_add_defs,pdfium,\
-DPDFIUM_DLLIMPLEMENTATION \
))
# Don't show warnings upstream doesn't care about.
$(eval $(call gb_Library_add_cxxflags,pdfium,\
-w \
))
$(eval $(call gb_Library_add_cflags,pdfium,\
-w \
))
$(eval $(call gb_Library_set_generated_cxx_suffix,pdfium,cpp))
# pdfium
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/fpdfsdk/cba_annotiterator \
UnpackedTarball/pdfium/fpdfsdk/cfx_systemhandler \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_annot \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_annothandlermgr \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_annotiteration \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_baannot \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_baannothandler \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_datetime \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_formfillenvironment \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_interform \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_pageview \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_widget \
UnpackedTarball/pdfium/fpdfsdk/cpdfsdk_widgethandler \
UnpackedTarball/pdfium/fpdfsdk/fpdf_dataavail \
UnpackedTarball/pdfium/fpdfsdk/fpdf_ext \
UnpackedTarball/pdfium/fpdfsdk/fpdf_flatten \
UnpackedTarball/pdfium/fpdfsdk/fpdf_progressive \
UnpackedTarball/pdfium/fpdfsdk/fpdf_searchex \
UnpackedTarball/pdfium/fpdfsdk/fpdf_structtree \
UnpackedTarball/pdfium/fpdfsdk/fpdf_sysfontinfo \
UnpackedTarball/pdfium/fpdfsdk/fpdf_transformpage \
UnpackedTarball/pdfium/fpdfsdk/fpdfdoc \
UnpackedTarball/pdfium/fpdfsdk/fpdfeditimg \
UnpackedTarball/pdfium/fpdfsdk/fpdfeditpage \
UnpackedTarball/pdfium/fpdfsdk/fpdfformfill \
UnpackedTarball/pdfium/fpdfsdk/fpdfppo \
UnpackedTarball/pdfium/fpdfsdk/fpdfsave \
UnpackedTarball/pdfium/fpdfsdk/fpdftext \
UnpackedTarball/pdfium/fpdfsdk/fpdfview \
UnpackedTarball/pdfium/fpdfsdk/fsdk_actionhandler \
UnpackedTarball/pdfium/fpdfsdk/fsdk_pauseadapter \
UnpackedTarball/pdfium/fpdfsdk/pdfsdk_fieldaction \
))
# fdrm
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fdrm/crypto/fx_crypt \
UnpackedTarball/pdfium/core/fdrm/crypto/fx_crypt_aes \
UnpackedTarball/pdfium/core/fdrm/crypto/fx_crypt_sha \
))
# formfiller
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/fpdfsdk/formfiller/cba_fontmap \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_checkbox \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_combobox \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_formfiller \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_interactiveformfiller \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_listbox \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_pushbutton \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_radiobutton \
UnpackedTarball/pdfium/fpdfsdk/formfiller/cffl_textfield \
))
# fpdfapi
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/Adobe-CNS1-UCS2_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/B5pc-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/B5pc-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/CNS-EUC-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/CNS-EUC-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/ETen-B5-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/ETen-B5-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/ETenms-B5-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/ETenms-B5-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/HKscs-B5-H_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/HKscs-B5-V_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/UniCNS-UCS2-H_3 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/UniCNS-UCS2-V_3 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/UniCNS-UTF16-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/CNS1/cmaps_cns1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/Adobe-GB1-UCS2_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GB-EUC-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GB-EUC-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBK-EUC-H_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBK-EUC-V_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBK2K-H_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBK2K-V_5 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBKp-EUC-H_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBKp-EUC-V_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBpc-EUC-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/GBpc-EUC-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/UniGB-UCS2-H_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/UniGB-UCS2-V_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/GB1/cmaps_gb1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/83pv-RKSJ-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/90ms-RKSJ-H_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/90ms-RKSJ-V_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/90msp-RKSJ-H_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/90msp-RKSJ-V_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/90pv-RKSJ-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/Add-RKSJ-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/Add-RKSJ-V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/Adobe-Japan1-UCS2_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/EUC-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/EUC-V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/Ext-RKSJ-H_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/Ext-RKSJ-V_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-HW-H_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-HW-V_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-H_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/UniJIS-UCS2-V_4 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Japan1/cmaps_japan1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/Adobe-Korea1-UCS2_2 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSC-EUC-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSC-EUC-V_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSCms-UHC-HW-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSCms-UHC-HW-V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSCms-UHC-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSCms-UHC-V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/KSCpc-EUC-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/UniKS-UCS2-H_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/UniKS-UCS2-V_1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/UniKS-UTF16-H_0 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/Korea1/cmaps_korea1 \
UnpackedTarball/pdfium/core/fpdfapi/cmaps/fpdf_cmaps \
UnpackedTarball/pdfium/core/fpdfapi/cpdf_modulemgr \
UnpackedTarball/pdfium/core/fpdfapi/cpdf_pagerendercontext \
UnpackedTarball/pdfium/core/fpdfapi/edit/cpdf_pagecontentgenerator \
UnpackedTarball/pdfium/core/fpdfapi/edit/fpdf_edit_create \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_cidfont \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_font \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_fontencoding \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_simplefont \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_truetypefont \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_type1font \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_type3char \
UnpackedTarball/pdfium/core/fpdfapi/font/cpdf_type3font \
UnpackedTarball/pdfium/core/fpdfapi/font/fpdf_font \
UnpackedTarball/pdfium/core/fpdfapi/font/fpdf_font_cid \
UnpackedTarball/pdfium/core/fpdfapi/font/ttgsubtable \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_allstates \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_clippath \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_color \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_colorspace \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_colorstate \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_contentmark \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_contentmarkitem \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_contentparser \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_docpagedata \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_form \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_formobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_generalstate \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_graphicstates \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_image \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_imageobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_meshstream \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_page \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pagemodule \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pageobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pageobjectholder \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pageobjectlist \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_path \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pathobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_pattern \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_shadingobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_shadingpattern \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_streamcontentparser \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_streamparser \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_textobject \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_textstate \
UnpackedTarball/pdfium/core/fpdfapi/page/cpdf_tilingpattern \
UnpackedTarball/pdfium/core/fpdfapi/page/fpdf_page_colors \
UnpackedTarball/pdfium/core/fpdfapi/page/fpdf_page_func \
UnpackedTarball/pdfium/core/fpdfapi/parser/cfdf_document \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_array \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_boolean \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_crypto_handler \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_data_avail \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_dictionary \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_document \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_hint_tables \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_indirect_object_holder \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_linearized_header \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_name \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_null \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_number \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_object \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_parser \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_reference \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_security_handler \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_simple_parser \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_stream \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_stream_acc \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_string \
UnpackedTarball/pdfium/core/fpdfapi/parser/cpdf_syntax_parser \
UnpackedTarball/pdfium/core/fpdfapi/parser/fpdf_parser_decode \
UnpackedTarball/pdfium/core/fpdfapi/parser/fpdf_parser_utility \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_charposlist \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_devicebuffer \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_dibsource \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_dibtransferfunc \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_docrenderdata \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_imagecacheentry \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_imageloader \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_imagerenderer \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_pagerendercache \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_progressiverenderer \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_rendercontext \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_renderoptions \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_renderstatus \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_scaledrenderbuffer \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_textrenderer \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_transferfunc \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_type3cache \
UnpackedTarball/pdfium/core/fpdfapi/render/cpdf_type3glyphs \
))
# fpdfdoc
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fpdfdoc/cline \
UnpackedTarball/pdfium/core/fpdfdoc/clines \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_aaction \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_action \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_actionfields \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_annot \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_annotlist \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_apsettings \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_bookmark \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_bookmarktree \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_defaultappearance \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_dest \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_docjsactions \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_filespec \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_formcontrol \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_formfield \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_iconfit \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_interform \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_link \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_linklist \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_metadata \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_nametree \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_numbertree \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_occontext \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_pagelabel \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_variabletext \
UnpackedTarball/pdfium/core/fpdfdoc/cpdf_viewerpreferences \
UnpackedTarball/pdfium/core/fpdfdoc/cpvt_color \
UnpackedTarball/pdfium/core/fpdfdoc/cpvt_fontmap \
UnpackedTarball/pdfium/core/fpdfdoc/cpvt_generateap \
UnpackedTarball/pdfium/core/fpdfdoc/cpvt_sectioninfo \
UnpackedTarball/pdfium/core/fpdfdoc/cpvt_wordinfo \
UnpackedTarball/pdfium/core/fpdfdoc/csection \
UnpackedTarball/pdfium/core/fpdfdoc/ctypeset \
UnpackedTarball/pdfium/core/fpdfdoc/doc_tagged \
))
# fpdftext
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fpdftext/cpdf_linkextract \
UnpackedTarball/pdfium/core/fpdftext/cpdf_textpage \
UnpackedTarball/pdfium/core/fpdftext/cpdf_textpagefind \
UnpackedTarball/pdfium/core/fpdftext/unicodenormalizationdata \
))
# fxcodec
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_fax \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_flate \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_icc \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_jbig \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_jpeg \
UnpackedTarball/pdfium/core/fxcodec/codec/fx_codec_jpx_opj \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_ArithDecoder \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_ArithIntDecoder \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_BitStream \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_Context \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_GrdProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_GrrdProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_GsidProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_HtrdProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_HuffmanDecoder \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_HuffmanTable \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_HuffmanTable_Standard \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_Image \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_PatternDict \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_PddProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_SddProc \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_Segment \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_SymbolDict \
UnpackedTarball/pdfium/core/fxcodec/jbig2/JBig2_TrdProc \
))
# fxcrt
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxcrt/fx_basic_array \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_bstring \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_buffer \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_coords \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_gcc \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_memmgr \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_utf \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_util \
UnpackedTarball/pdfium/core/fxcrt/fx_basic_wstring \
UnpackedTarball/pdfium/core/fxcrt/fx_bidi \
UnpackedTarball/pdfium/core/fxcrt/fx_extension \
UnpackedTarball/pdfium/core/fxcrt/fx_ucddata \
UnpackedTarball/pdfium/core/fxcrt/fx_unicode \
UnpackedTarball/pdfium/core/fxcrt/fx_xml_composer \
UnpackedTarball/pdfium/core/fxcrt/fx_xml_parser \
UnpackedTarball/pdfium/core/fxcrt/fxcrt_posix \
UnpackedTarball/pdfium/core/fxcrt/fxcrt_stream \
UnpackedTarball/pdfium/core/fxcrt/fxcrt_windows \
))
# fxedit
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/fpdfsdk/fxedit/fxet_ap \
UnpackedTarball/pdfium/fpdfsdk/fxedit/fxet_edit \
UnpackedTarball/pdfium/fpdfsdk/fxedit/fxet_list \
))
# fxge
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxge/dib/fx_dib_composite \
UnpackedTarball/pdfium/core/fxge/dib/fx_dib_convert \
UnpackedTarball/pdfium/core/fxge/dib/fx_dib_engine \
UnpackedTarball/pdfium/core/fxge/dib/fx_dib_main \
UnpackedTarball/pdfium/core/fxge/dib/fx_dib_transform \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitDingbats \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitFixed \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitFixedBold \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitFixedItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSans \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSansBold \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSansItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSansMM \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSerif \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSerifBold \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSerifItalic \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSerifMM \
UnpackedTarball/pdfium/core/fxge/fontdata/chromefontdata/FoxitSymbol \
UnpackedTarball/pdfium/core/fxge/freetype/fx_freetype \
UnpackedTarball/pdfium/core/fxge/ge/cfx_cliprgn \
UnpackedTarball/pdfium/core/fxge/ge/cfx_facecache \
UnpackedTarball/pdfium/core/fxge/ge/cfx_folderfontinfo \
UnpackedTarball/pdfium/core/fxge/ge/cfx_font \
UnpackedTarball/pdfium/core/fxge/ge/cfx_fontcache \
UnpackedTarball/pdfium/core/fxge/ge/cfx_fontmapper \
UnpackedTarball/pdfium/core/fxge/ge/cfx_fontmgr \
UnpackedTarball/pdfium/core/fxge/ge/cfx_gemodule \
UnpackedTarball/pdfium/core/fxge/ge/cfx_graphstate \
UnpackedTarball/pdfium/core/fxge/ge/cfx_graphstatedata \
UnpackedTarball/pdfium/core/fxge/ge/cfx_pathdata \
UnpackedTarball/pdfium/core/fxge/ge/cfx_renderdevice \
UnpackedTarball/pdfium/core/fxge/ge/cfx_substfont \
UnpackedTarball/pdfium/core/fxge/ge/cfx_unicodeencoding \
UnpackedTarball/pdfium/core/fxge/ge/cttfontdesc \
UnpackedTarball/pdfium/core/fxge/ge/fx_ge_fontmap \
UnpackedTarball/pdfium/core/fxge/ge/fx_ge_linux \
UnpackedTarball/pdfium/core/fxge/ge/fx_ge_text \
UnpackedTarball/pdfium/core/fxge/ifx_renderdevicedriver \
UnpackedTarball/pdfium/core/fxge/agg/fx_agg_driver \
))
# javascript, build with pdf_enable_v8 disabled.
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/fpdfsdk/javascript/JS_Runtime_Stub \
))
# pdfwindow
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Button \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Caret \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_ComboBox \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Edit \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_EditCtrl \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_FontMap \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Icon \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_ListBox \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_ScrollBar \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_SpecialButton \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Utils \
UnpackedTarball/pdfium/fpdfsdk/pdfwindow/PWL_Wnd \
))
# third_party/bigint
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/third_party/bigint/BigInteger \
UnpackedTarball/pdfium/third_party/bigint/BigIntegerUtils \
UnpackedTarball/pdfium/third_party/bigint/BigUnsigned \
UnpackedTarball/pdfium/third_party/bigint/BigUnsignedInABase \
))
# third_party/fx_agg
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/third_party/agg23/agg_curves \
UnpackedTarball/pdfium/third_party/agg23/agg_path_storage \
UnpackedTarball/pdfium/third_party/agg23/agg_rasterizer_scanline_aa \
UnpackedTarball/pdfium/third_party/agg23/agg_vcgen_dash \
UnpackedTarball/pdfium/third_party/agg23/agg_vcgen_stroke \
))
# third_party/fx_lcms2
$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmscam02 \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmscgats \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmscnvrt \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmserr \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsgamma \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsgmt \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmshalf \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsintrp \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsio0 \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsio1 \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmslut \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsmd5 \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsmtrx \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsnamed \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsopt \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmspack \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmspcs \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsplugin \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsps2 \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmssamp \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmssm \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmstypes \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsvirt \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmswtpnt \
UnpackedTarball/pdfium/third_party/lcms2-2.6/src/cmsxform \
))
# third_party/fx_libopenjpeg
$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
UnpackedTarball/pdfium/third_party/libopenjpeg20/bio \
UnpackedTarball/pdfium/third_party/libopenjpeg20/cio \
UnpackedTarball/pdfium/third_party/libopenjpeg20/dwt \
UnpackedTarball/pdfium/third_party/libopenjpeg20/event \
UnpackedTarball/pdfium/third_party/libopenjpeg20/function_list \
UnpackedTarball/pdfium/third_party/libopenjpeg20/image \
UnpackedTarball/pdfium/third_party/libopenjpeg20/invert \
UnpackedTarball/pdfium/third_party/libopenjpeg20/j2k \
UnpackedTarball/pdfium/third_party/libopenjpeg20/jp2 \
UnpackedTarball/pdfium/third_party/libopenjpeg20/mct \
UnpackedTarball/pdfium/third_party/libopenjpeg20/mqc \
UnpackedTarball/pdfium/third_party/libopenjpeg20/openjpeg \
UnpackedTarball/pdfium/third_party/libopenjpeg20/opj_clock \
UnpackedTarball/pdfium/third_party/libopenjpeg20/pi \
UnpackedTarball/pdfium/third_party/libopenjpeg20/raw \
UnpackedTarball/pdfium/third_party/libopenjpeg20/t1 \
UnpackedTarball/pdfium/third_party/libopenjpeg20/t2 \
UnpackedTarball/pdfium/third_party/libopenjpeg20/tcd \
UnpackedTarball/pdfium/third_party/libopenjpeg20/tgt \
))
# third_party/fx_zlib
$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
UnpackedTarball/pdfium/third_party/zlib_v128/adler32 \
UnpackedTarball/pdfium/third_party/zlib_v128/compress \
UnpackedTarball/pdfium/third_party/zlib_v128/crc32 \
UnpackedTarball/pdfium/third_party/zlib_v128/deflate \
UnpackedTarball/pdfium/third_party/zlib_v128/gzclose \
UnpackedTarball/pdfium/third_party/zlib_v128/gzlib \
UnpackedTarball/pdfium/third_party/zlib_v128/gzread \
UnpackedTarball/pdfium/third_party/zlib_v128/gzwrite \
UnpackedTarball/pdfium/third_party/zlib_v128/infback \
UnpackedTarball/pdfium/third_party/zlib_v128/inffast \
UnpackedTarball/pdfium/third_party/zlib_v128/inflate \
UnpackedTarball/pdfium/third_party/zlib_v128/inftrees \
UnpackedTarball/pdfium/third_party/zlib_v128/trees \
UnpackedTarball/pdfium/third_party/zlib_v128/uncompr \
UnpackedTarball/pdfium/third_party/zlib_v128/zutil \
))
# third_party/jpeg
$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcapimin \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcapistd \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jccoefct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jccolor \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcdctmgr \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jchuff \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcinit \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcmainct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcmarker \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcmaster \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcomapi \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcparam \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcphuff \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcprepct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jcsample \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jctrans \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdapimin \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdapistd \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdcoefct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdcolor \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jddctmgr \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdhuff \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdinput \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdmainct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdmarker \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdmaster \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdmerge \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdphuff \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdpostct \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdsample \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jdtrans \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jerror \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jfdctfst \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jfdctint \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jidctfst \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jidctint \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jidctred \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jmemmgr \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jmemnobs \
UnpackedTarball/pdfium/third_party/libjpeg/fpdfapi_jutils \
))
ifeq ($(OS),LINUX)
$(eval $(call gb_Library_add_libs,pdfium,\
-ldl \
-lrt \
-lpthread \
))
$(eval $(call gb_Library_use_external,pdfium,freetype))
else
$(eval $(call gb_Library_set_include,pdfium,\
-I$(WORKDIR)/UnpackedTarball/pdfium/third_party/freetype/include/ \
$$(INCLUDE) \
))
$(eval $(call gb_Library_add_defs,pdfium,\
-DFT2_BUILD_LIBRARY \
))
# third_party/freetype
$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
UnpackedTarball/pdfium/third_party/freetype/src/base/ftbase \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftbitmap \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftglyph \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftinit \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftlcdfil \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftmm \
UnpackedTarball/pdfium/third_party/freetype/src/base/ftsystem \
UnpackedTarball/pdfium/third_party/freetype/src/cff/cff \
UnpackedTarball/pdfium/third_party/freetype/src/cid/type1cid \
UnpackedTarball/pdfium/third_party/freetype/src/psaux/psaux \
UnpackedTarball/pdfium/third_party/freetype/src/pshinter/pshinter \
UnpackedTarball/pdfium/third_party/freetype/src/psnames/psmodule \
UnpackedTarball/pdfium/third_party/freetype/src/raster/raster \
UnpackedTarball/pdfium/third_party/freetype/src/sfnt/sfnt \
UnpackedTarball/pdfium/third_party/freetype/src/smooth/smooth \
UnpackedTarball/pdfium/third_party/freetype/src/truetype/truetype \
UnpackedTarball/pdfium/third_party/freetype/src/type1/type1 \
))
endif
ifeq ($(OS),WNT)
# fxge
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxge/win32/cfx_psrenderer \
UnpackedTarball/pdfium/core/fxge/win32/cpsoutput \
UnpackedTarball/pdfium/core/fxge/win32/fx_win32_device \
UnpackedTarball/pdfium/core/fxge/win32/fx_win32_dib \
UnpackedTarball/pdfium/core/fxge/win32/fx_win32_dwrite \
UnpackedTarball/pdfium/core/fxge/win32/fx_win32_gdipext \
UnpackedTarball/pdfium/core/fxge/win32/fx_win32_print \
))
$(eval $(call gb_Library_use_system_win32_libs,pdfium,\
gdi32 \
))
endif
ifeq ($(OS),MACOSX)
# fxge
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxge/apple/fx_apple_platform \
UnpackedTarball/pdfium/core/fxge/apple/fx_mac_imp \
UnpackedTarball/pdfium/core/fxge/apple/fx_quartz_device \
))
$(eval $(call gb_Library_use_system_darwin_frameworks,pdfium,\
AppKit \
CoreFoundation \
))
endif
ifeq ($(OS),ANDROID)
# fxge
$(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
UnpackedTarball/pdfium/core/fxge/android/cfpf_skiadevicemodule \
UnpackedTarball/pdfium/core/fxge/android/cfpf_skiafont \
UnpackedTarball/pdfium/core/fxge/android/cfpf_skiafontmgr \
UnpackedTarball/pdfium/core/fxge/android/cfx_androidfontinfo \
UnpackedTarball/pdfium/core/fxge/android/fx_android_imp \
))
endif
# vim: set noet sw=4 ts=4:
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
include $(module_directory)/../../solenv/gbuild/partial_build.mk
# vim: set noet sw=4 ts=4:
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_Module_Module,pdfium))
$(eval $(call gb_Module_add_targets,pdfium,\
Library_pdfium \
UnpackedTarball_pdfium \
))
# vim: set noet sw=4 ts=4:
External package containing pdfium.
"Insert -> Picture -> From File..." uses this library when a PDF file is
selected.
How to update the tarball:
version=$(git for-each-ref|grep chromium/|tail -n 1|sed 's|.*/||')
git archive --prefix=pdfium/ --format=tar origin/chromium/${version} > pdfium-${version}.tar
bzip2 pdfium-${version}.tar
checksum=$(md5sum pdfium-${version}.tar.bz2|sed 's| .*||')
mv pdfium-${version}.tar.bz2 ${checksum}-pdfium-${version}.tar.bz2
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
pdfium_patches :=
pdfium_patches += visibility.patch.1
pdfium_patches += msvc.patch.1
$(eval $(call gb_UnpackedTarball_UnpackedTarball,pdfium))
$(eval $(call gb_UnpackedTarball_set_tarball,pdfium,$(PDFIUM_TARBALL)))
$(eval $(call gb_UnpackedTarball_add_patches,pdfium,\
$(foreach patch,$(pdfium_patches),external/pdfium/$(patch)) \
))
$(eval $(call gb_UnpackedTarball_set_post_action,pdfium,\
mv third_party/bigint/BigInteger.cc third_party/bigint/BigInteger.cpp && \
mv third_party/bigint/BigIntegerUtils.cc third_party/bigint/BigIntegerUtils.cpp && \
mv third_party/bigint/BigUnsigned.cc third_party/bigint/BigUnsigned.cpp && \
mv third_party/bigint/BigUnsignedInABase.cc third_party/bigint/BigUnsignedInABase.cpp \
))
# vim: set noet sw=4 ts=4:
diff --git a/core/fpdfapi/font/ttgsubtable.cpp b/core/fpdfapi/font/ttgsubtable.cpp
index 51e8e9c..4f4f696 100644
--- a/core/fpdfapi/font/ttgsubtable.cpp
+++ b/core/fpdfapi/font/ttgsubtable.cpp
@@ -94,29 +94,33 @@ bool CFX_CTTGSUBTable::GetVerticalGlyph(uint32_t glyphnum,
(uint8_t)'t',
};
if (!m_bFeautureMapLoad) {
- for (const auto& script : ScriptList.ScriptRecords) {
- for (const auto& record : script.Script.LangSysRecords) {
- for (const auto& index : record.LangSys.FeatureIndices) {
- if (FeatureList.FeatureRecords[index].FeatureTag == tag[0] ||
- FeatureList.FeatureRecords[index].FeatureTag == tag[1]) {
- m_featureSet.insert(index);
+ for (int i = 0; i < ScriptList.ScriptCount; i++) {
+ for (int j = 0; j < ScriptList.ScriptRecord[i].Script.LangSysCount; ++j) {
+ const auto& record = ScriptList.ScriptRecord[i].Script.LangSysRecord[j];
+ for (int k = 0; k < record.LangSys.FeatureCount; ++k) {
+ uint32_t index = record.LangSys.FeatureIndex[k];
+ if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] ||
+ FeatureList.FeatureRecord[index].FeatureTag == tag[1]) {
+ if (!pdfium::ContainsKey(m_featureMap, index)) {
+ m_featureMap[index] = index;
+ }
}
}
}
}
- if (m_featureSet.empty()) {
- int i = 0;
- for (const auto& feature : FeatureList.FeatureRecords) {
- if (feature.FeatureTag == tag[0] || feature.FeatureTag == tag[1])
- m_featureSet.insert(i);
- ++i;
+ if (m_featureMap.empty()) {
+ for (int i = 0; i < FeatureList.FeatureCount; i++) {
+ if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] ||
+ FeatureList.FeatureRecord[i].FeatureTag == tag[1]) {
+ m_featureMap[i] = i;
+ }
}
}
m_bFeautureMapLoad = true;
}
- for (const auto& item : m_featureSet) {
+ for (const auto& pair : m_featureMap) {
if (GetVerticalGlyphSub(glyphnum, vglyphnum,
- &FeatureList.FeatureRecords[item].Feature)) {
+ &FeatureList.FeatureRecord[pair.second].Feature)) {
return true;
}
}
@@ -126,13 +130,16 @@ bool CFX_CTTGSUBTable::GetVerticalGlyph(uint32_t glyphnum,
bool CFX_CTTGSUBTable::GetVerticalGlyphSub(uint32_t glyphnum,
uint32_t* vglyphnum,
TFeature* Feature) {
- for (int index : Feature->LookupListIndices) {
- if (index < 0 || index >= pdfium::CollectionSize<int>(LookupList.Lookups))
+ for (int i = 0; i < Feature->LookupCount; i++) {
+ int index = Feature->LookupListIndex[i];
+ if (index < 0 || LookupList.LookupCount < index) {
continue;
-
- if (LookupList.Lookups[index].LookupType == 1 &&
- GetVerticalGlyphSub2(glyphnum, vglyphnum, &LookupList.Lookups[index])) {
- return true;
+ }
+ if (LookupList.Lookup[index].LookupType == 1) {
+ if (GetVerticalGlyphSub2(glyphnum, vglyphnum,
+ &LookupList.Lookup[index])) {
+ return true;
+ }
}
}
return false;
@@ -141,10 +148,10 @@ bool CFX_CTTGSUBTable::GetVerticalGlyphSub(uint32_t glyphnum,
bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum,
uint32_t* vglyphnum,
TLookup* Lookup) {
- for (const auto& subTable : Lookup->SubTables) {
- switch (subTable->SubstFormat) {
+ for (int i = 0; i < Lookup->SubTableCount; i++) {
+ switch (Lookup->SubTable[i]->SubstFormat) {
case 1: {
- auto tbl1 = static_cast<TSingleSubstFormat1*>(subTable.get());
+ TSingleSubstFormat1* tbl1 = (TSingleSubstFormat1*)Lookup->SubTable[i];
if (GetCoverageIndex(tbl1->Coverage.get(), glyphnum) >= 0) {
*vglyphnum = glyphnum + tbl1->DeltaGlyphID;
return true;
@@ -152,11 +159,11 @@ bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum,
break;
}
case 2: {
- auto tbl2 = static_cast<TSingleSubstFormat2*>(subTable.get());
- int index = GetCoverageIndex(tbl2->Coverage.get(), glyphnum);
- if (index >= 0 &&
- index < pdfium::CollectionSize<int>(tbl2->Substitutes)) {
- *vglyphnum = tbl2->Substitutes[index];
+ TSingleSubstFormat2* tbl2 = (TSingleSubstFormat2*)Lookup->SubTable[i];
+ int index = -1;
+ index = GetCoverageIndex(tbl2->Coverage.get(), glyphnum);
+ if (0 <= index && index < tbl2->GlyphCount) {
+ *vglyphnum = tbl2->Substitute[index];
return true;
}
break;
@@ -168,28 +175,29 @@ bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum,
int CFX_CTTGSUBTable::GetCoverageIndex(TCoverageFormatBase* Coverage,
uint32_t g) const {
- if (!Coverage)
+ int i = 0;
+ if (!Coverage) {
return -1;
-
+ }
switch (Coverage->CoverageFormat) {
case 1: {
- int i = 0;
TCoverageFormat1* c1 = (TCoverageFormat1*)Coverage;
- for (const auto& glyph : c1->GlyphArray) {
- if (static_cast<uint32_t>(glyph) == g)
+ for (i = 0; i < c1->GlyphCount; i++) {
+ if ((uint32_t)c1->GlyphArray[i] == g) {
return i;
- ++i;
+ }
}
return -1;
}
case 2: {
TCoverageFormat2* c2 = (TCoverageFormat2*)Coverage;
- for (const auto& rangeRec : c2->RangeRecords) {
- uint32_t s = rangeRec.Start;
- uint32_t e = rangeRec.End;
- uint32_t si = rangeRec.StartCoverageIndex;
- if (s <= g && g <= e)
+ for (i = 0; i < c2->RangeCount; i++) {
+ uint32_t s = c2->RangeRecord[i].Start;
+ uint32_t e = c2->RangeRecord[i].End;
+ uint32_t si = c2->RangeRecord[i].StartCoverageIndex;
+ if (s <= g && g <= e) {
return si + g - s;
+ }
}
return -1;
}
@@ -237,21 +245,33 @@ bool CFX_CTTGSUBTable::Parse(FT_Bytes scriptlist,
}
void CFX_CTTGSUBTable::ParseScriptList(FT_Bytes raw, TScriptList* rec) {
+ int i;
FT_Bytes sp = raw;
- rec->ScriptRecords = std::vector<TScriptRecord>(GetUInt16(sp));
- for (auto& scriptRec : rec->ScriptRecords) {
- scriptRec.ScriptTag = GetUInt32(sp);
- ParseScript(&raw[GetUInt16(sp)], &scriptRec.Script);
+ rec->ScriptCount = GetUInt16(sp);
+ if (rec->ScriptCount <= 0) {
+ return;
+ }
+ rec->ScriptRecord.reset(new TScriptRecord[rec->ScriptCount]);
+ for (i = 0; i < rec->ScriptCount; i++) {
+ rec->ScriptRecord[i].ScriptTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseScript(&raw[offset], &rec->ScriptRecord[i].Script);
}
}
void CFX_CTTGSUBTable::ParseScript(FT_Bytes raw, TScript* rec) {
+ int i;
FT_Bytes sp = raw;
rec->DefaultLangSys = GetUInt16(sp);
- rec->LangSysRecords = std::vector<TLangSysRecord>(GetUInt16(sp));
- for (auto& sysRecord : rec->LangSysRecords) {
- sysRecord.LangSysTag = GetUInt32(sp);
- ParseLangSys(&raw[GetUInt16(sp)], &sysRecord.LangSys);
+ rec->LangSysCount = GetUInt16(sp);
+ if (rec->LangSysCount <= 0) {
+ return;
+ }
+ rec->LangSysRecord.reset(new TLangSysRecord[rec->LangSysCount]);
+ for (i = 0; i < rec->LangSysCount; i++) {
+ rec->LangSysRecord[i].LangSysTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseLangSys(&raw[offset], &rec->LangSysRecord[i].LangSys);
}
}
@@ -259,45 +279,81 @@ void CFX_CTTGSUBTable::ParseLangSys(FT_Bytes raw, TLangSys* rec) {
FT_Bytes sp = raw;
rec->LookupOrder = GetUInt16(sp);
rec->ReqFeatureIndex = GetUInt16(sp);
- rec->FeatureIndices = std::vector<uint16_t>(GetUInt16(sp));
- for (auto& element : rec->FeatureIndices)
- element = GetUInt16(sp);
+ rec->FeatureCount = GetUInt16(sp);
+ if (rec->FeatureCount <= 0) {
+ return;
+ }
+ rec->FeatureIndex.reset(new uint16_t[rec->FeatureCount]);
+ FXSYS_memset(rec->FeatureIndex.get(), 0,
+ sizeof(uint16_t) * rec->FeatureCount);
+ for (int i = 0; i < rec->FeatureCount; ++i) {
+ rec->FeatureIndex[i] = GetUInt16(sp);
+ }
}
void CFX_CTTGSUBTable::ParseFeatureList(FT_Bytes raw, TFeatureList* rec) {
+ int i;
FT_Bytes sp = raw;
- rec->FeatureRecords = std::vector<TFeatureRecord>(GetUInt16(sp));
- for (auto& featureRec : rec->FeatureRecords) {
- featureRec.FeatureTag = GetUInt32(sp);
- ParseFeature(&raw[GetUInt16(sp)], &featureRec.Feature);
+ rec->FeatureCount = GetUInt16(sp);
+ if (rec->FeatureCount <= 0) {
+ return;
+ }
+ rec->FeatureRecord.reset(new TFeatureRecord[rec->FeatureCount]);
+ for (i = 0; i < rec->FeatureCount; i++) {
+ rec->FeatureRecord[i].FeatureTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseFeature(&raw[offset], &rec->FeatureRecord[i].Feature);
}
}
void CFX_CTTGSUBTable::ParseFeature(FT_Bytes raw, TFeature* rec) {
+ int i;
FT_Bytes sp = raw;
rec->FeatureParams = GetUInt16(sp);
- rec->LookupListIndices = std::vector<uint16_t>(GetUInt16(sp));
- for (auto& listIndex : rec->LookupListIndices)
- listIndex = GetUInt16(sp);
+ rec->LookupCount = GetUInt16(sp);
+ if (rec->LookupCount <= 0) {
+ return;
+ }
+ rec->LookupListIndex.reset(new uint16_t[rec->LookupCount]);
+ for (i = 0; i < rec->LookupCount; i++) {
+ rec->LookupListIndex[i] = GetUInt16(sp);
+ }
}
void CFX_CTTGSUBTable::ParseLookupList(FT_Bytes raw, TLookupList* rec) {
+ int i;
FT_Bytes sp = raw;
- rec->Lookups = std::vector<TLookup>(GetUInt16(sp));
- for (auto& lookup : rec->Lookups)
- ParseLookup(&raw[GetUInt16(sp)], &lookup);
+ rec->LookupCount = GetUInt16(sp);
+ if (rec->LookupCount <= 0) {
+ return;
+ }
+ rec->Lookup.reset(new TLookup[rec->LookupCount]);
+ for (i = 0; i < rec->LookupCount; i++) {
+ uint16_t offset = GetUInt16(sp);
+ ParseLookup(&raw[offset], &rec->Lookup[i]);
+ }
}
void CFX_CTTGSUBTable::ParseLookup(FT_Bytes raw, TLookup* rec) {
+ int i;
FT_Bytes sp = raw;
rec->LookupType = GetUInt16(sp);
rec->LookupFlag = GetUInt16(sp);
- rec->SubTables = std::vector<std::unique_ptr<TSubTableBase>>(GetUInt16(sp));
- if (rec->LookupType != 1)
+ rec->SubTableCount = GetUInt16(sp);
+ if (rec->SubTableCount <= 0) {
return;
-
- for (auto& subTable : rec->SubTables)
- ParseSingleSubst(&raw[GetUInt16(sp)], &subTable);
+ }
+ rec->SubTable.reset(new TSubTableBase*[rec->SubTableCount]);
+ for (i = 0; i < rec->SubTableCount; i++) {
+ rec->SubTable[i] = nullptr;
+ }
+ if (rec->LookupType != 1) {
+ return;
+ }
+ for (i = 0; i < rec->SubTableCount; i++) {
+ uint16_t offset = GetUInt16(sp);
+ ParseSingleSubst(&raw[offset], &rec->SubTable[i]);
+ }
}
CFX_CTTGSUBTable::TCoverageFormatBase* CFX_CTTGSUBTable::ParseCoverage(
@@ -317,39 +373,47 @@ CFX_CTTGSUBTable::TCoverageFormatBase* CFX_CTTGSUBTable::ParseCoverage(
void CFX_CTTGSUBTable::ParseCoverageFormat1(FT_Bytes raw,
TCoverageFormat1* rec) {
+ int i;
FT_Bytes sp = raw;
- (void)GetUInt16(sp);
- rec->GlyphArray = std::vector<uint16_t>(GetUInt16(sp));
- for (auto& glyph : rec->GlyphArray)
- glyph = GetUInt16(sp);
+ GetUInt16(sp);
+ rec->GlyphCount = GetUInt16(sp);
+ if (rec->GlyphCount <= 0) {
+ return;
+ }
+ rec->GlyphArray.reset(new uint16_t[rec->GlyphCount]);
+ for (i = 0; i < rec->GlyphCount; i++) {
+ rec->GlyphArray[i] = GetUInt16(sp);
+ }
}
void CFX_CTTGSUBTable::ParseCoverageFormat2(FT_Bytes raw,
TCoverageFormat2* rec) {
+ int i;
FT_Bytes sp = raw;
- (void)GetUInt16(sp);
- rec->RangeRecords = std::vector<TRangeRecord>(GetUInt16(sp));
- for (auto& rangeRec : rec->RangeRecords) {
- rangeRec.Start = GetUInt16(sp);
- rangeRec.End = GetUInt16(sp);
- rangeRec.StartCoverageIndex = GetUInt16(sp);
+ GetUInt16(sp);
+ rec->RangeCount = GetUInt16(sp);
+ if (rec->RangeCount <= 0) {
+ return;
+ }
+ rec->RangeRecord.reset(new TRangeRecord[rec->RangeCount]);
+ for (i = 0; i < rec->RangeCount; i++) {
+ rec->RangeRecord[i].Start = GetUInt16(sp);
+ rec->RangeRecord[i].End = GetUInt16(sp);
+ rec->RangeRecord[i].StartCoverageIndex = GetUInt16(sp);
}
}
-void CFX_CTTGSUBTable::ParseSingleSubst(FT_Bytes raw,
- std::unique_ptr<TSubTableBase>* rec) {
+void CFX_CTTGSUBTable::ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec) {
FT_Bytes sp = raw;
uint16_t Format = GetUInt16(sp);
switch (Format) {
case 1:
- *rec = pdfium::MakeUnique<TSingleSubstFormat1>();
- ParseSingleSubstFormat1(raw,
- static_cast<TSingleSubstFormat1*>(rec->get()));
+ *rec = new TSingleSubstFormat1();
+ ParseSingleSubstFormat1(raw, (TSingleSubstFormat1*)*rec);
break;
case 2:
- *rec = pdfium::MakeUnique<TSingleSubstFormat2>();
- ParseSingleSubstFormat2(raw,
- static_cast<TSingleSubstFormat2*>(rec->get()));
+ *rec = new TSingleSubstFormat2();
+ ParseSingleSubstFormat2(raw, (TSingleSubstFormat2*)*rec);
break;
}
}
@@ -365,17 +429,23 @@ void CFX_CTTGSUBTable::ParseSingleSubstFormat1(FT_Bytes raw,
void CFX_CTTGSUBTable::ParseSingleSubstFormat2(FT_Bytes raw,
TSingleSubstFormat2* rec) {
+ int i;
FT_Bytes sp = raw;
- (void)GetUInt16(sp);
+ GetUInt16(sp);
uint16_t offset = GetUInt16(sp);
rec->Coverage.reset(ParseCoverage(&raw[offset]));
- rec->Substitutes = std::vector<uint16_t>(GetUInt16(sp));
- for (auto& substitute : rec->Substitutes)
- substitute = GetUInt16(sp);
+ rec->GlyphCount = GetUInt16(sp);
+ if (rec->GlyphCount <= 0) {
+ return;
+ }
+ rec->Substitute.reset(new uint16_t[rec->GlyphCount]);
+ for (i = 0; i < rec->GlyphCount; i++) {
+ rec->Substitute[i] = GetUInt16(sp);
+ }
}
CFX_CTTGSUBTable::TCoverageFormat1::TCoverageFormat1()
- : TCoverageFormatBase(1) {}
+ : TCoverageFormatBase(1), GlyphCount(0) {}
CFX_CTTGSUBTable::TCoverageFormat1::~TCoverageFormat1() {}
@@ -383,7 +453,7 @@ CFX_CTTGSUBTable::TRangeRecord::TRangeRecord()
: Start(0), End(0), StartCoverageIndex(0) {}
CFX_CTTGSUBTable::TCoverageFormat2::TCoverageFormat2()
- : TCoverageFormatBase(2) {}
+ : TCoverageFormatBase(2), RangeCount(0) {}
CFX_CTTGSUBTable::TCoverageFormat2::~TCoverageFormat2() {}
@@ -393,34 +463,41 @@ CFX_CTTGSUBTable::TSingleSubstFormat1::TSingleSubstFormat1()
CFX_CTTGSUBTable::TSingleSubstFormat1::~TSingleSubstFormat1() {}
CFX_CTTGSUBTable::TSingleSubstFormat2::TSingleSubstFormat2()
- : TSubTableBase(2) {}
+ : TSubTableBase(2), GlyphCount(0) {}
CFX_CTTGSUBTable::TSingleSubstFormat2::~TSingleSubstFormat2() {}
-CFX_CTTGSUBTable::TLookup::TLookup() : LookupType(0), LookupFlag(0) {}
+CFX_CTTGSUBTable::TLookup::TLookup()
+ : LookupType(0), LookupFlag(0), SubTableCount(0) {}
-CFX_CTTGSUBTable::TLookup::~TLookup() {}
+CFX_CTTGSUBTable::TLookup::~TLookup() {
+ if (SubTable) {
+ for (int i = 0; i < SubTableCount; ++i)
+ delete SubTable[i];
+ }
+}
-CFX_CTTGSUBTable::TScript::TScript() : DefaultLangSys(0) {}
+CFX_CTTGSUBTable::TScript::TScript() : DefaultLangSys(0), LangSysCount(0) {}
CFX_CTTGSUBTable::TScript::~TScript() {}
-CFX_CTTGSUBTable::TScriptList::TScriptList() {}
+CFX_CTTGSUBTable::TScriptList::TScriptList() : ScriptCount(0) {}
CFX_CTTGSUBTable::TScriptList::~TScriptList() {}
-CFX_CTTGSUBTable::TFeature::TFeature() : FeatureParams(0) {}
+CFX_CTTGSUBTable::TFeature::TFeature() : FeatureParams(0), LookupCount(0) {}
CFX_CTTGSUBTable::TFeature::~TFeature() {}
-CFX_CTTGSUBTable::TFeatureList::TFeatureList() {}
+CFX_CTTGSUBTable::TFeatureList::TFeatureList() : FeatureCount(0) {}
CFX_CTTGSUBTable::TFeatureList::~TFeatureList() {}
-CFX_CTTGSUBTable::TLookupList::TLookupList() {}
+CFX_CTTGSUBTable::TLookupList::TLookupList() : LookupCount(0) {}
CFX_CTTGSUBTable::TLookupList::~TLookupList() {}
-CFX_CTTGSUBTable::TLangSys::TLangSys() : LookupOrder(0), ReqFeatureIndex(0) {}
+CFX_CTTGSUBTable::TLangSys::TLangSys()
+ : LookupOrder(0), ReqFeatureIndex(0), FeatureCount(0) {}
CFX_CTTGSUBTable::TLangSys::~TLangSys() {}
diff --git a/core/fpdfapi/font/ttgsubtable.h b/core/fpdfapi/font/ttgsubtable.h
index f927269..59ee4ca 100644
--- a/core/fpdfapi/font/ttgsubtable.h
+++ b/core/fpdfapi/font/ttgsubtable.h
@@ -9,9 +9,8 @@
#include <stdint.h>
+#include <map>
#include <memory>
-#include <set>
-#include <vector>
#include "core/fxcrt/fx_basic.h"
#include "core/fxge/fx_font.h"
@@ -53,7 +52,8 @@ class CFX_CTTGSUBTable {
uint16_t LookupOrder;
uint16_t ReqFeatureIndex;
- std::vector<uint16_t> FeatureIndices;
+ uint16_t FeatureCount;
+ std::unique_ptr<uint16_t[]> FeatureIndex;
private:
TLangSys(const TLangSys&) = delete;
@@ -76,7 +76,8 @@ class CFX_CTTGSUBTable {
~TScript();
uint16_t DefaultLangSys;
- std::vector<TLangSysRecord> LangSysRecords;
+ uint16_t LangSysCount;
+ std::unique_ptr<TLangSysRecord[]> LangSysRecord;
private:
TScript(const TScript&) = delete;
@@ -98,7 +99,8 @@ class CFX_CTTGSUBTable {
TScriptList();
~TScriptList();
- std::vector<TScriptRecord> ScriptRecords;
+ uint16_t ScriptCount;
+ std::unique_ptr<TScriptRecord[]> ScriptRecord;
private:
TScriptList(const TScriptList&) = delete;
@@ -110,13 +112,13 @@ class CFX_CTTGSUBTable {
~TFeature();
uint16_t FeatureParams;
- std::vector<uint16_t> LookupListIndices;
+ int LookupCount;
+ std::unique_ptr<uint16_t[]> LookupListIndex;
private:
TFeature(const TFeature&) = delete;
TFeature& operator=(const TFeature&) = delete;
};
-
struct TFeatureRecord {
TFeatureRecord() : FeatureTag(0) {}
@@ -132,7 +134,8 @@ class CFX_CTTGSUBTable {
TFeatureList();
~TFeatureList();
- std::vector<TFeatureRecord> FeatureRecords;
+ int FeatureCount;
+ std::unique_ptr<TFeatureRecord[]> FeatureRecord;
private:
TFeatureList(const TFeatureList&) = delete;
@@ -165,7 +168,8 @@ class CFX_CTTGSUBTable {
TCoverageFormat1();
~TCoverageFormat1() override;
- std::vector<uint16_t> GlyphArray;
+ uint16_t GlyphCount;
+ std::unique_ptr<uint16_t[]> GlyphArray;
private:
TCoverageFormat1(const TCoverageFormat1&) = delete;
@@ -191,7 +195,8 @@ class CFX_CTTGSUBTable {
TCoverageFormat2();
~TCoverageFormat2() override;
- std::vector<TRangeRecord> RangeRecords;
+ uint16_t RangeCount;
+ std::unique_ptr<TRangeRecord[]> RangeRecord;
private:
TCoverageFormat2(const TCoverageFormat2&) = delete;
@@ -239,7 +244,8 @@ class CFX_CTTGSUBTable {
~TSingleSubstFormat2() override;
std::unique_ptr<TCoverageFormatBase> Coverage;
- std::vector<uint16_t> Substitutes;
+ uint16_t GlyphCount;
+ std::unique_ptr<uint16_t[]> Substitute;
private:
TSingleSubstFormat2(const TSingleSubstFormat2&) = delete;
@@ -252,7 +258,8 @@ class CFX_CTTGSUBTable {
uint16_t LookupType;
uint16_t LookupFlag;
- std::vector<std::unique_ptr<TSubTableBase>> SubTables;
+ uint16_t SubTableCount;
+ std::unique_ptr<TSubTableBase* []> SubTable;
private:
TLookup(const TLookup&) = delete;
@@ -263,7 +270,8 @@ class CFX_CTTGSUBTable {
TLookupList();
~TLookupList();
- std::vector<TLookup> Lookups;
+ int LookupCount;
+ std::unique_ptr<TLookup[]> Lookup;
private:
TLookupList(const TLookupList&) = delete;
@@ -281,7 +289,7 @@ class CFX_CTTGSUBTable {
TCoverageFormatBase* ParseCoverage(FT_Bytes raw);
void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec);
void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec);
- void ParseSingleSubst(FT_Bytes raw, std::unique_ptr<TSubTableBase>* rec);
+ void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec);
void ParseSingleSubstFormat1(FT_Bytes raw, TSingleSubstFormat1* rec);
void ParseSingleSubstFormat2(FT_Bytes raw, TSingleSubstFormat2* rec);
@@ -299,7 +307,7 @@ class CFX_CTTGSUBTable {
int32_t GetInt32(FT_Bytes& p) const;
uint32_t GetUInt32(FT_Bytes& p) const;
- std::set<uint32_t> m_featureSet;
+ std::map<uint32_t, uint32_t> m_featureMap;
bool m_bFeautureMapLoad;
bool loaded;
tt_gsub_header header;
diff --git a/core/fpdfapi/page/cpdf_contentmarkitem.h b/core/fpdfapi/page/cpdf_contentmarkitem.h
index ed27371..2d08a8e 100644
--- a/core/fpdfapi/page/cpdf_contentmarkitem.h
+++ b/core/fpdfapi/page/cpdf_contentmarkitem.h
@@ -23,8 +23,6 @@ class CPDF_ContentMarkItem {
CPDF_ContentMarkItem(const CPDF_ContentMarkItem& that);
~CPDF_ContentMarkItem();
- CPDF_ContentMarkItem& operator=(CPDF_ContentMarkItem&& other) = default;
-
CFX_ByteString GetName() const { return m_MarkName; }
ParamType GetParamType() const { return m_ParamType; }
CPDF_Dictionary* GetParam() const;
diff --git a/core/fpdfapi/page/cpdf_psengine.h b/core/fpdfapi/page/cpdf_psengine.h
index 659ca82..0c94959 100644
--- a/core/fpdfapi/page/cpdf_psengine.h
+++ b/core/fpdfapi/page/cpdf_psengine.h
@@ -63,7 +63,7 @@ enum PDF_PSOP {
PSOP_CONST
};
-constexpr uint32_t PSENGINE_STACKSIZE = 100;
+const uint32_t PSENGINE_STACKSIZE = 100;
class CPDF_PSProc {
public:
diff --git a/core/fxge/ge/cfx_facecache.cpp b/core/fxge/ge/cfx_facecache.cpp
index cbaa07e..95338c2 100644
--- a/core/fxge/ge/cfx_facecache.cpp
+++ b/core/fxge/ge/cfx_facecache.cpp
@@ -25,7 +25,7 @@
namespace {
-constexpr uint32_t kInvalidGlyphIndex = static_cast<uint32_t>(-1);
+const uint32_t kInvalidGlyphIndex = static_cast<uint32_t>(-1);
void GammaAdjust(uint8_t* pData,
int nHeight,
diff --git a/third_party/base/numerics/safe_conversions.h b/third_party/base/numerics/safe_conversions.h
index dc61d9c..ae25d70 100644
--- a/third_party/base/numerics/safe_conversions.h
+++ b/third_party/base/numerics/safe_conversions.h
@@ -51,7 +51,7 @@ namespace base {
// Convenience function that returns true if the supplied value is in range
// for the destination type.
template <typename Dst, typename Src>
-constexpr bool IsValueInRangeForNumericType(Src value) {
+bool IsValueInRangeForNumericType(Src value) {
return internal::DstRangeRelationToSrcRange<Dst>(value).IsValid();
}
@@ -72,7 +72,7 @@ struct CheckOnFailure {
// except that it CHECKs that the specified numeric conversion will not
// overflow or underflow. NaN source will always trigger a CHECK.
template <typename Dst, class CheckHandler = CheckOnFailure, typename Src>
-constexpr Dst checked_cast(Src value) {
+Dst checked_cast(Src value) {
// This throws a compile-time error on evaluating the constexpr if it can be
// determined at compile-time as failing, otherwise it will CHECK at runtime.
using SrcType = typename internal::UnderlyingType<Src>::type;
@@ -84,19 +84,19 @@ constexpr Dst checked_cast(Src value) {
// Default boundaries for integral/float: max/infinity, lowest/-infinity, 0/NaN.
template <typename T>
struct SaturationDefaultHandler {
- static constexpr T NaN() {
+ static T NaN() {
return std::numeric_limits<T>::has_quiet_NaN
? std::numeric_limits<T>::quiet_NaN()
: T();
}
- static constexpr T max() { return std::numeric_limits<T>::max(); }
- static constexpr T Overflow() {
+ static T max() { return std::numeric_limits<T>::max(); }
+ static T Overflow() {
return std::numeric_limits<T>::has_infinity
? std::numeric_limits<T>::infinity()
: std::numeric_limits<T>::max();
}
- static constexpr T lowest() { return std::numeric_limits<T>::lowest(); }
- static constexpr T Underflow() {
+ static T lowest() { return std::numeric_limits<T>::lowest(); }
+ static T Underflow() {
return std::numeric_limits<T>::has_infinity
? std::numeric_limits<T>::infinity() * -1
: std::numeric_limits<T>::lowest();
@@ -106,7 +106,7 @@ struct SaturationDefaultHandler {
namespace internal {
template <typename Dst, template <typename> class S, typename Src>
-constexpr Dst saturated_cast_impl(Src value, RangeCheck constraint) {
+Dst saturated_cast_impl(Src value, RangeCheck constraint) {
// For some reason clang generates much better code when the branch is
// structured exactly this way, rather than a sequence of checks.
return !constraint.IsOverflowFlagSet()
@@ -126,7 +126,7 @@ template <typename Dst,
template <typename>
class SaturationHandler = SaturationDefaultHandler,
typename Src>
-constexpr Dst saturated_cast(Src value) {
+Dst saturated_cast(Src value) {
using SrcType = typename UnderlyingType<Src>::type;
return saturated_cast_impl<Dst, SaturationHandler, SrcType>(
value,
@@ -137,7 +137,7 @@ constexpr Dst saturated_cast(Src value) {
// it will cause a compile failure if the destination type is not large enough
// to contain any value in the source type. It performs no runtime checking.
template <typename Dst, typename Src>
-constexpr Dst strict_cast(Src value) {
+Dst strict_cast(Src value) {
using SrcType = typename UnderlyingType<Src>::type;
static_assert(UnderlyingType<Src>::is_numeric, "Argument must be numeric.");
static_assert(std::is_arithmetic<Dst>::value, "Result must be numeric.");
@@ -187,17 +187,17 @@ class StrictNumeric {
public:
using type = T;
- constexpr StrictNumeric() : value_(0) {}
+ StrictNumeric() : value_(0) {}
// Copy constructor.
template <typename Src>
- constexpr StrictNumeric(const StrictNumeric<Src>& rhs)
+ StrictNumeric(const StrictNumeric<Src>& rhs)
: value_(strict_cast<T>(rhs.value_)) {}
// This is not an explicit constructor because we implicitly upgrade regular
// numerics to StrictNumerics to make them easier to use.
template <typename Src>
- constexpr StrictNumeric(Src value) // NOLINT(runtime/explicit)
+ StrictNumeric(Src value) // NOLINT(runtime/explicit)
: value_(strict_cast<T>(value)) {}
// If you got here from a compiler error, it's because you tried to assign
@@ -215,7 +215,7 @@ class StrictNumeric {
template <typename Dst,
typename std::enable_if<
IsNumericRangeContained<Dst, T>::value>::type* = nullptr>
- constexpr operator Dst() const {
+ operator Dst() const {
return static_cast<typename ArithmeticOrUnderlyingEnum<Dst>::type>(value_);
}
@@ -225,7 +225,7 @@ class StrictNumeric {
// Convience wrapper returns a StrictNumeric from the provided arithmetic type.
template <typename T>
-constexpr StrictNumeric<typename UnderlyingType<T>::type> MakeStrictNum(
+StrictNumeric<typename UnderlyingType<T>::type> MakeStrictNum(
const T value) {
return value;
}
@@ -241,7 +241,7 @@ std::ostream& operator<<(std::ostream& os, const StrictNumeric<T>& value) {
template <typename L, typename R, \
typename std::enable_if< \
internal::IsStrictOp<L, R>::value>::type* = nullptr> \
- constexpr bool operator OP(const L lhs, const R rhs) { \
+ bool operator OP(const L lhs, const R rhs) { \
return SafeCompare<NAME, typename UnderlyingType<L>::type, \
typename UnderlyingType<R>::type>(lhs, rhs); \
}
diff --git a/third_party/base/numerics/safe_conversions_impl.h b/third_party/base/numerics/safe_conversions_impl.h
index 2a7ce14..4a1b386 100644
--- a/third_party/base/numerics/safe_conversions_impl.h
+++ b/third_party/base/numerics/safe_conversions_impl.h
@@ -42,14 +42,14 @@ struct PositionOfSignBit {
// warnings on: unsigned(value) < 0.
template <typename T,
typename std::enable_if<std::is_signed<T>::value>::type* = nullptr>
-constexpr bool IsValueNegative(T value) {
+bool IsValueNegative(T value) {
static_assert(std::is_arithmetic<T>::value, "Argument must be numeric.");
return value < 0;
}
template <typename T,
typename std::enable_if<!std::is_signed<T>::value>::type* = nullptr>
-constexpr bool IsValueNegative(T) {
+bool IsValueNegative(T) {
static_assert(std::is_arithmetic<T>::value, "Argument must be numeric.");
return false;
}
@@ -58,7 +58,7 @@ constexpr bool IsValueNegative(T) {
// arguments, but probably doesn't do what you want for any unsigned value
// larger than max / 2 + 1 (i.e. signed min cast to unsigned).
template <typename T>
-constexpr typename std::make_signed<T>::type ConditionalNegate(
+typename std::make_signed<T>::type ConditionalNegate(
T x,
bool is_negative) {
static_assert(std::is_integral<T>::value, "Type must be integral");
@@ -70,7 +70,7 @@ constexpr typename std::make_signed<T>::type ConditionalNegate(
// This performs a safe, absolute value via unsigned overflow.
template <typename T>
-constexpr typename std::make_unsigned<T>::type SafeUnsignedAbs(T value) {
+typename std::make_unsigned<T>::type SafeUnsignedAbs(T value) {
static_assert(std::is_integral<T>::value, "Type must be integral");
using UnsignedT = typename std::make_unsigned<T>::type;
return IsValueNegative(value) ? 0 - static_cast<UnsignedT>(value)
@@ -141,20 +141,20 @@ struct StaticDstRangeRelationToSrcRange<Dst,
// can identify constants and eliminate unused code paths.
class RangeCheck {
public:
- constexpr RangeCheck(bool is_in_lower_bound, bool is_in_upper_bound)
+ RangeCheck(bool is_in_lower_bound, bool is_in_upper_bound)
: is_underflow_(!is_in_lower_bound), is_overflow_(!is_in_upper_bound) {}
- constexpr RangeCheck() : is_underflow_(0), is_overflow_(0) {}
- constexpr bool IsValid() const { return !is_overflow_ && !is_underflow_; }
- constexpr bool IsInvalid() const { return is_overflow_ && is_underflow_; }
- constexpr bool IsOverflow() const { return is_overflow_ && !is_underflow_; }
- constexpr bool IsUnderflow() const { return !is_overflow_ && is_underflow_; }
- constexpr bool IsOverflowFlagSet() const { return is_overflow_; }
- constexpr bool IsUnderflowFlagSet() const { return is_underflow_; }
- constexpr bool operator==(const RangeCheck rhs) const {
+ RangeCheck() : is_underflow_(0), is_overflow_(0) {}
+ bool IsValid() const { return !is_overflow_ && !is_underflow_; }
+ bool IsInvalid() const { return is_overflow_ && is_underflow_; }
+ bool IsOverflow() const { return is_overflow_ && !is_underflow_; }
+ bool IsUnderflow() const { return !is_overflow_ && is_underflow_; }
+ bool IsOverflowFlagSet() const { return is_overflow_; }
+ bool IsUnderflowFlagSet() const { return is_underflow_; }
+ bool operator==(const RangeCheck rhs) const {
return is_underflow_ == rhs.is_underflow_ &&
is_overflow_ == rhs.is_overflow_;
}
- constexpr bool operator!=(const RangeCheck rhs) const {
+ bool operator!=(const RangeCheck rhs) const {
return !(*this == rhs);
}
@@ -203,7 +203,7 @@ struct NarrowingRange {
// Masks out the integer bits that are beyond the precision of the
// intermediate type used for comparison.
- static constexpr T Adjust(T value) {
+ static T Adjust(T value) {
static_assert(std::is_same<T, Dst>::value, "");
static_assert(kShift < DstLimits::digits, "");
return static_cast<T>(
@@ -214,14 +214,14 @@ struct NarrowingRange {
template <typename T,
typename std::enable_if<std::is_floating_point<T>::value>::type* =
nullptr>
- static constexpr T Adjust(T value) {
+ static T Adjust(T value) {
static_assert(std::is_same<T, Dst>::value, "");
static_assert(kShift == 0, "");
return value;
}
- static constexpr Dst max() { return Adjust(Bounds<Dst>::max()); }
- static constexpr Dst lowest() { return Adjust(Bounds<Dst>::lowest()); }
+ static Dst max() { return Adjust(Bounds<Dst>::max()); }
+ static Dst lowest() { return Adjust(Bounds<Dst>::lowest()); }
};
template <typename Dst,
@@ -253,7 +253,7 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
DstSign,
SrcSign,
NUMERIC_RANGE_CONTAINED> {
- static constexpr RangeCheck Check(Src value) {
+ static RangeCheck Check(Src value) {
using SrcLimits = std::numeric_limits<Src>;
using DstLimits = NarrowingRange<Dst, Src, Bounds>;
return RangeCheck(
@@ -273,7 +273,7 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
INTEGER_REPRESENTATION_SIGNED,
INTEGER_REPRESENTATION_SIGNED,
NUMERIC_RANGE_NOT_CONTAINED> {
- static constexpr RangeCheck Check(Src value) {
+ static RangeCheck Check(Src value) {
using DstLimits = NarrowingRange<Dst, Src, Bounds>;
return RangeCheck(value >= DstLimits::lowest(), value <= DstLimits::max());
}
@@ -288,7 +288,7 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
INTEGER_REPRESENTATION_UNSIGNED,
INTEGER_REPRESENTATION_UNSIGNED,
NUMERIC_RANGE_NOT_CONTAINED> {
- static constexpr RangeCheck Check(Src value) {
+ static RangeCheck Check(Src value) {
using DstLimits = NarrowingRange<Dst, Src, Bounds>;
return RangeCheck(
DstLimits::lowest() == Dst(0) || value >= DstLimits::lowest(),
@@ -304,7 +304,7 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
INTEGER_REPRESENTATION_SIGNED,
INTEGER_REPRESENTATION_UNSIGNED,
NUMERIC_RANGE_NOT_CONTAINED> {
- static constexpr RangeCheck Check(Src value) {
+ static RangeCheck Check(Src value) {
using DstLimits = NarrowingRange<Dst, Src, Bounds>;
using Promotion = decltype(Src() + Dst());
return RangeCheck(DstLimits::lowest() <= Dst(0) ||
@@ -324,7 +324,7 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
INTEGER_REPRESENTATION_UNSIGNED,
INTEGER_REPRESENTATION_SIGNED,
NUMERIC_RANGE_NOT_CONTAINED> {
- static constexpr RangeCheck Check(Src value) {
+ static RangeCheck Check(Src value) {
using SrcLimits = std::numeric_limits<Src>;
using DstLimits = NarrowingRange<Dst, Src, Bounds>;
using Promotion = decltype(Src() + Dst());
@@ -341,10 +341,9 @@ struct DstRangeRelationToSrcRangeImpl<Dst,
template <typename Dst,
template <typename> class Bounds = std::numeric_limits,
typename Src>
-constexpr RangeCheck DstRangeRelationToSrcRange(Src value) {
+RangeCheck DstRangeRelationToSrcRange(Src value) {
static_assert(std::is_arithmetic<Src>::value, "Argument must be numeric.");
static_assert(std::is_arithmetic<Dst>::value, "Result must be numeric.");
- static_assert(Bounds<Dst>::lowest() < Bounds<Dst>::max(), "");
return DstRangeRelationToSrcRangeImpl<Dst, Src, Bounds>::Check(value);
}
@@ -603,7 +602,7 @@ struct IsStrictOp {
};
template <typename L, typename R>
-constexpr bool IsLessImpl(const L lhs,
+bool IsLessImpl(const L lhs,
const R rhs,
const RangeCheck l_range,
const RangeCheck r_range) {
@@ -617,14 +616,14 @@ template <typename L, typename R>
struct IsLess {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return IsLessImpl(lhs, rhs, DstRangeRelationToSrcRange<R>(lhs),
DstRangeRelationToSrcRange<L>(rhs));
}
};
template <typename L, typename R>
-constexpr bool IsLessOrEqualImpl(const L lhs,
+bool IsLessOrEqualImpl(const L lhs,
const R rhs,
const RangeCheck l_range,
const RangeCheck r_range) {
@@ -638,14 +637,14 @@ template <typename L, typename R>
struct IsLessOrEqual {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return IsLessOrEqualImpl(lhs, rhs, DstRangeRelationToSrcRange<R>(lhs),
DstRangeRelationToSrcRange<L>(rhs));
}
};
template <typename L, typename R>
-constexpr bool IsGreaterImpl(const L lhs,
+bool IsGreaterImpl(const L lhs,
const R rhs,
const RangeCheck l_range,
const RangeCheck r_range) {
@@ -659,14 +658,14 @@ template <typename L, typename R>
struct IsGreater {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return IsGreaterImpl(lhs, rhs, DstRangeRelationToSrcRange<R>(lhs),
DstRangeRelationToSrcRange<L>(rhs));
}
};
template <typename L, typename R>
-constexpr bool IsGreaterOrEqualImpl(const L lhs,
+bool IsGreaterOrEqualImpl(const L lhs,
const R rhs,
const RangeCheck l_range,
const RangeCheck r_range) {
@@ -680,7 +679,7 @@ template <typename L, typename R>
struct IsGreaterOrEqual {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return IsGreaterOrEqualImpl(lhs, rhs, DstRangeRelationToSrcRange<R>(lhs),
DstRangeRelationToSrcRange<L>(rhs));
}
@@ -690,7 +689,7 @@ template <typename L, typename R>
struct IsEqual {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return DstRangeRelationToSrcRange<R>(lhs) ==
DstRangeRelationToSrcRange<L>(rhs) &&
static_cast<decltype(lhs + rhs)>(lhs) ==
@@ -702,7 +701,7 @@ template <typename L, typename R>
struct IsNotEqual {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
- static constexpr bool Test(const L lhs, const R rhs) {
+ static bool Test(const L lhs, const R rhs) {
return DstRangeRelationToSrcRange<R>(lhs) !=
DstRangeRelationToSrcRange<L>(rhs) ||
static_cast<decltype(lhs + rhs)>(lhs) !=
@@ -713,7 +712,7 @@ struct IsNotEqual {
// These perform the actual math operations on the CheckedNumerics.
// Binary arithmetic operations.
template <template <typename, typename> class C, typename L, typename R>
-constexpr bool SafeCompare(const L lhs, const R rhs) {
+bool SafeCompare(const L lhs, const R rhs) {
static_assert(std::is_arithmetic<L>::value && std::is_arithmetic<R>::value,
"Types must be numeric.");
using Promotion = BigEnoughPromotion<L, R>;
diff --git a/third_party/base/numerics/safe_math.h b/third_party/base/numerics/safe_math.h
index a0c41a4..590a5d8 100644
--- a/third_party/base/numerics/safe_math.h
+++ b/third_party/base/numerics/safe_math.h
@@ -100,11 +100,11 @@ class CheckedNumeric {
public:
using type = T;
- constexpr CheckedNumeric() {}
+ CheckedNumeric() {}
// Copy constructor.
template <typename Src>
- constexpr CheckedNumeric(const CheckedNumeric<Src>& rhs)
+ CheckedNumeric(const CheckedNumeric<Src>& rhs)
: state_(rhs.state_.value(), rhs.IsValid()) {}
template <typename Src>
@@ -113,7 +113,7 @@ class CheckedNumeric {
// This is not an explicit constructor because we implicitly upgrade regular
// numerics to CheckedNumerics to make them easier to use.
template <typename Src>
- constexpr CheckedNumeric(Src value) // NOLINT(runtime/explicit)
+ CheckedNumeric(Src value) // NOLINT(runtime/explicit)
: state_(value) {
static_assert(std::is_arithmetic<Src>::value, "Argument must be numeric.");
}
@@ -121,7 +121,7 @@ class CheckedNumeric {
// This is not an explicit constructor because we want a seamless conversion
// from StrictNumeric types.
template <typename Src>
- constexpr CheckedNumeric(
+ CheckedNumeric(
StrictNumeric<Src> value) // NOLINT(runtime/explicit)
: state_(static_cast<Src>(value)) {}
@@ -129,7 +129,7 @@ class CheckedNumeric {
// A range checked destination type can be supplied using the Dst template
// parameter.
template <typename Dst = T>
- constexpr bool IsValid() const {
+ bool IsValid() const {
return state_.is_valid() &&
IsValueInRangeForNumericType<Dst>(state_.value());
}
@@ -138,7 +138,7 @@ class CheckedNumeric {
// and is within the range supported by the destination type. Returns true if
// successful and false otherwise.
template <typename Dst>
- constexpr bool AssignIfValid(Dst* result) const {
+ bool AssignIfValid(Dst* result) const {
return IsValid<Dst>() ? ((*result = static_cast<Dst>(state_.value())), true)
: false;
}
@@ -152,7 +152,7 @@ class CheckedNumeric {
// template parameter, for test code, etc. However, the handler cannot access
// the underlying value, and it is not available through other means.
template <typename Dst = T, class CheckHandler = CheckOnFailure>
- constexpr StrictNumeric<Dst> ValueOrDie() const {
+ StrictNumeric<Dst> ValueOrDie() const {
return IsValid<Dst>() ? static_cast<Dst>(state_.value())
: CheckHandler::template HandleFailure<Dst>();
}
@@ -164,7 +164,7 @@ class CheckedNumeric {
// parameter. WARNING: This function may fail to compile or CHECK at runtime
// if the supplied default_value is not within range of the destination type.
template <typename Dst = T, typename Src>
- constexpr StrictNumeric<Dst> ValueOrDefault(const Src default_value) const {
+ StrictNumeric<Dst> ValueOrDefault(const Src default_value) const {
return IsValid<Dst>() ? static_cast<Dst>(state_.value())
: checked_cast<Dst>(default_value);
}
@@ -173,7 +173,7 @@ class CheckedNumeric {
// CheckedNumeric. If the current state is invalid or the destination cannot
// represent the result then the returned CheckedNumeric will be invalid.
template <typename Dst>
- constexpr CheckedNumeric<typename UnderlyingType<Dst>::type> Cast() const {
+ CheckedNumeric<typename UnderlyingType<Dst>::type> Cast() const {
return *this;
}
@@ -205,7 +205,7 @@ class CheckedNumeric {
template <typename Src>
CheckedNumeric& operator^=(const Src rhs);
- constexpr CheckedNumeric operator-() const {
+ CheckedNumeric operator-() const {
return CheckedNumeric<T>(
NegateWrapper(state_.value()),
IsValid() &&
@@ -214,12 +214,12 @@ class CheckedNumeric {
std::numeric_limits<T>::lowest()));
}
- constexpr CheckedNumeric operator~() const {
+ CheckedNumeric operator~() const {
return CheckedNumeric<decltype(InvertWrapper(T()))>(
InvertWrapper(state_.value()), IsValid());
}
- constexpr CheckedNumeric Abs() const {
+ CheckedNumeric Abs() const {
return CheckedNumeric<T>(
AbsWrapper(state_.value()),
IsValid() &&
@@ -228,7 +228,7 @@ class CheckedNumeric {
}
template <typename U>
- constexpr CheckedNumeric<typename MathWrapper<CheckedMaxOp, T, U>::type> Max(
+ CheckedNumeric<typename MathWrapper<CheckedMaxOp, T, U>::type> Max(
const U rhs) const {
using R = typename UnderlyingType<U>::type;
using result_type = typename MathWrapper<CheckedMaxOp, T, U>::type;
@@ -243,7 +243,7 @@ class CheckedNumeric {
}
template <typename U>
- constexpr CheckedNumeric<typename MathWrapper<CheckedMinOp, T, U>::type> Min(
+ CheckedNumeric<typename MathWrapper<CheckedMinOp, T, U>::type> Min(
const U rhs) const {
using R = typename UnderlyingType<U>::type;
using result_type = typename MathWrapper<CheckedMinOp, T, U>::type;
@@ -260,7 +260,7 @@ class CheckedNumeric {
// This function is available only for integral types. It returns an unsigned
// integer of the same width as the source type, containing the absolute value
// of the source, and properly handling signed min.
- constexpr CheckedNumeric<typename UnsignedOrFloatForSize<T>::type>
+ CheckedNumeric<typename UnsignedOrFloatForSize<T>::type>
UnsignedAbs() const {
return CheckedNumeric<typename UnsignedOrFloatForSize<T>::type>(
SafeUnsignedAbs(state_.value()), state_.is_valid());
@@ -317,31 +317,31 @@ class CheckedNumeric {
CheckedNumericState<T> state_;
template <typename Src>
- constexpr CheckedNumeric(Src value, bool is_valid)
+ CheckedNumeric(Src value, bool is_valid)
: state_(value, is_valid) {}
// These wrappers allow us to handle state the same way for both
// CheckedNumeric and POD arithmetic types.
template <typename Src>
struct Wrapper {
- static constexpr bool is_valid(Src) { return true; }
- static constexpr Src value(Src value) { return value; }
+ static bool is_valid(Src) { return true; }
+ static Src value(Src value) { return value; }
};
template <typename Src>
struct Wrapper<CheckedNumeric<Src>> {
- static constexpr bool is_valid(const CheckedNumeric<Src> v) {
+ static bool is_valid(const CheckedNumeric<Src> v) {
return v.IsValid();
}
- static constexpr Src value(const CheckedNumeric<Src> v) {
+ static Src value(const CheckedNumeric<Src> v) {
return v.state_.value();
}
};
template <typename Src>
struct Wrapper<StrictNumeric<Src>> {
- static constexpr bool is_valid(const StrictNumeric<Src>) { return true; }
- static constexpr Src value(const StrictNumeric<Src> v) {
+ static bool is_valid(const StrictNumeric<Src>) { return true; }
+ static Src value(const StrictNumeric<Src> v) {
return static_cast<Src>(v);
}
};
@@ -349,18 +349,18 @@ class CheckedNumeric {
// Convenience functions to avoid the ugly template disambiguator syntax.
template <typename Dst, typename Src>
-constexpr bool IsValidForType(const CheckedNumeric<Src> value) {
+bool IsValidForType(const CheckedNumeric<Src> value) {
return value.template IsValid<Dst>();
}
template <typename Dst, typename Src>
-constexpr StrictNumeric<Dst> ValueOrDieForType(
+StrictNumeric<Dst> ValueOrDieForType(
const CheckedNumeric<Src> value) {
return value.template ValueOrDie<Dst>();
}
template <typename Dst, typename Src, typename Default>
-constexpr StrictNumeric<Dst> ValueOrDefaultForType(
+StrictNumeric<Dst> ValueOrDefaultForType(
const CheckedNumeric<Src> value,
const Default default_value) {
return value.template ValueOrDefault<Dst>(default_value);
@@ -393,7 +393,7 @@ struct ResultType {
// Convience wrapper to return a new CheckedNumeric from the provided arithmetic
// or CheckedNumericType.
template <typename T>
-constexpr CheckedNumeric<typename UnderlyingType<T>::type> MakeCheckedNum(
+CheckedNumeric<typename UnderlyingType<T>::type> MakeCheckedNum(
const T value) {
return value;
}
diff --git a/third_party/base/numerics/safe_math_impl.h b/third_party/base/numerics/safe_math_impl.h
index 5ad79ce..76d6b0d 100644
--- a/third_party/base/numerics/safe_math_impl.h
+++ b/third_party/base/numerics/safe_math_impl.h
@@ -474,7 +474,7 @@ BASE_FLOAT_ARITHMETIC_OPS(Div, /)
template <typename T,
typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
-constexpr T NegateWrapper(T value) {
+T NegateWrapper(T value) {
using UnsignedT = typename std::make_unsigned<T>::type;
// This will compile to a NEG on Intel, and is normal negation on ARM.
return static_cast<T>(UnsignedT(0) - static_cast<UnsignedT>(value));
@@ -483,26 +483,26 @@ constexpr T NegateWrapper(T value) {
template <
typename T,
typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr>
-constexpr T NegateWrapper(T value) {
+T NegateWrapper(T value) {
return -value;
}
template <typename T,
typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
-constexpr typename std::make_unsigned<T>::type InvertWrapper(T value) {
+typename std::make_unsigned<T>::type InvertWrapper(T value) {
return ~value;
}
template <typename T,
typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
-constexpr T AbsWrapper(T value) {
+T AbsWrapper(T value) {
return static_cast<T>(SafeUnsignedAbs(value));
}
template <
typename T,
typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr>
-constexpr T AbsWrapper(T value) {
+T AbsWrapper(T value) {
return value < 0 ? -value : value;
}
@@ -540,7 +540,7 @@ class CheckedNumericState<T, NUMERIC_INTEGER> {
// Ensures that a type conversion does not trigger undefined behavior.
template <typename Src>
- static constexpr T WellDefinedConversionOrZero(const Src value,
+ static T WellDefinedConversionOrZero(const Src value,
const bool is_valid) {
using SrcType = typename internal::UnderlyingType<Src>::type;
return (std::is_integral<SrcType>::value || is_valid)
@@ -552,10 +552,10 @@ class CheckedNumericState<T, NUMERIC_INTEGER> {
template <typename Src, NumericRepresentation type>
friend class CheckedNumericState;
- constexpr CheckedNumericState() : is_valid_(true), value_(0) {}
+ CheckedNumericState() : is_valid_(true), value_(0) {}
template <typename Src>
- constexpr CheckedNumericState(Src value, bool is_valid)
+ CheckedNumericState(Src value, bool is_valid)
: is_valid_(is_valid && IsValueInRangeForNumericType<T>(value)),
value_(WellDefinedConversionOrZero(value, is_valid_)) {
static_assert(std::is_arithmetic<Src>::value, "Argument must be numeric.");
@@ -563,17 +563,17 @@ class CheckedNumericState<T, NUMERIC_INTEGER> {
// Copy constructor.
template <typename Src>
- constexpr CheckedNumericState(const CheckedNumericState<Src>& rhs)
+ CheckedNumericState(const CheckedNumericState<Src>& rhs)
: is_valid_(rhs.IsValid()),
value_(WellDefinedConversionOrZero(rhs.value(), is_valid_)) {}
template <typename Src>
- constexpr explicit CheckedNumericState(Src value)
+ explicit CheckedNumericState(Src value)
: is_valid_(IsValueInRangeForNumericType<T>(value)),
value_(WellDefinedConversionOrZero(value, is_valid_)) {}
- constexpr bool is_valid() const { return is_valid_; }
- constexpr T value() const { return value_; }
+ bool is_valid() const { return is_valid_; }
+ T value() const { return value_; }
};
// Floating points maintain their own validity, but need translation wrappers.
@@ -584,7 +584,7 @@ class CheckedNumericState<T, NUMERIC_FLOATING> {
// Ensures that a type conversion does not trigger undefined behavior.
template <typename Src>
- static constexpr T WellDefinedConversionOrNaN(const Src value,
+ static T WellDefinedConversionOrNaN(const Src value,
const bool is_valid) {
using SrcType = typename internal::UnderlyingType<Src>::type;
return (StaticDstRangeRelationToSrcRange<T, SrcType>::value ==
@@ -598,32 +598,32 @@ class CheckedNumericState<T, NUMERIC_FLOATING> {
template <typename Src, NumericRepresentation type>
friend class CheckedNumericState;
- constexpr CheckedNumericState() : value_(0.0) {}
+ CheckedNumericState() : value_(0.0) {}
template <typename Src>
- constexpr CheckedNumericState(Src value, bool is_valid)
+ CheckedNumericState(Src value, bool is_valid)
: value_(WellDefinedConversionOrNaN(value, is_valid)) {}
template <typename Src>
- constexpr explicit CheckedNumericState(Src value)
+ explicit CheckedNumericState(Src value)
: value_(WellDefinedConversionOrNaN(
value,
IsValueInRangeForNumericType<T>(value))) {}
// Copy constructor.
template <typename Src>
- constexpr CheckedNumericState(const CheckedNumericState<Src>& rhs)
+ CheckedNumericState(const CheckedNumericState<Src>& rhs)
: value_(WellDefinedConversionOrNaN(
rhs.value(),
rhs.is_valid() && IsValueInRangeForNumericType<T>(rhs.value()))) {}
- constexpr bool is_valid() const {
+ bool is_valid() const {
// Written this way because std::isfinite is not reliably constexpr.
// TODO(jschuh): Fix this if the libraries ever get fixed.
return value_ <= std::numeric_limits<T>::max() &&
value_ >= std::numeric_limits<T>::lowest();
}
- constexpr T value() const { return value_; }
+ T value() const { return value_; }
};
template <template <typename, typename, typename> class M,
diff --git a/third_party/base/stl_util.h b/third_party/base/stl_util.h
index 795414b..cec9ea3 100644
--- a/third_party/base/stl_util.h
+++ b/third_party/base/stl_util.h
@@ -33,7 +33,6 @@ bool ContainsValue(const Collection& collection, const Value& value) {
template <class T>
class FakeUniquePtr : public std::unique_ptr<T> {
public:
- using std::unique_ptr<T>::unique_ptr;
~FakeUniquePtr() { std::unique_ptr<T>::release(); }
};
diff --git a/public/fpdfview.h b/public/fpdfview.h
index 7378d5f..6d37d9e 100644
--- a/public/fpdfview.h
+++ b/public/fpdfview.h
@@ -126,14 +126,20 @@ typedef struct _FS_RECTF_ {
// Const Pointer to FS_RECTF structure.
typedef const FS_RECTF* FS_LPCRECTF;
-#if defined(_WIN32) && defined(FPDFSDK_EXPORTS)
-// On Windows system, functions are exported in a DLL
+#if defined(PDFIUM_DLLIMPLEMENTATION)
+#ifdef _WIN32
#define DLLEXPORT __declspec(dllexport)
-#define STDCALL __stdcall
#else
-#define DLLEXPORT
-#define STDCALL
+#define DLLEXPORT __attribute__ ((visibility("default")))
+#endif
+#else
+#ifdef _WIN32
+#define DLLEXPORT __declspec(dllimport)
+#else
+#define DLLEXPORT __attribute__ ((visibility("default")))
#endif
+#endif
+#define STDCALL
// Exported Functions
#ifdef __cplusplus
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment