Index: xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h |
diff --git a/xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h b/xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h |
index 78753e67cde03d000c9b661e69ff65e90a9b6d67..980eaee4e74ea79bbb987f25b09bcadceab043bb 100644 |
--- a/xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h |
+++ b/xfa/src/fxfa/src/parser/xfa_layout_itemlayout.h |
@@ -1,186 +1,186 @@ |
-// Copyright 2014 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 |
- |
-#ifndef _XFA_LAYOUT_ITEMLAYOUT_H_ |
-#define _XFA_LAYOUT_ITEMLAYOUT_H_ |
-#define XFA_LAYOUT_INVALIDNODE ((CXFA_Node*)(intptr_t)-1) |
-#define XFA_LAYOUT_FLOAT_PERCISION (0.0005f) |
-#include "float.h" |
-#define XFA_LAYOUT_FLOAT_MAX FLT_MAX |
-class CXFA_ItemLayoutProcessor; |
-class CXFA_LayoutPageMgr; |
-class CXFA_ContainerLayoutItem; |
-class CXFA_ContentLayoutItem; |
-enum XFA_ItemLayoutProcessorResult { |
- XFA_ItemLayoutProcessorResult_Done, |
- XFA_ItemLayoutProcessorResult_PageFullBreak, |
- XFA_ItemLayoutProcessorResult_RowFullBreak, |
- XFA_ItemLayoutProcessorResult_ManualBreak, |
-}; |
-enum XFA_ItemLayoutProcessorStages { |
- XFA_ItemLayoutProcessorStages_None, |
- XFA_ItemLayoutProcessorStages_BookendLeader, |
- XFA_ItemLayoutProcessorStages_BreakBefore, |
- XFA_ItemLayoutProcessorStages_Keep, |
- XFA_ItemLayoutProcessorStages_Container, |
- XFA_ItemLayoutProcessorStages_BreakAfter, |
- XFA_ItemLayoutProcessorStages_BookendTrailer, |
- XFA_ItemLayoutProcessorStages_Done, |
-}; |
- |
-class CXFA_LayoutContext { |
- public: |
- CXFA_LayoutContext() |
- : m_prgSpecifiedColumnWidths(NULL), |
- m_fCurColumnWidth(0), |
- m_bCurColumnWidthAvaiable(FALSE), |
- m_pOverflowProcessor(NULL), |
- m_pOverflowNode(NULL) {} |
- ~CXFA_LayoutContext() { m_pOverflowProcessor = NULL; } |
- CFX_ArrayTemplate<FX_FLOAT>* m_prgSpecifiedColumnWidths; |
- FX_FLOAT m_fCurColumnWidth; |
- FX_BOOL m_bCurColumnWidthAvaiable; |
- CXFA_ItemLayoutProcessor* m_pOverflowProcessor; |
- CXFA_Node* m_pOverflowNode; |
-}; |
- |
-class CXFA_ItemLayoutProcessor { |
- public: |
- CXFA_ItemLayoutProcessor(CXFA_Node* pNode, CXFA_LayoutPageMgr* pPageMgr); |
- |
- XFA_ItemLayoutProcessorResult DoLayout( |
- FX_BOOL bUseBreakControl, |
- FX_FLOAT fHeightLimit, |
- FX_FLOAT fRealHeight = XFA_LAYOUT_FLOAT_MAX, |
- CXFA_LayoutContext* pContext = NULL); |
- |
- void GetCurrentComponentPos(FX_FLOAT& fAbsoluteX, FX_FLOAT& fAbsoluteY); |
- |
- void GetCurrentComponentSize(FX_FLOAT& fWidth, FX_FLOAT& fHeight); |
- |
- void SetCurrentComponentPos(FX_FLOAT fAbsoluteX, FX_FLOAT fAbsoluteY); |
- |
- void SetCurrentComponentSize(FX_FLOAT fWidth, FX_FLOAT fHeight); |
- inline CXFA_Node* GetFormNode() { return m_pFormNode; } |
- inline FX_BOOL HasLayoutItem() { return m_pLayoutItem != NULL; } |
- CXFA_ContentLayoutItem* ExtractLayoutItem(); |
- |
- static FX_BOOL IncrementRelayoutNode(CXFA_LayoutProcessor* pLayoutProcessor, |
- CXFA_Node* pNode, |
- CXFA_Node* pParentNode); |
- static void CalculatePositionedContainerPos(CXFA_Node* pNode, |
- FX_FLOAT fWidth, |
- FX_FLOAT fHeight, |
- FX_FLOAT& fAbsoluteX, |
- FX_FLOAT& fAbsoluteY); |
- static FX_BOOL FindLayoutItemSplitPos(CXFA_ContentLayoutItem* pLayoutItem, |
- FX_FLOAT fCurVerticalOffset, |
- FX_FLOAT& fProposedSplitPos, |
- FX_BOOL& bAppChange, |
- FX_BOOL bCalculateMargin = TRUE); |
- FX_FLOAT FindSplitPos(FX_FLOAT fProposedSplitPos); |
- void SplitLayoutItem(CXFA_ContentLayoutItem* pLayoutItem, |
- CXFA_ContentLayoutItem* pSecondParent, |
- FX_FLOAT fSplitPos); |
- void SplitLayoutItem(FX_FLOAT fSplitPos); |
- FX_BOOL JudgePutNextPage( |
- CXFA_ContentLayoutItem* pParentLayoutItem, |
- FX_FLOAT fChildHeight, |
- CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& pKeepItems); |
- FX_BOOL ProcessKeepForSplite( |
- CXFA_ItemLayoutProcessor* pParentProcessor, |
- CXFA_ItemLayoutProcessor* pChildProcessor, |
- XFA_ItemLayoutProcessorResult eRetValue, |
- CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& rgCurLineLayoutItem, |
- FX_FLOAT& fContentCurRowAvailWidth, |
- FX_FLOAT& fContentCurRowHeight, |
- FX_FLOAT& fContentCurRowY, |
- FX_BOOL& bAddedItemInRow, |
- FX_BOOL& bForceEndPage, |
- XFA_ItemLayoutProcessorResult& result); |
- FX_FLOAT InsertKeepLayoutItems(); |
- void DoLayoutPageArea(CXFA_ContainerLayoutItem* pPageAreaLayoutItem); |
- FX_BOOL CalculateRowChildPosition( |
- CFX_ArrayTemplate<CXFA_ContentLayoutItem*>(&rgCurLineLayoutItems)[3], |
- XFA_ATTRIBUTEENUM eFlowStrategy, |
- FX_BOOL bContainerHeightAutoSize, |
- FX_BOOL bContainerWidthAutoSize, |
- FX_FLOAT& fContentCalculatedWidth, |
- FX_FLOAT& fContentCalculatedHeight, |
- FX_FLOAT& fContentCurRowY, |
- FX_FLOAT fContentCurRowHeight, |
- FX_FLOAT fContentWidthLimit, |
- FX_BOOL bRootForceTb = FALSE); |
- |
- void ProcessUnUseOverFlow(CXFA_Node* pLeaderNode, |
- CXFA_Node* pTrailerNode, |
- CXFA_ContentLayoutItem* pTrailerItem, |
- CXFA_Node* pFormNode); |
- void ProcessUnUseBinds(CXFA_Node* pFormNode); |
- FX_BOOL IsAddNewRowForTrailer(CXFA_ContentLayoutItem* pTrailerItem); |
- FX_BOOL JudgeLeaderOrTrailerForOccur(CXFA_Node* pFormNode); |
- CXFA_ContentLayoutItem* CreateContentLayoutItem(CXFA_Node* pFormNode); |
- |
- protected: |
- void DoLayoutPositionedContainer(CXFA_LayoutContext* pContext = NULL); |
- void DoLayoutTableContainer(CXFA_Node* pLayoutNode); |
- XFA_ItemLayoutProcessorResult DoLayoutFlowedContainer( |
- FX_BOOL bUseBreakControl, |
- XFA_ATTRIBUTEENUM eFlowStrategy, |
- FX_FLOAT fHeightLimit, |
- FX_FLOAT fRealHeight, |
- CXFA_LayoutContext* pContext = NULL, |
- FX_BOOL bRootForceTb = FALSE); |
- void DoLayoutField(); |
- void XFA_ItemLayoutProcessor_GotoNextContainerNode( |
- CXFA_Node*& pCurActionNode, |
- XFA_ItemLayoutProcessorStages& nCurStage, |
- CXFA_Node* pParentContainer, |
- FX_BOOL bUsePageBreak); |
- |
- FX_BOOL ProcessKeepNodesForCheckNext(CXFA_Node*& pCurActionNode, |
- XFA_ItemLayoutProcessorStages& nCurStage, |
- CXFA_Node*& pNextContainer, |
- FX_BOOL& bLastKeepNode); |
- |
- FX_BOOL ProcessKeepNodesForBreakBefore( |
- CXFA_Node*& pCurActionNode, |
- XFA_ItemLayoutProcessorStages& nCurStage, |
- CXFA_Node* pContainerNode); |
- |
- CXFA_Node* GetSubformSetParent(CXFA_Node* pSubformSet); |
- |
- public: |
- FX_BOOL m_bKeepBreakFinish; |
- FX_BOOL m_bIsProcessKeep; |
- CXFA_Node* m_pKeepHeadNode; |
- CXFA_Node* m_pKeepTailNode; |
- CXFA_Node* m_pFormNode; |
- CXFA_ContentLayoutItem* m_pLayoutItem; |
-#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ |
- CXFA_ContentLayoutItem* m_pOldLayoutItem; |
-#else |
- CXFA_LayoutPageMgr* m_pPageMgrCreateItem; |
-#endif |
- CXFA_Node* m_pCurChildNode; |
- CXFA_ItemLayoutProcessor* m_pCurChildPreprocessor; |
- XFA_ItemLayoutProcessorStages m_nCurChildNodeStage; |
- FX_FLOAT m_fUsedSize; |
- CXFA_LayoutPageMgr* m_pPageMgr; |
- CFX_PtrList m_rgPendingNodes; |
- FX_BOOL m_bBreakPending; |
- CFX_ArrayTemplate<FX_FLOAT> m_rgSpecifiedColumnWidths; |
- CFX_ArrayTemplate<CXFA_ContentLayoutItem*> m_arrayKeepItems; |
- CFX_MapPtrToPtr m_PendingNodesCount; |
- FX_FLOAT m_fLastRowWidth; |
- FX_FLOAT m_fLastRowY; |
- FX_FLOAT m_fWidthLimite; |
- FX_BOOL m_bUseInheriated; |
- XFA_ItemLayoutProcessorResult m_ePreProcessRs; |
- FX_BOOL m_bHasAvailHeight; |
-}; |
-FX_BOOL XFA_ItemLayoutProcessor_IsTakingSpace(CXFA_Node* pNode); |
-#endif |
+// Copyright 2014 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 |
+ |
+#ifndef _XFA_LAYOUT_ITEMLAYOUT_H_ |
+#define _XFA_LAYOUT_ITEMLAYOUT_H_ |
+#define XFA_LAYOUT_INVALIDNODE ((CXFA_Node*)(intptr_t)-1) |
+#define XFA_LAYOUT_FLOAT_PERCISION (0.0005f) |
+#include "float.h" |
+#define XFA_LAYOUT_FLOAT_MAX FLT_MAX |
+class CXFA_ItemLayoutProcessor; |
+class CXFA_LayoutPageMgr; |
+class CXFA_ContainerLayoutItem; |
+class CXFA_ContentLayoutItem; |
+enum XFA_ItemLayoutProcessorResult { |
+ XFA_ItemLayoutProcessorResult_Done, |
+ XFA_ItemLayoutProcessorResult_PageFullBreak, |
+ XFA_ItemLayoutProcessorResult_RowFullBreak, |
+ XFA_ItemLayoutProcessorResult_ManualBreak, |
+}; |
+enum XFA_ItemLayoutProcessorStages { |
+ XFA_ItemLayoutProcessorStages_None, |
+ XFA_ItemLayoutProcessorStages_BookendLeader, |
+ XFA_ItemLayoutProcessorStages_BreakBefore, |
+ XFA_ItemLayoutProcessorStages_Keep, |
+ XFA_ItemLayoutProcessorStages_Container, |
+ XFA_ItemLayoutProcessorStages_BreakAfter, |
+ XFA_ItemLayoutProcessorStages_BookendTrailer, |
+ XFA_ItemLayoutProcessorStages_Done, |
+}; |
+ |
+class CXFA_LayoutContext { |
+ public: |
+ CXFA_LayoutContext() |
+ : m_prgSpecifiedColumnWidths(NULL), |
+ m_fCurColumnWidth(0), |
+ m_bCurColumnWidthAvaiable(FALSE), |
+ m_pOverflowProcessor(NULL), |
+ m_pOverflowNode(NULL) {} |
+ ~CXFA_LayoutContext() { m_pOverflowProcessor = NULL; } |
+ CFX_ArrayTemplate<FX_FLOAT>* m_prgSpecifiedColumnWidths; |
+ FX_FLOAT m_fCurColumnWidth; |
+ FX_BOOL m_bCurColumnWidthAvaiable; |
+ CXFA_ItemLayoutProcessor* m_pOverflowProcessor; |
+ CXFA_Node* m_pOverflowNode; |
+}; |
+ |
+class CXFA_ItemLayoutProcessor { |
+ public: |
+ CXFA_ItemLayoutProcessor(CXFA_Node* pNode, CXFA_LayoutPageMgr* pPageMgr); |
+ |
+ XFA_ItemLayoutProcessorResult DoLayout( |
+ FX_BOOL bUseBreakControl, |
+ FX_FLOAT fHeightLimit, |
+ FX_FLOAT fRealHeight = XFA_LAYOUT_FLOAT_MAX, |
+ CXFA_LayoutContext* pContext = NULL); |
+ |
+ void GetCurrentComponentPos(FX_FLOAT& fAbsoluteX, FX_FLOAT& fAbsoluteY); |
+ |
+ void GetCurrentComponentSize(FX_FLOAT& fWidth, FX_FLOAT& fHeight); |
+ |
+ void SetCurrentComponentPos(FX_FLOAT fAbsoluteX, FX_FLOAT fAbsoluteY); |
+ |
+ void SetCurrentComponentSize(FX_FLOAT fWidth, FX_FLOAT fHeight); |
+ inline CXFA_Node* GetFormNode() { return m_pFormNode; } |
+ inline FX_BOOL HasLayoutItem() { return m_pLayoutItem != NULL; } |
+ CXFA_ContentLayoutItem* ExtractLayoutItem(); |
+ |
+ static FX_BOOL IncrementRelayoutNode(CXFA_LayoutProcessor* pLayoutProcessor, |
+ CXFA_Node* pNode, |
+ CXFA_Node* pParentNode); |
+ static void CalculatePositionedContainerPos(CXFA_Node* pNode, |
+ FX_FLOAT fWidth, |
+ FX_FLOAT fHeight, |
+ FX_FLOAT& fAbsoluteX, |
+ FX_FLOAT& fAbsoluteY); |
+ static FX_BOOL FindLayoutItemSplitPos(CXFA_ContentLayoutItem* pLayoutItem, |
+ FX_FLOAT fCurVerticalOffset, |
+ FX_FLOAT& fProposedSplitPos, |
+ FX_BOOL& bAppChange, |
+ FX_BOOL bCalculateMargin = TRUE); |
+ FX_FLOAT FindSplitPos(FX_FLOAT fProposedSplitPos); |
+ void SplitLayoutItem(CXFA_ContentLayoutItem* pLayoutItem, |
+ CXFA_ContentLayoutItem* pSecondParent, |
+ FX_FLOAT fSplitPos); |
+ void SplitLayoutItem(FX_FLOAT fSplitPos); |
+ FX_BOOL JudgePutNextPage( |
+ CXFA_ContentLayoutItem* pParentLayoutItem, |
+ FX_FLOAT fChildHeight, |
+ CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& pKeepItems); |
+ FX_BOOL ProcessKeepForSplite( |
+ CXFA_ItemLayoutProcessor* pParentProcessor, |
+ CXFA_ItemLayoutProcessor* pChildProcessor, |
+ XFA_ItemLayoutProcessorResult eRetValue, |
+ CFX_ArrayTemplate<CXFA_ContentLayoutItem*>& rgCurLineLayoutItem, |
+ FX_FLOAT& fContentCurRowAvailWidth, |
+ FX_FLOAT& fContentCurRowHeight, |
+ FX_FLOAT& fContentCurRowY, |
+ FX_BOOL& bAddedItemInRow, |
+ FX_BOOL& bForceEndPage, |
+ XFA_ItemLayoutProcessorResult& result); |
+ FX_FLOAT InsertKeepLayoutItems(); |
+ void DoLayoutPageArea(CXFA_ContainerLayoutItem* pPageAreaLayoutItem); |
+ FX_BOOL CalculateRowChildPosition( |
+ CFX_ArrayTemplate<CXFA_ContentLayoutItem*>(&rgCurLineLayoutItems)[3], |
+ XFA_ATTRIBUTEENUM eFlowStrategy, |
+ FX_BOOL bContainerHeightAutoSize, |
+ FX_BOOL bContainerWidthAutoSize, |
+ FX_FLOAT& fContentCalculatedWidth, |
+ FX_FLOAT& fContentCalculatedHeight, |
+ FX_FLOAT& fContentCurRowY, |
+ FX_FLOAT fContentCurRowHeight, |
+ FX_FLOAT fContentWidthLimit, |
+ FX_BOOL bRootForceTb = FALSE); |
+ |
+ void ProcessUnUseOverFlow(CXFA_Node* pLeaderNode, |
+ CXFA_Node* pTrailerNode, |
+ CXFA_ContentLayoutItem* pTrailerItem, |
+ CXFA_Node* pFormNode); |
+ void ProcessUnUseBinds(CXFA_Node* pFormNode); |
+ FX_BOOL IsAddNewRowForTrailer(CXFA_ContentLayoutItem* pTrailerItem); |
+ FX_BOOL JudgeLeaderOrTrailerForOccur(CXFA_Node* pFormNode); |
+ CXFA_ContentLayoutItem* CreateContentLayoutItem(CXFA_Node* pFormNode); |
+ |
+ protected: |
+ void DoLayoutPositionedContainer(CXFA_LayoutContext* pContext = NULL); |
+ void DoLayoutTableContainer(CXFA_Node* pLayoutNode); |
+ XFA_ItemLayoutProcessorResult DoLayoutFlowedContainer( |
+ FX_BOOL bUseBreakControl, |
+ XFA_ATTRIBUTEENUM eFlowStrategy, |
+ FX_FLOAT fHeightLimit, |
+ FX_FLOAT fRealHeight, |
+ CXFA_LayoutContext* pContext = NULL, |
+ FX_BOOL bRootForceTb = FALSE); |
+ void DoLayoutField(); |
+ void XFA_ItemLayoutProcessor_GotoNextContainerNode( |
+ CXFA_Node*& pCurActionNode, |
+ XFA_ItemLayoutProcessorStages& nCurStage, |
+ CXFA_Node* pParentContainer, |
+ FX_BOOL bUsePageBreak); |
+ |
+ FX_BOOL ProcessKeepNodesForCheckNext(CXFA_Node*& pCurActionNode, |
+ XFA_ItemLayoutProcessorStages& nCurStage, |
+ CXFA_Node*& pNextContainer, |
+ FX_BOOL& bLastKeepNode); |
+ |
+ FX_BOOL ProcessKeepNodesForBreakBefore( |
+ CXFA_Node*& pCurActionNode, |
+ XFA_ItemLayoutProcessorStages& nCurStage, |
+ CXFA_Node* pContainerNode); |
+ |
+ CXFA_Node* GetSubformSetParent(CXFA_Node* pSubformSet); |
+ |
+ public: |
+ FX_BOOL m_bKeepBreakFinish; |
+ FX_BOOL m_bIsProcessKeep; |
+ CXFA_Node* m_pKeepHeadNode; |
+ CXFA_Node* m_pKeepTailNode; |
+ CXFA_Node* m_pFormNode; |
+ CXFA_ContentLayoutItem* m_pLayoutItem; |
+#ifdef _XFA_LAYOUTITEM_ProcessCACHE_ |
+ CXFA_ContentLayoutItem* m_pOldLayoutItem; |
+#else |
+ CXFA_LayoutPageMgr* m_pPageMgrCreateItem; |
+#endif |
+ CXFA_Node* m_pCurChildNode; |
+ CXFA_ItemLayoutProcessor* m_pCurChildPreprocessor; |
+ XFA_ItemLayoutProcessorStages m_nCurChildNodeStage; |
+ FX_FLOAT m_fUsedSize; |
+ CXFA_LayoutPageMgr* m_pPageMgr; |
+ CFX_PtrList m_rgPendingNodes; |
+ FX_BOOL m_bBreakPending; |
+ CFX_ArrayTemplate<FX_FLOAT> m_rgSpecifiedColumnWidths; |
+ CFX_ArrayTemplate<CXFA_ContentLayoutItem*> m_arrayKeepItems; |
+ CFX_MapPtrToPtr m_PendingNodesCount; |
+ FX_FLOAT m_fLastRowWidth; |
+ FX_FLOAT m_fLastRowY; |
+ FX_FLOAT m_fWidthLimite; |
+ FX_BOOL m_bUseInheriated; |
+ XFA_ItemLayoutProcessorResult m_ePreProcessRs; |
+ FX_BOOL m_bHasAvailHeight; |
+}; |
+FX_BOOL XFA_ItemLayoutProcessor_IsTakingSpace(CXFA_Node* pNode); |
+#endif |