You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
15 KiB
C++
364 lines
15 KiB
C++
// XTPSyntaxEditStruct.h
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO 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 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(__XTPSYNTAXEDITSTRUCT_H__)
|
|
#define __XTPSYNTAXEDITSTRUCT_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
namespace XTPSyntaxEditLexAnalyser
|
|
{
|
|
class CXTPSyntaxEditLexTextBlock;
|
|
}
|
|
|
|
class CXTPSyntaxEditCtrl;
|
|
|
|
//===========================================================================
|
|
// max line: 1 048 575
|
|
// max col: 4 095
|
|
//===========================================================================
|
|
#define XTP_EDIT_XLC(nL, nC) ( (((DWORD)nL) << 12) | (((DWORD)nC) & 0x00000FFF))
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// XTP_EDIT_LINECOL structure represents coordinates of text items on the
|
|
// displaying context in terms of line/column.
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_LINECOL
|
|
{
|
|
int nLine; // stores line identifier
|
|
int nCol; // stores column identifier
|
|
|
|
static const XTP_EDIT_LINECOL MAXPOS; // maximum position value
|
|
static const XTP_EDIT_LINECOL MINPOS; // minimum position value
|
|
static const XTP_EDIT_LINECOL Pos1; // {1,0} position value
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs XTP_EDIT_LINECOL from the pair of coordinates
|
|
// (line and column).
|
|
// Parameters:
|
|
// nParamLine : [in] Line identifier.
|
|
// nParamCol : [in] Column identifier.
|
|
//----------------------------------------------------------------------
|
|
static const XTP_EDIT_LINECOL MakeLineCol(int nParamLine, int nParamCol);
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// This static functions are used to get minimum or maximum of 2
|
|
// XTP_EDIT_LINECOL values.
|
|
// Parameters:
|
|
// pos1 : [in] First value.
|
|
// pos2 : [in] Second value.
|
|
//----------------------------------------------------------------------
|
|
static const XTP_EDIT_LINECOL min2(const XTP_EDIT_LINECOL& pos1, const XTP_EDIT_LINECOL& pos2);
|
|
static const XTP_EDIT_LINECOL max2(const XTP_EDIT_LINECOL& pos1, const XTP_EDIT_LINECOL& pos2); // <COMBINE XTP_EDIT_LINECOL::min2@const XTP_EDIT_LINECOL&@const XTP_EDIT_LINECOL&>
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Returns coordinates in the packed form.
|
|
// Returns:
|
|
// DWORD value.
|
|
//----------------------------------------------------------------------
|
|
DWORD GetXLC() const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Returns data validation flag.
|
|
// Returns:
|
|
// TRUE if line/column identifiers > 0; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL IsValidData() const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Clears data members.
|
|
// Remarks:
|
|
// Call this member function to set line/column coordinates to 0.
|
|
//----------------------------------------------------------------------
|
|
void Clear();
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Less than operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct less than given; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL operator < (const XTP_EDIT_LINECOL& pos2) const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Less than or equal operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct less than or equal given; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL operator <= (const XTP_EDIT_LINECOL& pos2) const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Greater than operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct greater than given; FALSE otherwise.
|
|
//----------------------------------------------------------------------
|
|
BOOL operator > (const XTP_EDIT_LINECOL& pos2) const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Greater or equal operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct greater than or equal given; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL operator >= (const XTP_EDIT_LINECOL& pos2) const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Equal operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct equal given; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL operator == (const XTP_EDIT_LINECOL& pos2) const;
|
|
|
|
//----------------------------------------------------------------------
|
|
// Summary:
|
|
// Not Equal operator. Compares current struct with given.
|
|
// Parameters:
|
|
// pos2 : [in] Reference to struct to compare.
|
|
// Returns:
|
|
// TRUE if current struct not equal given; FALSE otherwise
|
|
//----------------------------------------------------------------------
|
|
BOOL operator != (const XTP_EDIT_LINECOL& pos2) const {
|
|
return !operator==(pos2);
|
|
}
|
|
};
|
|
|
|
//===========================================================================
|
|
// XTP_EDIT_COLORVALUES struct stores the colors for different phrases
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_COLORVALUES
|
|
{
|
|
CXTPPaintManagerColor crText; // text color
|
|
CXTPPaintManagerColor crBack; // back color
|
|
CXTPPaintManagerColor crReadOnlyBack; // back color for read only mode
|
|
CXTPPaintManagerColor crHiliteText; // text color of selection
|
|
CXTPPaintManagerColor crHiliteBack; // text color of selection back
|
|
CXTPPaintManagerColor crInactiveHiliteText; // inactive text color of selection
|
|
CXTPPaintManagerColor crInactiveHiliteBack; // inactive text color of selection back
|
|
CXTPPaintManagerColor crLineNumberText; // Line numbers text and line color
|
|
CXTPPaintManagerColor crLineNumberBack; // Line numbers text and line color
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary: Get corresponding background color for edit mode or for
|
|
// read-only mode (crBack or crReadOnlyBack member value).
|
|
// Returns: Background color.
|
|
// See Also: crBack, crReadOnlyBack
|
|
//-----------------------------------------------------------------------
|
|
COLORREF GetBackColorEx(CXTPSyntaxEditCtrl* pEditCtrl);
|
|
};
|
|
|
|
//===========================================================================
|
|
// XTP_EDIT_ROWSBLOCK struct
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_ROWSBLOCK
|
|
{
|
|
XTP_EDIT_LINECOL lcStart; // Start position.
|
|
XTP_EDIT_LINECOL lcEnd; // End Position.
|
|
|
|
CString strCollapsedText; //Collapsed text.
|
|
};
|
|
|
|
typedef CArray<XTP_EDIT_ROWSBLOCK, const XTP_EDIT_ROWSBLOCK&> CXTPSyntaxEditRowsBlockArray;
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Stores collapsed block parameters.
|
|
// See also:
|
|
// XTP_EDIT_ROWSBLOCK
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_COLLAPSEDBLOCK
|
|
{
|
|
XTP_EDIT_ROWSBLOCK collBlock; // Collapsed block parameters
|
|
CRect rcCollMark; // Rectangle area to display collapsed block
|
|
};
|
|
|
|
const UINT XTP_EDIT_ROWNODE_NOTHING = 0x00; // Define that row has no node mark.
|
|
const UINT XTP_EDIT_ROWNODE_COLLAPSED = 0x01; // Define that row has collapsed node mark.
|
|
const UINT XTP_EDIT_ROWNODE_EXPANDED = 0x02; // Define that row has expanded node mark.
|
|
const UINT XTP_EDIT_ROWNODE_ENDMARK = 0x04; // Define that row has end node mark.
|
|
const UINT XTP_EDIT_ROWNODE_NODEUP = 0x10; // Define that row has up-line node mark.
|
|
const UINT XTP_EDIT_ROWNODE_NODEDOWN = 0x20; // Define that row has down-line node mark.
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// Used with XTP_EDIT_FONTOPTIONS struct and define unspecified member value.
|
|
// See Also: XTP_EDIT_FONTOPTIONS
|
|
//===========================================================================
|
|
#define XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION (BYTE)-1
|
|
|
|
//===========================================================================
|
|
// XTP_EDIT_FONTOPTIONS struct is a self initializing LOGFONT structure that
|
|
// initializes all values equal to XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION except
|
|
// for lfFaceName which is set to zero length.
|
|
// See Also: XTP_EDIT_FONTOPTIONS_UNSPEC_OPTION
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_FONTOPTIONS : public LOGFONT
|
|
{
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default constructor.
|
|
//-----------------------------------------------------------------------
|
|
XTP_EDIT_FONTOPTIONS();
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: XTP_EDIT_TEXTBLOCK structure stores the text blocks after parsing
|
|
//===========================================================================
|
|
struct _XTP_EXT_CLASS XTP_EDIT_TEXTBLOCK
|
|
{
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Default constructor.
|
|
//-----------------------------------------------------------------------
|
|
XTP_EDIT_TEXTBLOCK();
|
|
|
|
int nPos; // Position
|
|
int nNextBlockPos; // Position for the next block
|
|
XTP_EDIT_COLORVALUES clrBlock; // Color for this block
|
|
XTP_EDIT_FONTOPTIONS lf;// Font options for this block;
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: This is used to define row and col selection rect
|
|
//===========================================================================
|
|
struct XTP_EDIT_ROWCOLRECT
|
|
{
|
|
int nRow1; // First row index for a text block.
|
|
int nCol1; // First column index for a text block.
|
|
int nRow2; // Last row index for a text block.
|
|
int nCol2; // Last column index for a text block.
|
|
};
|
|
|
|
//////////////////////////////
|
|
// Notification structures
|
|
//////////////////////////////
|
|
|
|
//===========================================================================
|
|
// Summary: Bookmark notification structure
|
|
// Provided as LPARAM with WM_NOTIFY while
|
|
// bookmarks are needed to be drawn
|
|
//===========================================================================
|
|
struct XTP_EDIT_SENMBOOKMARK
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
HDC hDC; // HDC for drawing
|
|
RECT rcBookmark; // RECT for bookmark
|
|
int nRow; // The row number
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Row column notification structure
|
|
// Provided as LPARAM with WM_NOTIFY
|
|
// This is used to display current row and column
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_ROWCOLCHANGED
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
int nRow; // Current document row
|
|
int nCol; // Current document col
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Document notification structure
|
|
// Provided as LPARAM with WM_NOTIFY
|
|
// used to notify of a change in the document's modified state.
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_DOCMODIFIED
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
BOOL bModified; // TRUE if the document was modified.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Structure to notify "Edit changed" event
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_EDITCHANGED
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
int nRowFrom; // The start row for the action
|
|
int nRowTo; // The end row for the action
|
|
int nAction; // The actual action
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Structure to notify XTP_EDIT_NM_MARGINCLICKED event
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_MARGINCLICKED
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
int nRow; // Document row number
|
|
int nDispRow; // Visible row number (start from 1);
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Structure to notify XTP_EDIT_NM_UPDATESCROLLPOS event
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_SETSCROLLPOS
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
DWORD dwUpdate; // Scroll position update flags can be any combination of XTP_EDIT_UPDATE_HORZ, XTP_EDIT_UPDATE_VERT or XTP_EDIT_UPDATE_DIAG.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Structure to notify XTP_EDIT_NM_ENABLESCROLLBAR event
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_ENABLESCROLLBAR
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
DWORD dwScrollBar; // Define the scroll bar(s) to change state as WS_HSCROLL and WS_VSCROLL flags.
|
|
DWORD dwState; // Define the scroll bar(s) state as WS_HSCROLL and WS_VSCROLL flags.
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: Structure to notify XTP_EDIT_NM_PARSEEVENT event
|
|
//===========================================================================
|
|
struct XTP_EDIT_NMHDR_PARSEEVENT
|
|
{
|
|
NMHDR nmhdr; // First param should be NMHDR
|
|
DWORD code; // Parser event. A value from XTPSyntaxEditOnParseEvent enum.
|
|
WPARAM wParam; // First event parameter.
|
|
LPARAM lParam; // Second event parameter.
|
|
};
|
|
|
|
#endif // !defined(__XTPSYNTAXEDITSTRUCT_H__)
|