// 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__)