Files
handleaiuinew/env/Dalsa/include/SapXferNode.h
T

184 lines
6.7 KiB
C++
Raw Normal View History

2024-05-18 23:53:26 +08:00
#ifndef _SAPXFERNODE_H_
#define _SAPXFERNODE_H_
// SapXferNode.h : header file
//
#include "SapClassBasicDef.h"
//
// SapXferParams class declaration
//
class SAPCLASSBASIC_CLASS SapXferParams
{
public:
// Transfer frame types
typedef int FrameType;
enum _FrameType
{
FrameInterlaced = CORXFER_VAL_FRAME_INTERLACED,
FrameProgressive = CORXFER_VAL_FRAME_NON_INTERLACED
};
// Transfer field order
typedef int FieldOrder;
enum _FieldOrder
{
FieldOrderOddEven = CORXFER_VAL_FIELD_ORDER_ODD_EVEN,
FieldOrderEvenOdd = CORXFER_VAL_FIELD_ORDER_EVEN_ODD,
FieldOrderNext = CORXFER_VAL_FIELD_ORDER_NEXT_FIELD
};
public:
// Constructor/destructor
SapXferParams();
~SapXferParams();
// Access to implementation
FrameType GetFrameType() const { return m_Frame; }
FieldOrder GetFieldOrder() const { return m_FieldOrder; }
int GetWidth() const { return m_Width; }
int GetHeight() const { return m_Height; }
SapFormat GetFormat() const { return m_Format; }
int GetPixelDepth() const { return m_PixelDepth; }
int GetPixelShift() const { return m_PixelShift; }
void GetParameters(FrameType *frame, FieldOrder *fieldOrder, int *width, int *height, SapFormat *format, int *pixelDepth, int *pixelShift) const;
void SetFrameType(FrameType frameType) { m_Frame = frameType; }
void SetFieldOrder(FieldOrder fieldOrder) { m_FieldOrder = fieldOrder; }
void SetWidth(int width) { m_Width = width; }
void SetHeight(int height) { m_Height = height; }
void SetFormat(SapFormat format) { m_Format = format; SetPixelDepth(CorManGetPixelDepthMax(m_Format)); }
void SetPixelDepth(int pixelDepth) { m_PixelDepth = pixelDepth; SetPixelShift(CorManGetPixelDepthMax(m_Format) - pixelDepth); }
void SetPixelShift(int pixelShift) { m_PixelShift = pixelShift; }
void SetParameters(FrameType frame, FieldOrder fieldOrder, int width, int height, SapFormat format, int pixelDepth, int pixelShift);
// Utility
operator CORXFER_DESC();
// Obsolete methods
FrameType GetFrame() const { return GetFrameType(); }
void Get(FrameType *frame, FieldOrder *fieldOrder, int *width, int *height, SapFormat *format, int *pixelDepth, int *pixelShift) const;
void SetFrame(FrameType frame) { SetFrameType(frame); }
void Set(FrameType frame, FieldOrder fieldOrder, int width, int height, SapFormat format, int pixelDepth, int pixelShift);
protected:
FrameType m_Frame;
FieldOrder m_FieldOrder;
int m_Width;
int m_Height;
SapFormat m_Format;
int m_PixelDepth;
int m_PixelShift;
};
//
// SapXferNode class declaration
//
class SAPCLASSBASIC_CLASS SapXferNode : public SapManager
{
public:
// Possible types for derived classes
enum XferNodeType
{
NodeTypeUnknown,
NodeTypeAcqDevice,
NodeTypeAcquisition,
NodeTypeBuffer,
NodeTypeCab,
NodeTypeObsolete1,
NodeTypePixPro,
NodeTypeRTPro,
NodeTypeBufferMulti
};
// Various constants
enum MiscValues
{
MaxXferParams = 32
};
public:
// Constructor/Destructor
SapXferNode(SapLocation location)
{ m_Location = location; m_pSrcNode = NULL; m_SrcPort = 0; m_hServer = m_handle = CORHANDLE_NULL; }
SapXferNode(SapLocation location, SapXferNode *pSrcNode)
{ m_Location = location; m_pSrcNode = pSrcNode; m_SrcPort = 0; m_hServer = m_handle = CORHANDLE_NULL; }
SapXferNode(SapLocation location, SapXferParams xferParams)
{ m_Location = location; m_pSrcNode = NULL; m_SrcPort = 0; m_XferParams[0] = xferParams; m_hServer = m_handle = CORHANDLE_NULL; }
//should copy all xferParams
SapXferNode(const SapXferNode& node)
{ m_Location = node.m_Location; m_pSrcNode = node.m_pSrcNode; m_SrcPort = node.m_SrcPort;m_XferParams[0] = node.m_XferParams[0]; m_hServer = m_handle = CORHANDLE_NULL; }
virtual ~SapXferNode() {}
SapXferNode& operator= (const SapXferNode& node)
{
m_Location = node.m_Location; m_pSrcNode = node.m_pSrcNode; m_SrcPort = node.m_SrcPort; m_XferParams[0] = node.m_XferParams[0]; m_bInitOK = FALSE; m_hServer = m_handle = CORHANDLE_NULL;
return *this;
}
// Creation/destruction
virtual BOOL Create() = 0;
virtual BOOL Destroy() = 0;
public:
// Access to implementation
SapLocation GetLocation() const { return m_Location; }
SapXferNode *GetSrcNode() const { return m_pSrcNode; }
int GetSrcPort() const { return m_SrcPort; }
CORSERVER GetServer() const { return m_hServer; }
virtual SapXferParams GetXferParams(int portIndex = 0) const { return m_XferParams[CORXFER_PORT_INDEX_MASK(portIndex)]; }
virtual SapXferParams GetInputXferParams(int portIndex = 0) const { return GetXferParams(CORXFER_PORT_INDEX_MASK(portIndex)); }
virtual SapXferParams GetOutputXferParams(int portIndex = 0) const { return GetXferParams(CORXFER_PORT_INDEX_MASK(portIndex)); }
BOOL SetLocation(SapLocation loc) { if( m_bInitOK) return FALSE; m_Location = loc; return TRUE;}
virtual BOOL SetSrcNode(SapXferNode *pSrcNode, int srcPort = 0) { if( m_bInitOK) return FALSE; m_pSrcNode = pSrcNode; m_SrcPort = srcPort; return TRUE;}
virtual BOOL SetXferParams(SapXferParams xferParams, int portIndex = 0) { if( m_bInitOK) return FALSE; m_XferParams[portIndex] = xferParams; return TRUE;}
virtual BOOL SetInputXferParams(SapXferParams params, int portIndex = 0) { return SetXferParams(params, CORXFER_PORT_INDEX_MASK(portIndex)); }
virtual BOOL SetOutputXferParams(SapXferParams params, int portIndex = 0) { return SetXferParams(params, CORXFER_PORT_INDEX_MASK(portIndex)); }
virtual CORHANDLE GetHandle() const { return m_handle; }
virtual void GetXferParamsFromSrcNode()
{ if (m_pSrcNode) SetInputXferParams(m_pSrcNode->GetOutputXferParams( m_SrcPort)); }
// All classes derived from SapXferNode need to implement this
virtual XferNodeType GetXferNodeType() = 0;
// Obsolete method
virtual BOOL IsBuffer() { return GetXferNodeType() == NodeTypeBuffer; }
public:
// Cycling specific methods
virtual CORHANDLE GetHandle(int index) const { return index == 0 ? m_handle : CORHANDLE_NULL; }
virtual CORHANDLE operator[] (int index) const { return GetHandle(index); }
virtual int GetCount() const { return 1; }
virtual int GetIndex() const { return 0; }
virtual BOOL SetIndex(int index) { return TRUE; }
virtual void ResetIndex() {}
virtual void Next() {}
virtual CORHANDLE GetTrash() const { return CORHANDLE_NULL; }
// Obsolete methods
virtual BOOL Empty() { return TRUE; }
virtual BOOL Empty(int index) { return TRUE; }
virtual BOOL EmptyAll() { return TRUE; }
protected:
// Parameters
SapLocation m_Location;
SapXferNode *m_pSrcNode;
int m_SrcPort;
SapXferParams m_XferParams[MaxXferParams];
CORSERVER m_hServer;
CORHANDLE m_handle;
};
#endif // _SAPXFERNODE_H_