/** * @file XTPGridThemeResource.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(__XTPGridThemeResource_H__) # define __XTPGridThemeResource_H__ /** @endcond */ # if _MSC_VER > 1000 # pragma once # endif // _MSC_VER > 1000 # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" /** * @brief * CXTPGridThemeResource is a CXTPGridPaintManager derived * class that represents a Resource style theme. */ class _XTP_EXT_CLASS CXTPGridThemeResource : public CXTPGridPaintManager { public: /** * @brief * Default paint manager constructor, handles properties initialization. */ CXTPGridThemeResource(); /** * @brief * This method is called to refresh the visual metrics of the * Grid control. */ virtual void RefreshMetrics(); /** * @brief * Draws a collapsed bitmap. * @param pDC Pointer to the used device context. * @param pRow Pointer to the row. * @param rcBitmap Reference to bitmap area rectangle coordinates. * @return * The size of the drawn bitmap. */ CSize DrawCollapsedBitmap(CDC* pDC, const CXTPGridRow* pRow, CRect& rcBitmap); /** * @brief * This method used to draw a "No items" text message in the Group By area * when there are no items inside it. Override it for custom drawing. * @param pDC Pointer to the used device context. * @param rcItem Reference to text area rectangle coordinates. * @see * CXTPGridPaintManager::m_strNoGroupBy */ virtual void DrawNoGroupByText(CDC* pDC, CRect rcItem); /** * @brief * Fills the column footer control area by its background. * @param pDC Pointer to the used device context. * @param rcFooter Footer area rectangle coordinates. */ virtual void FillFooter(CDC* pDC, CRect rcFooter); /** * @brief * Draws a triangle that shows the sort order of the column. * @param pDC Pointer to the used device context. * @param rcTriangle Triangle area rectangle coordinates. * @param bToDown TRUE to turn the top of the triangle downward, * FALSE to turn the top of the triangle upward. * @param nShadowWidth Size, in pixels, of the shadow to draw under * the triangle image, or 0 to disable the shadow; * the default value for this parameter is 0. * @param bColumnPressed TRUE if the column is pressed by the user. * @details * This function is used to draw a triangle image on the header of * the column that is sorted. The triangle represents the direction * of the sort: ascending or descending. The size of the triangle * depends on the rectangle area provided. * * Example: *
	 * // draw ascendant triangle
	 * CRect rcTriangle;
	 * rcTriangle.CopyRect(rcHeader);
	 * rcTriangle.DeflateRect(40, 5, 5, 5);
	 * DrawTriangle(pDC, rcTriangle, TRUE);
	 *
	 * // draw descendant triangle
	 * CRect rcTriangle;
	 * rcTriangle.CopyRect(rcHeader);
	 * rcTriangle.DeflateRect(40, 5, 5, 5);
	 * DrawTriangle(pDC, rcTriangle, FALSE);
	 * 
*/ virtual void DrawTriangle(CDC* pDC, CRect rcTriangle, BOOL bToDown, int nShadowWidth, BOOL bColumnPressed); using CXTPGridPaintManager::DrawTriangle; protected: /** * @brief * This method is called to draw the background of a column using * the current column style. * @param pDC Pointer to the used device context. * @param pColumn Pointer to the column whose background must be drawn. * @param rcColumn Bounding rectangle of the column. * @param bColumnPressed TRUE if the column is pressed by the user. * @param bDraggingFromHeader TRUE if the column is being dragged from the header area. * @param pHeader Pointer to the header that the column belongs to. */ virtual void DrawColumnBackground(CDC* pDC, CXTPGridColumn* pColumn, CRect rcColumn, BOOL& bColumnPressed, BOOL& bDraggingFromHeader, CXTPGridHeader* pHeader = NULL); virtual void DrawPlainColumnBackground(CDC* /*pDC*/, CRect /*rcColumn*/); public: /** * @brief * Draws the column footer divider. * @param pDC Pointer to the used device context. * @param pColumn Column header area rectangle coordinates. * @param rcColumn Column area rectangle coordinates. */ virtual void DrawColumnFooterDivider(CDC* pDC, CXTPGridColumn* pColumn, CRect rcColumn); /** * @brief * Draws text for the column header. * @param pDC Pointer to the used device context. * @param rcText Size and position of the text to render. * @param strCaption NULL-terminated string representing the caption text. * @param nHeaderAlignment DT_ text alignment flags. * @param bIsHeader TRUE if the column is to be rendered for the header. * @param bColumnPressed TRUE if the column is pressed by the user. */ virtual void DrawColumnText(CDC* pDC, CRect rcText, CString strCaption, int nHeaderAlignment, BOOL bIsHeader, BOOL bColumnPressed); /** * @brief * Draws the divider between grid sections * (e.g. dividing header record rows and body rows). * @param pDC Pointer to the used device context. * @param rc Reference to rectangle coordinates. * @param dividerPosition Position of the section divider; must be one of the values * defined by the XTPGridSectionDividerPosition enumeration. * @param dividerStyle Style of the section divider; must be one of the values * defined by the XTPGridSectionDividerStyle enumeration. * @param dividerColor Color of the section divider. */ void DrawSectionDivider(CDC* pDC, const CRect& rc, XTPGridSectionDividerPosition dividerPosition, XTPGridSectionDividerStyle dividerStyle, CXTPPaintManagerColor dividerColor); }; /** @cond */ # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" #endif //#if !defined(__XTPGridThemeResource_H__) /** @endcond */