1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2016 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/layout/cxfa_viewlayoutitem.h" 8*3ac0a46fSAndroid Build Coastguard Worker 9*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/xfa/cjx_object.h" 10*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_ffpageview.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/layout/cxfa_layoutprocessor.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/layout/cxfa_viewlayoutprocessor.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/parser/cxfa_measurement.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/parser/cxfa_medium.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/parser/cxfa_node.h" 16*3ac0a46fSAndroid Build Coastguard Worker CXFA_ViewLayoutItem(CXFA_Node * pNode,CXFA_FFPageView * pPageView)17*3ac0a46fSAndroid Build Coastguard WorkerCXFA_ViewLayoutItem::CXFA_ViewLayoutItem(CXFA_Node* pNode, 18*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFPageView* pPageView) 19*3ac0a46fSAndroid Build Coastguard Worker : CXFA_LayoutItem(pNode, kViewItem), m_pFFPageView(pPageView) { 20*3ac0a46fSAndroid Build Coastguard Worker if (m_pFFPageView) 21*3ac0a46fSAndroid Build Coastguard Worker m_pFFPageView->SetLayoutItem(this); 22*3ac0a46fSAndroid Build Coastguard Worker } 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker CXFA_ViewLayoutItem::~CXFA_ViewLayoutItem() = default; 25*3ac0a46fSAndroid Build Coastguard Worker Trace(cppgc::Visitor * visitor) const26*3ac0a46fSAndroid Build Coastguard Workervoid CXFA_ViewLayoutItem::Trace(cppgc::Visitor* visitor) const { 27*3ac0a46fSAndroid Build Coastguard Worker CXFA_LayoutItem::Trace(visitor); 28*3ac0a46fSAndroid Build Coastguard Worker visitor->Trace(m_pOldSubform); 29*3ac0a46fSAndroid Build Coastguard Worker visitor->Trace(m_pFFPageView); 30*3ac0a46fSAndroid Build Coastguard Worker } 31*3ac0a46fSAndroid Build Coastguard Worker GetLayout() const32*3ac0a46fSAndroid Build Coastguard WorkerCXFA_LayoutProcessor* CXFA_ViewLayoutItem::GetLayout() const { 33*3ac0a46fSAndroid Build Coastguard Worker return CXFA_LayoutProcessor::FromDocument(GetFormNode()->GetDocument()); 34*3ac0a46fSAndroid Build Coastguard Worker } 35*3ac0a46fSAndroid Build Coastguard Worker GetPageIndex() const36*3ac0a46fSAndroid Build Coastguard Workerint32_t CXFA_ViewLayoutItem::GetPageIndex() const { 37*3ac0a46fSAndroid Build Coastguard Worker auto* pLayout = 38*3ac0a46fSAndroid Build Coastguard Worker CXFA_LayoutProcessor::FromDocument(GetFormNode()->GetDocument()); 39*3ac0a46fSAndroid Build Coastguard Worker return pLayout->GetLayoutPageMgr()->GetPageIndex(this); 40*3ac0a46fSAndroid Build Coastguard Worker } 41*3ac0a46fSAndroid Build Coastguard Worker GetPageSize() const42*3ac0a46fSAndroid Build Coastguard WorkerCFX_SizeF CXFA_ViewLayoutItem::GetPageSize() const { 43*3ac0a46fSAndroid Build Coastguard Worker CFX_SizeF size; 44*3ac0a46fSAndroid Build Coastguard Worker CXFA_Medium* pMedium = 45*3ac0a46fSAndroid Build Coastguard Worker GetFormNode()->GetFirstChildByClass<CXFA_Medium>(XFA_Element::Medium); 46*3ac0a46fSAndroid Build Coastguard Worker if (!pMedium) 47*3ac0a46fSAndroid Build Coastguard Worker return size; 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker size = CFX_SizeF( 50*3ac0a46fSAndroid Build Coastguard Worker pMedium->JSObject()->GetMeasureInUnit(XFA_Attribute::Short, XFA_Unit::Pt), 51*3ac0a46fSAndroid Build Coastguard Worker pMedium->JSObject()->GetMeasureInUnit(XFA_Attribute::Long, XFA_Unit::Pt)); 52*3ac0a46fSAndroid Build Coastguard Worker if (pMedium->JSObject()->GetEnum(XFA_Attribute::Orientation) == 53*3ac0a46fSAndroid Build Coastguard Worker XFA_AttributeValue::Landscape) { 54*3ac0a46fSAndroid Build Coastguard Worker size = CFX_SizeF(size.height, size.width); 55*3ac0a46fSAndroid Build Coastguard Worker } 56*3ac0a46fSAndroid Build Coastguard Worker return size; 57*3ac0a46fSAndroid Build Coastguard Worker } 58*3ac0a46fSAndroid Build Coastguard Worker GetMasterPage() const59*3ac0a46fSAndroid Build Coastguard WorkerCXFA_Node* CXFA_ViewLayoutItem::GetMasterPage() const { 60*3ac0a46fSAndroid Build Coastguard Worker return GetFormNode(); 61*3ac0a46fSAndroid Build Coastguard Worker } 62*3ac0a46fSAndroid Build Coastguard Worker SetOldSubform(CXFA_Node * pSubform)63*3ac0a46fSAndroid Build Coastguard Workervoid CXFA_ViewLayoutItem::SetOldSubform(CXFA_Node* pSubform) { 64*3ac0a46fSAndroid Build Coastguard Worker m_pOldSubform = pSubform; 65*3ac0a46fSAndroid Build Coastguard Worker } 66