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 _FSDK_BASEFORM_H_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FSDK_BASEFORM_H_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if _FX_OS_ == _FX_ANDROID_ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "time.h" 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include <ctime> 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_Document; 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_DateTime; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CPWL_Color; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFFL_FormFiller; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_PageView; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_InterForm; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct _PDFSDK_FieldAction 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov _PDFSDK_FieldAction() 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bModifier = FALSE; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bShift = FALSE; 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nCommitKey = 0; 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bKeyDown = FALSE; 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nSelEnd = nSelStart = 0; 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bWillCommit = FALSE; 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bFieldFull = FALSE; 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bRC = TRUE; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bModifier; //in 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bShift; //in 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nCommitKey; //in 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sChange; //in[out] 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sChangeEx; //in 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bKeyDown; //in 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelEnd; //in[out] 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelStart; //in[out] 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sValue; //in[out] 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bWillCommit; //in 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bFieldFull; //in 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC; //in[out] 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}PDFSDK_FieldAction; 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_Widget:public CPDFSDK_Annot 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView, CPDFSDK_InterForm* pInterForm); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDFSDK_Widget(); 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CFX_ByteString GetSubType() const; 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT); 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetFieldType() const; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //define layout order to 2. 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int GetLayoutOrder() {return 2;} 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FIELDFLAG_READONLY 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FIELDFLAG_REQUIRED 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FIELDFLAG_NOEXPORT 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetFieldFlags() const; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetRotate() const; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetFillColor(FX_COLORREF& color) const; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetBorderColor(FX_COLORREF& color) const; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetTextColor(FX_COLORREF& color) const; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetFontSize() const; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetSelectedIndex(int nIndex) const; 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetValue() const; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetDefaultValue() const; 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetOptionLabel(int nIndex) const; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int CountOptions() const; 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsOptionSelected(int nIndex) const; 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetTopVisibleIndex() const; 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsChecked() const; 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BF_ALIGN_LEFT 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BF_ALIGN_MIDDL 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BF_ALIGN_RIGHT 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetAlignment() const; 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetMaxLen() const; 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetAlternateName() const; 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//Set Properties. 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCheck(FX_BOOL bChecked, FX_BOOL bNotify); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetValue(const CFX_WideString& sValue, FX_BOOL bNotify); 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetDefaultValue(const CFX_WideString& sValue); 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetOptionSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify); 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ClearSelection(FX_BOOL bNotify); 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetTopVisibleIndex(int index); 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance(FX_LPCWSTR sValue, FX_BOOL bValueChanged); 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetFieldAppearance(FX_BOOL bValueChanged); 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void UpdateField(); 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString OnFormat(int nCommitKey, FX_BOOL& bFormated); 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//Message. 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL OnAAction(CPDF_AAction::AActionType type, PDFSDK_FieldAction& data, 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView); 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_InterForm* GetInterForm() const {return m_pInterForm;} 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* GetFormField() const; 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* GetFormControl() const; 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_FormControl* GetFormControl(CPDF_InterForm* pInterForm, CPDF_Dictionary* pAnnotDict); 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView); 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAppModified(); 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ClearAppModified(); 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsAppModified() const; 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetAppearanceAge() const; 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetValueAge() const; 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_PushButton(); 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_CheckBox(); 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_RadioButton(); 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_ComboBox(FX_LPCWSTR sValue); 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_ListBox(); 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetAppearance_TextField(FX_LPCWSTR sValue); 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect GetClientRect() const; 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect GetRotatedRect() const; 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetBackgroundAppStream() const; 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString GetBorderAppStream() const; 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Matrix GetMatrix() const; 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color GetTextPWLColor() const; 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color GetBorderPWLColor() const; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color GetFillPWLColor() const; 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddImageToAppearance(const CFX_ByteString& sAPType, CPDF_Stream* pImage); 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAppearance(const CFX_ByteString& sAPType); 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode); 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions); 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL HitTest(FX_FLOAT pageX, FX_FLOAT pageY); 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_InterForm* m_pInterForm; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bAppModified; 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nAppAge; 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nValueAge; 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CPDFSDK_WidgetMap CFX_MapPtrTemplate<CPDF_FormControl*, CPDFSDK_Widget*> 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDFSDK_InterForm : public CPDF_FormNotify 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_InterForm(CPDFSDK_Document* pDocument); 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPDFSDK_InterForm(); 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Destroy(); 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDF_InterForm* GetInterForm(); 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* GetDocument(); 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL HighlightWidgets(); 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget* GetSibling(CPDFSDK_Widget* pWidget, FX_BOOL bNext) const; 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget* GetWidget(CPDF_FormControl* pControl) const; 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetWidgets(const CFX_WideString& sFieldName, CFX_PtrArray& widgets); 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetWidgets(CPDF_FormField* pField, CFX_PtrArray& widgets); 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget); 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveMap(CPDF_FormControl* pControl); 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EnableCalculate(FX_BOOL bEnabled); 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsCalculateEnabled() const; 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef _WIN32 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* LoadImageFromFile(const CFX_WideString& sFile); 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnKeyStrokeCommit(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC); 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnValidate(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC); 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnCalculate(CPDF_FormField* pFormField = NULL); 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString OnFormat(CPDF_FormField* pFormField, int nCommitKey, FX_BOOL& bFormated); 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ResetFieldAppearance(CPDF_FormField* pFormField, FX_LPCWSTR sValue, FX_BOOL bValueChanged); 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void UpdateField(CPDF_FormField* pFormField); 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL DoAction_Hide(const CPDF_Action& action); 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL DoAction_SubmitForm(const CPDF_Action& action); 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL DoAction_ResetForm(const CPDF_Action& action); 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL DoAction_ImportData(const CPDF_Action& action); 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetFieldFromObjects(const CFX_PtrArray& objects, CFX_PtrArray& fields); 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsValidField(CPDF_Dictionary* pFieldDict); 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SubmitFields(const CFX_WideString& csDestination, const CFX_PtrArray& fields, 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bIncludeOrExclude, FX_BOOL bUrlEncoded); 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SubmitForm(const CFX_WideString& sDestination, FX_BOOL bUrlEncoded); 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ImportFormFromFDFFile(const CFX_WideString& csFDFFileName, FX_BOOL bNotify); 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ExportFormToFDFFile(const CFX_WideString& sFDFFileName); 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ExportFormToFDFTextBuf(CFX_ByteTextBuf& textBuf); 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ExportFieldsToFDFFile(const CFX_WideString& sFDFFileName, const CFX_PtrArray& fields, 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bIncludeOrExclude); 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ExportFieldsToFDFTextBuf(const CFX_PtrArray& fields,FX_BOOL bIncludeOrExclude, CFX_ByteTextBuf& textBuf); 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ExportFormToTxtFile(const CFX_WideString& sTxtFileName); 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL ImportFormFromTxtFile(const CFX_WideString& sTxtFileName); 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetTemporaryFileName(const CFX_WideString& sFileExt); 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int BeforeValueChange(const CPDF_FormField* pField, CFX_WideString& csValue); 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AfterValueChange(const CPDF_FormField* pField); 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int BeforeSelectionChange(const CPDF_FormField* pField, CFX_WideString& csValue); 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AfterSelectionChange(const CPDF_FormField* pField); 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AfterCheckedStatusChange(const CPDF_FormField* pField, const CFX_ByteArray& statusArray); 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int BeforeFormReset(const CPDF_InterForm* pForm); 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AfterFormReset(const CPDF_InterForm* pForm); 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int BeforeFormImportData(const CPDF_InterForm* pForm); 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual int AfterFormImportData(const CPDF_InterForm* pForm); 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL FDFToURLEncodedData(CFX_WideString csFDFFile, CFX_WideString csTxtFile); 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL FDFToURLEncodedData(FX_LPBYTE& pBuf, FX_STRSIZE& nBufSize); 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int GetPageIndexByAnnotDict(CPDF_Document* pDocument, CPDF_Dictionary* pAnnotDict) const; 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void DoFDFBuffer(CFX_ByteString sBuffer); 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* m_pDocument; 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_InterForm* m_pInterForm; 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_WidgetMap m_Map; 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bCalculate; 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bBusy; 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsNeedHighLight(int nFieldType); 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAllHighLight(); 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetHighlightAlpha(FX_BYTE alpha) {m_iHighlightAlpha = alpha;} 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BYTE GetHighlightAlpha() {return m_iHighlightAlpha;} 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetHighlightColor(FX_COLORREF clr, int nFieldType); 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF GetHighlightColor(int nFieldType); 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF m_aHighlightColor[6]; 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BYTE m_iHighlightAlpha; 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bNeedHightlight[6]; 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define BAI_STRUCTURE 0 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define BAI_ROW 1 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define BAI_COLUMN 2 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CPDFSDK_Annots CFX_ArrayTemplate<CPDFSDK_Annot*> 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CPDFSDK_SortAnnots CGW_ArrayTemplate<CPDFSDK_Annot*> 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CBA_AnnotIterator 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_AnnotIterator(CPDFSDK_PageView* pPageView, const CFX_ByteString& sType, const CFX_ByteString& sSubType); 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CBA_AnnotIterator(); 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDFSDK_Annot* GetFirstAnnot(); 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDFSDK_Annot* GetLastAnnot(); 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDFSDK_Annot* GetNextAnnot(CPDFSDK_Annot* pAnnot); 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDFSDK_Annot* GetPrevAnnot(CPDFSDK_Annot* pAnnot); 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Release(){delete this;} 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GenerateResults(); 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static int CompareByLeft(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2); 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static int CompareByTop(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2); 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CPDF_Rect GetAnnotRect(CPDFSDK_Annot* pAnnot); 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* m_pPageView; 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_sType; 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString m_sSubType; 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int m_nTabs; 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annots m_Annots; 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif //#define _FSDK_BASEFORM_H_ 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 293