Home | History | Annotate | Download | only in fxfa
      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_FXFA_H_
      8 #define XFA_FXFA_FXFA_H_
      9 
     10 #include <vector>
     11 
     12 #include "core/fxcrt/cfx_retain_ptr.h"
     13 #include "xfa/fxfa/fxfa_basic.h"
     14 #include "xfa/fxfa/fxfa_widget.h"
     15 
     16 class CFGAS_GEFont;
     17 class CFX_Graphics;
     18 class CPDF_Document;
     19 class CXFA_FFPageView;
     20 class CXFA_Node;
     21 class CXFA_NodeList;
     22 class CXFA_WidgetAcc;
     23 class IFWL_AdapterTimerMgr;
     24 class IXFA_AppProvider;
     25 class IXFA_DocEnvironment;
     26 class IXFA_WidgetAccIterator;
     27 class IXFA_WidgetIterator;
     28 
     29 #define XFA_MBICON_Error 0
     30 #define XFA_MBICON_Warning 1
     31 #define XFA_MBICON_Question 2
     32 #define XFA_MBICON_Status 3
     33 #define XFA_MB_OK 0
     34 #define XFA_MB_OKCancel 1
     35 #define XFA_MB_YesNo 2
     36 #define XFA_MB_YesNoCancel 3
     37 #define XFA_IDOK 1
     38 #define XFA_IDCancel 2
     39 #define XFA_IDNo 3
     40 #define XFA_IDYes 4
     41 
     42 #define XFA_DOCVIEW_View 0x00000000
     43 #define XFA_DOCVIEW_MasterPage 0x00000001
     44 #define XFA_DOCVIEW_Design 0x00000002
     45 #define XFA_DOCTYPE_Dynamic 0
     46 #define XFA_DOCTYPE_Static 1
     47 #define XFA_DOCTYPE_XDP 2
     48 #define XFA_PARSESTATUS_StatusErr -3
     49 #define XFA_PARSESTATUS_StreamErr -2
     50 #define XFA_PARSESTATUS_SyntaxErr -1
     51 #define XFA_PARSESTATUS_Ready 0
     52 #define XFA_PARSESTATUS_Done 100
     53 #define XFA_VALIDATE_preSubmit 1
     54 #define XFA_VALIDATE_prePrint 2
     55 #define XFA_VALIDATE_preExecute 3
     56 #define XFA_VALIDATE_preSave 4
     57 
     58 #define XFA_INVALIDATE_AllPages 0x00000000
     59 #define XFA_INVALIDATE_CurrentPage 0x00000001
     60 #define XFA_PRINTOPT_ShowDialog 0x00000001
     61 #define XFA_PRINTOPT_CanCancel 0x00000002
     62 #define XFA_PRINTOPT_ShrinkPage 0x00000004
     63 #define XFA_PRINTOPT_AsImage 0x00000008
     64 #define XFA_PRINTOPT_ReverseOrder 0x00000010
     65 #define XFA_PRINTOPT_PrintAnnot 0x00000020
     66 #define XFA_PAGEVIEWEVENT_PostAdded 1
     67 #define XFA_PAGEVIEWEVENT_PostRemoved 3
     68 #define XFA_PAGEVIEWEVENT_StopLayout 4
     69 
     70 #define XFA_EVENTERROR_Success 1
     71 #define XFA_EVENTERROR_Error -1
     72 #define XFA_EVENTERROR_NotExist 0
     73 #define XFA_EVENTERROR_Disabled 2
     74 
     75 #define XFA_RENDERSTATUS_Ready 1
     76 #define XFA_RENDERSTATUS_ToBeContinued 2
     77 #define XFA_RENDERSTATUS_Done 3
     78 #define XFA_RENDERSTATUS_Failed -1
     79 
     80 #define XFA_TRAVERSEWAY_Tranvalse 0x0001
     81 #define XFA_TRAVERSEWAY_Form 0x0002
     82 
     83 enum XFA_WidgetStatus {
     84   XFA_WidgetStatus_None = 0,
     85 
     86   XFA_WidgetStatus_Access = 1 << 0,
     87   XFA_WidgetStatus_ButtonDown = 1 << 1,
     88   XFA_WidgetStatus_Disabled = 1 << 2,
     89   XFA_WidgetStatus_Focused = 1 << 3,
     90   XFA_WidgetStatus_Highlight = 1 << 4,
     91   XFA_WidgetStatus_Printable = 1 << 5,
     92   XFA_WidgetStatus_RectCached = 1 << 6,
     93   XFA_WidgetStatus_TextEditValueChanged = 1 << 7,
     94   XFA_WidgetStatus_Viewable = 1 << 8,
     95   XFA_WidgetStatus_Visible = 1 << 9
     96 };
     97 
     98 enum XFA_WIDGETORDER {
     99   XFA_WIDGETORDER_PreOrder,
    100 };
    101 
    102 enum XFA_WIDGETTYPE {
    103   XFA_WIDGETTYPE_Barcode,
    104   XFA_WIDGETTYPE_PushButton,
    105   XFA_WIDGETTYPE_CheckButton,
    106   XFA_WIDGETTYPE_RadioButton,
    107   XFA_WIDGETTYPE_DatetimeEdit,
    108   XFA_WIDGETTYPE_DecimalField,
    109   XFA_WIDGETTYPE_NumericField,
    110   XFA_WIDGETTYPE_Signature,
    111   XFA_WIDGETTYPE_TextEdit,
    112   XFA_WIDGETTYPE_DropdownList,
    113   XFA_WIDGETTYPE_ListBox,
    114   XFA_WIDGETTYPE_ImageField,
    115   XFA_WIDGETTYPE_PasswordEdit,
    116   XFA_WIDGETTYPE_Arc,
    117   XFA_WIDGETTYPE_Rectangle,
    118   XFA_WIDGETTYPE_Image,
    119   XFA_WIDGETTYPE_Line,
    120   XFA_WIDGETTYPE_Text,
    121   XFA_WIDGETTYPE_ExcludeGroup,
    122   XFA_WIDGETTYPE_Subform,
    123   XFA_WIDGETTYPE_Unknown,
    124 };
    125 
    126 // Probably should be called IXFA_AppDelegate.
    127 class IXFA_AppProvider {
    128  public:
    129   virtual ~IXFA_AppProvider() {}
    130 
    131   /**
    132    * Returns the language of the running host application. Such as zh_CN
    133    */
    134   virtual CFX_WideString GetLanguage() = 0;
    135 
    136   /**
    137    * Returns the platform of the machine running the script. Such as WIN
    138    */
    139   virtual CFX_WideString GetPlatform() = 0;
    140 
    141   /**
    142    * Get application name, such as Phantom.
    143    */
    144   virtual CFX_WideString GetAppName() = 0;
    145 
    146   /**
    147    * Get application message box title.
    148    */
    149   virtual CFX_WideString GetAppTitle() const = 0;
    150 
    151   /**
    152    * Causes the system to play a sound.
    153    * @param[in] dwType The system code for the appropriate sound.0 (Error)1
    154    * (Warning)2 (Question)3 (Status)4 (Default)
    155    */
    156   virtual void Beep(uint32_t dwType) = 0;
    157 
    158   /**
    159    * Displays a message box.
    160    * @param[in] wsMessage    - Message string to display in box.
    161    * @param[in] wsTitle      - Title string for box.
    162    * @param[in] dwIconType   - Icon type, refer to XFA_MBICON.
    163    * @param[in] dwButtonType - Button type, refer to XFA_MESSAGEBUTTON.
    164    * @return A valid integer representing the value of the button pressed by the
    165    * user, refer to XFA_ID.
    166    */
    167   virtual int32_t MsgBox(const CFX_WideString& wsMessage,
    168                          const CFX_WideString& wsTitle = L"",
    169                          uint32_t dwIconType = 0,
    170                          uint32_t dwButtonType = 0) = 0;
    171 
    172   /**
    173    * Get a response from the user.
    174    * @param[in] wsQuestion      - Message string to display in box.
    175    * @param[in] wsTitle         - Title string for box.
    176    * @param[in] wsDefaultAnswer - Initial contents for answer.
    177    * @param[in] bMask           - Mask the user input with asterisks when true,
    178    * @return A string containing the user's response.
    179    */
    180   virtual CFX_WideString Response(const CFX_WideString& wsQuestion,
    181                                   const CFX_WideString& wsTitle = L"",
    182                                   const CFX_WideString& wsDefaultAnswer = L"",
    183                                   bool bMask = true) = 0;
    184 
    185   /**
    186    * Download something from somewhere.
    187    * @param[in] wsURL - http, ftp, such as
    188    * "http://www.w3.org/TR/REC-xml-names/".
    189    */
    190   virtual CFX_RetainPtr<IFX_SeekableReadStream> DownloadURL(
    191       const CFX_WideString& wsURL) = 0;
    192 
    193   /**
    194    * POST data to the given url.
    195    * @param[in] wsURL         the URL being uploaded.
    196    * @param[in] wsData        the data being uploaded.
    197    * @param[in] wsContentType the content type of data including text/html,
    198    * text/xml, text/plain, multipart/form-data,
    199    *                          application/x-www-form-urlencoded,
    200    * application/octet-stream, any valid MIME type.
    201    * @param[in] wsEncode      the encode of data including UTF-8, UTF-16,
    202    * ISO8859-1, any recognized [IANA]character encoding
    203    * @param[in] wsHeader      any additional HTTP headers to be included in the
    204    * post.
    205    * @param[out] wsResponse   decoded response from server.
    206    * @return true Server permitted the post request, false otherwise.
    207    */
    208   virtual bool PostRequestURL(const CFX_WideString& wsURL,
    209                               const CFX_WideString& wsData,
    210                               const CFX_WideString& wsContentType,
    211                               const CFX_WideString& wsEncode,
    212                               const CFX_WideString& wsHeader,
    213                               CFX_WideString& wsResponse) = 0;
    214 
    215   /**
    216    * PUT data to the given url.
    217    * @param[in] wsURL         the URL being uploaded.
    218    * @param[in] wsData            the data being uploaded.
    219    * @param[in] wsEncode      the encode of data including UTF-8, UTF-16,
    220    * ISO8859-1, any recognized [IANA]character encoding
    221    * @return true Server permitted the post request, false otherwise.
    222    */
    223   virtual bool PutRequestURL(const CFX_WideString& wsURL,
    224                              const CFX_WideString& wsData,
    225                              const CFX_WideString& wsEncode) = 0;
    226 
    227   virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;
    228 };
    229 
    230 class IXFA_DocEnvironment {
    231  public:
    232   virtual ~IXFA_DocEnvironment() {}
    233 
    234   virtual void SetChangeMark(CXFA_FFDoc* hDoc) = 0;
    235   virtual void InvalidateRect(CXFA_FFPageView* pPageView,
    236                               const CFX_RectF& rt,
    237                               uint32_t dwFlags) = 0;
    238   virtual void DisplayCaret(CXFA_FFWidget* hWidget,
    239                             bool bVisible,
    240                             const CFX_RectF* pRtAnchor) = 0;
    241   virtual bool GetPopupPos(CXFA_FFWidget* hWidget,
    242                            FX_FLOAT fMinPopup,
    243                            FX_FLOAT fMaxPopup,
    244                            const CFX_RectF& rtAnchor,
    245                            CFX_RectF& rtPopup) = 0;
    246   virtual bool PopupMenu(CXFA_FFWidget* hWidget, CFX_PointF ptPopup) = 0;
    247   virtual void PageViewEvent(CXFA_FFPageView* pPageView, uint32_t dwFlags) = 0;
    248   virtual void WidgetPostAdd(CXFA_FFWidget* hWidget,
    249                              CXFA_WidgetAcc* pWidgetData) = 0;
    250   virtual void WidgetPreRemove(CXFA_FFWidget* hWidget,
    251                                CXFA_WidgetAcc* pWidgetData) = 0;
    252 
    253   virtual int32_t CountPages(CXFA_FFDoc* hDoc) = 0;
    254   virtual int32_t GetCurrentPage(CXFA_FFDoc* hDoc) = 0;
    255   virtual void SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) = 0;
    256   virtual bool IsCalculationsEnabled(CXFA_FFDoc* hDoc) = 0;
    257   virtual void SetCalculationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) = 0;
    258   virtual void GetTitle(CXFA_FFDoc* hDoc, CFX_WideString& wsTitle) = 0;
    259   virtual void SetTitle(CXFA_FFDoc* hDoc, const CFX_WideString& wsTitle) = 0;
    260   virtual void ExportData(CXFA_FFDoc* hDoc,
    261                           const CFX_WideString& wsFilePath,
    262                           bool bXDP) = 0;
    263   virtual void GotoURL(CXFA_FFDoc* hDoc, const CFX_WideString& bsURL) = 0;
    264   virtual bool IsValidationsEnabled(CXFA_FFDoc* hDoc) = 0;
    265   virtual void SetValidationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) = 0;
    266   virtual void SetFocusWidget(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) = 0;
    267   virtual void Print(CXFA_FFDoc* hDoc,
    268                      int32_t nStartPage,
    269                      int32_t nEndPage,
    270                      uint32_t dwOptions) = 0;
    271   virtual FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) = 0;
    272 
    273   virtual bool SubmitData(CXFA_FFDoc* hDoc, CXFA_Submit submit) = 0;
    274   virtual bool GetGlobalProperty(CXFA_FFDoc* hDoc,
    275                                  const CFX_ByteStringC& szPropName,
    276                                  CFXJSE_Value* pValue) = 0;
    277   virtual bool SetGlobalProperty(CXFA_FFDoc* hDoc,
    278                                  const CFX_ByteStringC& szPropName,
    279                                  CFXJSE_Value* pValue) = 0;
    280   virtual CFX_RetainPtr<IFX_SeekableReadStream> OpenLinkedFile(
    281       CXFA_FFDoc* hDoc,
    282       const CFX_WideString& wsLink) = 0;
    283 };
    284 
    285 class IXFA_WidgetIterator {
    286  public:
    287   virtual ~IXFA_WidgetIterator() {}
    288 
    289   virtual void Reset() = 0;
    290   virtual CXFA_FFWidget* MoveToFirst() = 0;
    291   virtual CXFA_FFWidget* MoveToLast() = 0;
    292   virtual CXFA_FFWidget* MoveToNext() = 0;
    293   virtual CXFA_FFWidget* MoveToPrevious() = 0;
    294   virtual CXFA_FFWidget* GetCurrentWidget() = 0;
    295   virtual bool SetCurrentWidget(CXFA_FFWidget* hWidget) = 0;
    296 };
    297 
    298 #endif  // XFA_FXFA_FXFA_H_
    299