You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

429 lines
18 KiB
C++

// XTPRibbonTheme.h: interface for the CXTPRibbonTheme class.
//
// This file is a part of the XTREME RIBBON MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPRIBBONTHEME_H__)
#define __XTPRIBBONTHEME_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPRibbonGroup;
class CXTPRibbonBar;
class CXTPRibbonTab;
class CXTPResourceImage;
class CXTPResourceImages;
class CXTPTabPaintManager;
class CXTPRibbonTabContextHeaders;
class CXTPPopupToolBar;
//===========================================================================
// Summary:
// The CXTPRibbonTheme class is used to enable an Ribbon style theme for Command Bars
// See Also: CXTPPaintManager::SetTheme
//===========================================================================
class _XTP_EXT_CLASS CXTPRibbonTheme : public CXTPResourceTheme
{
DECLARE_DYNAMIC(CXTPRibbonTheme)
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPRibbonTheme object.
//-----------------------------------------------------------------------
CXTPRibbonTheme();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPRibbonTheme object, handles cleanup and deallocation
//-----------------------------------------------------------------------
virtual ~CXTPRibbonTheme();
public:
//-----------------------------------------------------------------------
// Summary:
// This method is called to refresh the visual metrics of the manager.
//-----------------------------------------------------------------------
virtual void RefreshMetrics();
protected:
protected:
//-----------------------------------------------------------------------
// Summary:
// This method is called to fill the control's face
// Parameters:
// pDC - Pointer to a valid device context
// pButton - Points to a CXTPControl object to draw.
//-----------------------------------------------------------------------
virtual void DrawControlEntry(CDC* pDC, CXTPControl* pButton);
//-----------------------------------------------------------------------
// Summary:
// This method is called to determine offset of popuped bar.
// Parameters:
// rc - Control's bounding rectangle.
// pControl - Points to a CXTPControl object
// bVertical - TRUE if control docked vertically.
//-----------------------------------------------------------------------
virtual void AdjustExcludeRect(CRect& rc, CXTPControl* pControl, BOOL bVertical);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the frame for the SplitButton
// control
// Parameters:
// pDC - Pointer to a valid device context
// pButton - Points to a CXTPControl object
// rc - Bounding rectangle to draw
//-----------------------------------------------------------------------
virtual void DrawSplitButtonFrame(CDC* pDC, CXTPControl* pButton, CRect rc);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw popup bar right gripper.
// Parameters:
// pDC - Points to a valid device context.
// xPos - Specifies the logical x-coordinate of the upper-left corner of the rectangle.
// yPos - Specifies the logical y-coordinate of the upper-left corner of the destination rectangle.
// cx - Specifies the width of the rectangle.
// cy - Specifies the height of the rectangle.
// bExpanded - TRUE if expanded.gripper.
//-----------------------------------------------------------------------
virtual void DrawPopupBarGripper(CDC* pDC, int xPos, int yPos, int cx, int cy, BOOL bExpanded = FALSE);
//-----------------------------------------------------------------------
// Summary:
// This method is called to fill the command bar's face.
// Parameters:
// pDC - Pointer to a valid device context
// pBar - Points to a CXTPCommandBar object to draw.
//-----------------------------------------------------------------------
virtual void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar);
//-----------------------------------------------------------------------
// Summary:
// This method is called to fill the control's face
// Parameters:
// pDC - Pointer to a valid device context
// rc - Rectangle to draw.
// bSelected - TRUE if the control is selected.
// bPressed - TRUE if the control is pushed.
// bEnabled - TRUE if the control is enabled.
// bChecked - TRUE if the control is checked.
// bPopuped - TRUE if the control is popuped.
// barType - Parent's bar type
// barPosition - Parent's bar position.
//-----------------------------------------------------------------------
virtual void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw a command bar's separator.
// Parameters:
// pDC - Pointer to a valid device context
// pBar - Points to a CXTPCommandBar object
// pControl - Points to a CXTPControl object
// bDraw - TRUE to draw; FALSE to retrieve the size of the separator.
// Returns:
// This method is called to draw a command bar's separator.
//-----------------------------------------------------------------------
virtual CSize DrawCommandBarSeparator(CDC* pDC, CXTPCommandBar* pBar, CXTPControl* pControl, BOOL bDraw);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the command bar's gripper.
// Parameters:
// pDC - Pointer to a valid device context
// pBar - Points to a CXTPCommandBar object
// bDraw - TRUE to draw; FALSE to retrieve the size of the gripper.
// Returns:
// Size of the gripper.
//-----------------------------------------------------------------------
virtual CSize DrawCommandBarGripper(CDC* pDC, CXTPCommandBar* pBar, BOOL bDraw = TRUE);
//-----------------------------------------------------------------------
// Summary:
// This method is called to fill a status bar.
// Parameters:
// pDC - Pointer to a valid device context
// pBar - Points to a CXTPStatusBar object
//-----------------------------------------------------------------------
virtual void FillStatusBar(CDC* pDC, CXTPStatusBar* pBar);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the status bar's gripper.
// Parameters:
// pDC - Pointer to a valid device context
// rcClient - Client rectangle of the status bar.
//-----------------------------------------------------------------------
virtual void DrawStatusBarGripper(CDC* pDC, CRect rcClient);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw frame of single cell of status bar.
// Parameters:
// pDC - Points to a valid device context.
// rc - CRect object specifying size of area.
// pPane - The status bar pane need to draw
// bGripperPane - TRUE if pane is last cell of status bar
//-----------------------------------------------------------------------
virtual void DrawStatusBarPaneBorder(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane, BOOL bGripperPane);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the pane separator of status bar panes.
// Parameters:
// pDC - Points to a valid device context.
// rc - CRect object specifying size of area.
// pPane - The status bar pane need to draw the separator by.
//-----------------------------------------------------------------------
virtual void DrawStatusBarPaneSeparator(CDC* pDC, CRect rc, CXTPStatusBarPane* pPane);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the status bar switch pane.
// Parameters:
// pDC - Points to a valid device context.
// rcItem - CRect object specifying size of area.
// pPane - The status bar switch pane to draw.
//-----------------------------------------------------------------------
virtual int DrawStatusBarSwitchPane(CDC* pDC, CRect rcItem, CXTPStatusBarSwitchPane* pPane);
//-----------------------------------------------------------------------
// Summary:
// This method retrieves buttons text color
// Parameters:
// bSelected - TRUE if the control is selected.
// bPressed - TRUE if the control is pushed.
// bEnabled - TRUE if the control is enabled.
// bChecked - TRUE if the control is checked.
// bPopuped - TRUE if the control is popuped.
// barType - Parent's bar type
// barPosition - Parent's bar position.
//-----------------------------------------------------------------------
virtual COLORREF GetRectangleTextColor(BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition);
//-----------------------------------------------------------------------
// Summary:
// This method returns control text color to draw
// Parameters:
// pButton - Points to a CXTPControl object to draw.
// Returns: Button text color
//-----------------------------------------------------------------------
virtual COLORREF GetControlTextColor(CXTPControl* pButton);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the control.
// Parameters:
// pDC - Pointer to a valid device context
// bDraw - TRUE to draw; FALSE to retrieve the size of the control.
// pControlEdit - Edit control to draw.
// Returns:
// Size of the control.
//-----------------------------------------------------------------------
CSize DrawControlEdit(CDC* pDC, CXTPControlEdit* pControlEdit, BOOL bDraw);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the control.
// Parameters:
// pDC - Pointer to a valid device context
// pComboBox - ComboBox to draw.
// bDraw - TRUE to draw; FALSE to retrieve the size of the control.
// Returns:
// Size of the control.
//-----------------------------------------------------------------------
CSize DrawControlComboBox(CDC* pDC, CXTPControlComboBox* pComboBox, BOOL bDraw);
//-----------------------------------------------------------------------
// Summary:
// This method returns the edit control back color to draw.
// Parameters:
// pControl - Points to a CXTPControl object to get the back color from.
// Returns: Edit control back color.
//-----------------------------------------------------------------------
virtual COLORREF GetControlEditBackColor(CXTPControl* pControl);
//-----------------------------------------------------------------------
// Summary:
// Retrieves the base theme of the manager.
// Returns:
// Returns the base theme.
//-----------------------------------------------------------------------
XTPPaintTheme BaseTheme() { return xtpThemeRibbon; }
//-----------------------------------------------------------------------
// Summary:
// This method is called to set bounding region for popup bars
// Parameters:
// pCommandBar - Pointer to popup bar which region need to set
//-----------------------------------------------------------------------
virtual void SetCommandBarRegion(CXTPCommandBar* pCommandBar);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw menu split button dropdown rect
// Parameters:
// pDC - Pointer to a valid device context
// pButton - Split button to draw
//-----------------------------------------------------------------------
virtual void DrawSplitButtonPopup(CDC* pDC, CXTPControl* pButton);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw menu popup Glyph
// Parameters:
// pDC - Pointer to a valid device context
// pButton - Popup button to draw Glyph
//-----------------------------------------------------------------------
virtual void DrawControlPopupGlyph(CDC* pDC, CXTPControl* pButton);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw menu label background
// Parameters:
// pDC - Pointer to a valid device context
// rc - Bounding rectangle of button
//-----------------------------------------------------------------------
virtual void FillPopupLabelEntry(CDC* pDC, CRect rc);
//-------------------------------------------------------------------------
// Summary:
// This method is called to refresh fonts
//-------------------------------------------------------------------------
void UpdateFonts();
//-----------------------------------------------------------------------
// Summary:
// This method is called to set rounded rectangle region for window
// Parameters:
// pWnd - Window to set region to
//-----------------------------------------------------------------------
void SetRoundRectRegion(CWnd* pWnd);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw ribbon keyboard tip
// Parameters:
// pDC - Pointer to a valid device context
// pWnd - Keyboard tip window
// bSetRegion - TRUE to set region
//-----------------------------------------------------------------------
virtual void DrawKeyboardTip(CDC* pDC, CXTPCommandBarKeyboardTip* pWnd, BOOL bSetRegion);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the specified controls.
// Parameters:
// pDC - Pointer to a valid device context
// controlType - Special control enumerator.
// pButton - Points to a CXTPControl object to draw.
// pBar - Parent CXTPCommandBar object.
// bDraw - TRUE to draw; FALSE to retrieve the size of the
// control.
// lpParam - Specified parameter.
// Returns:
// Size of the control.
//-----------------------------------------------------------------------
virtual CSize DrawSpecialControl(CDC* pDC, XTPSpecialControl controlType, CXTPControl* pButton, CXTPCommandBar* pBar, BOOL bDraw, LPVOID lpParam);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw the resize gripper for the popup window.
// Parameters:
// pDC - Points to a valid device context.
// rcGripper - CRect object specifying size of area.
// nFlags - Options for gripper.
//-----------------------------------------------------------------------
void DrawPopupResizeGripper(CDC* pDC, CRect rcGripper, int nFlags);
// --------------------------------------------------------
// Summary:
// Call this member function to draw a check mark.
// Parameters:
// pDC : Pointer to a valid device context
// rcCheck : Specifies the rectangle in logical units.
// clr : Color to fill.
// bEnabled : Enabled or disabled.
// --------------------------------------------------------
virtual void DrawPopupBarCheckMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to draw a radio button.
// Parameters:
// pDC - Pointer to a valid device context
// rcCheck - Specifies the rectangle in logical units.
// clr - Color to fill.
// bEnabled - TRUE to enable, FALSE to disable the button.
//-----------------------------------------------------------------------
virtual void DrawPopupBarRadioMark(CDC* pDC, CRect rcCheck, BOOL bEnabled, COLORREF clr);
public:
//-----------------------------------------------------------------------
// Summary:
// Call this member function to set the current ribbon paint manager.
// Parameters:
// pRibbonPaintManager - Pointer to a valid ribbon paint manager.
//-----------------------------------------------------------------------
void SetRibbonPaintManager(CXTPRibbonPaintManager* pRibbonPaintManager);
protected:
//-----------------------------------------------------------------------
// Summary:
// Determines if images is available
// Returns:
// TRUE if images exist in application
//-----------------------------------------------------------------------
BOOL IsImagesAvailable();
//{{AFX_CODEJOCK_PRIVATE
virtual void DrawDropDownGlyph(CDC* pDC, CXTPControl* pControl, CPoint pt, BOOL bSelected, BOOL bPopuped, BOOL bEnabled, BOOL bVert);
virtual CSize DrawControlCheckBoxMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
virtual CSize DrawControlRadioButtonMark(CDC* pDC, CRect rc, BOOL bDraw, BOOL bSelected, BOOL bPressed, BOOL bChecked, BOOL bEnabled);
//}}AFX_CODEJOCK_PRIVATE
protected:
friend class CXTPRibbonBar;
protected:
COLORREF m_clrControlEditNormal; // Edit control color
COLORREF m_clrControlEditSelected; // Edit control selected color
COLORREF m_clrControlEditDisabledBorder;// Edit disabled border
COLORREF m_clrRibbonText; // Ribbon text color
COLORREF m_clrRibbonGrayText; // Gray text of the ribbon.
COLORREF m_clrMenuPopupSeparator; // Popup separator color.
COLORREF m_clrMenuPopupGripperShadow; // Popup gripper shadow color.
BOOL m_bOffice2010Style;
};
#endif // !defined(__XTPRIBBONTHEME_H__)