/** * @file XTPScrollBarPaintManager.h * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ /** @cond */ #if !defined(__XTPSCROLLBARPAINTMANAGER_H__) # define __XTPSCROLLBARPAINTMANAGER_H__ /** @endcond */ # if _MSC_VER > 1000 # pragma once # endif // _MSC_VER > 1000 # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" class CXTPScrollBase; /** * @brief * CXTPScrollBarPaintManager is standalone class used to draw CXTPCommandBarScrollBarCtrl object */ class _XTP_EXT_CLASS CXTPScrollBarPaintManager : public CObject { DECLARE_DYNAMIC(CXTPScrollBarPaintManager); public: /** * @brief * Constructs a CXTPScrollBarPaintManager object */ CXTPScrollBarPaintManager(); public: /** * @brief * This method is called to draw all scrollbar parts. * @param pDC Pointer to device context * @param pScrollBar ScrollBar to draw */ virtual void DrawScrollBar(CDC* pDC, CXTPScrollBase* pScrollBar); /** * @brief * Recalculates scrollbar metrics */ virtual void RefreshMetrics(); protected: struct XTPScrollMetricsV { BOOL bEnabled; CRect rcScrollBar; CRect rcArrowUp; CRect rcArrowDown; CRect rcTrack; CRect rcLowerTrack; CRect rcBtnTrack; CRect rcUpperTrack; }; struct XTPScrollMetricsH { BOOL bEnabled; CRect rcScrollBar; CRect rcArrowLeft; CRect rcArrowRight; CRect rcTrack; CRect rcLowerTrack; CRect rcBtnTrack; CRect rcUpperTrack; }; /** * @brief * Computes vertical scrollbar mertics. * @param pScroll Scroll bar object pointer * @param pVScroll Pointer to the output metrics information * @return */ static void AFX_CDECL CalcVScroll(CXTPScrollBase* pScroll, XTPScrollMetricsV* pVScroll); /** * @brief * Computes horizontal scrollbar mertics. * @param pScroll Scroll bar object pointer * @param pHScroll Pointer to the output metrics information * @return */ static void AFX_CDECL CalcHScroll(CXTPScrollBase* pScroll, XTPScrollMetricsH* pHScroll); /** * @brief * Draws verical scrollbar background only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawBackground(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsV* pMetrics); /** * @brief * Draws vertical scrollbar buttons only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawButtons(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsV* pMetrics); /** * @brief * Draws vertical scrollbar button arrows only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawArrows(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsV* pMetrics); /** * @brief * Draws vertical scrollbar trackers only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawTracker(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsV* pMetrics); /** * @brief * Draws vertical scrollbar thumb button only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawThumbButton(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsV* pMetrics); /** * @brief * Draws horizontal scrollbar background only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawBackground(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsH* pMetrics); /** * @brief * Draws horizontal scrollbar buttons only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawButtons(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsH* pMetrics); /** * @brief * Draws horizontal scrollbar button arrows only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawArrows(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsH* pMetrics); /** * @brief * Draws horizontal scrollbar trackers only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawTracker(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsH* pMetrics); /** * @brief * Draws horizontal scrollbar thumb button only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer * @param pMetrics Precomputed scrollbar metrics */ virtual void DrawThumbButton(CDC* pDC, CXTPScrollBase* pScroll, XTPScrollMetricsH* pMetrics); /** * @brief * Draws scrollbar gripper only. * @param pDC Target device context pointer * @param pScroll Scroll bar object pointer */ virtual void DrawGripper(CDC* pDC, CXTPScrollBase* pScroll); protected: enum XTPArrowGlyph { xtpArrowGlyphLeft, xtpArrowGlyphRight, xtpArrowGlyphUp, xtpArrowGlyphDown }; /** * @brief * Draws scrollbar button arrow glyph. * @param pDC Target device context pointer. * @param rcArrow Target rectangle. * @param glyph Arrow glyph code, one of XTPArrowGlyph. * @param bEnabled Determines whether an enabled glyph should be drawn. * @param clrText Glyph color. If default COLORREF_NULL is used the enalbed glyph * will be drawn in black color and disabled glyph will be drawn in * COLOR_3DSHADOW. */ void DrawArrowGlyph(CDC* pDC, CRect rcArrow, XTPArrowGlyph glyph, BOOL bEnabled, COLORREF clrText = COLORREF_NULL); public: int m_cxHScroll; /**< Width, in pixels, of the arrow bitmap on a horizontal scroll bar */ int m_cyHScroll; /**< Height, in pixels, of a horizontal scroll bar. */ int m_cxVScroll; /**< Width, in pixels, of a vertical scroll bar; */ int m_cyVScroll; /**< Height, in pixels, of the arrow bitmap on a vertical scroll bar. */ int m_cThumb; /**< Width of thumb button. */ COLORREF m_crBackPushed; /**< Color when pushed. */ COLORREF m_crBackHilite; /**< Color when border. */ COLORREF m_crBorderHilite; /**< Color of border when highlighted. */ COLORREF m_crBorder; /**< Color of border. */ COLORREF m_crBack; /**< Color of background. */ }; # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" /** @cond */ #endif //#if !defined(__XTPSCROLLBARPAINTMANAGER_H__) /** @endcond */