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.
899 lines
34 KiB
C
899 lines
34 KiB
C
2 years ago
|
// XTPTrackBlock.h: interface for the CXTPTrackBlock 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(__XTPTRACKBLOCK_H__)
|
||
|
#define __XTPTRACKBLOCK_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPTrackControlItem;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class represents a track control block. Track Blocks are a visual
|
||
|
// representation of units of time in a track. They can have both a
|
||
|
// minimum and maximum time period.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPTrackBlock : public CXTPCmdTarget
|
||
|
{
|
||
|
DECLARE_SERIAL(CXTPTrackBlock);
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs the CXTPTrackBlock object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackBlock();
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to draw the block.
|
||
|
// Parameters:
|
||
|
// pDC - The pointer to the device context.
|
||
|
// rc - The bounds of the drawing area.
|
||
|
// bSelected - Tells whether the block is selected or not.
|
||
|
// Returns:
|
||
|
// An integer value specifying whether the drawing is successful.A value
|
||
|
// of 1 is to represent success and 0 for failure.
|
||
|
// Remarks:
|
||
|
// This is a virtual function hence the sub classes can give their
|
||
|
// implementation for this function.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int Draw(CDC* pDC, CRect rc, BOOL bSelected);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the item is a key.
|
||
|
// Returns:
|
||
|
// A BOOL value of TRUE tells the block is a key and FALSE else.
|
||
|
// Remarks:
|
||
|
// This is a virtual function hence the sub classes can give their
|
||
|
// implementation(meaning) for this function.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsKey() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the block is resizable.
|
||
|
// Returns:
|
||
|
// A BOOL value of TRUE tells the block is resizable and FALSE else.
|
||
|
// Remarks:
|
||
|
// This is a virtual function hence the sub classes can give their
|
||
|
// implementation(meaning) for this function.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsResizable() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the position of the block.
|
||
|
// Parameters:
|
||
|
// nPosition - An integer value specifying the position of the block on
|
||
|
// the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetPosition(int nPosition);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the position of the block.
|
||
|
// Returns:
|
||
|
// An integer value specifying the position of the block on the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetPosition() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the length of the block.
|
||
|
// Parameters:
|
||
|
// nLength - An integer value specifying the length of the block on
|
||
|
// the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetLength(int nLength);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the length of the block.
|
||
|
// Returns:
|
||
|
// An integer value specifying the length of the block on the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetLength() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the color of the block.
|
||
|
// Parameters:
|
||
|
// clr - A COLORREF value specifying the color of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetColor(COLORREF clr);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the bounding rectangle of the block.
|
||
|
// Returns:
|
||
|
// A CRect value specifying the rectangle of the block
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect GetRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the block is locked, which means
|
||
|
// the block cannot be moved or resized.
|
||
|
// Returns:
|
||
|
// A BOOL value specifying whether the blocked is locked or not.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsLocked() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the block locked, which means the block
|
||
|
// cannot be moved or resized.
|
||
|
// Parameters:
|
||
|
// bLocked - Tells whether the blocked is to be locked or not, TRUE is
|
||
|
// for locking a block and is the default argument.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetLocked(BOOL bLocked = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the percentage of height of a block
|
||
|
// compared to it's track.
|
||
|
// Parameters:
|
||
|
// dHeightPercent - A double value denoting the height percentage.
|
||
|
// Remarks:
|
||
|
// Blocks can also be different different heights and set to different
|
||
|
// vertical alignments within the track. This is used just as a visual
|
||
|
// aid to make different blocks in the track visually different from
|
||
|
// each other.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetHeightPercent(double dHeightPercent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the percentage of height of a block
|
||
|
// compared to it's track.
|
||
|
// Returns:
|
||
|
// A double value denoting the height percentage.
|
||
|
//-----------------------------------------------------------------------
|
||
|
double GetHeightPercent() const;
|
||
|
|
||
|
void SetHeightFixed(int nHeightPercent);
|
||
|
int GetHeightFixed() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the vertical alignment of a block in a
|
||
|
// track.
|
||
|
// Parameters:
|
||
|
// nAlignment - A double value denoting the vertical alignment.
|
||
|
// Remarks:
|
||
|
// VerticalAlignment is used for keys and blocks with a height that
|
||
|
// is not 100 the size of the track height and vertically aligns the
|
||
|
// block in the center of the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetVerticalAlignment(int nAlignment);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the vertical alignment of a block in a
|
||
|
// track.
|
||
|
// Returns:
|
||
|
// A double value denoting the vertical alignment.
|
||
|
// Remarks:
|
||
|
// VerticalAlignment is used for keys and blocks with a height that
|
||
|
// is not 100 the size of the track height and vertically aligns the
|
||
|
// block in the center of the track.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetVerticalAlignment() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the track of the block.
|
||
|
// track.
|
||
|
// Returns:
|
||
|
// A pointer to the track control item(track).
|
||
|
// Remarks:
|
||
|
// Tracks are what hold the blocks and keys.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackControlItem* GetItem() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the track of the block.
|
||
|
// track.
|
||
|
// Returns:
|
||
|
// A pointer to the track control item(track).
|
||
|
// Remarks:
|
||
|
// Tracks are what hold the blocks and keys.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetIndex() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to select the block.
|
||
|
// Parameters:
|
||
|
// bSelect - BOOL value use to select or unselect the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Select(BOOL bSelect = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the block is selected.
|
||
|
// Returns:
|
||
|
// BOOL value of TRUE if the block is selected and FALSE if not.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsSelected() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the caption of the block.
|
||
|
// Returns:
|
||
|
// A string value representing the caption of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetCaption() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set/change the caption of the block.
|
||
|
// Parameters:
|
||
|
// lpszCaption - String value of the caption.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetCaption(LPCTSTR lpszCaption);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns the text tool tip for the item
|
||
|
// Returns:
|
||
|
// The text tool tip for the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CString GetTooltip() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set/change the item tool tip.
|
||
|
// Parameters:
|
||
|
// lpszTooltip - Tool tip of the item
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetTooltip(LPCTSTR lpszTooltip);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set/change the description of the item.
|
||
|
// Parameters:
|
||
|
// lpszDescriptionText - Description of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetDescriptionText(LPCTSTR lpszDescriptionText);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to get the description of the item.
|
||
|
// Returns:
|
||
|
// A CString representing the description of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetDescriptionText() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set the minimum length of the item.
|
||
|
// Parameters:
|
||
|
// nMinLength - The minimum length of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetMinLength(int nMinLength);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to get the minimum length of the item.
|
||
|
// Returns:
|
||
|
// An integer value specifying the minimum length of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetMinLength() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to set the maximum length of the item.
|
||
|
// Parameters:
|
||
|
// nMaxLength - The maximum length of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetMaxLength(int nMaxLength);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to get the maximum length of the item.
|
||
|
// Returns:
|
||
|
// An integer value specifying the maximum length of the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetMaxLength() const;
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to Store/Load the properties related to the
|
||
|
// the block.
|
||
|
// Parameters:
|
||
|
// pPX - Source or destination CXTPPropExchange data object reference.
|
||
|
// Remarks:
|
||
|
// This member function is used to store or load property data to or
|
||
|
// from a storage.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DoPropExchange(CXTPPropExchange* pPX);
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to remove block
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Remove();
|
||
|
public:
|
||
|
|
||
|
protected:
|
||
|
CRect m_rcBlock; // Drawing bounding rectangle of block
|
||
|
CXTPTrackControlItem* m_pItem; // Pointer to parent item of block.
|
||
|
int m_nMRUPosition; // Last position that was set by user
|
||
|
int m_nPosition; // Position that resolve overlaps with items on same track.
|
||
|
int m_nLength; // Length of block
|
||
|
BOOL m_bLocked; // TRUE if block is not movable.
|
||
|
COLORREF m_clrBlock; // Color of block.
|
||
|
CString m_strToolTip; // Tooltip text
|
||
|
CString m_strDescription; // Description text
|
||
|
CString m_strCaption; // Caption text.
|
||
|
int m_nIndex; // Index in parent track collection.
|
||
|
double m_dHeightPercent; // Percent of whole row.
|
||
|
int m_nHeightFixed;
|
||
|
int m_nVerticalAlignment; // Vertical alignment of blocks with m_dHeightPercent < 1
|
||
|
int m_nLastDragTime; // Last drag moment of user (used as priority for flexible draging)
|
||
|
int m_nMinLength; // Minimum resize length
|
||
|
int m_nMaxLength; // Maximum resize length
|
||
|
|
||
|
BOOL m_bDragging; // Block is currently dragging
|
||
|
|
||
|
|
||
|
#ifdef _XTP_ACTIVEX
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_DISPATCH_MAP()
|
||
|
DECLARE_INTERFACE_MAP()
|
||
|
DECLARE_OLETYPELIB_EX(CXTPTrackBlock);
|
||
|
|
||
|
|
||
|
int OleGetPosition();
|
||
|
void OleSetPosition(int nPosition);
|
||
|
int OleGetLength();
|
||
|
void OleSetLength(int nLength);
|
||
|
BOOL OleGetLocked();
|
||
|
void OleSetLocked(BOOL bLocked);
|
||
|
COLORREF OleGetColor();
|
||
|
void OleSetColor(OLE_COLOR clr);
|
||
|
BSTR OleGetTooltip();
|
||
|
void OleSetTooltip(LPCTSTR lpszTooltip);
|
||
|
BSTR OleGetDescriptionText();
|
||
|
void OleSetDescriptionText(LPCTSTR lpszDescription);
|
||
|
double OleGetHeightPercent();
|
||
|
void OleSetHeightPercent(double dHeightPercent);
|
||
|
int OleGetHeightFixed();
|
||
|
int OleGetVerticalAlignment();
|
||
|
void OleSetHeightFixed(int dHeightFixed);
|
||
|
void OleSetVerticalAlignment(int nVerticalAlignment);
|
||
|
int OleGetMinLength();
|
||
|
void OleSetMinLength(int nMinLength);
|
||
|
int OleGetMaxLength();
|
||
|
void OleSetMaxLength(int nMaxLength);
|
||
|
LPDISPATCH OleGetItem();
|
||
|
int OleGetIndex();
|
||
|
BOOL OleGetIsKey();
|
||
|
BSTR OleGetCaption();
|
||
|
void OleSetCaption(LPCTSTR lpszCaption);
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
#endif
|
||
|
private:
|
||
|
friend class CXTPTrackControlItem;
|
||
|
friend class CXTPTrackControl;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class represents a track control key.Keys are used simply as
|
||
|
// "notes" or reference points in the track. They can be added anywhere
|
||
|
// in the track to make note of some event at the given moment in time.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPTrackKey : public CXTPTrackBlock
|
||
|
{
|
||
|
DECLARE_SERIAL(CXTPTrackKey);
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs the CXTPTrackKey object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackKey();
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to draw the key.
|
||
|
// Parameters:
|
||
|
// pDC - The pointer to the device context.
|
||
|
// rc - The bounds of the drawing area.
|
||
|
// bSelected - Tells whether the block is selected or not.
|
||
|
// Returns:
|
||
|
// An integer value specifying whether the drawing is successful.A value
|
||
|
// of 1 is to represent success and 0 for failure.
|
||
|
// Remarks:
|
||
|
// This is a virtual function hence the sub classes can give their
|
||
|
// implementation for this function.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int Draw(CDC* pDC, CRect rc, BOOL bSelected);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the item is a key.
|
||
|
// Returns:
|
||
|
// A BOOL value of TRUE tells the item is a key and FALSE else.
|
||
|
// Remarks:
|
||
|
// This is a virtual function hence the sub classes can give their
|
||
|
// implementation(meaning) for this function.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsKey() const;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class represents a track control marker. Markers are used for
|
||
|
// block alignment, blocks can be "snapped" to the left or right of
|
||
|
// these markers.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPTrackMarker : public CXTPCmdTarget
|
||
|
{
|
||
|
DECLARE_SERIAL(CXTPTrackMarker);
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs the CXTPTrackMarker object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackMarker();
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set the position of the marker.
|
||
|
// Parameters:
|
||
|
// nPosition - An integer value specifying the position of the marker on
|
||
|
// the time line.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetPosition(int nPosition);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the position of the marker.
|
||
|
// Returns:
|
||
|
// An integer value specifying the position of the marker on the time
|
||
|
// line.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetPosition() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to set/change the caption of the marker.
|
||
|
// Parameters:
|
||
|
// lpszCaption - String value of the caption.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetCaption(LPCTSTR lpszCaption);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the caption of the marker.
|
||
|
// Returns:
|
||
|
// A string value representing the caption of the marker.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetCaption() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the bounding rectangle of the marker.
|
||
|
// Returns:
|
||
|
// A CRect value specifying the rectangle of the marker.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect GetRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to remove the marker.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Remove();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the Track control to which the marker is
|
||
|
// associated with.
|
||
|
// Returns:
|
||
|
// A pointer to the track control object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackControl* GetControl() const;
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to Store/Load the properties related to the
|
||
|
// the marker.
|
||
|
// Parameters:
|
||
|
// pPX - Source or destination CXTPPropExchange data object reference.
|
||
|
// Remarks:
|
||
|
// This member function is used to store or load property data to or
|
||
|
// from a storage.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DoPropExchange(CXTPPropExchange* pPX);
|
||
|
|
||
|
protected:
|
||
|
CString m_strCaption; // Caption of marker
|
||
|
int m_nPosition; // Position of marker.
|
||
|
CRect m_rcMarker; // Drawing position of marker
|
||
|
CXTPTrackControl* m_pControl; // Parent control.
|
||
|
|
||
|
#ifdef _XTP_ACTIVEX
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_DISPATCH_MAP()
|
||
|
DECLARE_INTERFACE_MAP()
|
||
|
DECLARE_OLETYPELIB_EX(CXTPTrackMarker);
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
#endif
|
||
|
|
||
|
private:
|
||
|
friend class CXTPTrackPaintManager;
|
||
|
friend class CXTPTrackMarkers;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the track control markers. Markers are used for
|
||
|
// block alignment, blocks can be "snapped" to the left or right of
|
||
|
// these markers.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPTrackMarkers : public CXTPCmdTarget
|
||
|
{
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs the CXTPTrackMarkers object.
|
||
|
// Parameters:
|
||
|
// pControl - Pointer to parent Track Control object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackMarkers(CXTPTrackControl* pControl);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys the CXTPTrackMarkers object.Does the clean up.
|
||
|
//-----------------------------------------------------------------------
|
||
|
~CXTPTrackMarkers();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to create and add a marker to the marker
|
||
|
// collection.
|
||
|
// Parameters:
|
||
|
// nPosition - Position of the marker.
|
||
|
// lpszCaption - Caption of the marker.
|
||
|
// Returns:
|
||
|
// A pointer to the newly created track marker object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackMarker* Add(int nPosition, LPCTSTR lpszCaption);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to add a marker to the marker collection.
|
||
|
// Parameters:
|
||
|
// pMarker - New marker to add
|
||
|
// Returns:
|
||
|
// A pointer to the added track marker object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackMarker* Add(CXTPTrackMarker* pMarker);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get a marker at a particular index in
|
||
|
// the marker collection.
|
||
|
// Parameters:
|
||
|
// nIndex - The zero based index.
|
||
|
// Returns:
|
||
|
// A pointer to the track marker object at the given index, if the
|
||
|
// index is not valid in the context NULL is returned.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackMarker* GetAt(int nIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove a marker at a particular index
|
||
|
// in from marker collection.
|
||
|
// Parameters:
|
||
|
// nIndex - The zero based index.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RemoveAt(int nIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove a marker from marker collection.
|
||
|
// Parameters:
|
||
|
// pMarker - The pointer to the marker to be removed.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Remove(CXTPTrackMarker* pMarker);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove a marker from marker collection.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RemoveAll();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the index of a marker in the marker
|
||
|
// collection.
|
||
|
// Parameters:
|
||
|
// pMarker - The pointer to the marker whose index is to be found
|
||
|
// Returns:
|
||
|
// An integer value denoting the zero based index of the marker.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int IndexOf(CXTPTrackMarker* pMarker);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the number of markers in the
|
||
|
// collection.
|
||
|
// Returns:
|
||
|
// An integer value denoting the number of items in the marker collection.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Use this member function to get the index of the marker at a point.
|
||
|
// Parameters:
|
||
|
// pt - Coordinate to test.
|
||
|
// Returns:
|
||
|
// An integer value denoting the zero based index of the marker hit.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int HitTest(CPoint pt) const;
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to Store/Load the properties related to the
|
||
|
// the marker collection.
|
||
|
// Parameters:
|
||
|
// pPX - Source or destination CXTPPropExchange data object reference.
|
||
|
// Remarks:
|
||
|
// This member function is used to store or load property data to or
|
||
|
// from a storage.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DoPropExchange(CXTPPropExchange* pPX);
|
||
|
|
||
|
protected:
|
||
|
CXTPTrackControl* m_pControl; // Parent control
|
||
|
CArray<CXTPTrackMarker*, CXTPTrackMarker*> m_arrMarkers; // Array of markers
|
||
|
|
||
|
#ifdef _XTP_ACTIVEX
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_DISPATCH_MAP()
|
||
|
DECLARE_INTERFACE_MAP()
|
||
|
DECLARE_OLETYPELIB_EX(CXTPTrackMarkers);
|
||
|
DECLARE_ENUM_VARIANT(CXTPTrackMarkers)
|
||
|
|
||
|
LPDISPATCH OleAdd(int Position, LPCTSTR lpszCaption);
|
||
|
LPDISPATCH OleGetItem(long nIndex);
|
||
|
int OleGetItemCount();
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
#endif
|
||
|
|
||
|
private:
|
||
|
friend class CXTPTrackControl;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This class abstracts the selected block of the track control. This
|
||
|
// class helps to perform a common task to the selected blocks, like
|
||
|
// delete.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPTrackSelectedBlocks : public CXTPCmdTarget
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs the CXTPTrackSelectedBlocks object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackSelectedBlocks();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the number of blocks in the
|
||
|
// selected blocks.
|
||
|
// Returns:
|
||
|
// An integer value denoting the number of items in the selected blocks.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to add a block to the selected blocks.
|
||
|
// Parameters:
|
||
|
// pBlock - A pointer to the block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Add(CXTPTrackBlock* pBlock);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get whether the block is selected.
|
||
|
// Parameters:
|
||
|
// pBlock - A pointer to the block.
|
||
|
// Returns:
|
||
|
// BOOL value of TRUE if the block is selected and FALSE if not.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsSelected(const CXTPTrackBlock* pBlock) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the block at an index in the
|
||
|
// selected blocks.
|
||
|
// Parameters:
|
||
|
// nIndex - Index of block to retrieve
|
||
|
// Returns:
|
||
|
// An pointer to the track block.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPTrackBlock* GetAt(int nIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove all the blocks from the selection.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RemoveAll();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove a block at an index from the
|
||
|
// selection.
|
||
|
// Parameters:
|
||
|
// nIndex - A zero based index of the block to be removed.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RemoveAt(int nIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to remove a block at an index from the
|
||
|
// selection.
|
||
|
// Parameters:
|
||
|
// pBlock - Pointer to the block to be removed.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Remove(CXTPTrackBlock* pBlock);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
#ifdef _XTP_ACTIVEX
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_DISPATCH_MAP()
|
||
|
DECLARE_INTERFACE_MAP()
|
||
|
DECLARE_OLETYPELIB_EX(CXTPTrackSelectedBlocks);
|
||
|
DECLARE_ENUM_VARIANT(CXTPTrackSelectedBlocks)
|
||
|
|
||
|
LPDISPATCH OleGetItem(long nIndex);
|
||
|
int OleGetItemCount();
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
#endif
|
||
|
protected:
|
||
|
CArray<CXTPTrackBlock*, CXTPTrackBlock*> m_arrBlocks;
|
||
|
};
|
||
|
|
||
|
AFX_INLINE BOOL CXTPTrackBlock::IsKey() const {
|
||
|
return FALSE;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetColor(COLORREF clr) {
|
||
|
m_clrBlock = clr;
|
||
|
}
|
||
|
AFX_INLINE CRect CXTPTrackBlock::GetRect() const {
|
||
|
return m_rcBlock;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetPosition() const {
|
||
|
return m_nPosition;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetLength() const {
|
||
|
return m_nLength;
|
||
|
}
|
||
|
AFX_INLINE CString CXTPTrackBlock::GetTooltip() const {
|
||
|
return m_strToolTip;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetTooltip(LPCTSTR lpszTooltip) {
|
||
|
m_strToolTip = lpszTooltip;
|
||
|
}
|
||
|
AFX_INLINE CString CXTPTrackBlock::GetCaption() const {
|
||
|
return m_strCaption;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetCaption(LPCTSTR lpszCaption) {
|
||
|
m_strCaption = lpszCaption;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetDescriptionText(LPCTSTR lpszDescriptionText) {
|
||
|
m_strDescription = lpszDescriptionText;
|
||
|
}
|
||
|
AFX_INLINE CString CXTPTrackBlock::GetDescriptionText() const {
|
||
|
return m_strDescription;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetLocked(BOOL bLocked) {
|
||
|
m_bLocked = bLocked;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetHeightPercent(double dHeightPercent) {
|
||
|
m_dHeightPercent = dHeightPercent;
|
||
|
}
|
||
|
AFX_INLINE double CXTPTrackBlock::GetHeightPercent() const {
|
||
|
return m_dHeightPercent;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetHeightFixed(int nHeightFixed) {
|
||
|
m_nHeightFixed = nHeightFixed;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetHeightFixed() const {
|
||
|
return m_nHeightFixed;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetVerticalAlignment(int nAlignment) {
|
||
|
m_nVerticalAlignment = nAlignment;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetVerticalAlignment() const {
|
||
|
return m_nVerticalAlignment;
|
||
|
}
|
||
|
AFX_INLINE CXTPTrackControlItem* CXTPTrackBlock::GetItem() const {
|
||
|
return m_pItem;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetIndex() const {
|
||
|
return m_nIndex;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPTrackBlock::IsResizable() const {
|
||
|
return !IsKey();
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetMinLength(int nMinLength) {
|
||
|
m_nMinLength = nMinLength;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetMinLength() const {
|
||
|
return m_nMinLength;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackBlock::SetMaxLength(int nMaxLength) {
|
||
|
m_nMaxLength = nMaxLength;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackBlock::GetMaxLength() const {
|
||
|
return m_nMaxLength;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPTrackKey::IsKey() const {
|
||
|
return TRUE;
|
||
|
}
|
||
|
AFX_INLINE int CXTPTrackMarker::GetPosition() const {
|
||
|
return m_nPosition;
|
||
|
}
|
||
|
AFX_INLINE void CXTPTrackMarker::SetCaption(LPCTSTR lpszCaption) {
|
||
|
m_strCaption = lpszCaption;
|
||
|
}
|
||
|
AFX_INLINE CString CXTPTrackMarker::GetCaption() const {
|
||
|
return m_strCaption;
|
||
|
}
|
||
|
AFX_INLINE CRect CXTPTrackMarker::GetRect() const {
|
||
|
return m_rcMarker;
|
||
|
}
|
||
|
AFX_INLINE CXTPTrackControl* CXTPTrackMarker::GetControl() const {
|
||
|
return m_pControl;
|
||
|
}
|
||
|
|
||
|
typedef CArray<CXTPTrackBlock*, CXTPTrackBlock*> CXTPTrackBlockArray;
|
||
|
|
||
|
|
||
|
#endif //#if !defined(__XTPTRACKBLOCK_H__)
|