Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfx_csscomputedstyle.cpp
Go to the documentation of this file.
1// Copyright 2017 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#include "core/fxcrt/css/cfx_csscomputedstyle.h"
8
9#include "core/fxcrt/css/cfx_cssstringvalue.h"
10#include "core/fxcrt/css/cfx_cssvaluelist.h"
11#include "third_party/base/containers/adapters.h"
12
13CFX_CSSComputedStyle::CFX_CSSComputedStyle() = default;
14
15CFX_CSSComputedStyle::~CFX_CSSComputedStyle() = default;
16
17bool CFX_CSSComputedStyle::GetCustomStyle(const WideString& wsName,
18 WideString* pValue) const {
19 for (const auto& prop : pdfium::base::Reversed(m_CustomProperties)) {
20 if (wsName == prop.name()) {
21 *pValue = prop.value();
22 return true;
23 }
24 }
25 return false;
26}
27
28absl::optional<WideString> CFX_CSSComputedStyle::GetLastFontFamily() const {
29 if (!m_InheritedData.m_pFontFamily ||
30 m_InheritedData.m_pFontFamily->values().empty()) {
31 return absl::nullopt;
32 }
33
34 return m_InheritedData.m_pFontFamily->values()
35 .back()
36 .AsRaw<CFX_CSSStringValue>()
37 ->Value();
38}
39
40uint16_t CFX_CSSComputedStyle::GetFontWeight() const {
41 return m_InheritedData.m_wFontWeight;
42}
43
44CFX_CSSFontVariant CFX_CSSComputedStyle::GetFontVariant() const {
45 return m_InheritedData.m_eFontVariant;
46}
47
48CFX_CSSFontStyle CFX_CSSComputedStyle::GetFontStyle() const {
49 return m_InheritedData.m_eFontStyle;
50}
51
52float CFX_CSSComputedStyle::GetFontSize() const {
53 return m_InheritedData.m_fFontSize;
54}
55
56FX_ARGB CFX_CSSComputedStyle::GetColor() const {
57 return m_InheritedData.m_dwFontColor;
58}
59
60void CFX_CSSComputedStyle::SetFontWeight(uint16_t wFontWeight) {
61 m_InheritedData.m_wFontWeight = wFontWeight;
62}
63
64void CFX_CSSComputedStyle::SetFontVariant(CFX_CSSFontVariant eFontVariant) {
65 m_InheritedData.m_eFontVariant = eFontVariant;
66}
67
68void CFX_CSSComputedStyle::SetFontStyle(CFX_CSSFontStyle eFontStyle) {
69 m_InheritedData.m_eFontStyle = eFontStyle;
70}
71
72void CFX_CSSComputedStyle::SetFontSize(float fFontSize) {
73 m_InheritedData.m_fFontSize = fFontSize;
74}
75
76void CFX_CSSComputedStyle::SetColor(FX_ARGB dwFontColor) {
77 m_InheritedData.m_dwFontColor = dwFontColor;
78}
79
80const CFX_CSSRect* CFX_CSSComputedStyle::GetBorderWidth() const {
81 return m_NonInheritedData.m_bHasBorder ? &(m_NonInheritedData.m_BorderWidth)
82 : nullptr;
83}
84
85const CFX_CSSRect* CFX_CSSComputedStyle::GetMarginWidth() const {
86 return m_NonInheritedData.m_bHasMargin ? &(m_NonInheritedData.m_MarginWidth)
87 : nullptr;
88}
89
90const CFX_CSSRect* CFX_CSSComputedStyle::GetPaddingWidth() const {
91 return m_NonInheritedData.m_bHasPadding ? &(m_NonInheritedData.m_PaddingWidth)
92 : nullptr;
93}
94
95void CFX_CSSComputedStyle::SetMarginWidth(const CFX_CSSRect& rect) {
96 m_NonInheritedData.m_MarginWidth = rect;
97 m_NonInheritedData.m_bHasMargin = true;
98}
99
100void CFX_CSSComputedStyle::SetPaddingWidth(const CFX_CSSRect& rect) {
101 m_NonInheritedData.m_PaddingWidth = rect;
102 m_NonInheritedData.m_bHasPadding = true;
103}
104
105CFX_CSSDisplay CFX_CSSComputedStyle::GetDisplay() const {
106 return m_NonInheritedData.m_eDisplay;
107}
108
109float CFX_CSSComputedStyle::GetLineHeight() const {
110 return m_InheritedData.m_fLineHeight;
111}
112
113const CFX_CSSLength& CFX_CSSComputedStyle::GetTextIndent() const {
114 return m_InheritedData.m_TextIndent;
115}
116
117CFX_CSSTextAlign CFX_CSSComputedStyle::GetTextAlign() const {
118 return m_InheritedData.m_eTextAlign;
119}
120
121CFX_CSSVerticalAlign CFX_CSSComputedStyle::GetVerticalAlign() const {
122 return m_NonInheritedData.m_eVerticalAlignType;
123}
124
125float CFX_CSSComputedStyle::GetNumberVerticalAlign() const {
126 return m_NonInheritedData.m_fVerticalAlign;
127}
128
129Mask<CFX_CSSTEXTDECORATION> CFX_CSSComputedStyle::GetTextDecoration() const {
130 return m_NonInheritedData.m_dwTextDecoration;
131}
132
133const CFX_CSSLength& CFX_CSSComputedStyle::GetLetterSpacing() const {
134 return m_InheritedData.m_LetterSpacing;
135}
136
137void CFX_CSSComputedStyle::SetLineHeight(float fLineHeight) {
138 m_InheritedData.m_fLineHeight = fLineHeight;
139}
140
141void CFX_CSSComputedStyle::SetTextIndent(const CFX_CSSLength& textIndent) {
142 m_InheritedData.m_TextIndent = textIndent;
143}
144
145void CFX_CSSComputedStyle::SetTextAlign(CFX_CSSTextAlign eTextAlign) {
146 m_InheritedData.m_eTextAlign = eTextAlign;
147}
148
149void CFX_CSSComputedStyle::SetNumberVerticalAlign(float fAlign) {
150 m_NonInheritedData.m_eVerticalAlignType = CFX_CSSVerticalAlign::Number,
151 m_NonInheritedData.m_fVerticalAlign = fAlign;
152}
153
154void CFX_CSSComputedStyle::SetTextDecoration(
155 Mask<CFX_CSSTEXTDECORATION> dwTextDecoration) {
156 m_NonInheritedData.m_dwTextDecoration = dwTextDecoration;
157}
158
159void CFX_CSSComputedStyle::SetLetterSpacing(
160 const CFX_CSSLength& letterSpacing) {
161 m_InheritedData.m_LetterSpacing = letterSpacing;
162}
163
164void CFX_CSSComputedStyle::AddCustomStyle(const CFX_CSSCustomProperty& prop) {
165 // Force the property to be copied so we aren't dependent on the lifetime
166 // of whatever currently owns it.
167 m_CustomProperties.push_back(prop);
168}
169
170CFX_CSSComputedStyle::InheritedData::InheritedData() = default;
171
172CFX_CSSComputedStyle::InheritedData::~InheritedData() = default;
173
174CFX_CSSComputedStyle::NonInheritedData::NonInheritedData() = default;
CFX_CSSFontVariant
Definition cfx_css.h:82
CFX_CSSFontStyle
Definition cfx_css.h:57
CFX_CSSDisplay
Definition cfx_css.h:48
CFX_CSSVerticalAlign
Definition cfx_css.h:70
CFX_CSSTextAlign
Definition cfx_css.h:62
CFX_CSSTEXTDECORATION
Definition cfx_css.h:87
void SetTextAlign(CFX_CSSTextAlign eTextAlign)
void SetNumberVerticalAlign(float fAlign)
void SetMarginWidth(const CFX_CSSRect &rect)
void SetTextDecoration(Mask< CFX_CSSTEXTDECORATION > dwTextDecoration)
void SetTextIndent(const CFX_CSSLength &textIndent)
const CFX_CSSRect * GetBorderWidth() const
void SetPaddingWidth(const CFX_CSSRect &rect)
void SetFontWeight(uint16_t wFontWeight)
void SetFontVariant(CFX_CSSFontVariant eFontVariant)
void SetFontStyle(CFX_CSSFontStyle eFontStyle)
void SetColor(FX_ARGB dwFontColor)
void SetFontSize(float fFontSize)
const CFX_CSSLength & GetTextIndent() const
void AddCustomStyle(const CFX_CSSCustomProperty &prop)
CFX_CSSVerticalAlign GetVerticalAlign() const
Mask< CFX_CSSTEXTDECORATION > GetTextDecoration() const
CFX_CSSFontStyle GetFontStyle() const
CFX_CSSFontVariant GetFontVariant() const
const CFX_CSSRect * GetMarginWidth() const
absl::optional< WideString > GetLastFontFamily() const
~CFX_CSSComputedStyle() override
const CFX_CSSLength & GetLetterSpacing() const
CFX_CSSTextAlign GetTextAlign() const
bool GetCustomStyle(const WideString &wsName, WideString *pValue) const
CFX_CSSDisplay GetDisplay() const
void SetLetterSpacing(const CFX_CSSLength &letterSpacing)
const CFX_CSSRect * GetPaddingWidth() const
void SetLineHeight(float fLineHeight)