summaryrefslogtreecommitdiff
path: root/xfa/include/fxfa/fxfa_widget.h
blob: 0ec3eaaaf4ad087ac4a6de2efefd76f916711a7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// 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 _FXFA_WIDGET_H
#define _FXFA_WIDGET_H
class CXFA_Node;
class CXFA_FFDocView;
class CXFA_FFDoc;
class CXFA_FFApp;
class CXFA_Node;
class CXFA_EventParam;
class CXFA_FFWidget;
class CXFA_TextLayout;
class CXFA_TextProvider;
class CXFA_WidgetLayoutData;
class IFX_Font;
class CXFA_WidgetAcc;
#include "fxfa_objectacc.h"
class CXFA_WidgetAcc : public CXFA_WidgetData
{
public:
    CXFA_WidgetAcc(CXFA_FFDocView* pDocView, CXFA_Node* pNode);
    ~CXFA_WidgetAcc();

    FX_BOOL			GetName(CFX_WideString &wsName, int32_t iNameType = 0);
    FX_BOOL			ProcessValueChanged();

public:

    void			ResetData();


    void			SetImageEdit(FX_WSTR wsContentType, FX_WSTR wsHref, FX_WSTR wsData);

    CXFA_WidgetAcc*	GetExclGroup();
    CXFA_FFDocView*		GetDocView();
    CXFA_FFDoc*			GetDoc();
    CXFA_FFApp*			GetApp();
    IXFA_AppProvider*	GetAppProvider();

    int32_t		ProcessEvent(int32_t iActivity, CXFA_EventParam* pEventParam);
    int32_t		ProcessEvent(CXFA_Event& event, CXFA_EventParam* pEventParam);
    int32_t		ProcessCalculate();
    int32_t		ProcessValidate(int32_t iFlags = 0);
    int32_t		ExecuteScript(CXFA_Script script, CXFA_EventParam* pEventParam, FXJSE_HVALUE* pRetValue = NULL);

    CXFA_FFWidget*	GetNextWidget(CXFA_FFWidget* pWidget);
    void			StartWidgetLayout(FX_FLOAT &fCalcWidth, FX_FLOAT& fCalcHeight);
    FX_BOOL			FindSplitPos(int32_t iBlockIndex, FX_FLOAT &fCalcHeight);
    FX_BOOL				LoadCaption();
    FX_BOOL				LoadText();
    FX_BOOL				LoadImageImage();
    FX_BOOL				LoadImageEditImage();
    void				GetImageDpi(int32_t &iImageXDpi, int32_t &iImageYDpi);
    void				GetImageEditDpi(int32_t &iImageXDpi, int32_t &iImageYDpi);
    CXFA_TextLayout*	GetCaptionTextLayout();
    CXFA_TextLayout*	GetTextLayout();
    CFX_DIBitmap*		GetImageImage();
    CFX_DIBitmap*		GetImageEditImage();
    void				SetImageImage(CFX_DIBitmap* newImage);
    void				SetImageEditImage(CFX_DIBitmap* newImage);
    void			UpdateUIDisplay(CXFA_FFWidget* pExcept = NULL);
    void			NotifyEvent(FX_DWORD dwEvent, CXFA_FFWidget* pWidget = NULL, FX_LPVOID pParam = NULL, FX_LPVOID pAdditional = NULL);


    CXFA_Node*		GetDatasets();
    IFX_Font*		GetFDEFont();
    FX_FLOAT		GetFontSize();
    FX_ARGB			GetTextColor();
    FX_FLOAT		GetLineHeight();
    CXFA_WidgetLayoutData* GetWidgetLayoutData();
protected:
    void			ProcessScriptTestValidate(CXFA_Validate validate, int32_t iRet, FXJSE_HVALUE pRetValue, FX_BOOL bVersionFlag);
    int32_t		ProcessFormatTestValidate(CXFA_Validate validate, FX_BOOL bVersionFlag);
    int32_t		ProcessNullTestValidate(CXFA_Validate validate, int32_t iFlags, FX_BOOL bVersionFlag);
    void			GetValidateCaptionName(CFX_WideString& wsCaptionName, FX_BOOL bVersionFlag);
    void			GetValidateMessage(IXFA_AppProvider* pAppProvider, CFX_WideString& wsMessage, FX_BOOL bError, FX_BOOL bVersionFlag);
    void			CalcCaptionSize(CFX_SizeF &szCap);
    FX_BOOL			CalculateFieldAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateWidgetAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateTextEditAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateCheckButtonAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculatePushButtonAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateImageEditAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateImageAutoSize(CFX_SizeF &size);
    FX_BOOL			CalculateTextAutoSize(CFX_SizeF &size);
    FX_FLOAT		CalculateWidgetAutoHeight(FX_FLOAT fHeightCalc);
    FX_FLOAT		CalculateWidgetAutoWidth(FX_FLOAT fWidthCalc);
    FX_FLOAT		GetWidthWithoutMargin(FX_FLOAT fWidthCalc);
    FX_FLOAT		GetHeightWithoutMargin(FX_FLOAT fHeightCalc);
    void			CalculateTextContentSize(CFX_SizeF &size);
    void			CalculateAccWidthAndHeight(XFA_ELEMENT eUIType, FX_FLOAT& fWidth, FX_FLOAT& fCalcHeight);
    void			InitLayoutData();
    void			StartTextLayout(FX_FLOAT& fCalcWidth, FX_FLOAT& fCalcHeight);
    CXFA_FFDocView*		m_pDocView;
    CXFA_WidgetLayoutData* m_pLayoutData;
};
#endif