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)22 gsBasisPointer 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)38 gsBasisData::gsBasisData(void) : axlAbstractData()
39 {
40 
41 }
42 
43 
gsBasisData(gsBasisPointer basis)44 gsBasisData::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)52 gsBasisData::~gsBasisData(void)
53 {
54     delete m_basis;
55 }
56 
57 
registered(void)58 bool gsBasisData::registered(void)
59 {
60     return gsAxelPlugin::dataFactSingleton->registerDataType("gsBasisData", creategsBasisData);
61 }
62 
63 
description(void) const64 QString gsBasisData::description(void) const
65 {
66     QString result = "gsBasisData : A Gismo basis object";
67     return result;
68 }
69 
70 
identifier(void) const71 QString gsBasisData::identifier(void) const
72 {
73     return "gsBasisData";
74 }
75 
76 
objectType(void) const77 QString gsBasisData::objectType(void) const
78 {
79     return "axlAbstractData";
80 }
81 
numSamples(void)82 gismo::gsVector<unsigned> gsBasisData::numSamples(void)
83 {
84     return sampling;
85 }
86 
numSamples_u(void)87 int gsBasisData::numSamples_u(void)
88 {
89     return sampling[0];
90 }
91 
numSamples_v(void)92 int gsBasisData::numSamples_v(void)
93 {
94     return sampling[1];
95 }
96 
setNumSamples_u(int smpl)97 void gsBasisData::setNumSamples_u(int smpl)
98 {
99     sampling[0]=smpl;
100 //emit this->samplingChanged();
101 //    this->touch();
102 }
103 
setNumSamples_v(int smpl)104 void 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)117 dtkAbstractData *creategsBasisData(void)
118 {
119     return new gsBasisData;
120 }
121