Field3D
FrustumFieldMappingIO Class Reference

#include <FieldMappingIO.h>

Inheritance diagram for FrustumFieldMappingIO:
FieldMappingIO RefBase

List of all members.

Public Types

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

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 ()
 RTTI replacement.
static FieldMappingIO::Ptr create ()

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

Reimplemented from FieldMappingIO.

Definition at line 261 of file FieldMappingIO.h.

Reimplemented from FieldMappingIO.

Definition at line 265 of file FieldMappingIO.h.

Convenience typedef for referring to base class.

Reimplemented from FieldMappingIO.

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

RTTI replacement.

Reimplemented from FieldMappingIO.

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: