vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DiameterGenAdapter.h
Go to the documentation of this file.
1 #pragma once
2 #include <osg\Referenced>
3 #include "Utils.h"
4 #include "types.h"
5 #include "DiameterGen.h"
6 #include <xercesc\dom\DOMImplementation.hpp>
7 #include "ConstantDiameterGen.h"
8 #include "GradientDiameterGen.h"
9 
10 namespace APDYNAMICART
11 {
12 
14 
17 {
18 public:
19  ConstantDiamAdapter() : _diamGen(new ConstantDiameterGen(0.3)) {}
20  ConstantDiamAdapter(double val): _diamGen(new ConstantDiameterGen(val)) {}
21 
23 
24  virtual osg::ref_ptr<DiameterGen> getObject() { return _diamGen; }
25  virtual void createMenu( MenuPtr menu );
26  virtual int load( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
27  virtual void save( XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* Document, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
28  virtual bool sliderChanged( const char* sliderID, float sliderPos );
29 
30 protected:
31  osg::ref_ptr<ConstantDiameterGen> _diamGen;
32 };
33 
36 {
37 public:
39  GradientDiamAdapter(double diam1, double diam2) : _diamGen(new GradientDiameterGen(diam1, diam2)) {}
41 
42  virtual osg::ref_ptr<DiameterGen> getObject() { return _diamGen; }
43  virtual void createMenu( MenuPtr menu );
44  virtual int load( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
45  virtual void save( XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* Document, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* ParametersNode );
46  virtual bool sliderChanged( const char* sliderID, float sliderPos );
47 
48 protected:
49  osg::ref_ptr<GradientDiameterGen> _diamGen;
50 
51 };
52 
54 class DiameterGenFactory : public AdapterFactory<DiameterGenAdapter>
55 {
56 public:
58  {
59  _adapters.push_back(new ConstantDiamAdapter);
60  _adapters.push_back(new GradientDiamAdapter);
61  }
62 
64  {
65 
66  std::vector<osg::ref_ptr<DiameterGenAdapter>> origAdapters = orig.getSupportedAdapters();
67 
68  DiameterGen *tmpGen = (origAdapters[0]->getObject()).get();
69  ConstantDiameterGen *tmpCDGen = dynamic_cast<ConstantDiameterGen *>(tmpGen);
70  _adapters.push_back(new ConstantDiamAdapter(tmpCDGen->getDiameterValue()));
71 
72  tmpGen = (origAdapters[1]->getObject()).get();
73  GradientDiameterGen *tmpGDGen = dynamic_cast<GradientDiameterGen *>(tmpGen);
74  _adapters.push_back(new GradientDiamAdapter(tmpGDGen->getDiameterStart(), tmpGDGen->getDiameterEnd()) );
75  }
76 };
77 
78 
79 
80 }