// 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 void* 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, | |
int32_t iActive = 0); | |
void DrawCaption(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawNarrowCaption(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawCloseBox(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawMinMaxBoxCommon(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawMinimizeBox(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawMaximizeBox(CFX_Graphics* pGraphics, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
FX_BOOL bMax, | |
CFX_Matrix* pMatrix, | |
int32_t iActive = 0); | |
void DrawIconImage(CFX_Graphics* pGraphics, | |
CFX_DIBitmap* pDIBitmap, | |
const CFX_RectF* pRect, | |
FWLTHEME_STATE eState, | |
CFX_Matrix* pMatrix, | |
int32_t 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 |