58 lines
1.8 KiB
C++
58 lines
1.8 KiB
C++
// 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_
|