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.
nmWTAI-Platform/3rd/VTK7.1/source/VTK-7.1.1/Utilities/MetaIO/vtkmetaio/metaEllipse.cxx

221 lines
4.1 KiB
C++

/*============================================================================
MetaIO
Copyright 2000-2010 Insight Software Consortium
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#include "metaEllipse.h"
#ifdef _MSC_VER
#pragma warning(disable:4702)
#endif
#include <stdio.h>
#include <ctype.h>
#include <string>
#include <string.h> // for memset
#if defined (__BORLANDC__) && (__BORLANDC__ >= 0x0580)
#include <mem.h>
#endif
#if (METAIO_USE_NAMESPACE)
namespace METAIO_NAMESPACE {
#endif
//
// MedImage Constructors
//
MetaEllipse::
MetaEllipse()
:MetaObject()
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse()" << METAIO_STREAM::endl;
Clear();
}
//
MetaEllipse::
MetaEllipse(const char *_headerName)
:MetaObject()
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse()" << METAIO_STREAM::endl;
Clear();
Read(_headerName);
}
//
MetaEllipse::
MetaEllipse(const MetaEllipse *_ellipse)
:MetaObject()
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse()" << METAIO_STREAM::endl;
Clear();
CopyInfo(_ellipse);
}
MetaEllipse::
MetaEllipse(unsigned int dim)
:MetaObject(dim)
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse()" << METAIO_STREAM::endl;
Clear();
}
//
MetaEllipse::
~MetaEllipse()
{
M_Destroy();
}
//
void MetaEllipse::
PrintInfo() const
{
MetaObject::PrintInfo();
METAIO_STREAM::cout << "Radius = ";
for(int i=0;i<m_NDims;i++)
{
METAIO_STREAM::cout << m_Radius[i] << " ";
}
METAIO_STREAM::cout << METAIO_STREAM::endl;
}
void MetaEllipse::
CopyInfo(const MetaObject * _object)
{
MetaObject::CopyInfo(_object);
}
void MetaEllipse::
Radius(const float* radius)
{
for(int i=0; i<m_NDims; i++)
{
m_Radius[i] = radius[i];
}
}
void MetaEllipse::
Radius(float radius)
{
for(int i=0;i<m_NDims;i++)
{
m_Radius[i] = radius;
}
}
void MetaEllipse::
Radius(float r1,float r2)
{
m_Radius[0] = r1;
m_Radius[1] = r2;
}
void MetaEllipse::
Radius(float r1,float r2, float r3)
{
m_Radius[0] = r1;
m_Radius[1] = r2;
m_Radius[2] = r3;
}
const float* MetaEllipse::
Radius(void) const
{
return m_Radius;
}
/** Clear ellipse information */
void MetaEllipse::
Clear(void)
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse: Clear" << METAIO_STREAM::endl;
MetaObject::Clear();
memset(m_Radius, 0, 100*sizeof(float));
for(int i=0; i<m_NDims; i++)
{
m_Radius[i] = 1;
}
}
/** Destroy ellipse information */
void MetaEllipse::
M_Destroy(void)
{
MetaObject::M_Destroy();
}
/** Set Read fields */
void MetaEllipse::
M_SetupReadFields(void)
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse: M_SetupReadFields" << METAIO_STREAM::endl;
MetaObject::M_SetupReadFields();
MET_FieldRecordType * mF;
int nDimsRecNum = MET_GetFieldRecordNumber("NDims", &m_Fields);
mF = new MET_FieldRecordType;
MET_InitReadField(mF, "Radius", MET_FLOAT_ARRAY, true,nDimsRecNum);
mF->terminateRead = true;
m_Fields.push_back(mF);
}
void MetaEllipse::
M_SetupWriteFields(void)
{
strcpy(m_ObjectTypeName,"Ellipse");
MetaObject::M_SetupWriteFields();
MET_FieldRecordType * mF;
mF = new MET_FieldRecordType;
MET_InitWriteField(mF, "Radius", MET_FLOAT_ARRAY, m_NDims,m_Radius);
m_Fields.push_back(mF);
}
bool MetaEllipse::
M_Read(void)
{
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse: M_Read: Loading Header" << METAIO_STREAM::endl;
if(!MetaObject::M_Read())
{
METAIO_STREAM::cout << "MetaEllipse: M_Read: Error parsing file" << METAIO_STREAM::endl;
return false;
}
if(META_DEBUG) METAIO_STREAM::cout << "MetaEllipse: M_Read: Parsing Header" << METAIO_STREAM::endl;
MET_FieldRecordType * mF;
mF = MET_GetFieldRecord("Radius", &m_Fields);
if(mF->defined)
{
for(int i=0;i<m_NDims;i++)
{
m_Radius[i]= (float)mF->value[i];
}
}
return true;
}
#if (METAIO_USE_NAMESPACE)
};
#endif