Field3D
FrustumFieldMappingIO Class Reference

#include <FieldMappingIO.h>

Inheritance diagram for FrustumFieldMappingIO:
FieldMappingIO RefBase

Public Types

typedef FrustumFieldMappingIO class_type
 
typedef boost::intrusive_ptr
< FrustumFieldMappingIO
Ptr
 
- Public Types inherited from FieldMappingIO
typedef FieldMappingIO class_type
 
typedef boost::intrusive_ptr
< FieldMappingIO
Ptr
 
- Public Types inherited from RefBase
typedef boost::intrusive_ptr
< RefBase
Ptr
 

Public Member Functions

virtual std::string className () const
 Returns the class name.
 
 FrustumFieldMappingIO ()
 Ctor.
 
virtual FieldMapping::Ptr read (hid_t mappingGroup)
 Reads the field mapping and tries to create a FrustumFieldMapping object from it.
 
virtual bool write (hid_t mappingGroup, FieldMapping::Ptr mapping)
 Writes the given field mapping to disk.
 
- Public Member Functions inherited from FieldMappingIO
 FieldMappingIO ()
 Ctor.
 
virtual ~FieldMappingIO ()
 Dtor.
 
- Public Member Functions inherited from RefBase
void ref () const
 Used by boost::intrusive_pointer.
 
size_t refcnt ()
 Used by boost::intrusive_pointer.
 
void unref () const
 Used by boost::intrusive_pointer.
 
 RefBase ()
 
 RefBase (const RefBase &)
 Copy constructor.
 
RefBaseoperator= (const RefBase &)
 Assignment operator.
 
virtual ~RefBase ()
 Destructor.
 
virtual bool checkRTTI (const char *typenameStr)=0
 This function is only implemented by concrete classes and triggers the actual RTTI check through matchRTTI();.
 
bool matchRTTI (const char *typenameStr)
 Performs a check to see if the given typename string matches this class' This needs to be implemented in -all- subclasses, even abstract ones.
 

Static Public Member Functions

static const char * classType ()
 
static FieldMappingIO::Ptr create ()
 
- Static Public Member Functions inherited from FieldMappingIO
static const char * classType ()
 RTTI replacement.
 
- Static Public Member Functions inherited from RefBase
static const char * classType ()
 

Public Attributes

 DEFINE_FIELD_RTTI_CONCRETE_CLASS
 
- Public Attributes inherited from FieldMappingIO
 DEFINE_FIELD_RTTI_ABSTRACT_CLASS
 

Private Types

typedef FieldMappingIO base
 Convenience typedef for referring to base class.
 

Detailed Description

Handles IO for a FrustumFieldMapping object

Definition at line 254 of file FieldMappingIO.h.

Member Typedef Documentation

typedef boost::intrusive_ptr<FrustumFieldMappingIO> FrustumFieldMappingIO::Ptr

Definition at line 261 of file FieldMappingIO.h.

Convenience typedef for referring to base class.

Definition at line 302 of file FieldMappingIO.h.

Constructor & Destructor Documentation

FrustumFieldMappingIO::FrustumFieldMappingIO ( )
inline

Ctor.

Definition at line 276 of file FieldMappingIO.h.

{ }

Member Function Documentation

static const char* FrustumFieldMappingIO::classType ( )
inlinestatic

Definition at line 268 of file FieldMappingIO.h.

{
return "FrustumFieldMappingIO";
}
static FieldMappingIO::Ptr FrustumFieldMappingIO::create ( )
inlinestatic

Definition at line 280 of file FieldMappingIO.h.

Referenced by initIO().

{ return Ptr(new FrustumFieldMappingIO); }
FieldMapping::Ptr FrustumFieldMappingIO::read ( hid_t  mappingGroup)
virtual

Reads the field mapping and tries to create a FrustumFieldMapping object from it.

Returns
Null pointer if no object was read

Implements FieldMappingIO.

Definition at line 234 of file FieldMappingIO.cpp.

References FrustumFieldMapping::PerspectiveDistribution, Msg::print(), Hdf5Util::readAttribute(), and Msg::SevWarning.

