/** * @file XTPScrollBarThemeResource.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(__XTPSCROLLBARTHEMERESOURCE_H__) # define __XTPSCROLLBARTHEMERESOURCE_H__ /** @endcond */ # if _MSC_VER >= 1000 # pragma once # endif // _MSC_VER >= 1000 # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" /** * @brief * Scrollbar paint manager used to draw scrollbars from the currently loaded * resource image data. * @see CXTPPaintManager::SetTheme */ class _XTP_EXT_CLASS CXTPScrollBarThemeResource : public CXTPScrollBarPaintManager { protected: /** * @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 * 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); /** * @brief * Loads image resource by its name. * @param lpszImageFile Image resource name to load. * @return * A pointer to a loaded resource image or NULL if it's not found. */ CXTPResourceImage* LoadImage(LPCTSTR lpszImageFile); private: struct DRAWING_STATE { BOOL bLight; BOOL nPressedHt; BOOL nHotHt; BOOL bEnabled; int nBtnTrackSize; int nBtnTrackPos; CRect rcArrowGripperSrc; CRect rcScroll; CRect rcArrowUp; CRect rcArrowDown; CRect rcArrowLeft; CRect rcArrowRight; CXTPResourceImage* pImageArrowGlyphs; CXTPResourceImage* pImageBackground; }; DRAWING_STATE m_State; }; # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" /** @cond */ #endif /*__XTPSCROLLBARTHEMERESOURCE_H__*/ /** @endcond */