Field3D

#include <FieldMappingIO.h>

Inheritance diagram for FrustumFieldMappingIO:
FieldMappingIO RefBase

Public Types

typedef FrustumFieldMappingIO class_type
 
typedef boost::intrusive_ptr< FrustumFieldMappingIOPtr
 
- Public Types inherited from FieldMappingIO
typedef FieldMappingIO class_type
 
typedef boost::intrusive_ptr< FieldMappingIOPtr
 
- Public Types inherited from RefBase
typedef boost::intrusive_ptr< RefBasePtr
 
typedef boost::weak_ptr< RefBaseWeakPtr
 

Public Member Functions

virtual std::string className () const
 Returns the class name.
 
 FrustumFieldMappingIO ()
 Ctor.
 
virtual FieldMapping::Ptr read (const OgIGroup &mappingGroup)
 Reads the field mapping and tries to create a FrustumFieldMapping object from it.
 
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.
 
virtual bool write (OgOGroup &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.
 
WeakPtr weakPtr () const
 
 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 FieldMappingIO::Ptr create ()
 
static const charstaticClassType ()
 
- Static Public Member Functions inherited from FieldMappingIO
static const charstaticClassType ()
 RTTI replacement.
 
- Static Public Member Functions inherited from RefBase
static const charstaticClassType ()
 

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 282 of file FieldMappingIO.h.

Member Typedef Documentation

◆ Ptr

Definition at line 289 of file FieldMappingIO.h.

◆ class_type

◆ base

Convenience typedef for referring to base class.

Definition at line 339 of file FieldMappingIO.h.

Constructor & Destructor Documentation

◆ FrustumFieldMappingIO()

FrustumFieldMappingIO::FrustumFieldMappingIO ( )
inline

Ctor.

Definition at line 304 of file FieldMappingIO.h.

306 { }

Member Function Documentation

◆ staticClassType()

static const char * FrustumFieldMappingIO::staticClassType ( )
inlinestatic

Definition at line 296 of file FieldMappingIO.h.

297 {
298 return "FrustumFieldMappingIO";
299 }

◆ create()

static FieldMappingIO::Ptr FrustumFieldMappingIO::create ( )
inlinestatic

Definition at line 308 of file FieldMappingIO.h.

309 { return Ptr(new FrustumFieldMappingIO); }
boost::intrusive_ptr< FrustumFieldMappingIO > Ptr

Referenced by initIO().

◆ read() [1/2]

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 344 of file FieldMappingIO.cpp.

345{
346 float time;
348 int numSamples=0;
349
351
352 // Read number of time samples
353
354 try {
356 Msg::print(Msg::SevWarning, "Couldn't read attribute " +
358 return FieldMapping::Ptr();
359 }
360 } catch (...) {
361 //do nothing
362 }
363
364 // Read each time sample
365
366 for (int i = 0; i < numSamples; ++i) {
367 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
368 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
369 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
371 Msg::print(Msg::SevWarning, "Couldn't read attribute " + timeAttr);
372 return FieldMapping::Ptr();
373 }
374 std::vector<unsigned int> attrSize;
375 attrSize.assign(2,4);
376
378 Msg::print(Msg::SevWarning, "Couldn't read attribute " + ssAttr);
379 return FieldMapping::Ptr();
380 }
382 Msg::print(Msg::SevWarning, "Couldn't read attribute " + csAttr);
383 return FieldMapping::Ptr();
384 }
385
386 fm->setTransforms(time, ssMtx, csMtx);
387 }
388
389
390 // Read Z distribution
391
392 int distInt;
394
395 try {
397 Msg::print(Msg::SevWarning, "Couldn't read attribute " +
399 return FieldMapping::Ptr();
400 }
402 } catch (...) {
404 }
405
406 fm->setZDistribution(dist);
407
408 return fm;
409}
Imath::M44d M44d
Definition SpiMathLib.h:82
#define FIELD3D_MTX_T
Definition StdMathLib.h:99
boost::intrusive_ptr< FieldMapping > Ptr
Represents the mapping of a field by a perspective transform.
ZDistribution
Enumerates the Z slice distribution. .f3d files will store values as an int, so be very careful not t...
boost::intrusive_ptr< FrustumFieldMapping > Ptr
Convenience typedef.
FIELD3D_API bool readAttribute(hid_t location, const std::string &attrName, std::string &value)
Reads a string attribute.
@ SevWarning
Definition Log.h:68
FIELD3D_API void print(Severity severity, const std::string &message)
Sends the string to the assigned output, prefixing the message with the severity.
Definition Log.cpp:70

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

◆ read() [2/2]

