1 // Copyright 2014 The PDFium Authors 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_FWL_IFWL_THEMEPROVIDER_H_ 8 #define XFA_FWL_IFWL_THEMEPROVIDER_H_ 9 10 #include "core/fxcrt/fx_coordinates.h" 11 #include "core/fxcrt/retain_ptr.h" 12 #include "core/fxge/dib/fx_dib.h" 13 #include "fxjs/gc/heap.h" 14 #include "v8/include/cppgc/garbage-collected.h" 15 #include "v8/include/cppgc/member.h" 16 17 class CFGAS_GEFont; 18 19 namespace pdfium { 20 21 class CFWL_ThemeBackground; 22 class CFWL_ThemePart; 23 class CFWL_ThemeText; 24 class CFWL_Widget; 25 class CFWL_WidgetTP; 26 27 class IFWL_ThemeProvider : public cppgc::GarbageCollectedMixin { 28 public: 29 virtual ~IFWL_ThemeProvider(); 30 31 // GarbageCollectedMixin: 32 void Trace(cppgc::Visitor* visitor) const override; 33 34 virtual void DrawBackground(const CFWL_ThemeBackground& pParams) = 0; 35 virtual void DrawText(const CFWL_ThemeText& pParams) = 0; 36 virtual void CalcTextRect(const CFWL_ThemeText& pParams, 37 CFX_RectF* pRect) = 0; 38 virtual float GetCXBorderSize() const = 0; 39 virtual float GetCYBorderSize() const = 0; 40 virtual CFX_RectF GetUIMargin(const CFWL_ThemePart& pThemePart) const = 0; 41 virtual float GetFontSize(const CFWL_ThemePart& pThemePart) const = 0; 42 virtual RetainPtr<CFGAS_GEFont> GetFont(const CFWL_ThemePart& pThemePart) = 0; 43 virtual RetainPtr<CFGAS_GEFont> GetFWLFont() = 0; 44 virtual float GetLineHeight(const CFWL_ThemePart& pThemePart) const = 0; 45 virtual float GetScrollBarWidth() const = 0; 46 virtual FX_COLORREF GetTextColor(const CFWL_ThemePart& pThemePart) const = 0; 47 virtual CFX_SizeF GetSpaceAboveBelow( 48 const CFWL_ThemePart& pThemePart) const = 0; 49 50 protected: 51 explicit IFWL_ThemeProvider(cppgc::Heap* pHeap); 52 53 CFWL_WidgetTP* GetTheme(const CFWL_Widget* pWidget) const; 54 55 private: 56 cppgc::Member<CFWL_WidgetTP> m_pCheckBoxTP; 57 cppgc::Member<CFWL_WidgetTP> m_pListBoxTP; 58 cppgc::Member<CFWL_WidgetTP> m_pPictureBoxTP; 59 cppgc::Member<CFWL_WidgetTP> m_pSrollBarTP; 60 cppgc::Member<CFWL_WidgetTP> m_pEditTP; 61 cppgc::Member<CFWL_WidgetTP> m_pComboBoxTP; 62 cppgc::Member<CFWL_WidgetTP> m_pMonthCalendarTP; 63 cppgc::Member<CFWL_WidgetTP> m_pDateTimePickerTP; 64 cppgc::Member<CFWL_WidgetTP> m_pPushButtonTP; 65 cppgc::Member<CFWL_WidgetTP> m_pCaretTP; 66 cppgc::Member<CFWL_WidgetTP> m_pBarcodeTP; 67 }; 68 69 } // namespace pdfium 70 71 // TODO(crbug.com/42271761): Remove. 72 using pdfium::IFWL_ThemeProvider; 73 74 #endif // XFA_FWL_IFWL_THEMEPROVIDER_H_ 75