blob: 80cf310e60f93e062389d87c0ee0d2732ddc57c1 [file] [log] [blame]
kumarashishg826308d2023-06-23 13:21:22 +00001// Copyright 2017 The PDFium Authors
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -07002// 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 FXJS_XFA_CJX_LAYOUTPSEUDOMODEL_H_
8#define FXJS_XFA_CJX_LAYOUTPSEUDOMODEL_H_
9
10#include <vector>
11
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070012#include "fxjs/xfa/cjx_object.h"
Haibo Huang49cc9302020-04-27 16:14:24 -070013#include "fxjs/xfa/jse_define.h"
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070014
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070015class CScript_LayoutPseudoModel;
16class CXFA_LayoutProcessor;
17class CXFA_Node;
18
Haibo Huang49cc9302020-04-27 16:14:24 -070019class CJX_LayoutPseudoModel final : public CJX_Object {
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070020 public:
kumarashishg826308d2023-06-23 13:21:22 +000021 CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070022 ~CJX_LayoutPseudoModel() override;
23
Haibo Huang49cc9302020-04-27 16:14:24 -070024 // CJX_Object:
25 bool DynamicTypeIs(TypeTag eType) const override;
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070026
Haibo Huang49cc9302020-04-27 16:14:24 -070027 JSE_METHOD(absPage);
28 JSE_METHOD(absPageCount);
29 JSE_METHOD(absPageCountInBatch);
30 JSE_METHOD(absPageInBatch);
31 JSE_METHOD(absPageSpan);
32 JSE_METHOD(h);
33 JSE_METHOD(page);
34 JSE_METHOD(pageContent);
35 JSE_METHOD(pageCount);
36 JSE_METHOD(pageSpan);
37 JSE_METHOD(relayout);
38 JSE_METHOD(relayoutPageArea);
39 JSE_METHOD(sheet);
40 JSE_METHOD(sheetCount);
41 JSE_METHOD(sheetCountInBatch);
42 JSE_METHOD(sheetInBatch);
43 JSE_METHOD(w);
44 JSE_METHOD(x);
45 JSE_METHOD(y);
46
47 JSE_PROP(ready);
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070048
49 private:
kumarashishg826308d2023-06-23 13:21:22 +000050 enum class HWXY { kH, kW, kX, kY };
51
52 explicit CJX_LayoutPseudoModel(CScript_LayoutPseudoModel* model);
53
Haibo Huang49cc9302020-04-27 16:14:24 -070054 using Type__ = CJX_LayoutPseudoModel;
55 using ParentType__ = CJX_Object;
56
57 static const TypeTag static_type__ = TypeTag::LayoutPseudoModel;
58 static const CJX_MethodSpec MethodSpecs[];
59
kumarashishg826308d2023-06-23 13:21:22 +000060 CJS_Result AllPageCount(CFXJSE_Engine* runtime);
61 CJS_Result NumberedPageCount(CFXJSE_Engine* runtime);
62 CJS_Result DoHWXYInternal(CFXJSE_Engine* runtime,
63 const std::vector<v8::Local<v8::Value>>& params,
64 HWXY layoutModel);
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070065 std::vector<CXFA_Node*> GetObjArray(CXFA_LayoutProcessor* pDocLayout,
66 int32_t iPageNo,
67 const WideString& wsType,
68 bool bOnPageArea);
kumarashishg826308d2023-06-23 13:21:22 +000069 CJS_Result PageInternals(CFXJSE_Engine* runtime,
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070070 const std::vector<v8::Local<v8::Value>>& params,
71 bool bAbsPage);
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070072};
73
74#endif // FXJS_XFA_CJX_LAYOUTPSEUDOMODEL_H_