FieldMapping::Ptr FrustumFieldMappingIO::read ( const OgIGroup & 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 414 of file FieldMappingIO.cpp.

415{
416 int numSamples = 0;
417
419
420 // Read number of time samples
421
422 try {
424 mappingGroup.findAttribute<int>(k_frustumMappingNumSamples);
425 if (!numSamplesAttr.isValid()) {
426 Msg::print(Msg::SevWarning, "Couldn't read attribute " +
428 return FieldMapping::Ptr();
429 }
430 } catch (...) {
431 //do nothing
432 }
433
434 // Read each time sample
435
436 for (int i = 0; i < numSamples; ++i) {
437 // Attribute names
438 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
439 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
440 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
441 // Read time
443 mappingGroup.findAttribute<float>(timeAttr);
444 if (!time.isValid()) {
445 Msg::print(Msg::SevWarning, "Couldn't read attribute " + timeAttr);
446 return FieldMapping::Ptr();
447 }
448 // Read matrices
450 mappingGroup.findAttribute<mtx64_t>(ssAttr);
452 mappingGroup.findAttribute<mtx64_t>(csAttr);
453 if (!ssMtx.isValid()) {
454 Msg::print(Msg::SevWarning, "Couldn't read attribute " + ssAttr);
455 return FieldMapping::Ptr();
456 }
457 if (!csMtx.isValid()) {
458 Msg::print(Msg::SevWarning, "Couldn't read attribute " + csAttr);
459 return FieldMapping::Ptr();
460 }
461
462 fm->setTransforms(time.value(), ssMtx.value(), csMtx.value());
463 }
464
465
466 // Read Z distribution
467
469
470 try {
473 if (!zDist.isValid()) {
474 Msg::print(Msg::SevWarning, "Couldn't read attribute " +
476 return FieldMapping::Ptr();
477 }
478 dist = static_cast<FrustumFieldMapping::ZDistribution>(zDist.value());
479 } catch (...) {
481 }
482
483 fm->setZDistribution(dist);
484
485 return fm;
486}
Field3D::M44d mtx64_t
Definition Traits.h:95

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

◆ write() [1/2]

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 491 of file FieldMappingIO.cpp.

492{
494
497
498 if (!fm) {
499 Msg::print(Msg::SevWarning, "Couldn't get FrustumFieldMapping from pointer");
500 return false;
501 }
502
503 // First write number of time samples
504
505 const SampleVec &ssSamples = fm->screenToWorldSamples();
506 const SampleVec &csSamples = fm->cameraToWorldSamples();
507 int numSamples = static_cast<int>(ssSamples.size());
508
510 Msg::print(Msg::SevWarning, "Couldn't add attribute " +
512 return false;
513 }
514
515 // Then write each sample
516
517 for (int i = 0; i < numSamples; ++i) {
518 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
519 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
520 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
522 Msg::print(Msg::SevWarning, "Couldn't add attribute " + timeAttr);
523 return false;
524 }
525
526 std::vector<unsigned int> attrSize;
527 attrSize.assign(2,4);
528
530 ssSamples[i].second.x[0][0])) {
531 Msg::print(Msg::SevWarning, "Couldn't add attribute " + ssAttr);
532 return false;
533 }
535 csSamples[i].second.x[0][0])) {
536 Msg::print(Msg::SevWarning, "Couldn't add attribute " + csAttr);
537 return false;
538 }
539 }
540
541 // Write distribution type
542
543 int dist = static_cast<int>(fm->zDistribution());
544
546 Msg::print(Msg::SevWarning, "Couldn't add attribute " +
548 return false;
549 }
550
551 return true;
552}
std::vector< Sample > SampleVec
Definition Curve.h:102
FIELD3D_API bool writeAttribute(hid_t location, const std::string &attrName, const std::string &value)
Writes a string attribute.

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

◆ write() [2/2]

bool FrustumFieldMappingIO::write ( OgOGroup & mappingGroup,
FieldMapping::Ptr mapping )
virtual

Writes the given field mapping to disk.

Returns
true if successful, otherwise false

Implements FieldMappingIO.

Definition at line 557 of file FieldMappingIO.cpp.

558{
560
563
564 if (!fm) {
566 "Couldn't get FrustumFieldMapping from pointer");
567 return false;
568 }
569
570 // First write number of time samples ---
571
572 const SampleVec &ssSamples = fm->screenToWorldSamples();
573 const SampleVec &csSamples = fm->cameraToWorldSamples();
574 const int numSamples = static_cast<int>(ssSamples.size());
575
577 numSamples);
578
579 // Then write each sample ---
580
581 for (int i = 0; i < numSamples; ++i) {
582 const string timeAttr = k_frustumMappingTime +
583 boost::lexical_cast<string>(i);
584 const string ssAttr = k_frustumMappingScreenMatrix +
585 boost::lexical_cast<string>(i);
586 const string csAttr = k_frustumMappingCameraMatrix +
587 boost::lexical_cast<string>(i);
588
592 }
593
594 // Write distribution type ---
595
596 int dist = static_cast<int>(fm->zDistribution());
597
599
600 return true;
601}

References FIELD3D_MTX_T, Msg::print(), and Msg::SevWarning.

◆ className()

std::string FrustumFieldMappingIO::className ( ) const
virtual

Returns the class name.

Implements FieldMappingIO.

Definition at line 605 of file FieldMappingIO.cpp.

606{
608}
const string k_frustumMappingName("FrustumFieldMapping")

Member Data Documentation

◆ DEFINE_FIELD_RTTI_CONCRETE_CLASS

FrustumFieldMappingIO::DEFINE_FIELD_RTTI_CONCRETE_CLASS

Definition at line 294 of file FieldMappingIO.h.


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