diff options
author | dsinclair <dsinclair@chromium.org> | 2016-04-06 10:23:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-06 10:23:46 -0700 |
commit | 44d054c6449edb63d9760ac6602b036ffec75a84 (patch) | |
tree | 846b0da4fb6d90fad87b97a3c938fe94f7c9243d /xfa/fxfa/parser/cxfa_occur.cpp | |
parent | 48baa5f230a886b0579a9626711e7d71376b085e (diff) | |
download | pdfium-44d054c6449edb63d9760ac6602b036ffec75a84.tar.xz |
Split fxfa_objectacc.h into pieces.
This Cl splits apart the fxfa_objectacc.h file and moves the individual classes
into the xfa/fxfa/parser directory.
Review URL: https://codereview.chromium.org/1861353002
Diffstat (limited to 'xfa/fxfa/parser/cxfa_occur.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_occur.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/cxfa_occur.cpp b/xfa/fxfa/parser/cxfa_occur.cpp new file mode 100644 index 0000000000..6d105abec6 --- /dev/null +++ b/xfa/fxfa/parser/cxfa_occur.cpp @@ -0,0 +1,67 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "xfa/fxfa/parser/cxfa_occur.h" + +#include "xfa/fxfa/parser/xfa_object.h" + +CXFA_Occur::CXFA_Occur(CXFA_Node* pNode) : CXFA_Data(pNode) {} + +int32_t CXFA_Occur::GetMax() { + int32_t iMax = 1; + if (m_pNode) { + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, TRUE)) + iMax = GetMin(); + } + return iMax; +} + +int32_t CXFA_Occur::GetMin() { + int32_t iMin = 1; + if (m_pNode) { + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, TRUE) || iMin < 0) + iMin = 1; + } + return iMin; +} + +FX_BOOL CXFA_Occur::GetOccurInfo(int32_t& iMin, int32_t& iMax, int32_t& iInit) { + if (!m_pNode) + return FALSE; + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE) || iMin < 0) + iMin = 1; + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE)) { + if (iMin == 0) + iMax = 1; + else + iMax = iMin; + } + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Initial, iInit, FALSE) || + iInit < iMin) { + iInit = iMin; + } + return TRUE; +} + +void CXFA_Occur::SetMax(int32_t iMax) { + iMax = (iMax != -1 && iMax < 1) ? 1 : iMax; + m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE); + int32_t iMin = GetMin(); + if (iMax != -1 && iMax < iMin) { + iMin = iMax; + m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE); + } +} + +void CXFA_Occur::SetMin(int32_t iMin) { + iMin = (iMin < 0) ? 1 : iMin; + m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE); + int32_t iMax = GetMax(); + if (iMax > 0 && iMax < iMin) { + iMax = iMin; + m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE); + } +} |