#include "JitterMatrix.h"
namespace FD {
using namespace std;
char* reverse(const char* data, const int size)
{
char* reverse = new char[size];
int i=0;
for(i=0;i<size;i++)
{
reverse[i] = data[size-1-i];
}
return reverse;
}
DECLARE_TYPE(JitterMatrix);
JitterMatrix::JitterMatrix() : m_buffer(NULL)
{
m_packetMatrix.ID = "NULL";
m_packetHeader.ID = "NULL";
m_packetMatrix.dataSize = 0;
}
JitterMatrix::~JitterMatrix()
{
if (m_buffer!=NULL) delete[] m_buffer;
}
JitterMatrix::JitterMatrix(const JitterMatrix& jitterMatrix)
{
m_packetHeader = jitterMatrix.m_packetHeader;
m_packetMatrix = jitterMatrix.m_packetMatrix;
if(jitterMatrix.m_packetMatrix.dataSize != 0)
{
m_buffer = new char[jitterMatrix.m_packetMatrix.dataSize];
memcpy(m_buffer, jitterMatrix.m_buffer, jitterMatrix.m_packetMatrix.dataSize);
}
else
{
m_buffer = 0;
}
}
JitterMatrix::JitterMatrix(const long& width
, const long& height
, const long& planeCount
, const double& time
, const long& type
, const char* buffer)
{
m_packetHeader.ID = "JMTX";
m_packetHeader.size = 288;
m_packetMatrix.ID = "JMTX";
m_packetMatrix.size = 288;
m_packetMatrix.planeCount = planeCount;
m_packetMatrix.type = type;
m_packetMatrix.dimCount = 2;
m_packetMatrix.dim[0] = width;
m_packetMatrix.dim[1] = height;
m_packetMatrix.dimStride[0] = planeCount;
m_packetMatrix.dimStride[1] = planeCount*width;
m_packetMatrix.dataSize = planeCount*width*height;
m_packetMatrix.time = time;
m_packetMatrix.type = type;
if( type == 1 || type == 2) // 1 -> long; 2 -> float32
{
m_packetMatrix.dimStride[1] *= 4;
m_packetMatrix.dataSize *= 4;
}
else if( type==3 ) // 3 -> float64
{
m_packetMatrix.dimStride[1] *= 8;
m_packetMatrix.dataSize *= 8;
}
if(m_buffer!=NULL)
{
delete[] m_buffer;
}
m_buffer = new char[m_packetMatrix.dataSize];
memcpy(m_buffer, buffer, m_packetMatrix.dataSize);
}
/**Serialize (binary) the object to a stream*/
void JitterMatrix::serialize(std::ostream &out) const
{
}
/**Unserialize (binary) the object from a stream*/
void JitterMatrix::unserialize(std::istream &in)
{
}
/**Generic print function*/
void JitterMatrix::printOn(std::ostream &out) const
{
out << "JitterMatrix" << endl;
if(m_packetMatrix.ID == "JMTX")
{
out << "ID Header: " << m_packetHeader.ID << endl;
out << "Size Header : " << m_packetHeader.size << endl;
out << "ID Matrix : " << m_packetMatrix.ID << endl;
out << "Size Matrix : " << m_packetMatrix.size << endl;
out << "PlanetCount : " << m_packetMatrix.planeCount << endl;
out << "Type : " << m_packetMatrix.type << endl;
out << "DimCount : " << m_packetMatrix.dimCount << endl;
out << "Dim : [" << m_packetMatrix.dim[0] << ":"
<< m_packetMatrix.dim[1] << "]" << endl;
out << "DimStride : [" << m_packetMatrix.dimStride[0] << ":"
<< m_packetMatrix.dimStride[1] << "]" << endl;
out << "DataSize : " << m_packetMatrix.dataSize << endl;
out << "Time : " << m_packetMatrix.time << endl;
}
else
{
out << "NULL";
}
}
/**Generic read function*/
void JitterMatrix::readFrom(std::istream &in)
{
}
/*******************************/
/** Set Functions **/
/******************************/
void JitterMatrix::setIDHeader(char* IDPacketHeader)
{
string temp(IDPacketHeader,4);
m_packetHeader.ID = temp;
}
void JitterMatrix::setSizeHeader(char* sizeHeader)
{
m_packetHeader.size = *(reinterpret_cast<long*>(sizeHeader));
}
void JitterMatrix::setIDMatrix(char* IDMatrix)
{
string temp(IDMatrix,4);
m_packetMatrix.ID = temp;
}
void JitterMatrix::setSizeMatrix(char* sizeMatrix)
{
m_packetMatrix.size = *(reinterpret_cast<long*>(sizeMatrix));
}
void JitterMatrix::setPlaneCount(char* planeCount)
{
m_packetMatrix.planeCount = *(reinterpret_cast<long*>(planeCount));
}
void JitterMatrix::setType(char* type)
{
m_packetMatrix.type = *(reinterpret_cast<long*>(type));
}
void JitterMatrix::setDimCount(char* dimCount)
{
m_packetMatrix.dimCount = *(reinterpret_cast<long*>(dimCount));
}
void JitterMatrix::setDim(char* dim)
{
int i=0;
char* temp;
for(i=0;i<32;i++)
{
temp = reverse(dim+i*4,4);
m_packetMatrix.dim[i] = *(reinterpret_cast<long*>(temp));
}
}
void JitterMatrix::setDimStride(char* dimStride)
{
int i=0;
char* temp ;
for(i=0;i<32;i++)
{
temp = reverse(dimStride+i*4,4);
m_packetMatrix.dimStride[i] = *(reinterpret_cast<long*>(temp));
}
}
void JitterMatrix::setDataSize(char* dataSize)
{
m_packetMatrix.dataSize = *(reinterpret_cast<long*>(dataSize));
}
void JitterMatrix::setTime(char* time)
{
m_packetMatrix.time = *(reinterpret_cast<double*>(time));
}
void JitterMatrix::setBuffer(const char* buffer)
{
if(m_buffer!=NULL)
{
delete[] m_buffer;
}
m_buffer = new char[m_packetMatrix.dataSize];
memcpy(m_buffer, buffer, m_packetMatrix.dataSize);
}
/*******************************/
/** get Functions **/
/******************************/
const t_jit_net_packet_header JitterMatrix::getHeader()
{
return m_packetHeader;
}
const t_jit_net_packet_matrix JitterMatrix::getMatrix()
{
return m_packetMatrix;
}
char* JitterMatrix::getBuffer()
{
return m_buffer;
}
long JitterMatrix::getWidth()
{
return m_packetMatrix.dim[0];
}
long JitterMatrix::getHeight()
{
return m_packetMatrix.dim[1];
}
long JitterMatrix::getPlaneCount()
{
return m_packetMatrix.planeCount;
}
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1