XTPSyntaxEditPaintManager.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:25k
源码类别:
对话框与窗口
开发平台:
Visual C++
- // XTPSyntaxEditPaintManager.h interface for the CXTPSyntaxEditPaintManager class.
- //
- // This file is a part of the XTREME TOOLKIT PRO MFC class library.
- // (c)1998-2008 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 SYNTAX EDIT 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(__XTPSYNTAXEDITPAINTMANAGER_H__)
- #define __XTPSYNTAXEDITPAINTMANAGER_H__
- //}}AFX_CODEJOCK_PRIVATE
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- class CXTPSyntaxEditCtrl;
- //{{AFX_CODEJOCK_PRIVATE
- #define XTP_DECLARE_COLOR_PROP(propName)
- OLE_COLOR OleGet##propName();
- void OleSet##propName(OLE_COLOR oleColor);
- //}}AFX_CODEJOCK_PRIVATE
- //===========================================================================
- // Summary:
- // This class used by CXTPSyntaxEditCtrl as the paint manager.
- //===========================================================================
- class _XTP_EXT_CLASS CXTPSyntaxEditPaintManager : public CXTPCmdTarget
- {
- //{{AFX_CODEJOCK_PRIVATE
- DECLARE_DYNAMIC(CXTPSyntaxEditPaintManager)
- //}}AFX_CODEJOCK_PRIVATE
- public:
- //-----------------------------------------------------------------------
- // Summary:
- // Default object constructor.
- //-----------------------------------------------------------------------
- CXTPSyntaxEditPaintManager();
- //-----------------------------------------------------------------------
- // Summary:
- // Destroys a CXTPSyntaxEditPaintManager object, handles cleanup
- // and deallocation.
- //-----------------------------------------------------------------------
- virtual ~CXTPSyntaxEditPaintManager();
- //-----------------------------------------------------------------------
- // Summary:
- // Initializes default paint manager bitmaps, should be called after
- // creating control window.
- //-----------------------------------------------------------------------
- virtual void InitBitmaps();
- //-----------------------------------------------------------------------
- // Summary:
- // This method is called to refresh the visual metrics of manager.
- //-----------------------------------------------------------------------
- virtual void RefreshMetrics();
- //-----------------------------------------------------------------------
- // Summary:
- // Update internal text font object (if need) and select it to DC.
- // Parameters:
- // pEditCtrl : [in] A pointer to edit control.
- // lf : [in] Reference to font options structure.
- // Returns:
- // TRUE if the edit control font was updated, otherwise FALSE.
- // See also:
- // struct LOGFONT
- //-----------------------------------------------------------------------
- virtual BOOL UpdateTextFont(CXTPSyntaxEditCtrl* pEditCtrl, const XTP_EDIT_FONTOPTIONS& lf);
- //-----------------------------------------------------------------------
- // Summary:
- // Draw the line numbers and returns the column position to start
- // rest of the drawing.
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcRect : [in] A rectangle to draw.
- // nTextRow : [in] The text row number for which to draw.
- // pEditCtrl : [in] A pointer to edit control.
- //-----------------------------------------------------------------------
- virtual void DrawLineNumber(CDC *pDC, const CRect& rcRect, int nTextRow,
- CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary:
- // Draw the line Collapsible node icon
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcNode : [in] A rectangle to draw node.
- // rcNodeFull : [in] A full node area rectangle.
- // dwType : [in] Line Node type flags.
- // nTextRow : [in] The text row number for which to draw.
- // pEditCtrl : [in] A pointer to edit control.
- //-----------------------------------------------------------------------
- virtual void DrawLineNode(CDC *pDC, const CRect& rcNode, const CRect& rcNodeFull,
- DWORD dwType, int nTextRow, CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary:
- // Fill the line node background.
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcNodeFull : [in] A full node area rectangle.
- // dwType : [in] Line Node type flags.
- // nTextRow : [in] The text row number for which to draw.
- // pEditCtrl : [in] A pointer to edit control.
- //-----------------------------------------------------------------------
- virtual void DrawLineNodeBackground(CDC *pDC, const CRect& rcNodeFull, DWORD dwType,
- int nTextRow, CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary:
- // Draws frames around collapsed text blocks.
- // Parameters:
- // pEditCtrl : [in] A pointer to edit control.
- // pDC : [in] Pointer to device context.
- //-----------------------------------------------------------------------
- virtual void DrawCollapsedTextMarks(CXTPSyntaxEditCtrl* pEditCtrl, CDC *pDC);
- //-----------------------------------------------------------------------
- // Summary:
- // Draws marks for line.
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcRect : [in] A rectangle to draw.
- // nTextRow : [in] The text row number for which to draw.
- // pEditCtrl : [in] A pointer to edit control.
- //-----------------------------------------------------------------------
- virtual void DrawLineMarks(CDC *pDC, const CRect& rcRect, int nTextRow,
- CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary:
- // Draws a single line.
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcTextLine : [in] A rectangle to draw.
- // nTextRow : [in] The text row number.
- // nLine : [in] The screen (page) line number.
- // pEditCtrl : [in] A pointer to edit control.
- // Returns:
- // The height to draw row text.
- //-----------------------------------------------------------------------
- virtual int DrawLineTextEx(CDC *pDC, const CRect& rcTextLine, int nTextRow, int nLine,
- CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary:
- // Print a row text.
- // Parameters:
- // pDC : [in] Pointer to device context to draw to.
- // rcTextLine : [in] A rectangle to draw.
- // nTextRow : [in] The text row number.
- // nLine : [in] The screen (page) line number.
- // pEditCtrl : [in] A pointer to edit control.
- // nFlags : [in] Additional printing options. The folowing are supported:
- // DT_CALCRECT, DT_SINGLELINE, DT_WORDBREAK
- // Returns:
- // The height to print row text.
- //-----------------------------------------------------------------------
- virtual int PrintLineTextEx(CDC *pDC, const CRect& rcTextLine, int nTextRow,
- int nLine, CXTPSyntaxEditCtrl* pEditCtrl, int nFlags = 0);
- //-----------------------------------------------------------------------
- // Summary:
- // Draws editor text line and calculates selection position.
- // Parameters:
- // txtBlk : [in] Reference to XTP_EDIT_TEXTBLOCK structure.
- // nSelStartX : [in] Start coordinate.
- // nSelEndX : [in] End coordinate.
- // arTxtBlk : [in] Array of references to XTP_EDIT_TEXTBLOCK structures.
- // bUseBlk : [in] Array of references to BOOL.
- // See also:
- // struct XTP_EDIT_TEXTBLOCK
- //-----------------------------------------------------------------------
- virtual void DrawLineCalcSel(const XTP_EDIT_TEXTBLOCK& txtBlk,
- int nSelStartX, int nSelEndX,
- XTP_EDIT_TEXTBLOCK (&arTxtBlk)[4], BOOL (&bUseBlk)[4] );
- protected:
- //-----------------------------------------------------------------------
- // Summary:
- // Draws marks for line.
- // Parameters:
- // pEditCtrl : [in] A pointer to edit control.
- // pBookmark : [in] Pointer to structure with mark parameters.
- // See also:
- // LPXTP_EDIT_SENMBOOKMARK
- //-----------------------------------------------------------------------
- virtual void DrawLineMark(CXTPSyntaxEditCtrl* pEditCtrl, XTP_EDIT_SENMBOOKMARK* pBookmark);
- //-----------------------------------------------------------------------
- // Summary:
- // Draw the line numbers border .
- // Parameters:
- // pDC : [in] Pointer to device context to print to
- // rcLineNum : [in] Line number rect
- // clrBorder : [in] Border color
- //-----------------------------------------------------------------------
- virtual void DrawLineNumbersBorder(CDC *pDC, const CRect& rcLineNum, const COLORREF clrBorder);
- public:
- //-----------------------------------------------------------------------
- // Summary :
- // Sets line selection cursor.
- // Parameters:
- // hCurLine : [in] Handle to the cursor. The cursor must have been
- // created by the CreateCursor function or loaded
- // by the LoadCursor or LoadImage function.Cursor
- // appears in lines selection area.
- // Returns:
- // Handle of previous cursor.
- //-----------------------------------------------------------------------
- HCURSOR SetLineSelCursor(HCURSOR hCurLine);
- //-----------------------------------------------------------------------
- // Summary:
- // Sets cursor shape for "copy" cursor.
- // Parameters:
- // hCurCopy : [in] Handle to the cursor. The cursor must have been
- // created by the CreateCursor function or loaded
- // by the LoadCursor or LoadImage function.
- // Returns:
- // Handle of previous cursor.
- //-----------------------------------------------------------------------
- HCURSOR SetCopyCursor(HCURSOR hCurCopy);
- //-----------------------------------------------------------------------
- // Summary:
- // Sets cursor shape for "move" cursor.
- // Parameters:
- // hCurMove : [in] Handle to the cursor. The cursor must have been
- // created by the CreateCursor function or loaded
- // by the LoadCursor or LoadImage function.
- // Returns:
- // Handle of previous cursor.
- //-----------------------------------------------------------------------
- HCURSOR SetMoveCursor(HCURSOR hCurMove);
- //-----------------------------------------------------------------------
- // Summary: Get text color.
- // Returns: Text color.
- // See Also: SetTextColor
- //-----------------------------------------------------------------------
- COLORREF GetTextColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get background color.
- // Returns: Background color.
- // See Also: SetBackColor
- //-----------------------------------------------------------------------
- COLORREF GetBackColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get corresponding background color for edit mode or for
- // read-only mode.
- // Returns: Background color.
- // See Also: SetBackColor, GetBackColor
- //-----------------------------------------------------------------------
- COLORREF GetBackColorEx(CXTPSyntaxEditCtrl* pEditCtrl);
- //-----------------------------------------------------------------------
- // Summary: Get selected text color.
- // Returns: Selected text color.
- // See Also: SetHiliteTextColor
- //-----------------------------------------------------------------------
- COLORREF GetHiliteTextColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get selected background color.
- // Returns: Selected background color.
- // See Also: SetHiliteBackColor
- //-----------------------------------------------------------------------
- COLORREF GetHiliteBackColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get selected text color when control has no focus.
- // Returns: Selected text color when control has no focus.
- // See Also: SetInactiveHiliteTextColor
- //-----------------------------------------------------------------------
- COLORREF GetInactiveHiliteTextColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get selected background color when control has no focus.
- // Returns: Selected background color when control has no focus.
- // See Also: SetInactiveHiliteBackColor
- //-----------------------------------------------------------------------
- COLORREF GetInactiveHiliteBackColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get Line Numbers text color.
- // Returns: Line Numbers text color.
- // See Also: SetLineNumberTextColor
- //-----------------------------------------------------------------------
- COLORREF GetLineNumberTextColor() const;
- //-----------------------------------------------------------------------
- // Summary: Get Line Numbers background color.
- // Returns: Line Numbers background color.
- // See Also: SetLineNumberBackColor
- //-----------------------------------------------------------------------
- COLORREF GetLineNumberBackColor() const;
- //-----------------------------------------------------------------------
- // Summary: Set text color.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetTextColor
- //-----------------------------------------------------------------------
- BOOL SetTextColor(COLORREF crText, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary: Set background color.
- // Parameters:
- // crBack - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetBackColor
- //-----------------------------------------------------------------------
- BOOL SetBackColor(COLORREF crBack, BOOL bUpdateReg = FALSE);
- //-----------------------------------------------------------------------
- // Summary: Set background color for read-onlymode.
- // Parameters:
- // crBack - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetBackColor
- //-----------------------------------------------------------------------
- BOOL SetReadOnlyBackColor(COLORREF crBack, BOOL bUpdateReg = FALSE);
- //-----------------------------------------------------------------------
- // Summary: Set selected text color.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetHiliteTextColor
- //-----------------------------------------------------------------------
- BOOL SetHiliteTextColor(COLORREF color, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary:
- // Set selected background color.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetHiliteBackColor
- //-----------------------------------------------------------------------
- BOOL SetHiliteBackColor(COLORREF color, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary:
- // Set selected text color when control has no focus.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetInactiveHiliteTextColor
- //-----------------------------------------------------------------------
- BOOL SetInactiveHiliteTextColor(COLORREF color, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary:
- // Set selected background color when control has no focus.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetInactiveHiliteBackColor
- //-----------------------------------------------------------------------
- BOOL SetInactiveHiliteBackColor(COLORREF color, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary:
- // Set Line Numbers text color.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetLineNumberTextColor
- //-----------------------------------------------------------------------
- BOOL SetLineNumberTextColor(COLORREF color, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary:
- // Set Line Numbers background color.
- // Parameters:
- // crText - A color value.
- // bUpdateReg - Set TRUE to save color in registry.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetLineNumberBackColor
- //-----------------------------------------------------------------------
- BOOL SetLineNumberBackColor(COLORREF color, BOOL bUpdateReg=FALSE);
- public:
- //-----------------------------------------------------------------------
- // Summary: Get common font.
- // Returns: A pointer to CFont object.
- // See Also: SetFont
- //-----------------------------------------------------------------------
- CFont* GetFont();
- //-----------------------------------------------------------------------
- // Summary: Get editor text font.
- // Returns: A pointer to CFont object.
- // See Also: SetFontText
- //-----------------------------------------------------------------------
- CFont* GetFontText();
- //-----------------------------------------------------------------------
- // Summary: Get line numbers font.
- // Returns: A pointer to CFont object.
- // See Also: SetFontLineNumber
- //-----------------------------------------------------------------------
- CFont* GetFontLineNumber();
- //-----------------------------------------------------------------------
- // Summary: Get ToolTip font.
- // Returns: A pointer to CFont object.
- // See Also: SetFontToolTip
- //-----------------------------------------------------------------------
- CFont* GetFontToolTip(); // ToolTip font.
- //-----------------------------------------------------------------------
- // Summary: Set common font.
- // Parameters:
- // pLogfont - A pointer to LPLOGFONT structure.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetFont
- //-----------------------------------------------------------------------
- BOOL SetFont(LPLOGFONT pLogfont);
- //-----------------------------------------------------------------------
- // Summary: Set editor text font.
- // Parameters:
- // pLogfont - A pointer to LPLOGFONT structure.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetFontText
- //-----------------------------------------------------------------------
- BOOL SetFontText(LPLOGFONT pLogfont);
- //-----------------------------------------------------------------------
- // Summary: Set line numbers font.
- // Parameters:
- // pLogfont - A pointer to LPLOGFONT structure.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetFontLineNumber
- //-----------------------------------------------------------------------
- BOOL SetFontLineNumber(LPLOGFONT pLogfont);
- //-----------------------------------------------------------------------
- // Summary: Set ToolTip font.
- // Parameters:
- // pLogfont - A pointer to LPLOGFONT structure.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: GetFontToolTip
- //-----------------------------------------------------------------------
- BOOL SetFontToolTip(LPLOGFONT pLogfont);
- //-----------------------------------------------------------------------
- // Summary: Set all editor fonts.
- // Parameters:
- // pLogfont - A pointer to LPLOGFONT structure.
- // Returns: TRUE if successful, FALSE otherwise.
- // See Also: SetFont, SetFontText, SetFontLineNumber, SetFontToolTip
- //-----------------------------------------------------------------------
- BOOL CreateFontIndirect(LPLOGFONT pLogfont, BOOL bUpdateReg=FALSE);
- //-----------------------------------------------------------------------
- // Summary: Get Cursor to show on line selection area.
- // Returns: A HCURSOR handle to cursor.
- // See Also: SetLineSelCursor
- //-----------------------------------------------------------------------
- HCURSOR GetCurLine();
- //-----------------------------------------------------------------------
- // Summary: Get Cursor for moving text.
- // Returns: A HCURSOR handle to cursor.
- // See Also: SetMoveCursor
- //-----------------------------------------------------------------------
- HCURSOR GetCurMove();
- //-----------------------------------------------------------------------
- // Summary: Get Cursor for copying text.
- // Returns: A HCURSOR handle to cursor.
- // See Also: SetCopyCursor
- //-----------------------------------------------------------------------
- HCURSOR GetCurCopy();
- //-----------------------------------------------------------------------
- // Summary: Get standard NO cursor.
- // Returns: A HCURSOR handle to cursor.
- //-----------------------------------------------------------------------
- HCURSOR GetCurNO();
- //-----------------------------------------------------------------------
- // Summary: Get standard IBEAM cursor.
- // Returns: A HCURSOR handle to cursor.
- //-----------------------------------------------------------------------
- HCURSOR GetCurIBeam();
- //-----------------------------------------------------------------------
- // Summary: Get standard ARROW cursor.
- // Returns: A HCURSOR handle to cursor.
- //-----------------------------------------------------------------------
- HCURSOR GetCurArrow();
- protected:
- // fonts
- CFont m_font; // Default font for normal text.
- CFont m_fontText; // Current text font
- CFont m_fontLineNumber; // The font for line numbering
- CFont m_fontToolTip; // The font for tool tip text
- // cursors
- HCURSOR m_hCurLine; // Cursor to show on line selection area
- HCURSOR m_hCurMove; // Cursor for moving text
- HCURSOR m_hCurCopy; // Cursor for copying text
- HCURSOR m_hCurNO; // Standard NO cursor
- HCURSOR m_hCurIBeam; // Standard IBEAM cursor
- HCURSOR m_hCurArrow; // Standard ARROW cursor
- CImageList m_ilBookmark; // Image list with all bookmark images
- CPen m_penGray; // Standard common gray pen
- XTP_EDIT_COLORVALUES m_clrValues; // Default color
- //-----------------------------------------------------------------------
- // Summary: Get Bookmarks image list.
- // Returns: A pointer to CImageList.
- //-----------------------------------------------------------------------
- virtual CImageList* GetBookmarks();
- protected:
- };
- /////////////////////////////////////////////////////////////////////////////
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetTextColor() const {
- return m_clrValues.crText;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetBackColor() const {
- return m_clrValues.crBack;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetBackColorEx(CXTPSyntaxEditCtrl* pEditCtrl) {
- return m_clrValues.GetBackColorEx(pEditCtrl);
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetHiliteTextColor() const {
- return m_clrValues.crHiliteText;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetHiliteBackColor() const {
- return m_clrValues.crHiliteBack;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetInactiveHiliteTextColor() const {
- return m_clrValues.crInactiveHiliteText;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetInactiveHiliteBackColor() const {
- return m_clrValues.crInactiveHiliteBack;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetLineNumberTextColor() const {
- return m_clrValues.crLineNumberText;
- }
- AFX_INLINE COLORREF CXTPSyntaxEditPaintManager::GetLineNumberBackColor() const {
- return m_clrValues.crLineNumberBack;
- }
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif // !defined(__XTPSYNTAXEDITPAINTMANAGER_H__)