VAPoR  3.0.0
vizwinparams.h
Go to the documentation of this file.
1 //************************************************************************
2 // *
3 // Copyright (C) 1024 *
4 // University Corporation for Atmospheric Research *
5 // All Rights Reserved *
6 // *
7 //************************************************************************/
8 //
9 // File: vizwinparams.h
10 //
11 // Author: Alan Norton
12 // National Center for Atmospheric Research
13 // PO 3000, Boulder, Colorado
14 //
15 // Date: April 2014
16 //
17 // Description: Defines the VizWinParams class.
18 // This Params class is global. Specifies properties of the VizWindows
19 // Also has various static methods for obtaining and setting properties of the VizWindows
20 // Each vizwin has associated with it the following:
21 // index >= 0, indicating the visualizer number (as used by the ControlExec)
22 // name, a string
23 // width and height
24 // Several attributes apply to the set of visualizers:
25 // the "current" visualizer
26 // the number of visualizers
27 //
28 //
29 #ifndef VIZWINPARAMS_H
30 #define VIZWINPARAMS_H
31 
32 
33 #include <vector>
34 #include <map>
35 #include <algorithm>
36 #include <vapor/common.h>
37 #include "params.h"
38 #include <vapor/MyBase.h>
39 
40 
41 using namespace VetsUtil;
42 
43 namespace VAPoR {
44 
45 
54 
55 public:
56 
66  static int AddVizWin(const std::string name, int viznum, int width, int height);
67 
71  static int RemoveVizWin(int viz);
72 
75  static int GetCurrentVizWin(){
76  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getCurrentVizWin();
77  }
81  static int SetCurrentVizWin(int viz){
82  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->setCurrentVizWin(viz);
83  }
87  static int GetWindowWidth(int viznum){
88  int winnum = mapVizToWin(viznum);
89  if (winnum < 0) return -1;
90  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowWidths()[winnum];
91  }
92 
96  static int GetWindowHeight(int viznum){
97  int winnum = mapVizToWin(viznum);
98  if (winnum < 0) return -1;
99  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowHeights()[winnum];
100  }
101 
106  static int SetWindowWidth(int viznum, int width){
107  int winnum = mapVizToWin(viznum);
108  if (winnum < 0) return -1;
109  std::vector<long> widths = ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowWidths();
110  widths[winnum] = width;
111  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->setWindowWidths(widths);
112  }
117  static int SetWindowHeight(int viznum, int height){
118  int winnum = mapVizToWin(viznum);
119  if (winnum < 0) return -1;
120  vector<long>heights = ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowHeights();
121  heights[winnum] = height;
122  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->setWindowHeights(heights);
123  }
124 
129  static int SetVizName(int viznum, string name){
130  int winnum = mapVizToWin(viznum);
131  if (winnum < 0) return -1;
132  vector<string> names = ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowNames();
133  names[winnum] = name;
134  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->setWindowNames(names);
135  }
139  static string GetVizName(int viznum){
140  int winnum = mapVizToWin(viznum);
141  if (winnum < 0) return _emptyString;
142  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getWindowNames()[winnum];
143  }
144 
147  static int GetNumVizWins(){
148  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getVisualizerNums().size();
149  }
152  static vector<long> GetVisualizerNums(){
153  return ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getVisualizerNums();
154  }
155 
159  static void SetVizDirty(int viznum, bool val = true){
160  if (_vizDirtyBits.size()== 0) return;
161  if (viznum >= 0) _vizDirtyBits[viznum] = val;
162  else for (int i = 0; i< _vizDirtyBits.size(); i++) _vizDirtyBits[i] = val;
163  }
164 
168  static bool VizIsDirty(int viznum) {
169  return _vizDirtyBits[viznum];
170  }
171 
175 
179  VizWinParams(XmlNode* parent, int winnum);
180 
182  virtual ~VizWinParams();
183 
187  virtual void Validate(int type);
189  virtual void restart();
190 
193  static ParamsBase* CreateDefaultInstance() {return new VizWinParams(0, -1);}
196  const std::string getShortName() {return _shortName;}
200  vector<long> getVisualizerNums(){
201  return GetValueLongVec(_visualizerNumsTag);
202  }
207  return GetValueLong(_currentWindowTag);
208  }
209 
211 
212 #ifndef DOXYGEN_SKIP_THIS
213 
214  static const string _vizWinParamsTag;
215  static const string _shortName;
216  static const string _windowWidthsTag;
217  static const string _windowHeightsTag;
218  static const string _windowNamesTag;
219  static const string _currentWindowTag;
220  static const string _visualizerNumsTag;
221  static const string _emptyString;
222 
223 private:
227  static int mapVizToWin(int viznum){
228  vector<long> viznums = ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getVisualizerNums();
229  for (int i = 0; i<viznums.size(); i++){
230  if (viznums[i] == viznum) return i;
231  }
232  return -1;
233  }
234 
238  static int mapWinToViz(int winnum){
239  vector<long> viznums = ((VizWinParams*)Params::GetParamsInstance(_vizWinParamsTag))->getVisualizerNums();
240  if (winnum < 0 || winnum >= viznums.size()) return -1;
241  return viznums[winnum];
242  }
243 
245  int setCurrentVizWin(int viz){
246  return SetValueLong(_currentWindowTag, "Set current viz win",(long)viz);
247  }
248 
249  vector<long> getWindowWidths(){
250  return GetValueLongVec(_windowWidthsTag);
251  }
252  vector<long>getWindowHeights(){
253  return GetValueLongVec(_windowHeightsTag);
254  }
255  int setWindowWidths(const vector<long> widths){
256  return SetValueLong(_windowWidthsTag, "Set window widths",widths);
257  }
258 
259  int setWindowHeights(const vector<long>& heights){
260  return SetValueLong(_windowHeightsTag, "Set window heights",heights);
261  }
262 
263  int setVisualizerNums(const vector<long>& viznums){
264  return SetValueLong(_visualizerNumsTag,"Set visualizer numbers",viznums);
265  }
266  vector<string> getWindowNames(){
267  std::vector<string> names;
268  GetValueStringVec(_windowNamesTag,names);
269  //convert "_" to " ":
270  for (int i = 0; i<names.size(); i++){
271  std::replace(names[i].begin(),names[i].end(),'_',' ');
272  }
273  return names;
274  }
275  int setWindowNames(const vector<string> names){
276  //Replace blanks with underscores
277  vector<string> namemod = names;
278  for (int i = 0; i<namemod.size(); i++){
279  std::replace(namemod[i].begin(),namemod[i].end(),' ','_');
280  }
281  return SetValueStringVec(_windowNamesTag," Set visualizer names", namemod);
282  }
283  static vector<bool> _vizDirtyBits;
284 
285 #endif //DOXYGEN_SKIP_THIS
286 };
287 
288 };
289 #endif //VIZWINPARAMS_H
static int GetWindowHeight(int viznum)
Definition: vizwinparams.h:96
static void SetVizDirty(int viznum, bool val=true)
Definition: vizwinparams.h:159
static int SetWindowWidth(int viznum, int width)
Definition: vizwinparams.h:106
static int SetWindowHeight(int viznum, int height)
Definition: vizwinparams.h:117
Nodes with state in Xml tree representation.
Definition: ParamsBase.h:90
A class for describing the vizualization windows in use in VAPOR.
Definition: vizwinparams.h:53
static ParamsBase * CreateDefaultInstance()
Definition: vizwinparams.h:193
static bool VizIsDirty(int viznum)
Definition: vizwinparams.h:168
static int GetWindowWidth(int viznum)
Definition: vizwinparams.h:87
static vector< long > GetVisualizerNums()
Definition: vizwinparams.h:152
static string GetVizName(int viznum)
Definition: vizwinparams.h:139
static int GetCurrentVizWin()
Definition: vizwinparams.h:75
static int SetCurrentVizWin(int viz)
Definition: vizwinparams.h:81
static int SetVizName(int viznum, string name)
Definition: vizwinparams.h:129
const std::string getShortName()
Definition: vizwinparams.h:196
static int GetNumVizWins()
Definition: vizwinparams.h:147
#define PARAMS_API
A Params subclass for Params classes with one unique instance.
Definition: params.h:598
Definition: DC.h:10
vector< long > getVisualizerNums()
Definition: vizwinparams.h:200