1 /** @file gsBasisData.cpp 2 3 @brief This file is part of the G+Smo plugin for Axel modeler. 4 5 This file is part of the G+Smo library. 6 7 This Source Code Form is subject to the terms of the Mozilla Public 8 License, v. 2.0. If a copy of the MPL was not distributed with this 9 file, You can obtain one at http://mozilla.org/MPL/2.0/. 10 11 Author(s): A. Mantzaflaris 12 */ 13 #include "gsAxelPluginExport.h" 14 15 #include <dtkCoreSupport/dtkAbstractDataFactory.h> 16 17 #include "gsBasisData.h"// templated generic data 18 19 #define DEFAULT_SAMPLES 100 20 21 getBasisPointer(axlAbstractData * axlData)22gsBasisPointer getBasisPointer( axlAbstractData * axlData) 23 { 24 // To do: probably static_cast is suitable here 25 if(gsBasisData *gsData = dynamic_cast<gsBasisData *>(axlData)) 26 return gsData->getGismoPointer() ; 27 else 28 std::cout <<"Problem, axlAbstractData does not downcast to gismo implementation.\n"; 29 return NULL; 30 } 31 32 33 // ///////////////////////////////////////////////////////////////// 34 // gsGeometryData 35 // ///////////////////////////////////////////////////////////////// 36 37 gsBasisData(void)38gsBasisData::gsBasisData(void) : axlAbstractData() 39 { 40 41 } 42 43 gsBasisData(gsBasisPointer basis)44gsBasisData::gsBasisData(gsBasisPointer basis) : axlAbstractData(), m_basis(basis) 45 { 46 sampling.resize( ( m_basis->dim() > 2 ? m_basis->dim() : 2) ); 47 sampling.setConstant(DEFAULT_SAMPLES); 48 } 49 50 51 ~gsBasisData(void)52gsBasisData::~gsBasisData(void) 53 { 54 delete m_basis; 55 } 56 57 registered(void)58bool gsBasisData::registered(void) 59 { 60 return gsAxelPlugin::dataFactSingleton->registerDataType("gsBasisData", creategsBasisData); 61 } 62 63 description(void) const64QString gsBasisData::description(void) const 65 { 66 QString result = "gsBasisData : A Gismo basis object"; 67 return result; 68 } 69 70 identifier(void) const71QString gsBasisData::identifier(void) const 72 { 73 return "gsBasisData"; 74 } 75 76 objectType(void) const77QString gsBasisData::objectType(void) const 78 { 79 return "axlAbstractData"; 80 } 81 numSamples(void)82gismo::gsVector<unsigned> gsBasisData::numSamples(void) 83 { 84 return sampling; 85 } 86 numSamples_u(void)87int gsBasisData::numSamples_u(void) 88 { 89 return sampling[0]; 90 } 91 numSamples_v(void)92int gsBasisData::numSamples_v(void) 93 { 94 return sampling[1]; 95 } 96 setNumSamples_u(int smpl)97void gsBasisData::setNumSamples_u(int smpl) 98 { 99 sampling[0]=smpl; 100 //emit this->samplingChanged(); 101 // this->touch(); 102 } 103 setNumSamples_v(int smpl)104void gsBasisData::setNumSamples_v(int smpl) 105 { 106 sampling[1]=smpl; 107 // emit this->samplingChanged(); 108 // this->touch(); 109 } 110 111 #undef DEFAULT_SAMPLES 112 113 // ///////////////////////////////////////////////////////////////// 114 // Type instanciation 115 // ///////////////////////////////////////////////////////////////// 116 creategsBasisData(void)117dtkAbstractData *creategsBasisData(void) 118 { 119 return new gsBasisData; 120 } 121