Index: fpdfsdk/include/cpdfsdk_widget.h |
diff --git a/fpdfsdk/include/cpdfsdk_widget.h b/fpdfsdk/include/cpdfsdk_widget.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7f5e34586de7ca8f3a53607562e528d9c407075d |
--- /dev/null |
+++ b/fpdfsdk/include/cpdfsdk_widget.h |
@@ -0,0 +1,191 @@ |
+// Copyright 2016 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 FPDFSDK_INCLUDE_CPDFSDK_WIDGET_H_ |
+#define FPDFSDK_INCLUDE_CPDFSDK_WIDGET_H_ |
+ |
+#include <set> |
+ |
+#include "core/fpdfdoc/include/cpdf_aaction.h" |
+#include "core/fpdfdoc/include/cpdf_action.h" |
+#include "core/fpdfdoc/include/cpdf_annot.h" |
+#include "core/fxcrt/include/fx_coordinates.h" |
+#include "core/fxcrt/include/fx_string.h" |
+#include "fpdfsdk/include/cpdfsdk_baannot.h" |
+#include "fpdfsdk/include/pdfsdk_fieldaction.h" |
+#include "fpdfsdk/pdfwindow/PWL_Wnd.h" |
+ |
+class CFX_RenderDevice; |
+class CPDF_Annot; |
+class CPDF_Dictionary; |
+class CPDF_FormControl; |
+class CPDF_FormField; |
+class CPDF_RenderOptions; |
+class CPDF_Stream; |
+class CPDFSDK_InterForm; |
+class CPDFSDK_PageView; |
+ |
+#ifdef PDF_ENABLE_XFA |
+class CXFA_FFWidget; |
+class CXFA_FFWidgetHandler; |
+#endif // PDF_ENABLE_XFA |
+ |
+class CPDFSDK_Widget : public CPDFSDK_BAAnnot { |
+ public: |
+ class Observer { |
+ public: |
+ explicit Observer(CPDFSDK_Widget** pWatchedPtr); |
+ ~Observer(); |
+ |
+ void OnWidgetDestroyed(); |
+ |
+ private: |
+ CPDFSDK_Widget** m_pWatchedPtr; |
+ }; |
+ |
+#ifdef PDF_ENABLE_XFA |
+ CXFA_FFWidget* GetMixXFAWidget() const; |
+ CXFA_FFWidget* GetGroupMixXFAWidget(); |
+ CXFA_FFWidgetHandler* GetXFAWidgetHandler() const; |
+ |
+ FX_BOOL HasXFAAAction(PDFSDK_XFAAActionType eXFAAAT); |
+ FX_BOOL OnXFAAAction(PDFSDK_XFAAActionType eXFAAAT, |
+ PDFSDK_FieldAction& data, |
+ CPDFSDK_PageView* pPageView); |
+ |
+ void Synchronize(FX_BOOL bSynchronizeElse); |
+ void SynchronizeXFAValue(); |
+ void SynchronizeXFAItems(); |
+ |
+ static void SynchronizeXFAValue(CXFA_FFDocView* pXFADocView, |
+ CXFA_FFWidget* hWidget, |
+ CPDF_FormField* pFormField, |
+ CPDF_FormControl* pFormControl); |
+ static void SynchronizeXFAItems(CXFA_FFDocView* pXFADocView, |
+ CXFA_FFWidget* hWidget, |
+ CPDF_FormField* pFormField, |
+ CPDF_FormControl* pFormControl); |
+#endif // PDF_ENABLE_XFA |
+ |
+ CPDFSDK_Widget(CPDF_Annot* pAnnot, |
+ CPDFSDK_PageView* pPageView, |
+ CPDFSDK_InterForm* pInterForm); |
+ ~CPDFSDK_Widget() override; |
+ |
+ void AddObserver(Observer* observer); |
+ void RemoveObserver(Observer* observer); |
+ |
+ CFX_ByteString GetSubType() const override; |
+ CPDF_Action GetAAction(CPDF_AAction::AActionType eAAT) override; |
+ FX_BOOL IsAppearanceValid() override; |
+ |
+ int GetLayoutOrder() const override; |
+ |
+ int GetFieldType() const; |
+ int GetFieldFlags() const; |
+ int GetRotate() const; |
+ |
+ FX_BOOL GetFillColor(FX_COLORREF& color) const; |
+ FX_BOOL GetBorderColor(FX_COLORREF& color) const; |
+ FX_BOOL GetTextColor(FX_COLORREF& color) const; |
+ FX_FLOAT GetFontSize() const; |
+ |
+ int GetSelectedIndex(int nIndex) const; |
+#ifndef PDF_ENABLE_XFA |
+ CFX_WideString GetValue() const; |
+#else |
+ CFX_WideString GetValue(FX_BOOL bDisplay = TRUE) const; |
+#endif // PDF_ENABLE_XFA |
+ CFX_WideString GetDefaultValue() const; |
+ CFX_WideString GetOptionLabel(int nIndex) const; |
+ int CountOptions() const; |
+ FX_BOOL IsOptionSelected(int nIndex) const; |
+ int GetTopVisibleIndex() const; |
+ bool IsChecked() const; |
+ int GetAlignment() const; |
+ int GetMaxLen() const; |
+#ifdef PDF_ENABLE_XFA |
+ CFX_WideString GetName() const; |
+#endif // PDF_ENABLE_XFA |
+ CFX_WideString GetAlternateName() const; |
+ |
+ void SetCheck(bool bChecked, bool bNotify); |
+ void SetValue(const CFX_WideString& sValue, FX_BOOL bNotify); |
+ void SetDefaultValue(const CFX_WideString& sValue); |
+ void SetOptionSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify); |
+ void ClearSelection(FX_BOOL bNotify); |
+ void SetTopVisibleIndex(int index); |
+ |
+#ifdef PDF_ENABLE_XFA |
+ void ResetAppearance(FX_BOOL bValueChanged); |
+#endif // PDF_ENABLE_XFA |
+ void ResetAppearance(const FX_WCHAR* sValue, FX_BOOL bValueChanged); |
+ void ResetFieldAppearance(FX_BOOL bValueChanged); |
+ void UpdateField(); |
+ CFX_WideString OnFormat(FX_BOOL& bFormated); |
+ |
+ FX_BOOL OnAAction(CPDF_AAction::AActionType type, |
+ PDFSDK_FieldAction& data, |
+ CPDFSDK_PageView* pPageView); |
+ |
+ CPDFSDK_InterForm* GetInterForm() const { return m_pInterForm; } |
+ CPDF_FormField* GetFormField() const; |
+ CPDF_FormControl* GetFormControl() const; |
+ static CPDF_FormControl* GetFormControl(CPDF_InterForm* pInterForm, |
+ const CPDF_Dictionary* pAnnotDict); |
+ |
+ void DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView); |
+ |
+ void SetAppModified(); |
+ void ClearAppModified(); |
+ FX_BOOL IsAppModified() const; |
+ |
+ int32_t GetAppearanceAge() const; |
+ int32_t GetValueAge() const; |
+ |
+ FX_BOOL IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode); |
+ void DrawAppearance(CFX_RenderDevice* pDevice, |
+ const CFX_Matrix* pUser2Device, |
+ CPDF_Annot::AppearanceMode mode, |
+ const CPDF_RenderOptions* pOptions) override; |
+ |
+ FX_BOOL HitTest(FX_FLOAT pageX, FX_FLOAT pageY); |
+ |
+ private: |
+ void ResetAppearance_PushButton(); |
+ void ResetAppearance_CheckBox(); |
+ void ResetAppearance_RadioButton(); |
+ void ResetAppearance_ComboBox(const FX_WCHAR* sValue); |
+ void ResetAppearance_ListBox(); |
+ void ResetAppearance_TextField(const FX_WCHAR* sValue); |
+ |
+ CFX_FloatRect GetClientRect() const; |
+ CFX_FloatRect GetRotatedRect() const; |
+ |
+ CFX_ByteString GetBackgroundAppStream() const; |
+ CFX_ByteString GetBorderAppStream() const; |
+ CFX_Matrix GetMatrix() const; |
+ |
+ CPWL_Color GetTextPWLColor() const; |
+ CPWL_Color GetBorderPWLColor() const; |
+ CPWL_Color GetFillPWLColor() const; |
+ |
+ void AddImageToAppearance(const CFX_ByteString& sAPType, CPDF_Stream* pImage); |
+ void RemoveAppearance(const CFX_ByteString& sAPType); |
+ |
+ CPDFSDK_InterForm* const m_pInterForm; |
+ FX_BOOL m_bAppModified; |
+ int32_t m_nAppAge; |
+ int32_t m_nValueAge; |
+ std::set<Observer*> m_Observers; |
+ |
+#ifdef PDF_ENABLE_XFA |
+ mutable CXFA_FFWidget* m_hMixXFAWidget; |
+ mutable CXFA_FFWidgetHandler* m_pWidgetHandler; |
+#endif // PDF_ENABLE_XFA |
+}; |
+ |
+#endif // FPDFSDK_INCLUDE_CPDFSDK_WIDGET_H_ |