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.

166 lines
6.4 KiB
C++

// XTPFlowGraphConnectionPoints.h: interface for the CXTPFlowGraphConnectionPoints class.
//
// 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 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(__XTPFLOWGRAPHCONNECTIONPOINTS_H__)
#define __XTPFLOWGRAPHCONNECTIONPOINTS_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPFlowGraphNode;
class CXTPFlowGraphConnectionPoint;
// ------------------------------------------------------------------
//
// Summary:
// Represents a collection of Connection Points for a Node.
// Remarks:
// Connection points are added to a Node and can no input points,
// \only input or output points, or can have both.
// ------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPFlowGraphConnectionPoints : public CXTPCmdTarget
{
protected:
// ------------------------------------------------------
// Summary:
// Constructs a CXTPFlowGraphConnectionPoints object.
// ------------------------------------------------------
CXTPFlowGraphConnectionPoints(CXTPFlowGraphNode* pNode);
// --------------------------------------------------------------------
// Summary:
// Destroys a CXTPFlowGraphConnectionPoints object, handles cleanup
// and deallocation.
// --------------------------------------------------------------------
virtual ~CXTPFlowGraphConnectionPoints();
public:
// -----------------------------------------------------------------
// Summary:
// Adds a connection point to the Node.
// Parameters:
// pConnectionPoint : Reference to the connection point to add.
//
// Returns:
// A reference to the connection point that was just added.
//
//
// -----------------------------------------------------------------
CXTPFlowGraphConnectionPoint* AddConnectionPoint(CXTPFlowGraphConnectionPoint* pConnectionPoint, int nIndex = -1);
// ------------------------------------------------
// Summary:
// Removes all connection points from the node.
// ------------------------------------------------
void RemoveAll();
// --------------------------------------------------------------------
// Summary:
// Removes the specified connection point.
// Parameters:
// pConnectionPoint : Reference to the connection point to remove.
// --------------------------------------------------------------------
void Remove(CXTPFlowGraphConnectionPoint* pConnectionPoint);
// ---------------------------------------------------------------------
// Summary:
// Removes the specified connection point from the node's collection
// \of connection points.
// Parameters:
// nIndex : Index of the connection point to remove.
// ---------------------------------------------------------------------
void RemoveAt(int nIndex);
// -----------------------------------------------------------------
// Summary:
// \Returns the total number of connections points for the node.
// Returns:
// The total number of connections points for the node.
// -----------------------------------------------------------------
int GetCount() const;
// ---------------------------------------------------------------
// Summary:
// Get the connection point at the specified index.
// Parameters:
// nIndex : Index of the desired connection point to return.
//
// Returns:
// Reference to the connection point at the specified index.
// ---------------------------------------------------------------
CXTPFlowGraphConnectionPoint* GetAt(int nIndex) const;
// ---------------------------------------------------------------------
// Summary:
// Finds and returns the specified connection point by searching for
// the connection point's caption.
// Parameters:
// lpszCaption : Caption of the connection point to find.
//
// Returns:
// \Returns a reference to the FlowGraphConnectionPoint if found,
// \otherwise it will return Nothing\\Null.
// ---------------------------------------------------------------------
CXTPFlowGraphConnectionPoint* FindConnectionPoint(LPCTSTR lpszCaption) const;
// ------------------------------------------------------------------
// Summary:
// Finds and returns the specified connection point.
// Parameters:
// nId : ID of the connection point to find.
// Returns:
// \Returns a reference to the FlowGraphConnectionPoint if found,
// \otherwise it will return Nothing\\Null.
// ------------------------------------------------------------------
CXTPFlowGraphConnectionPoint* FindConnectionPoint(int nId) const;
public:
// ------------------------------------------------------------------------
// Summary:
// Call this member function to Store/Load a collection of connection
// points using the specified data object.
// Parameters:
// pPX : Source or destination CXTPPropExchange data object reference.
// Remarks:
// This member function is used to store or load a collection
// connection points data to or from a storage.
// ------------------------------------------------------------------------
void DoPropExchange(CXTPPropExchange* pPX);
protected:
CXTPFlowGraphNode* m_pNode; // Reference to the node that uses the connection points from this collection.
CArray<CXTPFlowGraphConnectionPoint*, CXTPFlowGraphConnectionPoint*> m_arrConnectionPoints; // Collection of connection points.
friend class CXTPFlowGraphNode;
};
AFX_INLINE int CXTPFlowGraphConnectionPoints::GetCount() const {
return (int)m_arrConnectionPoints.GetSize();
}
AFX_INLINE CXTPFlowGraphConnectionPoint* CXTPFlowGraphConnectionPoints::GetAt(int nIndex) const {
return nIndex >= 0 && nIndex < m_arrConnectionPoints.GetSize() ? m_arrConnectionPoints[nIndex] : NULL;
}
#endif //#if !defined(__XTPFLOWGRAPHCONNECTIONPOINTS_H__)