// 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 _FWL_FORM_THEMEPROVIDER_H #define _FWL_FORM_THEMEPROVIDER_H class CFWL_WidgetTP; class CFWL_FormTP; class CFWL_FormTP : public CFWL_WidgetTP { public: CFWL_FormTP(); virtual ~CFWL_FormTP(); virtual FWL_ERR Initialize(); virtual FWL_ERR Finalize(); virtual FX_BOOL IsValidWidget(IFWL_Widget *pWidget); virtual FX_DWORD SetThemeID(IFWL_Widget *pWidget, FX_DWORD dwThemeID, FX_BOOL bChildren = TRUE); virtual FX_BOOL DrawBackground(CFWL_ThemeBackground *pParams); virtual FX_BOOL DrawText(CFWL_ThemeText *pParams); virtual FX_LPVOID GetCapacity(CFWL_ThemePart *pThemePart, FX_DWORD dwCapacity); virtual FWL_ERR GetPartRect(CFWL_ThemePart *pThemePart, CFX_RectF& rtPart); protected: void CalCloseBox(IFWL_Widget *pWidget, CFX_RectF &rect); void CalMaxBox(IFWL_Widget *pWidget, CFX_RectF &rect); void CalMinBox(IFWL_Widget *pWidget, CFX_RectF &rect); void CalCaption(IFWL_Widget *pWidget, CFX_RectF &rect); void CalIcon(IFWL_Widget *pWidget, CFX_RectF &rect); void DrawFormBorder(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawCaption(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawNarrowCaption(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawCloseBox(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawMinMaxBoxCommon(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawMinimizeBox(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawMaximizeBox(CFX_Graphics *pGraphics, const CFX_RectF *pRect, FWLTHEME_STATE eState, FX_BOOL bMax, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void DrawIconImage(CFX_Graphics *pGraphics, CFX_DIBitmap *pDIBitmap, const CFX_RectF *pRect, FWLTHEME_STATE eState, CFX_Matrix *pMatrix, FX_INT32 iActive = 0); void SetThemeData(FX_DWORD dwID); void TransModeColor(FX_ARGB clrFore, FX_ARGB &clrBack); void DeactiveForm(); void InitCaption(FX_BOOL bActive); CFX_DIBitmap *m_pActiveBitmap; CFX_DIBitmap *m_pDeactivebitmap; CFX_RectF m_rtDisCaption; CFX_RectF m_rtDisLBorder; CFX_RectF m_rtDisRBorder; CFX_RectF m_rtDisBBorder; struct SBThemeData { FX_ARGB clrHeadBK[2][4]; FX_ARGB clrHeadEdgeLeft[2][3]; FX_ARGB clrHeadEdgeRight[2][3]; FX_ARGB clrHeadEdgeTop[2][3]; FX_ARGB clrHeadEdgeBottom[2][3]; FX_ARGB clrCloseBtBKStart[2][3]; FX_ARGB clrCloseBtBKEnd[2][3]; FX_ARGB clrCloseBtEdgeLight[2][3]; FX_ARGB clrCloseBtEdgeDark[2][3]; FX_ARGB clrNormalBtBKStart[2][3]; FX_ARGB clrNormalBtBKEnd[2][3]; FX_ARGB clrNormalBtEdgeLight[2][3]; FX_ARGB clrNormalBtEdgeDark[2][3]; FX_ARGB clrBtnEdgeOut[2]; FX_ARGB clrBtnCornerLight[2][3]; FX_ARGB clrHeadText[2]; FX_ARGB clrFormBorder[2][5]; FX_ARGB clrFormBorderLight[2]; FX_ARGB clrTransWhite; } *m_pThemeData; }; #endif