1 // Copyright 2014 PDFium Authors. All rights reserved.
\r
2 // Use of this source code is governed by a BSD-style license that can be
\r
3 // found in the LICENSE file.
\r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
\r
7 #ifndef _FWL_WIDGETTP_H
\r
8 #define _FWL_WIDGETTP_H
\r
10 class IFWL_ThemeProvider;
\r
15 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
\r
16 class IFX_FontSourceEnum;
\r
18 class CFWL_WidgetTP;
\r
19 class CFWL_ArrowData;
\r
20 class CFWL_WidgetTP : public CFX_Object
\r
23 virtual FX_BOOL IsValidWidget(IFWL_Widget *pWidget);
\r
24 virtual FX_DWORD GetThemeID(IFWL_Widget *pWidget);
\r
25 virtual FX_DWORD SetThemeID(IFWL_Widget *pWidget, FX_DWORD dwThemeID, FX_BOOL bChildren = TRUE);
\r
26 virtual FWL_ERR GetThemeMatrix(IFWL_Widget *pWidget, CFX_Matrix &matrix);
\r
27 virtual FWL_ERR SetThemeMatrix(IFWL_Widget *pWidget, const CFX_Matrix &matrix);
\r
28 virtual FX_BOOL DrawBackground(CFWL_ThemeBackground *pParams);
\r
29 virtual FX_BOOL DrawText(CFWL_ThemeText *pParams);
\r
30 virtual FX_LPVOID GetCapacity(CFWL_ThemePart *pThemePart, FX_DWORD dwCapacity);
\r
31 virtual FX_BOOL IsCustomizedLayout(IFWL_Widget *pWidget);
\r
32 virtual FWL_ERR GetPartRect(CFWL_ThemePart *pThemePart, CFX_RectF &rtPart);
\r
33 virtual FX_BOOL IsInPart(CFWL_ThemePart *pThemePart, FX_FLOAT fx, FX_FLOAT fy);
\r
34 virtual FX_BOOL CalcTextRect(CFWL_ThemeText *pParams, CFX_RectF &rect);
\r
35 virtual FWL_ERR Initialize();
\r
36 virtual FWL_ERR Finalize();
\r
37 virtual ~CFWL_WidgetTP();
\r
38 FWL_ERR SetFont(IFWL_Widget *pWidget, FX_LPCWSTR strFont, FX_FLOAT fFontSize, FX_ARGB rgbFont);
\r
39 FWL_ERR SetFont(IFWL_Widget *pWidget, IFX_Font *pFont, FX_FLOAT fFontSize, FX_ARGB rgbFont);
\r
40 IFX_Font* GetFont(IFWL_Widget *pWidget);
\r
44 FX_ERR FinalizeTTO();
\r
45 void DrawEdge(CFX_Graphics *pGraphics, FX_DWORD dwStyles, const CFX_RectF *pRect, CFX_Matrix *pMatrix = NULL);
\r
46 void Draw3DRect(CFX_Graphics *pGraphics, FWLTHEME_EDGE eType, FX_FLOAT fWidth, const CFX_RectF *pRect, FX_ARGB cr1, FX_ARGB cr2, FX_ARGB cr3, FX_ARGB cr4, CFX_Matrix *pMatrix = NULL);
\r
47 void Draw3DCircle(CFX_Graphics *pGraphics, FWLTHEME_EDGE eType, FX_FLOAT fWidth, const CFX_RectF *pRect, FX_ARGB cr1, FX_ARGB cr2, FX_ARGB cr3, FX_ARGB cr4, CFX_Matrix *pMatrix = NULL);
\r
48 void DrawBorder(CFX_Graphics *pGraphics, const CFX_RectF *pRect, CFX_Matrix *pMatrix = NULL);
\r
49 void FillBackground(CFX_Graphics *pGraphics, const CFX_RectF *pRect, CFX_Matrix *pMatrix = NULL);
\r
50 void FillSoildRect(CFX_Graphics *pGraphics, FX_ARGB fillColor, const CFX_RectF *pRect, CFX_Matrix *pMatrix = NULL);
\r
51 void DrawAxialShading(CFX_Graphics *pGraphics, FX_FLOAT fx1, FX_FLOAT fy1, FX_FLOAT fx2, FX_FLOAT fy2, FX_ARGB beginColor, FX_ARGB endColor, CFX_Path *path, FX_INT32 fillMode = FXFILL_WINDING, CFX_Matrix *pMatrix = NULL);
\r
52 void DrawAnnulusRect(CFX_Graphics *pGraphics, FX_ARGB fillColor, const CFX_RectF *pRect, FX_FLOAT fRingWidth = 1, CFX_Matrix *pMatrix = NULL);
\r
53 void DrawAnnulusCircle(CFX_Graphics *pGraphics, FX_ARGB fillColor, const CFX_RectF *pRect, FX_FLOAT fWidth = 1, CFX_Matrix *pMatrix = NULL);
\r
54 void DrawFocus(CFX_Graphics *pGraphics, const CFX_RectF *pRect, CFX_Matrix *pMatrix = NULL);
\r
55 void DrawArrow(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_DIRECTION eDict, FX_ARGB argbFill, FX_BOOL bPressed, CFX_Matrix *pMatrix = NULL);
\r
56 void DrawArrow(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_DIRECTION eDict, FX_ARGB argSign, CFX_Matrix *pMatrix = NULL);
\r
57 void DrawBtn(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix = NULL);
\r
58 void DrawArrowBtn(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_DIRECTION eDict, FWLTHEME_STATE eState, CFX_Matrix *pMatrix = NULL);
\r
59 FWLCOLOR BlendColor(FWLCOLOR srcColor, FWLCOLOR renderColor, FX_BYTE scale);
\r
60 FX_DWORD m_dwRefCount;
\r
61 IFDE_TextOut *m_pTextOut;
\r
62 IFX_Font *m_pFDEFont;
\r
65 CFX_RectF m_rtMargin;
\r
66 FX_DWORD m_dwThemeID;
\r
69 FX_BOOL FWLTHEME_Init();
\r
70 void FWLTHEME_Release();
\r
71 FX_DWORD FWL_GetThemeLayout(FX_DWORD dwThemeID);
\r
72 FX_DWORD FWL_GetThemeColor(FX_DWORD dwThemeID);
\r
73 FX_DWORD FWL_MakeThemeID(FX_DWORD dwLayout, FX_DWORD dwColor);
\r
74 class CFWL_ArrowData : public CFX_Object
\r
77 static CFWL_ArrowData* GetInstance();
\r
78 static FX_BOOL IsInstance();
\r
79 static void DestroyInstance();
\r
80 virtual ~CFWL_ArrowData();
\r
81 void SetColorData(FX_DWORD dwID);
\r
83 class CColorData : public CFX_Object
\r
86 FX_ARGB clrBorder[4];
\r
87 FX_ARGB clrStart[4];
\r
93 static CFWL_ArrowData *m_pInstance;
\r
95 class CFWL_FontData : public CFX_Object
\r
99 virtual ~CFWL_FontData();
\r
100 FX_BOOL Equal(FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage);
\r
101 FX_BOOL LoadFont(FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage);
\r
102 IFX_Font* GetFont() const
\r
107 CFX_WideString m_wsFamily;
\r
108 FX_DWORD m_dwStyles;
\r
109 FX_DWORD m_dwCodePage;
\r
111 IFX_FontMgr *m_pFontMgr;
\r
112 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
\r
113 IFX_FontSourceEnum *m_pFontSource;
\r
116 class CFWL_FontManager : public CFX_Object
\r
119 CFWL_FontManager();
\r
120 virtual ~CFWL_FontManager();
\r
121 IFX_Font* FindFont(FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD dwCodePage);
\r
123 CFX_PtrArray m_arrFonts;
\r
125 CFWL_FontManager *FWL_GetFontManager();
\r