// Copyright 2020 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CORE_FXGE_CFX_TEXTRENDEROPTIONS_H_ #define CORE_FXGE_CFX_TEXTRENDEROPTIONS_H_ struct CFX_TextRenderOptions { // AliasingType defines the options for drawing pixels on the edges of the // text. The values are defined in an incrementing order due to the latter // aliasing type's dependency on the previous one. enum AliasingType { // No transparent pixels on glyph edges. kAliasing, // May have transparent pixels on glyph edges. kAntiAliasing, // LCD optimization, can be enabled when anti-aliasing is allowed. kLcd, }; constexpr CFX_TextRenderOptions() = default; constexpr explicit CFX_TextRenderOptions(AliasingType type) : aliasing_type(type) {} constexpr CFX_TextRenderOptions(const CFX_TextRenderOptions& other) = default; CFX_TextRenderOptions& operator=(const CFX_TextRenderOptions& other) = default; // Indicates whether anti-aliasing is enabled. bool IsSmooth() const { return aliasing_type == kAntiAliasing || aliasing_type == kLcd; } // Aliasing option for fonts. AliasingType aliasing_type = kAntiAliasing; // Font is CID font. bool font_is_cid = false; // Using the native text output available on some platforms. bool native_text = true; }; inline bool operator==(const CFX_TextRenderOptions& lhs, const CFX_TextRenderOptions& rhs) { return lhs.aliasing_type == rhs.aliasing_type && lhs.font_is_cid == rhs.font_is_cid && lhs.native_text == rhs.native_text; } inline bool operator!=(const CFX_TextRenderOptions& lhs, const CFX_TextRenderOptions& rhs) { return !(lhs == rhs); } #endif // CORE_FXGE_CFX_TEXTRENDEROPTIONS_H_