| // Copyright 2014 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 XFA_FWL_THEME_CFWL_WIDGETTP_H_ |
| #define XFA_FWL_THEME_CFWL_WIDGETTP_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "core/fxcrt/fx_coordinates.h" |
| #include "core/fxcrt/fx_system.h" |
| #include "core/fxcrt/retain_ptr.h" |
| #include "xfa/fwl/theme/cfwl_utils.h" |
| #include "xfa/fxgraphics/cxfa_graphics.h" |
| |
| class CFDE_TextOut; |
| class CFGAS_FontMgr; |
| class CFGAS_GEFont; |
| class CFWL_ThemeBackground; |
| class CFWL_ThemePart; |
| class CFWL_ThemeText; |
| class CFWL_Widget; |
| |
| #if _FX_PLATFORM_ != _FX_PLATFORM_WINDOWS_ |
| class CFX_FontSourceEnum_File; |
| #endif |
| |
| class CFWL_WidgetTP { |
| public: |
| virtual ~CFWL_WidgetTP(); |
| |
| virtual void Initialize(); |
| virtual void Finalize(); |
| |
| virtual void DrawBackground(CFWL_ThemeBackground* pParams); |
| virtual void DrawText(CFWL_ThemeText* pParams); |
| |
| const RetainPtr<CFGAS_GEFont>& GetFont() const; |
| |
| protected: |
| struct CColorData { |
| FX_ARGB clrBorder[4]; |
| FX_ARGB clrStart[4]; |
| FX_ARGB clrEnd[4]; |
| FX_ARGB clrSign[4]; |
| }; |
| |
| CFWL_WidgetTP(); |
| |
| void InitializeArrowColorData(); |
| void InitTTO(); |
| void FinalizeTTO(); |
| |
| void DrawBorder(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| CFX_Matrix* pMatrix = nullptr); |
| void FillBackground(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| CFX_Matrix* pMatrix = nullptr); |
| void FillSoildRect(CXFA_Graphics* pGraphics, |
| FX_ARGB fillColor, |
| const CFX_RectF* pRect, |
| CFX_Matrix* pMatrix = nullptr); |
| void DrawAxialShading(CXFA_Graphics* pGraphics, |
| float fx1, |
| float fy1, |
| float fx2, |
| float fy2, |
| FX_ARGB beginColor, |
| FX_ARGB endColor, |
| CXFA_GEPath* path, |
| int32_t fillMode = FXFILL_WINDING, |
| CFX_Matrix* pMatrix = nullptr); |
| void DrawFocus(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| CFX_Matrix* pMatrix = nullptr); |
| void DrawArrow(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| FWLTHEME_DIRECTION eDict, |
| FX_ARGB argSign, |
| CFX_Matrix* pMatrix = nullptr); |
| void DrawBtn(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| FWLTHEME_STATE eState, |
| CFX_Matrix* pMatrix = nullptr); |
| void DrawArrowBtn(CXFA_Graphics* pGraphics, |
| const CFX_RectF* pRect, |
| FWLTHEME_DIRECTION eDict, |
| FWLTHEME_STATE eState, |
| CFX_Matrix* pMatrix = nullptr); |
| |
| uint32_t m_dwRefCount; |
| std::unique_ptr<CFDE_TextOut> m_pTextOut; |
| RetainPtr<CFGAS_GEFont> m_pFDEFont; |
| std::unique_ptr<CColorData> m_pColorData; |
| }; |
| |
| void FWLTHEME_Release(); |
| |
| class CFWL_FontData { |
| public: |
| CFWL_FontData(); |
| virtual ~CFWL_FontData(); |
| |
| bool Equal(const WideStringView& wsFontFamily, |
| uint32_t dwFontStyles, |
| uint16_t wCodePage); |
| bool LoadFont(const WideStringView& wsFontFamily, |
| uint32_t dwFontStyles, |
| uint16_t wCodePage); |
| RetainPtr<CFGAS_GEFont> GetFont() const; |
| |
| protected: |
| WideString m_wsFamily; |
| uint32_t m_dwStyles; |
| uint32_t m_dwCodePage; |
| std::unique_ptr<CFGAS_FontMgr> m_pFontMgr; |
| RetainPtr<CFGAS_GEFont> m_pFont; |
| }; |
| |
| class CFWL_FontManager { |
| public: |
| static CFWL_FontManager* GetInstance(); |
| static void DestroyInstance(); |
| |
| RetainPtr<CFGAS_GEFont> FindFont(const WideStringView& wsFontFamily, |
| uint32_t dwFontStyles, |
| uint16_t dwCodePage); |
| |
| protected: |
| CFWL_FontManager(); |
| virtual ~CFWL_FontManager(); |
| |
| static CFWL_FontManager* s_FontManager; |
| std::vector<std::unique_ptr<CFWL_FontData>> m_FontsArray; |
| }; |
| |
| #endif // XFA_FWL_THEME_CFWL_WIDGETTP_H_ |