Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
cxfa_linear.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
"xfa/fxfa/parser/cxfa_linear.h"
8
9
#
include
"fxjs/xfa/cjx_node.h"
10
#
include
"xfa/fgas/graphics/cfgas_gegraphics.h"
11
#
include
"xfa/fgas/graphics/cfgas_geshading.h"
12
#
include
"xfa/fxfa/parser/cxfa_color.h"
13
#
include
"xfa/fxfa/parser/cxfa_document.h"
14
15
namespace
{
16
17
const
CXFA_Node
::
PropertyData
kLinearPropertyData[] = {
18
{
XFA_Element
::Color, 1, {}},
19
{
XFA_Element
::Extras, 1, {}},
20
};
21
22
const
CXFA_Node
::
AttributeData
kLinearAttributeData[] = {
23
{
XFA_Attribute
::Id,
XFA_AttributeType
::
CData
,
nullptr
},
24
{
XFA_Attribute
::Use,
XFA_AttributeType
::
CData
,
nullptr
},
25
{
XFA_Attribute
::Type,
XFA_AttributeType
::
Enum
,
26
(
void
*)
XFA_AttributeValue
::ToRight},
27
{
XFA_Attribute
::Usehref,
XFA_AttributeType
::
CData
,
nullptr
},
28
};
29
30
}
// namespace
31
32
CXFA_Linear::CXFA_Linear(CXFA_Document* doc,
XFA_PacketType
packet)
33
: CXFA_Node(doc,
34
packet,
35
{XFA_XDPPACKET::kTemplate, XFA_XDPPACKET::kForm},
36
XFA_ObjectType::Node,
37
XFA_Element::Linear,
38
kLinearPropertyData,
39
kLinearAttributeData,
40
cppgc::MakeGarbageCollected<CJX_Node>(
41
doc->GetHeap()->GetAllocationHandle(),
42
this
)) {}
43
44
CXFA_Linear::~
CXFA_Linear
() =
default
;
45
46
XFA_AttributeValue
CXFA_Linear::GetType() {
47
return
JSObject()
48
->TryEnum(
XFA_Attribute
::Type,
true
)
49
.value_or(
XFA_AttributeValue
::ToRight);
50
}
51
52
CXFA_Color* CXFA_Linear::GetColorIfExists() {
53
return
GetChild<CXFA_Color>(0,
XFA_Element
::Color,
false
);
54
}
55
56
void
CXFA_Linear::
Draw
(
CFGAS_GEGraphics
* pGS,
57
const
CFGAS_GEPath& fillPath,
58
FX_ARGB
crStart,
59
const
CFX_RectF
& rtFill,
60
const
CFX_Matrix
& matrix) {
61
CXFA_Color* pColor = GetColorIfExists();
62
FX_ARGB
crEnd = pColor ? pColor
->
GetValue
(
)
: CXFA_Color
::
kBlackColor
;
63
64
CFX_PointF
ptStart;
65
CFX_PointF
ptEnd;
66
switch
(GetType()) {
67
case
XFA_AttributeValue
::ToRight:
68
ptStart = CFX_PointF(rtFill
.
left
, rtFill
.
top
);
69
ptEnd = CFX_PointF(rtFill
.
right
(
)
, rtFill
.
top
);
70
break
;
71
case
XFA_AttributeValue
::ToBottom:
72
ptStart = CFX_PointF(rtFill
.
left
, rtFill
.
top
);
73
ptEnd = CFX_PointF(rtFill
.
left
, rtFill
.
bottom
(
)
);
74
break
;
75
case
XFA_AttributeValue
::ToLeft:
76
ptStart = CFX_PointF(rtFill
.
right
(
)
, rtFill
.
top
);
77
ptEnd = CFX_PointF(rtFill
.
left
, rtFill
.
top
);
78
break
;
79
case
XFA_AttributeValue
::ToTop:
80
ptStart = CFX_PointF(rtFill
.
left
, rtFill
.
bottom
(
)
);
81
ptEnd = CFX_PointF(rtFill
.
left
, rtFill
.
top
);
82
break
;
83
default
:
84
break
;
85
}
86
87
CFGAS_GEShading shading(ptStart, ptEnd,
false
,
false
, crStart, crEnd);
88
CFGAS_GEGraphics
::
StateRestorer
restorer
(
pGS
)
;
89
pGS
->
SetFillColor
(
CFGAS_GEColor
(
&shading
)
)
;
90
pGS
->
FillPath
(
fillPath
,
CFX_FillRenderOptions
::
FillType
::
kWinding
,
matrix
)
;
91
}
CFGAS_GEColor
Definition
cfgas_gecolor.h:19
CFGAS_GEColor::CFGAS_GEColor
CFGAS_GEColor(CFGAS_GEShading *shading)
Definition
cfgas_gecolor.cpp:14
CFGAS_GEGraphics::StateRestorer
Definition
cfgas_gegraphics.h:28
CFGAS_GEGraphics::StateRestorer::StateRestorer
StateRestorer(CFGAS_GEGraphics *graphics)
Definition
cfgas_gegraphics.cpp:421
CFGAS_GEGraphics
Definition
cfgas_gegraphics.h:26
CFGAS_GEGraphics::FillPath
void FillPath(const CFGAS_GEPath &path, CFX_FillRenderOptions::FillType fill_type, const CFX_Matrix &matrix)
Definition
cfgas_gegraphics.cpp:178
CFGAS_GEGraphics::SetFillColor
void SetFillColor(const CFGAS_GEColor &color)
Definition
cfgas_gegraphics.cpp:169
CFX_Matrix
Definition
fx_coordinates.h:440
CFX_RectF
Definition
fx_coordinates.h:276
CFX_RectF::left
float left
Definition
fx_coordinates.h:428
CFX_RectF::top
float top
Definition
fx_coordinates.h:429
CFX_RectF::bottom
float bottom() const
Definition
fx_coordinates.h:316
CFX_RectF::right
float right() const
Definition
fx_coordinates.h:315
CXFA_Color::GetValue
FX_ARGB GetValue() const
Definition
cxfa_color.cpp:101
CXFA_Color::kBlackColor
static constexpr FX_ARGB kBlackColor
Definition
cxfa_color.h:15
CXFA_Linear::Draw
void Draw(CFGAS_GEGraphics *pGS, const CFGAS_GEPath &fillPath, FX_ARGB crStart, const CFX_RectF &rtFill, const CFX_Matrix &matrix)
Definition
cxfa_linear.cpp:56
CXFA_Linear::~CXFA_Linear
~CXFA_Linear() override
CXFA_Node
Definition
cxfa_node.h:94
CFX_PointF
CFX_PTemplate< float > CFX_PointF
Definition
fx_coordinates.h:51
FX_ARGB
uint32_t FX_ARGB
Definition
fx_dib.h:36
XFA_AttributeType
XFA_AttributeType
Definition
fxfa_basic.h:83
XFA_AttributeType::Enum
@ Enum
Definition
fxfa_basic.h:84
XFA_AttributeType::CData
@ CData
Definition
fxfa_basic.h:85
XFA_Attribute
XFA_Attribute
Definition
fxfa_basic.h:67
XFA_Element
XFA_Element
Definition
fxfa_basic.h:75
XFA_AttributeValue
XFA_AttributeValue
Definition
fxfa_basic.h:60
XFA_PacketType
XFA_PacketType
Definition
fxfa_basic.h:44
CFX_FillRenderOptions
Definition
cfx_fillrenderoptions.h:11
CFX_FillRenderOptions::FillType
FillType
Definition
cfx_fillrenderoptions.h:13
CFX_FillRenderOptions::FillType::kWinding
@ kWinding
Definition
cfx_fillrenderoptions.h:23
CXFA_Node::AttributeData
Definition
cxfa_node.h:110
CXFA_Node::PropertyData
Definition
cxfa_node.h:96
qtwebengine
src
3rdparty
chromium
third_party
pdfium
xfa
fxfa
parser
cxfa_linear.cpp
Generated on
for Qt by
1.18.0