Make CFX_TextRenderOptions construction constexpr. CFX_TextRenderOptions can be constructed at compile time instead of runtime. In turn, CBC_OneDimWriter::GetTextRenderOptions() also becomes constexpr. By making CFX_TextRenderOptions constexpr, cfx_textrenderoptions.cpp is no longer required. LcdOptions() also becomes trivial, so get rid of it as well. Change-Id: Iae7024fba988bf7118053e1ec46ad520eb690fab Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/73110 Reviewed-by: Hui Yingst <nigi@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/BUILD.gn b/core/fxge/BUILD.gn index 3a9ebe0..46ea2d6 100644 --- a/core/fxge/BUILD.gn +++ b/core/fxge/BUILD.gn
@@ -55,7 +55,6 @@ "cfx_renderdevice.h", "cfx_substfont.cpp", "cfx_substfont.h", - "cfx_textrenderoptions.cpp", "cfx_textrenderoptions.h", "cfx_unicodeencoding.cpp", "cfx_unicodeencoding.h",
diff --git a/core/fxge/cfx_textrenderoptions.cpp b/core/fxge/cfx_textrenderoptions.cpp deleted file mode 100644 index 6d63aeb..0000000 --- a/core/fxge/cfx_textrenderoptions.cpp +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2020 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/fxge/cfx_textrenderoptions.h" - -#include "third_party/base/no_destructor.h" - -// static -const CFX_TextRenderOptions& CFX_TextRenderOptions::LcdOptions() { - static pdfium::base::NoDestructor<CFX_TextRenderOptions> instance(kLcd); - return *instance; -} - -CFX_TextRenderOptions::CFX_TextRenderOptions() = default; - -CFX_TextRenderOptions::CFX_TextRenderOptions(AliasingType type) - : aliasing_type(type) {} - -CFX_TextRenderOptions::CFX_TextRenderOptions( - const CFX_TextRenderOptions& other) = default;
diff --git a/core/fxge/cfx_textrenderoptions.h b/core/fxge/cfx_textrenderoptions.h index 64136d4..b216b97 100644 --- a/core/fxge/cfx_textrenderoptions.h +++ b/core/fxge/cfx_textrenderoptions.h
@@ -20,11 +20,10 @@ kLcd, }; - static const CFX_TextRenderOptions& LcdOptions(); - - CFX_TextRenderOptions(); - explicit CFX_TextRenderOptions(AliasingType type); - CFX_TextRenderOptions(const CFX_TextRenderOptions& other); + constexpr CFX_TextRenderOptions() = default; + constexpr explicit CFX_TextRenderOptions(AliasingType type) + : aliasing_type(type) {} + constexpr CFX_TextRenderOptions(const CFX_TextRenderOptions& other) = default; // Indicates whether anti-aliasing is enabled. bool IsSmooth() const {
diff --git a/core/fxge/skia/fx_skia_device_embeddertest.cpp b/core/fxge/skia/fx_skia_device_embeddertest.cpp index f35588d..136bb6b 100644 --- a/core/fxge/skia/fx_skia_device_embeddertest.cpp +++ b/core/fxge/skia/fx_skia_device_embeddertest.cpp
@@ -59,7 +59,7 @@ CFX_Matrix matrix2; matrix2.Translate(1, 0); CFX_GraphStateData graphState; - CFX_TextRenderOptions text_options; + static constexpr CFX_TextRenderOptions kTextOptions; if (state.m_save == State::Save::kYes) driver->SaveState(); if (state.m_clip != State::Clip::kNo) @@ -70,7 +70,7 @@ BlendMode::kNormal); } else if (state.m_graphic == State::Graphic::kText) { driver->DrawDeviceText(SK_ARRAY_COUNT(charPos), charPos, &font, matrix, - fontSize, 0xFF445566, text_options); + fontSize, 0xFF445566, kTextOptions); } if (state.m_save == State::Save::kYes) driver->RestoreState(true); @@ -94,7 +94,7 @@ BlendMode::kNormal); } else if (state.m_graphic == State::Graphic::kText) { driver->DrawDeviceText(SK_ARRAY_COUNT(charPos), charPos, &font, matrix2, - fontSize, 0xFF445566, text_options); + fontSize, 0xFF445566, kTextOptions); } if (state.m_save == State::Save::kYes) driver->RestoreState(false);
diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp index 5f5c26d..1e2b2a5 100644 --- a/fxbarcode/oned/BC_OneDimWriter.cpp +++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -33,17 +33,11 @@ #include "core/fxge/cfx_graphstatedata.h" #include "core/fxge/cfx_pathdata.h" #include "core/fxge/cfx_renderdevice.h" -#include "core/fxge/cfx_textrenderoptions.h" #include "core/fxge/cfx_unicodeencodingex.h" #include "core/fxge/text_char_pos.h" #include "fxbarcode/BC_Writer.h" // static -const CFX_TextRenderOptions& CBC_OneDimWriter::GetTextRenderOptions() { - return CFX_TextRenderOptions::LcdOptions(); -} - -// static bool CBC_OneDimWriter::HasValidContentSize(WideStringView contents) { // Limit the size of 1D barcodes. Typical 1D barcodes are short so this should // be sufficient for most use cases.
diff --git a/fxbarcode/oned/BC_OneDimWriter.h b/fxbarcode/oned/BC_OneDimWriter.h index 0f58556..32664a0 100644 --- a/fxbarcode/oned/BC_OneDimWriter.h +++ b/fxbarcode/oned/BC_OneDimWriter.h
@@ -11,6 +11,7 @@ #include "core/fxcrt/fx_string.h" #include "core/fxcrt/unowned_ptr.h" +#include "core/fxge/cfx_textrenderoptions.h" #include "fxbarcode/BC_Library.h" #include "fxbarcode/BC_Writer.h" #include "fxbarcode/utils.h" @@ -19,11 +20,12 @@ class CFX_PathData; class CFX_RenderDevice; class TextCharPos; -struct CFX_TextRenderOptions; class CBC_OneDimWriter : public CBC_Writer { public: - static const CFX_TextRenderOptions& GetTextRenderOptions(); + static constexpr CFX_TextRenderOptions GetTextRenderOptions() { + return CFX_TextRenderOptions(CFX_TextRenderOptions::kLcd); + } static bool HasValidContentSize(WideStringView contents); CBC_OneDimWriter();
diff --git a/xfa/fde/cfde_textout.cpp b/xfa/fde/cfde_textout.cpp index e01d3bf..25e3d4b 100644 --- a/xfa/fde/cfde_textout.cpp +++ b/xfa/fde/cfde_textout.cpp
@@ -70,7 +70,7 @@ RetainPtr<CFGAS_GEFont> pCurFont; TextCharPos* pCurCP = nullptr; int32_t iCurCount = 0; - const CFX_TextRenderOptions& options = CFX_TextRenderOptions::LcdOptions(); + static constexpr CFX_TextRenderOptions kOptions(CFX_TextRenderOptions::kLcd); for (auto& pos : pCharPos) { RetainPtr<CFGAS_GEFont> pSTFont = pFont->GetSubstFont(static_cast<int32_t>(pos.m_GlyphIndex)); @@ -90,7 +90,7 @@ #endif device->DrawNormalText(iCurCount, pCurCP, font, -fFontSize, matrix, - color, options); + color, kOptions); } pCurFont = pSTFont; pCurCP = &pos; @@ -113,7 +113,7 @@ #endif bRet = device->DrawNormalText(iCurCount, pCurCP, font, -fFontSize, matrix, - color, options); + color, kOptions); } #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) device->Flush(false);