1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FFL_FORMFILLER_H_
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FFL_FORMFILLER_H_
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "FFL_IFormFiller.h"
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "FFL_CBA_Fontmap.h"
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_Annot;
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFFL_FormFiller;
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFFL_Notify;
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFDoc_Environment;
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_PageView;
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_Document;
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_Widget;
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CFFL_PageView2PDFWindow		CFX_MapPtrTemplate<CPDFSDK_PageView*, CPWL_Wnd*>
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct FFL_KeyStrokeData
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_WideString		swValue;
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL				bFull;
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int					nSelStart;
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int					nSelEnd;
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFFL_FormFiller : /*public IBA_AnnotFiller,*/ public IPWL_Provider, public CPWL_TimerHandler
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot);
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual ~CFFL_FormFiller();
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_RECT				GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDraw(CPDFSDK_PageView *pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov									/*const CRect& rcWindow, */FX_DWORD dwFlags);
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDrawDeactive(CPDFSDK_PageView *pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								/*const CRect& rcWindow, */FX_DWORD dwFlags);
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnCreate(CPDFSDK_Annot* pAnnot);
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnLoad(CPDFSDK_Annot* pAnnot);
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDelete(CPDFSDK_Annot* pAnnot);
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, short zDelta, const CPDF_Point& point);
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnRButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnKeyDown(CPDFSDK_Annot* pAnnot, FX_UINT nKeyCode, FX_UINT nFlags);
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags);
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual	void				OnDeSelected(CPDFSDK_Annot* pAnnot);
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual	void				OnSelected(CPDFSDK_Annot* pAnnot);
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag);
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				CanCopy(CPDFSDK_Document* pDocument);
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				CanCut(CPDFSDK_Document* pDocument);
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				CanPaste(CPDFSDK_Document* pDocument);
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				DoCopy(CPDFSDK_Document* pDocument);
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				DoCut(CPDFSDK_Document* pDocument);
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				DoPaste(CPDFSDK_Document* pDocument);
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: //CPWL_TimerHandler
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				TimerProc();
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual IFX_SystemHandler*	GetSystemHandler() const;
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual CPDF_Matrix			GetWindowMatrix(void* pAttachedData);
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual CFX_WideString		LoadPopupMenuString(int nIndex);
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	virtual void				GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 									PDFSDK_FieldAction& fa);
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	virtual void				SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AActionType type,
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 									const PDFSDK_FieldAction& fa);
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	virtual FX_BOOL				IsActionDataChanged(CPDF_AAction::AActionType type, const PDFSDK_FieldAction& faOld,
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 									const PDFSDK_FieldAction& faNew);
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				SaveState(CPDFSDK_PageView* pPageView);
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				RestoreState(CPDFSDK_PageView* pPageView);
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual CPWL_Wnd* 			ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue);
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnKeyStroke(FX_BOOL bKeyDown);
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Matrix					GetCurMatrix();
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Rect					FFLtoPWL(const CPDF_Rect& rect);
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Rect					PWLtoFFL(const CPDF_Rect& rect);
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Point					FFLtoPWL(const CPDF_Point& point);
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Point					PWLtoFFL(const CPDF_Point& point);
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Point					WndtoPWL(CPDFSDK_PageView* pPageView, const CPDF_Point& pt);
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Rect					FFLtoWnd(CPDFSDK_PageView* pPageView, const CPDF_Rect& rect);
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void						SetWindowRect(CPDFSDK_PageView* pPageView, const CPDF_Rect& rcWindow);
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Rect					GetWindowRect(CPDFSDK_PageView* pPageView);
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	static void					FFL_FreeData(void* pData);
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL						CommitData(CPDFSDK_PageView* pPageView, FX_UINT nFlag);
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				IsDataChanged(CPDFSDK_PageView* pPageView);
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				SaveData(CPDFSDK_PageView* pPageView);
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				GetKeyStrokeData(CPDFSDK_PageView* pPageView, FFL_KeyStrokeData& data);
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPWL_Wnd*					GetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bNew);
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void						DestroyPDFWindow(CPDFSDK_PageView* pPageView);
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void						EscapeFiller(CPDFSDK_PageView* pPageView, FX_BOOL bDestroyPDFWindow);
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual	PWL_CREATEPARAM		GetCreateParam();
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual CPWL_Wnd*			NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView* pPageView) = 0;
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual CPDF_Rect			GetFocusBox(CPDFSDK_PageView* pPageView);
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL						IsValid() const;
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Rect					GetPDFWindowRect() const;
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_PageView*			GetCurPageView();
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void						SetChangeMark();
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				InvalidateRect(double left, double top, double right, double bottom);
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFDoc_Environment*		GetApp(){return m_pApp;}
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_Annot*				GetSDKAnnot() {return m_pAnnot;}
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFDoc_Environment*		m_pApp;
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_Widget*				m_pWidget;
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_Annot*				m_pAnnot;
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL						m_bValid;
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFFL_PageView2PDFWindow		m_Maps;
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Point					m_ptOldPos;
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFFL_Button : public CFFL_FormFiller
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFFL_Button(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget);
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual ~CFFL_Button();
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual FX_BOOL				OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point);
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual void				OnDraw(CPDFSDK_PageView *pPageView/*, HDC hDC*/, CPDFSDK_Annot* pAnnot,
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								/*const CRect& rcWindow,*/ FX_DWORD dwFlags);
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	virtual	void				OnDrawDeactive(CPDFSDK_PageView *pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot,
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								/*const CRect& rcWindow, */FX_DWORD dwFlags);
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL						m_bMouseIn;
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL						m_bMouseDown;
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//#define CFFL_IM_BOX				CFX_ArrayTemplate<CBA_EditInput*>
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
179