xref: /aosp_15_r20/external/pdfium/xfa/fxfa/parser/cxfa_arc.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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_arc.h"
8 
9 #include "fxjs/xfa/cjx_node.h"
10 #include "xfa/fxfa/parser/cxfa_document.h"
11 
12 namespace {
13 
14 const CXFA_Node::PropertyData kArcPropertyData[] = {
15     {XFA_Element::Edge, 1, {}},
16     {XFA_Element::Fill, 1, {}},
17 };
18 
19 const CXFA_Node::AttributeData kArcAttributeData[] = {
20     {XFA_Attribute::Id, XFA_AttributeType::CData, nullptr},
21     {XFA_Attribute::Use, XFA_AttributeType::CData, nullptr},
22     {XFA_Attribute::StartAngle, XFA_AttributeType::Integer, (void*)0},
23     {XFA_Attribute::SweepAngle, XFA_AttributeType::Integer, (void*)360},
24     {XFA_Attribute::Circular, XFA_AttributeType::Boolean, (void*)0},
25     {XFA_Attribute::Usehref, XFA_AttributeType::CData, nullptr},
26     {XFA_Attribute::Hand, XFA_AttributeType::Enum,
27      (void*)XFA_AttributeValue::Even},
28 };
29 
30 }  // namespace
31 
32 // static
FromNode(CXFA_Node * pNode)33 CXFA_Arc* CXFA_Arc::FromNode(CXFA_Node* pNode) {
34   return pNode && pNode->GetElementType() == XFA_Element::Arc
35              ? static_cast<CXFA_Arc*>(pNode)
36              : nullptr;
37 }
38 
CXFA_Arc(CXFA_Document * doc,XFA_PacketType packet)39 CXFA_Arc::CXFA_Arc(CXFA_Document* doc, XFA_PacketType packet)
40     : CXFA_Box(doc,
41                packet,
42                {XFA_XDPPACKET::kTemplate, XFA_XDPPACKET::kForm},
43                XFA_ObjectType::Node,
44                XFA_Element::Arc,
45                kArcPropertyData,
46                kArcAttributeData,
47                cppgc::MakeGarbageCollected<CJX_Node>(
48                    doc->GetHeap()->GetAllocationHandle(),
49                    this)) {}
50 
51 CXFA_Arc::~CXFA_Arc() = default;
52