Moka controlers
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros
controler-parameter.cc
Go to the documentation of this file.
1 /*
2  * lib-controler : Un contrôleur générique de scène 3D.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-controler
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 //******************************************************************************
25 #include "controler.hh"
26 #include "view-precompile.hh"
27 #include "precompile.hh"
28 #include "parameter-aimed-point.hh"
29 #include "parameter-axis.hh"
30 #include "parameter-grid.hh"
31 using namespace std;
32 //******************************************************************************
34 {
35  assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
36  return FViews[AViewId]->getParameterAimedPosition();
37 }
38 //******************************************************************************
40 {
41  assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
42  return FViews[AViewId]->getParameterDrawing();
43 }
44 //******************************************************************************
46 {
47  assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
48  return FViews[AViewId]->getParameterEyePosition();
49 }
50 //******************************************************************************
52  TPrecompile APrecompile) const
53 {
54  assert ( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
55 
56  CPrecompile* precomp = FViews[AViewId]->findPrecompile(APrecompile);
57  if ( precomp==NULL ) return NULL;
58 
59  return precomp->getParameter();
60 }
61 //******************************************************************************
63 { return static_cast<CParameterAimedPoint*>
65 }
66 //******************************************************************************
68 { return static_cast<CParameterAxis*>
70 }
71 //******************************************************************************
73 { return static_cast<CParameterGrid*>
75 }
76 //******************************************************************************
77 void CControler::saveOnePrecompileParameter(TViewId AViewId,
78  TPrecompile APrecompileType,
79  ostream& os)
80 {
81  CParameter* parameter = getParameterPrecompile(AViewId, APrecompileType);
82 
83  if (parameter!=NULL)
84  {
85  parameter->save(os);
86  }
87  else
88  {
89  viewAddPrecompile(AViewId, APrecompileType);
90 
91  parameter = getParameterPrecompile(AViewId, APrecompileType);
92  parameter->save(os);
93 
94  viewRemovePrecompile(AViewId, APrecompileType);
95  }
96 }
97 //******************************************************************************
98 void CControler::loadOnePrecompileParameter(TViewId AViewId,
99  TPrecompile APrecompileType,
100  istream& is)
101 {
102  CParameter* parameter = getParameterPrecompile(AViewId, APrecompileType);
103 
104  if (parameter!=NULL)
105  {
106  parameter->load(is);
107  }
108  else
109  {
110  viewAddPrecompile(AViewId, APrecompileType);
111 
112  parameter = getParameterPrecompile(AViewId, APrecompileType);
113  parameter->load(is);
114 
115  viewRemovePrecompile(AViewId, APrecompileType);
116  }
117 }
118 //******************************************************************************
120 {
121  stringstream s;
122  s<<FConfigDirectory<<"/model-parameters.txt";
123  ofstream os(s.str().c_str());
124 
125  if (!os.good())
126  return;
127 
128  // Les paramètres de view : 1 par CView
129  getParameterAimedPosition(AViewId)->save(os);
130  getParameterDrawing(AViewId)->save(os);
131  getParameterEyePosition(AViewId)->save(os);
132 
133  // Les paramètres de précompile
134  TPrecompile aprecompile;
135  for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
136  aprecompile < FLastPrecompile; ++aprecompile)
137  {
138  saveOnePrecompileParameter(AViewId, aprecompile, os);
139  }
140 
141  os.close();
142 }
143 //******************************************************************************
145 {
146  stringstream s;
147  s<<FConfigDirectory<<"/model-parameters.txt";
148  ifstream is(s.str().c_str());
149 
150  if (!is.good())
151  return;
152 
153  // Les paramètres de view : 1 par CView
154  getParameterAimedPosition(AViewId)->load(is);
155  getParameterDrawing(AViewId)->load(is);
156  getParameterEyePosition(AViewId)->load(is);
157 
158  // Les paramètres de précompile
159  TPrecompile aprecompile;
160  for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
161  aprecompile < FLastPrecompile; ++aprecompile)
162  {
163  loadOnePrecompileParameter(AViewId, aprecompile, is);
164  }
165 
166  is.close();
167 }
168 //******************************************************************************
170 {
171  // Les paramètres de view : 1 par CView
172  getParameterAimedPosition(AViewId)->reinit();
173  getParameterDrawing(AViewId)->reinit();
174  getParameterEyePosition(AViewId)->reinit();
175 
176  // Les paramètres de précompile
177  CParameter* parameter;
178  TPrecompile aprecompile;
179  for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
180  aprecompile < FLastPrecompile; ++aprecompile)
181  {
182  parameter = getParameterPrecompile(AViewId, aprecompile);
183  if (parameter!=NULL) parameter->reinit();
184  }
185 }
186 //******************************************************************************