// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #pragma once #include "afxcontrolbarutil.h" #include "afxtoolbarimages.h" #include <__atlmfc_core.h> #pragma warning(push) #pragma warning(disable : _ATLMFC_DISABLED_WARNINGS) #ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endif #ifdef _AFX_MINREBUILD #pragma component(minrebuild, off) #endif class CMFCControlRendererInfo { public: CMFCControlRendererInfo(); ~CMFCControlRendererInfo(); CMFCControlRendererInfo(UINT uiBmpResID, const CRect& rtImage, const CRect& rtCorners, const CRect& rtSides = CRect(0, 0, 0, 0), const CRect& rtInner = CRect(0, 0, 0, 0)); CMFCControlRendererInfo(LPCTSTR lpszBmpResID, const CRect& rtImage, const CRect& rtCorners, const CRect& rtSides = CRect(0, 0, 0, 0), const CRect& rtInner = CRect(0, 0, 0, 0)); CMFCControlRendererInfo(UINT uiBmpResID, COLORREF clrTransparent, const CRect& rtImage, const CRect& rtCorners, const CRect& rtSides = CRect(0, 0, 0, 0), const CRect& rtInner = CRect(0, 0, 0, 0), BOOL bPreMultiplyCheck = TRUE); CMFCControlRendererInfo(LPCTSTR lpszBmpResID, COLORREF clrTransparent, const CRect& rtImage, const CRect& rtCorners, const CRect& rtSides = CRect(0, 0, 0, 0), const CRect& rtInner = CRect(0, 0, 0, 0), BOOL bPreMultiplyCheck = TRUE); CMFCControlRendererInfo(const CMFCControlRendererInfo& rSrc); public: void CommonInit(); LPCTSTR GetResourceID() const; void SetResourceID(LPCTSTR lpszBmpResID); CMFCControlRendererInfo& operator = (const CMFCControlRendererInfo& rSrc); public: UINT m_uiBmpResID; CString m_strBmpResID; CRect m_rectImage; CRect m_rectCorners; CRect m_rectSides; CRect m_rectInter; COLORREF m_clrTransparent; BOOL m_bPreMultiplyCheck; }; class CMFCControlRenderer : public CObject { DECLARE_DYNCREATE(CMFCControlRenderer) public: CMFCControlRenderer(); virtual ~CMFCControlRenderer(); // Operations: public: virtual BOOL Create(const CMFCControlRendererInfo& params, BOOL bFlipvert = FALSE); /// /// Smoothly resizes images. /// Scale ratio. /// TRUE if resize succeeds; otherwise FALSE. BOOL SmoothResize(double dblScale); virtual void Draw(CDC* pDC, CRect rect, UINT index = 0, BYTE alphaSrc = 255); virtual void DrawFrame(CDC* pDC, CRect rect, UINT index = 0, BYTE alphaSrc = 255); virtual void FillInterior(CDC* pDC, CRect rect, UINT index = 0, BYTE alphaSrc = 255); virtual void FillInterior(CDC* pDC, CRect rect, CMFCToolBarImages::ImageAlignHorz horz, CMFCToolBarImages::ImageAlignVert vert, UINT index = 0, BYTE alphaSrc = 255); virtual void OnSysColorChange(); const CMFCControlRendererInfo& GetParams() const { return m_Params; } BOOL IsValid() const { return m_Bitmap.IsValid(); } BOOL IsMirror() const { return m_bMirror; } virtual void Mirror(); virtual void CleanUp(); int GetImageCount() const { if (m_Bitmap.GetCount() == 1) { HBITMAP hBmp = m_Bitmap.GetImageWell(); BITMAP bmp; if (::GetObject(hBmp, sizeof(BITMAP), &bmp) == sizeof(BITMAP)) { return bmp.bmHeight / m_Params.m_rectImage.Height(); } return 0; } return m_Bitmap.GetCount(); } /// /// Tells whether this control renderer works with scaled (resized) images. /// Returns TRUE if this control renderer works with resized (scaled) images. BOOL IsScaled() const { return m_bIsScaled; } // Attributes: protected: CMFCToolBarImages m_Bitmap; CMFCControlRendererInfo m_Params; BOOL m_bMirror; BOOL m_bIsScaled; }; class CMFCShadowRenderer : public CMFCControlRenderer { DECLARE_DYNCREATE(CMFCShadowRenderer) public: CMFCShadowRenderer(); virtual ~CMFCShadowRenderer(); // Operations: public: virtual BOOL Create (int nDepth, COLORREF clrBase, int iMinBrightness = 0, int iMaxBrightness = 100); virtual void OnSysColorChange (); virtual void Draw (CDC* pDC, CRect rect, UINT index = 0, BYTE alphaSrc = 255); virtual void DrawFrame (CDC* pDC, CRect rect, UINT index = 0, BYTE alphaSrc = 255); protected: virtual BOOL Create (const CMFCControlRendererInfo& params, BOOL bFlipvert = FALSE); }; #ifdef _AFX_MINREBUILD #pragma component(minrebuild, on) #endif #ifdef _AFX_PACKING #pragma pack(pop) #endif // _ATLMFC_DISABLED_WARNINGS #pragma warning(pop)