1 // Copyright 2014 PDFium Authors. All rights reserved.
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 #ifndef XFA_FXFA_PARSER_XFA_SCRIPT_LAYOUTPSEUDOMODEL_H_
8 #define XFA_FXFA_PARSER_XFA_SCRIPT_LAYOUTPSEUDOMODEL_H_
9 
10 #include "fxjs/include/cfxjse_arguments.h"
11 #include "xfa/fxfa/parser/xfa_doclayout.h"
12 #include "xfa/fxfa/parser/xfa_object.h"
13 
14 enum XFA_LAYOUTMODEL_HWXY {
15   XFA_LAYOUTMODEL_H,
16   XFA_LAYOUTMODEL_W,
17   XFA_LAYOUTMODEL_X,
18   XFA_LAYOUTMODEL_Y
19 };
20 
21 class CScript_LayoutPseudoModel : public CXFA_Object {
22  public:
23   explicit CScript_LayoutPseudoModel(CXFA_Document* pDocument);
24   ~CScript_LayoutPseudoModel() override;
25 
26   void Ready(CFXJSE_Value* pValue, FX_BOOL bSetting, XFA_ATTRIBUTE eAttribute);
27 
28   void HWXY(CFXJSE_Arguments* pArguments, XFA_LAYOUTMODEL_HWXY layoutModel);
29   void H(CFXJSE_Arguments* pArguments);
30   void W(CFXJSE_Arguments* pArguments);
31   void X(CFXJSE_Arguments* pArguments);
32   void Y(CFXJSE_Arguments* pArguments);
33   void NumberedPageCount(CFXJSE_Arguments* pArguments, FX_BOOL bNumbered);
34   void PageCount(CFXJSE_Arguments* pArguments);
35   void PageSpan(CFXJSE_Arguments* pArguments);
36   void Page(CFXJSE_Arguments* pArguments);
37   void PageContent(CFXJSE_Arguments* pArguments);
38   void AbsPageCount(CFXJSE_Arguments* pArguments);
39   void AbsPageCountInBatch(CFXJSE_Arguments* pArguments);
40   void SheetCountInBatch(CFXJSE_Arguments* pArguments);
41   void Relayout(CFXJSE_Arguments* pArguments);
42   void AbsPageSpan(CFXJSE_Arguments* pArguments);
43   void AbsPageInBatch(CFXJSE_Arguments* pArguments);
44   void SheetInBatch(CFXJSE_Arguments* pArguments);
45   void Sheet(CFXJSE_Arguments* pArguments);
46   void RelayoutPageArea(CFXJSE_Arguments* pArguments);
47   void SheetCount(CFXJSE_Arguments* pArguments);
48   void AbsPage(CFXJSE_Arguments* pArguments);
49 
50  protected:
51   void GetObjArray(CXFA_LayoutProcessor* pDocLayout,
52                    int32_t iPageNo,
53                    const CFX_WideString& wsType,
54                    FX_BOOL bOnPageArea,
55                    CXFA_NodeArray& retArray);
56   void PageImp(CFXJSE_Arguments* pArguments, FX_BOOL bAbsPage);
57 };
58 
59 #endif  // XFA_FXFA_PARSER_XFA_SCRIPT_LAYOUTPSEUDOMODEL_H_
60