// XTPReportPaintManager.h: interface for the CXTPReportPaintManager class.
//
// This file is a part of the XTREME REPORTCONTROL 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(__XTPREPORTPAINTMANAGER_H__)
#define __XTPREPORTPAINTMANAGER_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPMarkupUIElement;
class CXTPImageManager;
class CXTPWinThemeWrapper;
struct XTP_REPORTRECORDITEM_DRAWARGS;
struct XTP_REPORTRECORDITEM_METRICS;
class CXTPReportControl;
class CXTPReportRow;
class CXTPReportHeader;
class CXTPReportColumn;
class CXTPReportGroupRow;
class CXTPReportInplaceButton;
class CXTPReportHyperlink;
class CXTPReportRecordItem;
class CXTPReportRecordItemControl;
class CXTPReportHyperlinkStyle;
class CXTPReportBorder;
//===========================================================================
// Summary:
// Utility class, handling most of the drawing activities. It stores
// all settings, needed by a control to perform drawing operations:
// fonts, colors, styles for all other classes of control.
// It also implements all functions for drawing typical graphical
// primitives, functions that directly work with device context.
// Remarks:
// Could be overridden to provide another look and feel for the control.
// Thus you have an easy way to change "skin" of your control; just provide
// your own implementation of CXTPReportPaintManager and there's no need to touch
// functionality all others classes of control
//
// You create ReportPaintManager by calling its constructor,
// further you can call getter and setter functions to change
// every setting as you wish.
// See Also: CXTPReportControl overview, CXTPReportRow, CXTPReportGroupRow,
// CXTPReportColumn, CXTPReportHeader
//===========================================================================
class _XTP_EXT_CLASS CXTPReportPaintManager : public CXTPCmdTarget
{
//{{AFX_CODEJOCK_PRIVATE
friend class CXTPReportControl;
//}}AFX_CODEJOCK_PRIVATE
public:
//-----------------------------------------------------------------------
// Summary:
// Default paint manager constructor, handles properties initialization.
// See Also: RefreshMetrics
//-----------------------------------------------------------------------
CXTPReportPaintManager();
//-----------------------------------------------------------------------
// Summary:
// Default paint manager destructor, handles member items deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPReportPaintManager();
//-----------------------------------------------------------------------
// Summary:
// SetReportControl
// Parameters:
// pControl - pointer to Report Control
//-----------------------------------------------------------------------
virtual void SetReportControl(CXTPReportControl* pControl);
public:
//-----------------------------------------------------------------------
// Summary:
// Initializes all drawings defaults (fonts, colors, etc.). Most
// of them are system defaults.
// See Also: CXTPReportPaintManager
//-----------------------------------------------------------------------
virtual void RefreshMetrics();
//-----------------------------------------------------------------------
// Summary:
// Returns default row height for print mode.
// Parameters:
// pDC - Pointer to the used Device Context.
// pRow - Pointer to CXTPReportRow object.
// nTotalWidth - Width of the row
// Returns:
// The height of the default rectangle where row's items will draw.
// Example:
// int nRowHeight = GetRowHeight(pDC, pRow)
//-----------------------------------------------------------------------
virtual int GetRowHeight(CDC* pDC, CXTPReportRow* pRow);
virtual int GetRowHeight(CDC* pDC, CXTPReportRow* pRow, int nTotalWidth); //
//-----------------------------------------------------------------------
// Summary:
// Returns preview item height for print mode.
// Parameters:
// pDC - Pointer to the used Device Context.
// pRow - Pointer to CXTPReportRow object.
// nWidth - Width of the preview item.
// nHeight - Height of the preview item.
// Returns:
// The height of the default rectangle where preview item will draw.
// Example:
// int nPreviewItemHeight = GetPreviewItemHeight(pDC, pRow, nWidth, nHeight)
//-----------------------------------------------------------------------
virtual int GetPreviewItemHeight(CDC* pDC, CXTPReportRow* pRow, int nWidth, int nHeight);
//-----------------------------------------------------------------------
// Summary:
// Returns the default column header height.
// Returns:
// The current height of the rectangle where column's headers draw.
//-----------------------------------------------------------------------
virtual int GetHeaderHeight();
//-----------------------------------------------------------------------
// Summary:
// Calculate optimal header height.
// Parameters:
// pDC - Pointer to device context.
// pControl - Pointer to a report control.
// nTotalWidth - Total header with. Used for printing only.
// Returns:
// Optimal header height.
//-----------------------------------------------------------------------
virtual int GetHeaderHeight(CXTPReportControl* pControl, CDC* pDC, int nTotalWidth = 0);
//-----------------------------------------------------------------------
// Summary:
// Sets new column header height.
// Parameters:
// nHeight - Header Height to use.
//-----------------------------------------------------------------------
virtual void SetHeaderHeight(int nHeight);
//-----------------------------------------------------------------------
// Summary:
// Calculate optimal footer height.
// Parameters:
// pDC - Pointer to device context.
// pControl - Pointer to a report control.
// nTotalWidth - Total header with. Used for printing only.
// Returns:
// Optimal footer height.
//-----------------------------------------------------------------------
virtual int GetFooterHeight(CXTPReportControl* pControl, CDC* pDC, int nTotalWidth = 0);
//-----------------------------------------------------------------------
// Summary:
// Returns control background color.
// Parameters:
// pControl - Pointer to the parent report control object.
// Returns:
// Color that is used for filling client rect.
//-----------------------------------------------------------------------
virtual COLORREF GetControlBackColor(CXTPReportControl* pControl);
//-----------------------------------------------------------------------
// Summary:
// Fills the provided row with its background color.
// Parameters:
// pDC - Pointer to the used Device Context.
// pRow - Pointer to the Row.
// rcRow - Row area rectangle coordinates.
// Example:
//
// // paint row background
// pPaintManager->FillRow(pDC, this, rcRow);
//
//-----------------------------------------------------------------------
virtual void FillRow(CDC* pDC, CXTPReportRow* pRow, CRect rcRow);
//-----------------------------------------------------------------------
// Summary:
// Draws control's grid.
// Parameters:
// pDC - Pointer to the used Device Context.
// bVertical - BOOL value determines orientation of grid
// rc - Row area rectangle coordinates.
// Example:
//
// // draw vertical grid in Row
// CRect rcGridItem(rcRowRect);
// pPaintManager->DrawGrid(pDC, TRUE, rcGridItem);
//
// // draw horizontal grid in Row
// CPaintDC pDC(this);
// CRect rcGridItem(rcRowRect);
// pPaintManager->DrawGrid(pDC, FALSE, rcGridItem);
//
//-----------------------------------------------------------------------
virtual void DrawGrid(CDC *pDC, XTPReportOrientation orientation, CRect rcGrid);
//-----------------------------------------------------------------------
// Summary:
// Draws the freeze column divider.
// Parameters:
// pDC - Pointer to the used Device Context.
// rc - Rectangle coordinates.
// pControl - Pointer to a report control.
// pRow - Pointer to the Row.
//-----------------------------------------------------------------------
virtual void DrawFreezeColsDivider(CDC* pDC, const CRect& rc, CXTPReportControl* pControl,
CXTPReportRow* pRow = NULL);
//-----------------------------------------------------------------------
// Summary:
// Draws the vertical TimeLine Marker
// Parameters:
// pDC - Pointer to the used Device Context.
// rc - Rectangle coordinates.
// pControl - Pointer to a report control.
// color - The color of the marker.
//-----------------------------------------------------------------------
virtual void DrawVerticalTimeLineMarker(CDC* pDC, int xPos, CXTPReportControl* pControl, COLORREF color = RGB(0,255,0));
//Return current Print Page Width after Preview mode was call and set value
int GetPrintPageWidth();
//-----------------------------------------------------------------------
// Summary:
// Draws group row.
// Parameters:
// pDC - Pointer to the used Device Context.
// pRow - Pointer to the Group Row.
// rcRow - Group Row area rectangle coordinates.
// pMetrics - Pointer to a XTP_REPORTRECORDITEM_METRICS object.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// pDC->SetBkMode(TRANSPARENT);
// pPaintManager->DrawGroupRow(pDC, this, rcRow);
//
//-----------------------------------------------------------------------
virtual void DrawGroupRow(CDC* pDC, CXTPReportGroupRow* pRow, CRect rcRow, XTP_REPORTRECORDITEM_METRICS* pMetrics);
//-----------------------------------------------------------------------
// Summary:
// Fill font and colors members of the metrics structure
// for the specified group row.
// Parameters:
// pRow - Pointer to the Group Row.
// pMetrics - Pointer to the metrics structure to be filled.
// bPrinting - Is printing mode.
//-----------------------------------------------------------------------
virtual void FillGroupRowMetrics(CXTPReportGroupRow* pRow, XTP_REPORTRECORDITEM_METRICS* pMetrics, BOOL bPrinting);
//-----------------------------------------------------------------------
// Summary:
// Fills indent area by its background.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcRow - Row area rectangle coordinates.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// CRect rcRow(rcClient);
// // Get default row height
// int nRowHeight = m_pControl->GetRowHeight(FALSE)
// rcRow.bottom = rcRow.top + nRowHeight;
// pPaintManager->FillIndent(pDC, rcRow);
//
//-----------------------------------------------------------------------
virtual void FillIndent(CDC* pDC, CRect rcRow);
//-----------------------------------------------------------------------
// Summary:
// Fills item shade by its background if necessary.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcItem - Item area rectangle coordinates.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// CRect rcItem(m_rcRow);
// pPaintManager->FillItemShade(pDC, rcItem);
//
//-----------------------------------------------------------------------
virtual void FillItemShade(CDC* pDC, CRect rcItem);
//-----------------------------------------------------------------------
// Summary:
// Fills column header control area by its background.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcHeader - Header area rectangle coordinates.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// CRect rcHeader(rcClient);
// int nHeaderHeight = m_pControl->GetHeaderHeight();
// rcHeader.bottom = rcHeader.top + nHeaderHeight;
// pPaintManager->FillHeaderControl(pDC, rcHeader);
//
//-----------------------------------------------------------------------
virtual void FillHeaderControl(CDC* pDC, CRect rcHeader);
//-----------------------------------------------------------------------
// Summary:
// Fills column footer control area by its background.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcFooter - Footer area rectangle coordinates.
//-----------------------------------------------------------------------
virtual void FillFooter(CDC* pDC, CRect rcFooter);
//-----------------------------------------------------------------------
// Summary:
// Draws column header with all related attributes (sort order, icon, etc).
// Parameters:
// pDC - Pointer to the used Device Context.
// pColumn - Column header area rectangle coordinates.
// pHeader - Pointer to report header.
// rcColumn - Column area rectangle coordinates.
// bDrawExternal - whether draw Column on Header area, default is FALSE.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// CXTPReportColumn* pColumn = CXTPReportColumn* pColumn = m_pColumns->GetAt(1);
// CRect rcHeader(rcClient);
// int nHeaderHeight = m_pControl->GetHeaderHeight();
// rcHeader.bottom = rcHeader.top + nHeaderHeight;
// GetPaintManager()->DrawColumn(pDC, pColumn, this, rcHeader);
//
//-----------------------------------------------------------------------
virtual void DrawColumn(CDC* pDC, CXTPReportColumn* pColumn, CXTPReportHeader* pHeader,
CRect rcColumn, BOOL bDrawExternal = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Draws column footer with all related attributes (footer text).
// Parameters:
// pDC - Pointer to the used Device Context.
// pColumn - Column header area rectangle coordinates.
// pHeader - Pointer to report header.
// rcColumn - Column area rectangle coordinates.
//-----------------------------------------------------------------------
virtual void DrawColumnFooter(CDC* pDC, CXTPReportColumn* pColumn, CXTPReportHeader* pHeader, CRect rcColumn);
//-----------------------------------------------------------------------
// Summary:
// Call this method to determine if hot tracking is enabled for current column style.
// Returns:
// TRUE if enabled; FALSE otherwise
// Remarks:
// Hot Tracking can be used only for xtpReportColumnOffice2003 and xtpReportColumnExplorer styles.
// See Also:
// m_columnStyle, m_bHotTracking
//-----------------------------------------------------------------------
BOOL IsColumHotTrackingEnabled() const;
//-----------------------------------------------------------------------
// Summary:
// Draws rows that were focused.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcRow - Area rectangle coordinates.
// Example:
//
// CRect rcClient(GetParent()->GetClientRect());
// CXTPReportHeader* pHeader = m_pColumns->GetReportHeader();
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// GetPaintManager()->DrawResizingRect(pDC, pHeader, rcClient);
//
//-----------------------------------------------------------------------
virtual void DrawFocusedRow(CDC* pDC, CRect rcRow);
//-----------------------------------------------------------------------
// Summary:
// Draws Group By box.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcGroupBy - Reference to Group By box area rectangle coordinates.
// Example:
//
// CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
// pPaintManager->FillGroupByControl(pDC, rcGroupBy);
//
//-----------------------------------------------------------------------
virtual void FillGroupByControl(CDC* pDC, CRect& rcGroupBy);
//-----------------------------------------------------------------------
// Summary:
// Returns point to additional image list with Glyphs
// Remarks:
// Additional image list usually used for bitmaps of collapsed icons, etc
// You call this member function to get a pointer to list and manipulate
// its content as you wish
// Returns:
// Pointer to the instantiated object of CXTPImageManager class
//-----------------------------------------------------------------------
CXTPImageManager* GetGlyphs() const;
//-----------------------------------------------------------------------
// Summary:
// Draws Horizontal line.
// Parameters:
// pDC - Pointer to the used Device Context.
// xPos - Horizontal coordinate of the beginning of line.
// yPos - Vertical coordinate of the beginning of line.
// cx - Length of line.
// clr - Color of line.
// Remarks:
// This member function is called in the control everywhere we need to
// draw a simple horizontal line
//-----------------------------------------------------------------------
void DrawHorizontalLine(CDC* pDC, int xPos, int yPos, int cx, COLORREF clr);
//-----------------------------------------------------------------------
// Summary:
// Draws vertical line.
// Parameters:
// pDC - Pointer to the used Device Context.
// xPos - Horizontal coordinate of the beginning of line.
// yPos - Vertical coordinate of the beginning of line.
// cy - Length of line.
// clr - Color of line.
// Remarks:
// This member function is called in the control everywhere we need to
// draw a simple vertical line
//-----------------------------------------------------------------------
void DrawVerticalLine(CDC* pDC, int xPos, int yPos, int cy, COLORREF clr);
//-----------------------------------------------------------------------
// Summary:
// Draws triangle that shows the sort order of column.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcTriangle - Triangle area rectangle coordinates.
// bToDown - If TRUE the top of triangle turn downward, otherwise upward.
// Remarks:
// You use this function to draw a triangle image on the header of the column
// that is sorted. Triangle represents the direction of sorting: ascending or descending.
// Sizes of the triangle depend on the rectangle area that is provided to draw
// 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);
//
//-----------------------------------------------------------------------
void DrawTriangle(CDC* pDC, CRect rcTriangle, BOOL bToDown, int nShadowWidth = 0);
//-----------------------------------------------------------------------
// Summary:
// Draws a column connector for Group By box.
// Parameters:
// pDC - Pointer to the used Device Context.
// ptFrom - Source point of the connector.
// ptTo - Target point of the connector.
// Remarks:
// You use this function to draw a line that represents a
// chain of columns in GroupBy box. It connects columns
// in GroupBy box altogether
// Example:
// DrawConnector(pDC, CPoint(rcItem.right - 5, rcItem.bottom), CPoint(x, rcItem.bottom + 4));
//-----------------------------------------------------------------------
void DrawConnector(CDC* pDC, CPoint ptFrom, CPoint ptTo);
//-----------------------------------------------------------------------
// Summary:
// Draws collapsed bitmap.
// Parameters:
// pDC - Pointer to the used Device Context.
// pRow - Pointer to the Row.
// rcBitmap - Bitmap area rectangle coordinates.
// Returns:
// Size of drawn bitmap.
//-----------------------------------------------------------------------
CSize DrawCollapsedBitmap(CDC* pDC, const CXTPReportRow* pRow, CRect& rcBitmap);
//-----------------------------------------------------------------------
// Summary:
// Draws image of Report Control.
// Parameters:
// pDC - Pointer to the used Device Context.
// pControl - Pointer to report control which image will be drawn.
// rcColumn - Bitmap area rectangle coordinates.
// iImage - Image index.
// Remarks
// You use this function to draw a bitmap in the column rectangle.
// If the provided rectangle is too small, the bitmap will not be drawn.
// Generally, the column rectangle must be big enough to contain
// text (if presented) and bitmap
// Returns:
// Width of drawn bitmap.
// Example:
//
// // draws bitmap with id ID_READ
// pPaintManager->DrawBitmap(pDC, pControl, rcColumn, ID_READ);
//
//-----------------------------------------------------------------------
virtual int DrawBitmap(CDC* pDC, CXTPReportControl* pControl, CRect rcColumn, int iImage);
//-----------------------------------------------------------------------
// Summary:
// Draws image for a column.
// Parameters:
// pDC - Pointer to the used Device Context.
// pColumn - Pointer to a column object.
// rcColumn - Column rectangle.
// rcIcon - Image bounding rectangle.
// iIcon - Image index.
// Returns:
// Width of drawn bitmap.
//-----------------------------------------------------------------------
virtual int DrawColumnIcon(CDC* pDC, CXTPReportColumn* pColumn, CRect rcColumn, CRect rcIcon, int iIcon);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw standard glyphs of report control
// Parameters:
// pDC - Pointer to the used Device Context.
// rcColumn - Bitmap area rectangle coordinates.
// iImage - Image index.
// Returns:
// Size of drawn bitmap.
//-----------------------------------------------------------------------
virtual CSize DrawGlyph(CDC* pDC, CRect rcColumn, int iImage);
//-----------------------------------------------------------------------
// Summary:
// Call this function to draw the shell icon.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcColumn - Bitmap area rectangle coordinates.
// iImage - Image index.
// Returns:
// Size of drawn bitmap.
virtual CSize DrawShellIcon(CDC* pDC, CRect rcColumn, int iImage);
//-----------------------------------------------------------------------
// Summary:
// Changes the preview mode state for the control.
// Parameters:
// bIsPreviewMode - New preview mode (TRUE or FALSE).
// Remarks:
// Preview mode has two states: enable and disabled. When preview is
// enabled, the control tries to show additional bands with preview text
// Example:
//
// // enable preview mode
// EnablePreviewMode(TRUE);
//
// // disable preview mode
// EnablePreviewMode(FALSE);
//
//-----------------------------------------------------------------------
void EnablePreviewMode(BOOL bIsPreviewMode);
//-----------------------------------------------------------------------
// Summary:
// Returns preview mode state for the control.
// Remarks:
// You use this member function to programmatically identify
// in which mode the control is
// Returns:
// Current preview mode state.
//-----------------------------------------------------------------------
BOOL IsPreviewMode() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the default text font for the control items.
// Returns:
// Pointer to the current font used for drawing test.
//-----------------------------------------------------------------------
CFont* GetTextFont();
//-----------------------------------------------------------------------
// Summary:
// Set count of max lines of the preview text.
// Parameters:
// nMaxLines - New value of max lines of text for a preview item.
// Remarks:
// You use this member function to bound the height of a textPreview item
// by setting the maximum rows of text for it
// Returns:
// Previous value of max lines of text for a preview item.
// Example:
// int nOldMaxLines = SetMaxPreviewLines(4);
//-----------------------------------------------------------------------
int SetMaxPreviewLines(int nMaxLines);
//-----------------------------------------------------------------------
// Summary:
// Get the count of max lines of preview text.
// Returns:
// Current value of max lines of text for a preview item.
//-----------------------------------------------------------------------
int GetMaxPreviewLines();
//-----------------------------------------------------------------------
// Summary:
// Calculates the line count for preview text, takes into account max lines.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcText - Reference to text area rectangle coordinates.
// strText - String of text.
// Remarks:
// This function calculates the count of preview text lines based on the length
// of preview text string, preview text font and width of provided rectangle.
// If default max lines count less than count of calculate lines,
// returns default max lines
// Returns:
// Returns the count of lines needed to draw preview text.
//-----------------------------------------------------------------------
int GetPreviewLinesCount(CDC* pDC, CRect& rcText, const CString& strText);
//-----------------------------------------------------------------------
// Summary:
// Return visibility of grid line
// Parameters:
// bVertical - determines which grid lines will be tested,
// vertical or horizontal.
// Returns:
// BOOL value which identifies the visibility of the line
//-----------------------------------------------------------------------
BOOL IsGridVisible(BOOL bVertical) const;
//-----------------------------------------------------------------------
// Summary:
// Return visibility of grid line
// Parameters:
// orientation - determines which grid lines will be tested,
// vertical or horizontal.
// Returns:
// BOOL value which identifies the visibility of the line
//-----------------------------------------------------------------------
BOOL IsGridVisible(XTPReportOrientation orientation) const;
//-----------------------------------------------------------------------
// Summary:
// Use this member function to set a header style.
// Parameters:
// columnStyle - A value from XTPReportColumnStyle enum.
// See Also: GetColumnStyle, XTPReportColumnStyle
//-----------------------------------------------------------------------
void SetColumnStyle(XTPReportColumnStyle columnStyle);
//-----------------------------------------------------------------------
// Summary:
// Use this member function to get a header style.
// Returns:
// A value from XTPReportColumnStyle enum.
// See Also: SetColumnStyle, XTPReportColumnStyle
//-----------------------------------------------------------------------
XTPReportColumnStyle GetColumnStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Use this member function to set a header's custom theme base color
// for Office2007 column style.
// Parameters:
// clrBaseColor - A COLORREF value representing the custom theme base color.
// Set this value as -1 to use standard theme.
// See Also: GetColumnOffice2007CustomThemeBaseColor
//-----------------------------------------------------------------------
void SetColumnOffice2007CustomThemeBaseColor(COLORREF clrBaseColor);
//-----------------------------------------------------------------------
// Summary:
// Use this member function to get a header's custom theme base color
// for Office2007 column style.
// Returns:
// A COLORREF value representing the custom theme base color for
// Office2007 column style. Value -1 means that standard theme is used.
// See Also: SetColumnOffice2007CustomThemeBaseColor
//-----------------------------------------------------------------------
COLORREF GetColumnOffice2007CustomThemeBaseColor() const;
//--------------------------------------------------------------------------
// Summary:
// Creates and sets default text font
// Parameters:
// lf - Reference to LOGFONT structure
// See Also: LOGFONT, SetCaptionFont
//-----------------------------------------------------------------------
void SetTextFont(LOGFONT& lf);
//-----------------------------------------------------------------------
// Summary:
// Creates and sets the default caption font
// Parameters:
// lf - Reference to LOGFONT structure
// See Also: LOGFONT, SetTextFont
//-----------------------------------------------------------------------
void SetCaptionFont(LOGFONT& lf);
//-----------------------------------------------------------------------
// Summary:
// Call this method to set the preview item indent.
// Parameters:
// nLeft - Left indent to be used
// nTop - Top indent to be used
// nRight - Right indent to be used
// nBottom - Bottom indent to be used
//-----------------------------------------------------------------------
void SetPreviewIndent(int nLeft, int nTop, int nRight, int nBottom);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw in-place button of the report
// Parameters:
// pDC - Pointer to the device context
// pButton - Pointer to in-place button to draw
//-----------------------------------------------------------------------
virtual void DrawInplaceButton(CDC* pDC, CXTPReportInplaceButton* pButton);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw Combo Button of the report
// Parameters:
// pDC - Pointer to the device context
// pRc - Pointer to rectangle to draw
// Returns:
// TRUE if the operation is successful and FALSE else.
//-----------------------------------------------------------------------
virtual BOOL DrawInplaceComboButton(CDC* pDC, CRect* pRc);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw Expand Button of the report
// Parameters:
// pDC - Pointer to the device context
// pRc - Pointer to rectangle to draw
// Returns:
// TRUE if the operation is successful and FALSE else.
//-----------------------------------------------------------------------
virtual BOOL DrawInplaceExpandButton(CDC* pDC, CRect* pRc);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw Spin Button of the report
// Parameters:
// pDC - Pointer to the device context
// pRc - Pointer to rectangle to draw
// Returns:
// TRUE if the operation is successful and FALSE else.
//-----------------------------------------------------------------------
virtual BOOL DrawInplaceSpinButton(CDC* pDC, CRect* pRc);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw tree elements of report control.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// pMetrics - Metrics of the item
// rcItem - Item area rectangle coordinates.
// sizeGlyph - Item glyph rectangle coordinates.
//-----------------------------------------------------------------------
virtual void DrawTreeStructure(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics, CRect rcItem, CSize sizeGlyph);
//-----------------------------------------------------------------------
// Summary:
// Draw Item Bitmap. Override this method to draw custom bitmap.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// rcItem - Item rectangle.
// nImage - Image index.
//-----------------------------------------------------------------------
virtual void DrawItemBitmap(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem, int nImage);
//-----------------------------------------------------------------------
// Summary:
// Draw Item Caption. Override this method to draw custom caption.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// pMetrics - Metrics of the item
//-----------------------------------------------------------------------
virtual void DrawItemCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics);
//-----------------------------------------------------------------------
// Summary:
// Draw row number. Override this method to draw differently.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// rcItem - rectangle to draw
// pRow - Pointer to the report row.
//-----------------------------------------------------------------------
virtual void DrawRowNumber(CDC* pDC, CRect rcNumber, CXTPReportRow* pRow);
//-----------------------------------------------------------------------
// Summary:
// Draw Item Control. Override this method to draw custom control.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// pControl - control to draw
// rcItem - rectangle to draw
//-----------------------------------------------------------------------
virtual void DrawItemControl(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs,
CXTPReportRecordItemControl* pControl, CRect& rcItem);
//-----------------------------------------------------------------------
// Summary:
// This method is called to determines if paint manager supports
// variable height of row
// Returns:
// TRUE if GetRowHeight retrieves same value for each row.
// See Also: GetRowHeight
//-----------------------------------------------------------------------
BOOL IsFixedRowHeight() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to set if paint manager supports
// variable height of row
// Parameters:
// bFixedRowHeight - TRUE to set Fixed Row height, FALSE to set variable
// See Also: GetRowHeight
//-----------------------------------------------------------------------
void SetFixedRowHeight(BOOL bFixedRowHeight);
//-----------------------------------------------------------------------
// Summary:
// This method is called to determines if paint manager supports
// Column Width WYSIWYG mode
// Returns:
// TRUE if the column width support WYSIWYG mode FALSE else.
//-----------------------------------------------------------------------
BOOL IsColumnWidthWYSIWYG() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to determines if paint manager supports
// Last Column Width WYSIWYG mode
// Returns:
// TRUE if the last column width support WYSIWYG mode FALSE else.
//-----------------------------------------------------------------------
BOOL IsLastColumnWidthWYSIWYG() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to determines if paint manager
// Show WYSIWYG Page-end Markers
// Returns:
// TRUE if the WYSIWYG markers are shown FALSE else.
//-----------------------------------------------------------------------
BOOL CXTPReportPaintManager::IsShowWYSIWYGMarkers() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to set paint manager to
// Show WYSIWYG Page-end Markers
// Parameters:
// bSet - BOOL flag to show or not
//-----------------------------------------------------------------------
void CXTPReportPaintManager::ShowWYSIWYGMarkers(BOOL bSet);
//-----------------------------------------------------------------------
// Summary:
// This method is called to set if paint manager supports
// Column Width WYSIWYG mode
// Parameters:
// bColumnWidthWYSIWYG - BOOL flag to use or not
//-----------------------------------------------------------------------
void SetColumnWidthWYSIWYG(BOOL bColumnWidthWYSIWYG);
//-----------------------------------------------------------------------
// Summary:
// This method is called to set if paint manager supports
// Last Column Width WYSIWYG mode
// Parameters:
// bColumnWidthWYSIWYG - BOOL flag to use or not
//-----------------------------------------------------------------------
void SetLastColumnWidthWYSIWYG(BOOL bColumnWidthWYSIWYG);
//-----------------------------------------------------------------------
// Summary:
// This method is called to determines if paint manager supports
// variable height of in place buttons.
// Returns:
// TRUE if height of in place buttons is fixed, FALSE if it is the same
// as row height.
// See Also: SetInplaceButtonHeight
//-----------------------------------------------------------------------
BOOL IsFixedInplaceButtonHeight() const;
//-----------------------------------------------------------------------
// Summary:
// This method is called to set if paint manager supports
// fixed height of in place buttons.
// Parameters:
// bFixedInplaceButtonHeight - TRUE to set Fixed button height,
// FALSE to set variable (the same as row height).
// See Also: IsFixedInplaceButtonHeight
//-----------------------------------------------------------------------
void SetInplaceButtonHeight(BOOL bFixedInplaceButtonHeight);
//-----------------------------------------------------------------------
// Summary:
// Get style of Freeze Columns Divider line.
// Returns:
// A value from enum XTPReportFreezeColsDividerStyle.
// See Also:
// XTPReportFreezeColsDividerStyle
//-----------------------------------------------------------------------
int GetFreezeColsDividerStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Set style of Freeze Columns Divider line.
// Parameters:
// nStyle - A value from enum XTPReportFreezeColsDividerStyle.
// See Also:
// XTPReportFreezeColsDividerStyle
//-----------------------------------------------------------------------
void SetFreezeColsDividerStyle(int nStyle);
//-----------------------------------------------------------------------
// Summary:
// Override this method to do custom activities for the item before processing it.
// Parameters:
// pDrawArgs - pointer to structure with drawing arguments
// Returns:
// BOOL value - TRUE means that the item needs further processing
//-----------------------------------------------------------------------
virtual BOOL OnDrawAction(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs);
//-----------------------------------------------------------------------
// Summary:
// This method used to draw "No items" text message in Group By area
// when there are no items inside it. Override it for custom drawing.
// Parameters:
// pDC - Pointer to the used Device Context.
// rcItem - Reference to text area rectangle coordinates.
// See Also:
// CXTPReportPaintManager::m_strNoGroupBy
//-----------------------------------------------------------------------
virtual void DrawNoGroupByText(CDC* pDC, CRect rcItem);
//-----------------------------------------------------------------------
// Summary:
// This method is called to determine if grid fills empty space after the body rows.
// Returns:
// TRUE if grid fills empty space after the body rows, FALSE - otherwise (default).
//-----------------------------------------------------------------------
BOOL IsDrawGridForEmptySpace() const;
//-----------------------------------------------------------------------
// Summary:
// SetDrawGridForEmptySpace
// Parameters:
// bDrawGrid - BOOL flag to use or not
//-----------------------------------------------------------------------
void SetDrawGridForEmptySpace(BOOL bDrawGrid);
//-----------------------------------------------------------------------
// Summary:
// This method get flag is group row collapse-expand icon draw in print mode.
// Returns:
// TRUE if GroupRowIcon used during printing
BOOL IsPrintGroupRowIcon() const;
//-----------------------------------------------------------------------
// Summary:
// This method set flag is group row collapse-expand icon draw in print mode.
// Parameters:
// bDraw - BOOL flag to use or not
//-----------------------------------------------------------------------
void SetPrintGroupRowIcon(BOOL bDraw);
//-----------------------------------------------------------------------
// Summary:
// This method get flag of ColumnPlusMinusSign
// Returns:
// TRUE if [+] or [-] icon used
BOOL IsColumnPlusMinusSign() const;
//-----------------------------------------------------------------------
// Summary:
// This method set ColumnPlusMinusSign flag (if TRUE) as [+] or [-] instead of arrows.
// Parameters:
// bDraw - BOOL flag to use or not
void SetColumnPlusMinusSign(BOOL bDraw);
CXTPReportBorder* GetDefaultItemBorder() const;
CXTPReportBorder* GetItemBorder(const CXTPReportRecordItem *pItem) const;
#if XTP_REPORT_DEPRECATED()
//--------------------------------------------------------------------------
// Summary:
// Call this function to get the grid style.
// Parameters:
// bVertical - TRUE to get the vertical grid style and FALSE to get the
// horizontal grid style.
// Returns:
// A XTPReportLineStyle denoting the grid style.
//-----------------------------------------------------------------------
XTPReportLineStyle GetGridStyle(BOOL bVertical) const;
//-----------------------------------------------------------------------
// Summary:
// Sets one of the predefined grid line styles
// Parameters:
// bVertical - Determines which grid lines settings,
// vertical or horizontal
// gridStyle - Grid style. Can be one of the values listed
// in the remarks section.
// Remarks:
// Grid style can be one of the following:
// * xtpReportGridNoLines Empty line
// * xtpReportGridSmallDots Line drawn by small dots
// * xtpReportGridLargeDots Line drawn by large dots
// * xtpReportGridDashes Line drawn by dashes
// * xtpReportGridSolid Draws solid line
// See Also: XTPReportGridStyle
//-----------------------------------------------------------------------
void SetGridStyle(BOOL bVertical, XTPReportLineStyle lineStyle);
//-----------------------------------------------------------------------
// Summary:
// Returns the current grid line color.
//-----------------------------------------------------------------------
COLORREF GetGridColor() const;
//-----------------------------------------------------------------------
// Summary:
// Changes report control grid lines color.
// Parameters:
// clrGridLine - New grid color.
// Returns:
// Previous grid color
// Example:
//
// // Set new color, save old one
// COLORREF clrOld;
// clrOld = SetGridColor(RGB(0, 255, 0));
//
//-----------------------------------------------------------------------
COLORREF SetGridColor(COLORREF clrGridLine);
#endif
protected:
//-----------------------------------------------------------------------
// Summary:
// Draw a line of text with respect to the drawing rect
// Parameters:
// pDrawArgs - Pointer to structure with drawing arguments.
// strText - String of text.
// rcItem - Item area rectangle coordinates.
// nFlag - Flag can allow next values:
// DT_END_ELLIPSIS - truncate text by ellipses
// DT_WORDBREAK - - truncate text by word end
// nCharCounter - Reference to printed char counted, accepts value before, returns value after drawing
// nHyperlinkCounter- Reference to printed hyperlinks counted, accepts value before, returns value after drawing
// Remarks:
// Its member function is internally used by DrawText() and draws one line of text.
// It processes plain text/ hyperlink text for one line. For multi-line text
// process last line - the truncate by ellipses, otherwise truncate by word
// Returns:
// Position in CString where drawing of one line of text was stopped
//-----------------------------------------------------------------------
virtual void DrawTextLine(
XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs,
XTP_REPORTRECORDITEM_METRICS *pMetrics,
const CString& strText,
CRect rcItem,
int nFlag,
int& nCharCounter,
int& nHyperlinkCounter);
//-----------------------------------------------------------------------
// Summary:
// Draw simple string into rectangle
// Parameters:
// pnCurrDrawPos - Pointer to current drawing position (is updated after each call of function)
// pDC - Point to used Device Context
// strDraw - String of text
// rcDraw - Text area rectangle coordinates
// nFormat - Flag can allow next values:
// DT_END_ELLIPSIS - truncate text by ellipses
// DT_WORDBREAK - truncate text by word end
// Remarks:
// Its member function is internally used by DrawTextLine and draws a plain chunk of
// text string.
// Returns:
// Position in CString where drawing of one string of text line was stopped
//-----------------------------------------------------------------------
virtual int DrawString(int* pnCurrDrawPos,
CDC* pDC,
const CString& strDraw,
CRect rcDraw,
UINT nFormat);
//-----------------------------------------------------------------------
// Summary:
// This method is called to draw background of the column using current column style
// Parameters:
// pDC - Point to used Device Context
// pColumn - Column needs to draw
// rcColumn - Bounding rectangle of the column
// bColumnPressed - TRUE if column is pressed by user.
// pHeader - Pointer to a header the column belongs to.
//-----------------------------------------------------------------------
virtual void DrawColumnBackground(CDC* pDC,
CXTPReportColumn* pColumn,
CRect rcColumn,
BOOL& bColumnPressed,
CXTPReportHeader* pHeader = NULL);
protected:
//-----------------------------------------------------------------------
// Summary:
// Generates a custom grid pattern
// Parameters:
// pDC - Pointer to device context.
// pBrush - Pointer to brush object.
// rc - Rectangle area.
// pPattern - Points to a short-integer array that contains the
// initial bitmap bit values. If it is NULL, the new
// bitmap is left uninitialized.
// clr - COLORREF object representing the pattern color.
//-----------------------------------------------------------------------
virtual void DrawGridPattern(CDC* pDC, CBrush* pBrush, CRect rc, const void *pPattern, COLORREF clr);
//-----------------------------------------------------------------------
// Summary:
// Draws in-place button frame
// Parameters:
// pDC - Pointer to device context.
// pButton - Pointer to in-place button
//-----------------------------------------------------------------------
virtual void DrawInplaceButtonFrame(CDC* pDC, CXTPReportInplaceButton* pButton);
//-----------------------------------------------------------------------
// Summary:
// Draws in-place button icon
// Parameters:
// pDC - Pointer to device context.
// pButton - Pointer to in-place button
// Returns:
// TRUE if icon has been drawn, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL DrawInplaceButtonIcon(CDC* pDC, CXTPReportInplaceButton* pButton);
//-----------------------------------------------------------------------
// Summary:
// Calculate optimal height for specified column.
// Parameters:
// pDC - Pointer to device context.
// pColumn - Pointer to a column object.
// nTotalWidth - Total header with. Used for printing only.
// Returns:
// Optimal height for specified column.
//-----------------------------------------------------------------------
virtual int CalcColumnHeight(CDC* pDC, CXTPReportColumn* pColumn, int nTotalWidth = 0);
//-----------------------------------------------------------------------
// Summary:
// Draws multi-line text (keeping hyperlinks active).
// Parameters:
// pDrawArgs - Pointer to structure with drawing arguments.
// strText - String of text.
// rcItem - Item area rectangle coordinates.
// bWordBreak - Whether to break the line by words. If FALSE - only new line characters force new lines.
//-----------------------------------------------------------------------
virtual void DrawMultiLineText(
XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs,
XTP_REPORTRECORDITEM_METRICS *pMetrics,
const CString& strText,
CRect rcItem, BOOL bWordBreak = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Draws single-line text (keeping hyperlinks active).
// Parameters:
// pDrawArgs - Pointer to structure with drawing arguments.
// strText - String of text.
// rcItem - Item area rectangle coordinates.
// nStartPos - Start position in strText.
// nEndPos - End position in strText.
// nActualWidth - Width of text to be drawn.
//-----------------------------------------------------------------------
virtual void DrawSingleLineText(
XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs,
XTP_REPORTRECORDITEM_METRICS *pMetrics,
const CString& strText,
CRect rcItem, int nStartPos, int nEndPos,int nActualWidth);
public:
//-----------------------------------------------------------------------
// Summary:
// Calculates height of the rectangle, bounding the multiline text, when the width is fixed.
// Parameters:
// pDC - Pointer to device context.
// strText - String of text.
// nMaxWidth - Max width of the rectangle, bounding the text.
// bWordBreak - Whether to break the line by words. If FALSE - only new line characters can increase the row height.
// Returns:
// Necessary height to draw the multiline text.
//-----------------------------------------------------------------------
virtual int CalculateRowHeight(CDC* pDC, const CString& strText, int nMaxWidth, BOOL bWordBreak = TRUE);
//{{AFX_CODEJOCK_PRIVATE
virtual CRect CalculateMaxTextRect(CDC* pDC, const CString& strText, const CRect& rcMaxRect,
BOOL bWordBreak = TRUE, BOOL bLimitSize = TRUE, UINT uiFlags = 0);
//}}AFX_CODEJOCK_PRIVATE
protected:
//-----------------------------------------------------------------------
// Summary:
// Draw hyperlink string using hyperlinks text settings (removing blanks).
// Parameters:
// pnCurrDrawPos - pointer to current drawing position (is updated after each call of function)
// pDrawArgs - pointer to structure with drawing arguments
// pHyperlink - pointer to hyperlink object
// strText - string of text
// rcLink - link hot spot area rectangle coordinates
// nFlag - Flag can allow next values:
// DT_END_ELLIPSIS - truncate text by ellipses
// DT_WORDBREAK - - truncate text by word end
// bTrim - whether to trim the hyperlink
// Remarks:
// Its member function is internally used by DrawTextLine and draws hyperlink
// chunk of text string, updates hyperlink's hot spot.
// If the hyperlink begins\ends with blanks, they are removed.
// Returns:
// Position in CString where drawing of one link text was stopped
//-----------------------------------------------------------------------
virtual int DrawLink(int* pnCurrDrawPos,
XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs,
XTP_REPORTRECORDITEM_METRICS *pMetrics,
CXTPReportHyperlink *pHyperlink,
CString strText,
CRect rcLink,
int nFlag,
BOOL bTrim = FALSE);
public:
//-----------------------------------------------------------------------
// Summary:
// Draws the Fixed Rows divider (for ex. dividing header record rows and body rows).
// Parameters:
// pDC - Pointer to the used Device Context.
// rc - Rectangle coordinates.
// pControl - Pointer to a report control.
// bHeaderRows - whether the divider is under header rows or above footer rows.
// bVScrollBarVisible - TRUE, if vertical scrollbar is visible, FALSE otherwise.
//-----------------------------------------------------------------------
void DrawSectionDivider(CDC* pDC,
const CRect& rc,
XTPReportSectionDividerPosition dividerPosition,
XTPReportSectionDividerStyle dividerStyle,
CXTPPaintManagerColor dividerColor);
//-----------------------------------------------------------------------
// Summary:
// Get height of section divider.
// Returns:
// Section divider height.
// See Also:
// XTPReportFixedRowsDividerStyle
//-----------------------------------------------------------------------
int GetSectionDividerHeight(XTPReportFixedRowsDividerStyle dividerStyle);
//-----------------------------------------------------------------------
// Summary:
// Call this function to know whether a drop marker will be used when
// dragging and dropping.
// Returns:
// FALSE if no markers are used.
//-----------------------------------------------------------------------
BOOL IsUseDropMarker() const;
//private:
//{{AFX_CODEJOCK_PRIVATE
COLORREF MixColor(COLORREF clrLight, COLORREF clrDark, double dFactor);
void Line(CDC* pDC, int x, int y, int cx, int cy, CPen* pPen);
virtual void DrawTreeStructureLine(CDC* pDC, int x, int y, int cx, int cy, COLORREF clr);
virtual void ReplaceInHyperLinks(CXTPReportRecordItem* pItem, CString& rstrText, TCHAR chReplace);
//}}AFX_CODEJOCK_PRIVATE
public:
CFont m_fontText; // Report items default text.
CFont m_fontBoldText; // Report items default bold text.
CFont m_fontCaption; // Column header caption font.
CFont m_fontPreview; // Column header caption font.
CXTPReportHyperlinkStyle* m_pHyperlinkStyle; // Style for links
CXTPReportHyperlinkStyle* m_pHyperlinkHoverStyle; // Style for hovered links
CXTPPaintManagerColor m_clrHighlight; // Background color of the highlighted row.
CXTPPaintManagerColor m_clrWindowText; // Report items default text color.
CXTPPaintManagerColor m_clrHighlightText; // Text color of the highlighted text.
CXTPPaintManagerColor m_clrHeaderControl; // Background color of the report header.
CXTPPaintManagerColor m_clrCaptionText; // Column header text color.
CXTPPaintManagerColor m_clrControlBack; // Background color of the control report area.
CXTPPaintManagerColor m_clrGroupRowText; // Row text color.
CXTPPaintManagerColor m_clrGroupShadeBack; // Group row background color when indentation shade is enabled.
CXTPPaintManagerColor m_clrGroupShadeText; // Group row foreground color when indentation shade is enabled.
CXTPPaintManagerColor m_clrGroupShadeBorder;// Color for group border's shade.
CXTPPaintManagerColor m_clrGroupBoxBack; // Color of group box.
CXTPPaintManagerColor m_clrControlDark; // Dark background color of the report control (used on Group By area).
CXTPPaintManagerColor m_clrControlLightLight;// Light background color used for drawing shades (used on column header area).
CXTPPaintManagerColor m_clrHotDivider; // Color of the column hot divider window (2 arrows).
CXTPPaintManagerColor m_clrIndentControl; // Color of the tree indentation area.
CXTPPaintManagerColor m_clrItemShade; // Color of the shade on sorted by column items.
CXTPPaintManagerColor m_clrBtnFace; // Standard button face color.
CXTPPaintManagerColor m_clrBtnText; // Standard button text color.
CXTPPaintManagerColor m_clrPreviewText; // Preview text color.
CXTPPaintManagerColor m_clrSelectedRow; // Selected row background color.
CXTPPaintManagerColor m_clrSelectedRowText; // Selected row text color.
#if XTP_REPORT_DEPRECATED()
//-----------------------------------------------------------------------
// Summary:
// Get style of header divider line.
// Returns:
// A value from enum XTPReportFixedRowsDividerStyle.
// See Also:
// XTPReportFixedRowsDividerStyle
//-----------------------------------------------------------------------
XTPReportFixedRowsDividerStyle GetHeaderRowsDividerStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Set style of header divider line.
// Parameters:
// nStyle - A value from enum XTPReportFixedRowsDividerStyle.
// See Also:
// XTPReportFixedRowsDividerStyle
//-----------------------------------------------------------------------
void SetHeaderRowsDividerStyle(XTPReportFixedRowsDividerStyle style);
//-----------------------------------------------------------------------
// Summary:
// Get style of footer divider line.
// Returns:
// A value from enum XTPReportFixedRowsDividerStyle.
// See Also:
// XTPReportFixedRowsDividerStyle
//-----------------------------------------------------------------------
XTPReportFixedRowsDividerStyle GetFooterRowsDividerStyle() const;
//-----------------------------------------------------------------------
// Summary:
// Set style of footer divider line.
// Parameters:
// nStyle - A value from enum XTPReportFixedRowsDividerStyle.
// See Also:
// XTPReportFixedRowsDividerStyle
//-----------------------------------------------------------------------
void SetFooterRowsDividerStyle(XTPReportFixedRowsDividerStyle style);
__declspec(property(
get=GetHeaderRowsDividerStyle,
put=SetHeaderRowsDividerStyle)
) XTPReportFixedRowsDividerStyle m_HeaderRowsDividerStyle; // Style of a divider line between the header and body rows.
__declspec(property(
get=GetFooterRowsDividerStyle,
put=SetFooterRowsDividerStyle)
) XTPReportFixedRowsDividerStyle m_FooterRowsDividerStyle; // Style of a divider line between the footer and body rows.
#endif // XTP_REPORT_DEPRECATED()
#if XTP_REPORT_DEPRECATED()
CXTPPaintManagerColor GetHeaderRowsDividerColor() const;
void SetHeaderRowsDividerColor(CXTPPaintManagerColor clrDivider);
CXTPPaintManagerColor GetFooterRowsDividerColor() const;
void SetFooterRowsDividerColor(CXTPPaintManagerColor clrDivider);
__declspec(property(
get=GetHeaderRowsDividerColor,
put=SetHeaderRowsDividerColor)
) CXTPPaintManagerColor m_clrHeaderRowsDivider;
__declspec(property(
get=GetFooterRowsDividerColor,
put=SetFooterRowsDividerColor)
) CXTPPaintManagerColor m_clrFooterRowsDivider;
__declspec(property(
get=GetGridColor,
put=SetGridColor)
) COLORREF m_clrGridLine;
#endif
CXTPPaintManagerColorGradient m_grcGradientColumn; // Color of column used with xtpReportColumnOffice2003 style
CXTPPaintManagerColorGradient m_grcGradientColumnHot; // HotTracking Color of column used with xtpReportColumnOffice2003 style
CXTPPaintManagerColorGradient m_grcGradientColumnPushed; // Pushed Color of column used with xtpReportColumnOffice2003 style
CXTPPaintManagerColor m_clrGradientColumnShadow; // Bottom shadow of column used with xtpReportColumnOffice2003 style
CXTPPaintManagerColor m_clrGradientColumnSeparator; // Separator of column used with xtpReportColumnOffice2003 style
CXTPPaintManagerColor m_crlNoGroupByText; // A color for "No items" text in GroupBy area (see m_strNoGroupBy member)
CXTPPaintManagerColor m_clrFreezeColsDivider; // Freeze Columns Divider color.
COLORREF m_clrColumnOffice2007CustomTheme; // Base color for Office2007 custom theme.
COLORREF m_clrFormulaSum; // Color for Formula Sum fields
COLORREF m_clrFormulaSubSum; // Color for Formula SubSum fields
COLORREF m_clrAlternativeBackground; // Color for Alternative Row Background
BOOL m_bUseAlternativeBackground; // Flag to use for Alternative Row Background
BOOL m_bAllowMergeCells; // Flag to Allow or not Merge Cells
int m_nTextIndentForGroupRowsWithNoIcon; // Specifies Text indent if a group row icon is not used
int m_nTreeIndent; // Tree indentation.
int m_nTreeStructureStyle; // Tree structure style.
int m_nTreeTextIndentRowParent; // Text indent in pixels for rows with children
int m_nTreeTextIndentRowChildren; // Text indent in pixels for rows without children
int m_nTreeTextIndentGroupRow; // Text indent in pixels for group rows
BOOL m_bGroupRowTextBold; // TRUE to draw group rows with bold text.
BOOL m_bShadeGroupHeadings; // Show or not show the indentation shade.
BOOL m_bShadeSortColumn; // Show or not show the items shade in the sorted by column.
BOOL m_bHotTracking; // TRUE to allow column hot tracking
BOOL m_bInvertColumnOnClick; // TRUE to invert column on click
CString m_strNoItems; // A string which contains customized "No Items" text for displaying in view when there are no visible rows.
CString m_strSortBy; // A string which contains customized "Sort By" text for displaying in tooltip
CString m_strIncreasing; // A string which contains customized "Increasing" text for displaying in tooltip
CString m_strDecreasing; // A string which contains customized "Decreasing" text for displaying in tooltip
CString m_strNoGroupBy; // A string which contains customized "No items" text message for displaying in Group By area when there are no items inside it.
CString m_strNoFieldsAvailable; // A string which contains customized "No Fields Available" text message for displaying in Field Chooser.
CString m_strExpand; // A string which contains customized "Expand" text for displaying in tooltip
CString m_strCollapse; // A string which contains customized "Collapse" text for displaying in tooltip
BOOL m_bHideSelection; // TRUE when hiding report control's selection by drawing selected items as others, FALSE otherwise.
BOOL m_bPrintSortTriangle; //If true - show sort triangle in printout also
XTPReportDrawSortTriangleStyle m_DrawSortTriangleStyle;
//xtpReportDrawSortTriangleAlways - the sort triangle displayed in column header when a column is sorted and
//the caption will cut will ellipsis
//xtpReportDrawSortTriangleDefault - the triangle will be removed when the column size is too small to display
//the full caption and triangle
//xtpReportDrawSortTriangleNever - the sort triangle never used
BOOL m_bUseColumnTextAlignment; // TRUE to draw caption text accordingly to its alignment
BOOL m_bRevertAlignment; // TRUE to revert column alignments
BOOL m_bUseEditTextAlignment; // TRUE to automatically apply edit alignment using column alignment
BOOL m_bShowLockIcon; //TRUE to show the lock icon FALSE to hide.
BOOL m_bUseShellIcon; //TRUE to use the shell icon FALSE else.
int m_iRecOrRowStart; //start position in numbering (0 or 1 or something user want)
BOOL m_bRecOrRowNum; // flag for Record (TRUE) or Row (FALSE) number to display if supported mode used
XTPReportTreeStructureStyle m_treeStructureStyle; // Tree structure style
CRect m_rcPreviewIndent; // Preview indentation.
int m_nFixedColumnsIndent; // Fixed Column total width.
BOOL m_bMoveScrollbarOnFixedColumnsIndent; //Move Scrollbar right follow FixedColumnsIndent
BOOL m_bThemedInplaceButtons; // Draw in-place buttons using current theme settings.
BOOL m_bBaseTreeIndent; // Flag to add Extra Tree indentation to cover initial TreeColumn.
CUIntArray m_arStartCol; //hold start column in each virtual page
int m_PrintPageWidth; //width of print page (run-time)
BOOL m_bPrintVirtualPageNumber; //print horizontal page #
BOOL m_bPrintPageRectangle; //flag to draw rectangle around page
int m_RecordNumberWidth; //column width for row / record numbers
BOOL m_bForceDynamicMarkupForCell; // TRUE if use Markup for Report Record Item
BOOL m_bForceShowDropMarker; // TRUE if Force Show Drop Marker
//used to support external (OLE) drag & drop handler and take care of drop marker line drawing and auto-scrolling
BOOL m_bShowNonActiveInPlaceButton; // TRUE if use Show NonActive InPlace Button (Combo, Expand, Spin)
BOOL m_bPrintWatermark; //flag to print watermark
BOOL m_bUseGroupRowSelectionState; // TRUE if use GroupSelectionState Glyph
BOOL m_bForceShowTooltip; // TRUE if use show tooltip for any cell width case
BOOL m_bCleanTooltip; // TRUE if use show tooltip without markup
BOOL m_bGrayIfDisable; //TRUE is disable draw in gray (standard behavior)
int m_nRowHeightDefault; //The default row height.
BOOL m_bCompactText; // Flag to ignore Icon for Narrow column to show more text
BOOL m_bUseDropMarker; // FALSE to not draw drop marked when dragging\dropping, TRUE by default
BOOL m_bSortTriangleOffsetFromRight; // Offset of sort triangle
int m_nTreeColumnLineLength; // This is the extra line length to apply to tree column lines if there is no expand button
int m_nBaseParentRecordIndent; // This is initial number of pixels a parent node will be indented when in a group
protected:
int m_nRowHeight; // Report row default height.
int m_nHeaderHeight; // Column header height.
int m_nFooterHeight; // Column footer height.
int m_nGroupGridLineHeight; // The height of the group grid line.
CXTPImageManager* m_pGlyphs; // Contains an additional image list for report control
BOOL m_bIsPreviewMode; // Show or not show the item preview.
int m_nResizingWidth; // The width of the column resizing marker area.
int m_nMaxPreviewLines; // Restrict maximum lines for preview text
CSize m_szGlyph; // Glyph size
CBrush m_brushTreeStructure; // Stores brush to draw tree nodes
CBrush m_brushGroupGridLineStyle; // Stores brush to draw group row grid lines
int m_nFreezeColsDividerStyle; // A set of flags from XTPReportFreezeColsDividerStyle
BOOL m_bFixedRowHeight; // TRUE if fixed rows used.
BOOL m_bColumnWidthWYSIWYG; // TRUE if columns width WYSIWYG mode used.
BOOL m_bShowWYSIWYGMarkers; // TRUE if in non-print mode header show red page-end markers
BOOL m_bLastColumnWidthWYSIWYG; // TRUE if last column width WYSIWYG mode used.
BOOL m_bDrawGridForEmptySpace; // TRUE if grid fills the empty space (if any) after the body rows.
BOOL m_bPrintGroupRowIcon; // TRUE if printout draw collapse-expand icon for group row
BOOL m_bColumnPlusMinusSign; // TRUE if use Expand/Collapse icon, FALSE if use DirectionalArrows
BOOL m_bFixedInplaceButtonHeight; // TRUE if fixed In place Buttons height used.
XTPReportGridStyle m_nGroupGridLineStyle; // Stores current style for group row grid lines
XTPReportColumnStyle m_columnStyle; // Contains column drawing style.
CXTPReportBorder *m_pBorder;
CXTPWinThemeWrapper *m_themeHeader; // Header theme wrapper.
CXTPWinThemeWrapper *m_themeButton; // In-place button theme wrapper.
CXTPWinThemeWrapper *m_themeCombo; // Combo box in-place button theme wrapper.
CXTPWinThemeWrapper *m_themeSpin; // Spin in-place button theme wrapper.
CXTPReportControl* m_pControl; //Pointer to the report control object.
CXTPMarkupUIElement* m_pMarkupUIElement_NoGroupBy; //The no group by markup UI element.
CString m_strMarkupUIElement_NoGroupBy; //The no group by markup UI element string.
void DrawPattern(CDC *pDC, XTPReportLineStyle lineStyle, XTPReportOrientation orientation, CRect rcLine);
void CreateLineStyleBrushes();
CBrush m_brushDotsSmallH;
CBrush m_brushDotsLargeH;
CBrush m_brushDashH;
CBrush m_brushDotsSmallV;
CBrush m_brushDotsLargeV;
CBrush m_brushDashV;
CBrush m_brushVeriticalGrid; // Stores brush to draw vertical grid lines
CBrush m_brushHorizontalGrid; // Stores brush to draw horizontal grid lines
};
AFX_INLINE BOOL CXTPReportPaintManager::IsUseDropMarker() const
{
return m_bUseDropMarker;
}
AFX_INLINE int CXTPReportPaintManager::GetHeaderHeight()
{
return m_nHeaderHeight;
}
AFX_INLINE void CXTPReportPaintManager::EnablePreviewMode(BOOL bIsPreviewMode)
{
m_bIsPreviewMode = bIsPreviewMode;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsPreviewMode() const
{
return m_bIsPreviewMode;
}
AFX_INLINE CFont* CXTPReportPaintManager::GetTextFont()
{
return &m_fontText;
}
AFX_INLINE int CXTPReportPaintManager::SetMaxPreviewLines(int nMaxLines)
{
int nOldMaxLines = m_nMaxPreviewLines;
m_nMaxPreviewLines = nMaxLines;
return nOldMaxLines;
}
AFX_INLINE int CXTPReportPaintManager::GetMaxPreviewLines()
{
return m_nMaxPreviewLines;
}
AFX_INLINE int CXTPReportPaintManager::GetPreviewItemHeight(CDC* /*pDC*/, CXTPReportRow* /*pRow*/, int /*nWidth*/, int nHeight)
{
return nHeight;
}
AFX_INLINE CXTPImageManager* CXTPReportPaintManager::GetGlyphs() const
{
return m_pGlyphs;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsFixedRowHeight() const
{
return m_bFixedRowHeight;
}
AFX_INLINE void CXTPReportPaintManager::SetFixedRowHeight(BOOL bFixedRowHeight)
{
m_bFixedRowHeight = bFixedRowHeight;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsLastColumnWidthWYSIWYG() const
{
return m_bLastColumnWidthWYSIWYG;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsColumnWidthWYSIWYG() const
{
return m_bColumnWidthWYSIWYG;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsShowWYSIWYGMarkers() const
{
return m_bShowWYSIWYGMarkers;
}
AFX_INLINE void CXTPReportPaintManager::ShowWYSIWYGMarkers(BOOL bSet)
{
m_bShowWYSIWYGMarkers = bSet;
}
AFX_INLINE void CXTPReportPaintManager::SetColumnWidthWYSIWYG(BOOL bColumnWidthWYSIWYG)
{
m_bColumnWidthWYSIWYG = bColumnWidthWYSIWYG;
}
AFX_INLINE void CXTPReportPaintManager::SetLastColumnWidthWYSIWYG(BOOL bColumnWidthWYSIWYG)
{
m_bLastColumnWidthWYSIWYG = bColumnWidthWYSIWYG;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsFixedInplaceButtonHeight() const
{
return m_bFixedInplaceButtonHeight;
}
AFX_INLINE void CXTPReportPaintManager::SetInplaceButtonHeight(BOOL bFixedInplaceButtonHeight)
{
m_bFixedInplaceButtonHeight= bFixedInplaceButtonHeight;
}
AFX_INLINE int CXTPReportPaintManager::GetFreezeColsDividerStyle() const
{
return m_nFreezeColsDividerStyle;
}
AFX_INLINE void CXTPReportPaintManager::SetFreezeColsDividerStyle(int nStyle)
{
m_nFreezeColsDividerStyle = nStyle;
}
AFX_INLINE COLORREF CXTPReportPaintManager::MixColor(COLORREF clrLight, COLORREF clrDark, double dFactor)
{
return RGB(GetRValue(clrLight) - dFactor * (GetRValue(clrLight) - GetRValue(clrDark)),
GetGValue(clrLight) - dFactor * (GetGValue(clrLight) - GetGValue(clrDark)),
GetBValue(clrLight) - dFactor * (GetBValue(clrLight) - GetBValue(clrDark)));
}
AFX_INLINE void CXTPReportPaintManager::Line(CDC *pDC, int x, int y, int cx, int cy, CPen *pPen)
{
CPen *pOldPen = pDC->SelectObject(pPen);
pDC->MoveTo(x, y);
pDC->LineTo(x + cx, y + cy);
pDC->SelectObject(pOldPen);
}
AFX_INLINE BOOL CXTPReportPaintManager::OnDrawAction(XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs)
{
UNREFERENCED_PARAMETER(pDrawArgs);
return TRUE;
}
AFX_INLINE XTPReportColumnStyle CXTPReportPaintManager::GetColumnStyle() const
{
return m_columnStyle;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsColumnPlusMinusSign() const
{
return m_bColumnPlusMinusSign;
}
AFX_INLINE void CXTPReportPaintManager::SetColumnPlusMinusSign(BOOL bDraw)
{
m_bColumnPlusMinusSign = bDraw;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsPrintGroupRowIcon() const
{
return m_bPrintGroupRowIcon;
}
AFX_INLINE void CXTPReportPaintManager::SetPrintGroupRowIcon(BOOL bDraw)
{
m_bPrintGroupRowIcon = bDraw;
}
AFX_INLINE BOOL CXTPReportPaintManager::IsDrawGridForEmptySpace() const
{
return m_bDrawGridForEmptySpace;
}
AFX_INLINE void CXTPReportPaintManager::SetDrawGridForEmptySpace(BOOL bDrawGrid)
{
m_bDrawGridForEmptySpace = bDrawGrid;
}
AFX_INLINE void CXTPReportPaintManager::SetColumnOffice2007CustomThemeBaseColor(COLORREF clrBaseColor)
{
m_clrColumnOffice2007CustomTheme = clrBaseColor;
RefreshMetrics();
}
AFX_INLINE COLORREF CXTPReportPaintManager::GetColumnOffice2007CustomThemeBaseColor() const
{
return m_clrColumnOffice2007CustomTheme;
}
AFX_INLINE void CXTPReportPaintManager::SetReportControl(CXTPReportControl *pControl)
{
m_pControl = pControl;
}
#define m_bDrawSortTriangleAlways m_bPrintSortTriangle
#endif //#if !defined(__XTPREPORTPAINTMANAGER_H__)