{
float time;
M44d ssMtx, csMtx;
int numSamples=0;
// Read number of time samples
try {
if (!readAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
Msg::print(Msg::SevWarning, "Couldn't read attribute " +
k_frustumMappingNumSamples);
}
} catch (...) {
//do nothing
}
// Read each time sample
for (int i = 0; i < numSamples; ++i) {
string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
if (!readAttribute(mappingGroup, timeAttr, 1, time)) {
Msg::print(Msg::SevWarning, "Couldn't read attribute " + timeAttr);
}
std::vector<unsigned int> attrSize;
attrSize.assign(2,4);
if (!readAttribute(mappingGroup, ssAttr, attrSize, ssMtx.x[0][0])) {
Msg::print(Msg::SevWarning, "Couldn't read attribute " + ssAttr);
}
if (!readAttribute(mappingGroup, csAttr, attrSize, csMtx.x[0][0])) {
Msg::print(Msg::SevWarning, "Couldn't read attribute " + csAttr);
}
fm->setTransforms(time, ssMtx, csMtx);
}
// Read Z distribution
int distInt;
try {
if (!readAttribute(mappingGroup, k_frustumMappingZDistribution, 1, distInt)) {
Msg::print(Msg::SevWarning, "Couldn't read attribute " +
k_frustumMappingZDistribution);
}
dist = static_cast<FrustumFieldMapping::ZDistribution>(distInt);
} catch (...) {
}
fm->setZDistribution(dist);
return fm;
}
bool FrustumFieldMappingIO::write ( hid_t  mappingGroup,
FieldMapping::Ptr  mapping 
)
virtual

Writes the given field mapping to disk.

Returns
true if successful, otherwise false

Implements FieldMappingIO.

Definition at line 304 of file FieldMappingIO.cpp.

References Msg::print(), Msg::SevWarning, and Hdf5Util::writeAttribute().

{
FIELD_DYNAMIC_CAST<FrustumFieldMapping>(mapping);
if (!fm) {
Msg::print(Msg::SevWarning, "Couldn't get FrustumFieldMapping from pointer");
return false;
}
// First write number of time samples
const SampleVec &ssSamples = fm->screenToWorldSamples();
const SampleVec &csSamples = fm->cameraToWorldSamples();
int numSamples = static_cast<int>(ssSamples.size());
if (!writeAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
Msg::print(Msg::SevWarning, "Couldn't add attribute " +
k_frustumMappingNumSamples);
return false;
}
// Then write each sample
for (int i = 0; i < numSamples; ++i) {
string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
if (!writeAttribute(mappingGroup, timeAttr, 1, ssSamples[i].first)) {
Msg::print(Msg::SevWarning, "Couldn't add attribute " + timeAttr);
return false;
}
std::vector<unsigned int> attrSize;
attrSize.assign(2,4);
if (!writeAttribute(mappingGroup, ssAttr,attrSize,
ssSamples[i].second.x[0][0])) {
Msg::print(Msg::SevWarning, "Couldn't add attribute " + ssAttr);
return false;
}
if (!writeAttribute(mappingGroup, csAttr, attrSize,
csSamples[i].second.x[0][0])) {
Msg::print(Msg::SevWarning, "Couldn't add attribute " + csAttr);
return false;
}
}
// Write distribution type
int dist = static_cast<int>(fm->zDistribution());
if (!writeAttribute(mappingGroup, k_frustumMappingZDistribution, 1, dist)) {
Msg::print(Msg::SevWarning, "Couldn't add attribute " +
k_frustumMappingNumSamples);
return false;
}
return true;
}
std::string FrustumFieldMappingIO::className ( ) const
virtual

Returns the class name.

Implements FieldMappingIO.

Definition at line 369 of file FieldMappingIO.cpp.

References FIELD3D_NAMESPACE_OPEN::k_frustumMappingName().

Member Data Documentation

FrustumFieldMappingIO::DEFINE_FIELD_RTTI_CONCRETE_CLASS

Definition at line 266 of file FieldMappingIO.h.


The documentation for this class was generated from the following files: