MorphoGraphX  2.0-1-227
BezierProcess.hpp
Go to the documentation of this file.
1 //
2 // This file is part of MorphoGraphX - http://www.MorphoGraphX.org
3 // Copyright (C) 2012-2015 Richard S. Smith and collaborators.
4 //
5 // If you use MorphoGraphX in your work, please cite:
6 // http://dx.doi.org/10.7554/eLife.05864
7 //
8 // MorphoGraphX is free software, and is licensed under under the terms of the
9 // GNU General (GPL) Public License version 2.0, http://www.gnu.org/licenses.
10 //
11 
12 #ifndef __BEZIERPROCESS_HPP__
13 #define __BEZIERPROCESS_HPP__
14 
15 #include <Process.hpp>
16 #include <Parms.hpp>
17 #include <Bezier.hpp>
18 
19 // I had to make a file separate from Bezier, because Bezier.hpp is included in CuttingSurface.hpp, which itself is included into Process.hpp
20 
21 namespace mgx {
22 
26  class mgxBase_EXPORT LoadBezier : public Process {
27  public:
28  LoadBezier(const Process& process) : Process(process)
29  {
30  setName("Misc/Bezier/Load Bezier");
31  setDesc("Load Bezier from a parameter file.");
32  setIcon(QIcon(":/images/open.png"));
33 
34  addParm("Input File","Path to input file. If empty, a browser will open.",""); // 0
35  }
36 
37  bool initialize(QWidget* parent);
38 
39  bool run()
40  {
41  return run(parm("Input File"));
42  }
43 
44  bool run(const QString& filename);
45  };
46 
50  class mgxBase_EXPORT SaveBezier : public Process {
51  public:
52  SaveBezier(const Process& process) : Process(process)
53  {
54  setName("Misc/Bezier/Save Bezier");
55  setDesc("Save Bezier to a parameter file.");
56  setIcon(QIcon(":/images/save.png"));
57 
58  addParm("Output File","Path to output file. If empty, a browser will open.",""); // 0
59  }
60 
61  bool initialize(QWidget* parent);
62 
63  bool run()
64  {
65  return run(parm("Output File"));
66  }
67 
68  bool run(const QString& filename);
69 
70  };
71 
72 
76  class mgxBase_EXPORT NewBezier : public Process {
77  public:
78  NewBezier(const Process& process) : Process(process)
79  {
80  setName("Misc/Bezier/New Bezier");
81  setDesc("New Bezier from parameters.");
82  setIcon(QIcon(":/images/Bezier.png"));
83 
84  addParm("Controls X","Nb of control points in X","5"); // 0
85  addParm("Controls Y","Nb of control points in Y","5"); // 1
86  addParm("Size X","Physical size along X (um)","200"); // 2
87  addParm("Size Y","Physical size along Y (um)","200"); // 3
88  addParm("Lines in X","Nb of lines to draw in X","15"); // 4
89  addParm("Lines in Y","Nb of lines to draw in Y","15"); // 5
90  }
91 
92  bool initialize(QWidget* parent) { return true; }
93 
94  bool run() {
95  return run(parm("Controls X").toInt(), parm("Controls Y").toInt(), parm("Size X").toFloat(),
96  parm("Size Y").toFloat(), parm("Lines in X").toInt(), parm("Lines in Y").toInt());
97  }
98 
99  bool run(uint bezPointsX, uint bezPointsY, float sizeX, float sizeY, uint linesX, uint linesY);
100  };
101 
102 
103 class mgxBase_EXPORT MeasureBezier : public Process
104  {
105  public:
106  MeasureBezier(const Process& process) : Process(process)
107  {
108  setName("Misc/Bezier/Measure/Simple Measure");
109  setDesc("Measures the area of the Bezier grid and the length of the Bezier line at point v=0");
110  setIcon(QIcon(":/images/MakeHeatMap.png"));
111 
112  addParm("Discretization Points","Number of discretization points","200"); // 0
113  }
114 
115  bool run()
116  {
117  Mesh* m = currentMesh();
118  return run(m, parm("Discretization Points").toInt());
119  }
120  bool run(Mesh* m, int discretization);
121  };
122 
123 
124 class mgxBase_EXPORT MeasureBezierExport : public Process
125  {
126  public:
127  MeasureBezierExport(const Process& process) : Process(process)
128  {
129  setName("Misc/Bezier/Measure/Export Measure");
130  setDesc("Measures the area of the Bezier grid and the length of the Bezier line at point v=0");
131  setIcon(QIcon(":/images/MakeHeatMap.png"));
132 
133  addParm("Discretization Points","Number of discretization points","200"); // 0
134  addParm("Filename","Filename",""); // 0
135  }
136  bool initialize(QWidget* parent);
137 
138  bool run()
139  {
140  Mesh* m = currentMesh();
141  return run(m, parm("Discretization Points").toInt(), parm("Filename"));
142  }
143  bool run(Mesh* m, int discretization, QString filename);
144  };
145 
146 
147  class mgxBase_EXPORT CollapseBezier : public Process
148  {
149  public:
150  CollapseBezier(const Process& process) : Process(process)
151  {
152  setName("Misc/Bezier/Collapse Bezier Points");
153  setDesc("Collapse the 2D Bezier gridpoints into a line");
154  setIcon(QIcon(":/images/Bezier.png"));
155  }
156 
157  bool run();
158  };
159 
163  class mgxBase_EXPORT NewBezierRing : public Process {
164  public:
165  NewBezierRing(const Process& process) : Process(process)
166  {
167  setName("Misc/Bezier/New Bezier Ring");
168  setDesc("New Bezier ring from parameters.");
169  setIcon(QIcon(":/images/Bezier.png"));
170 
171  addParm("Controls X","Nb of control points in X","12"); // 0
172  addParm("Radius X","Physical size along X (um)","100"); // 2
173  addParm("Radius Y","Physical size along Y (um)","100"); // 3
174  }
175 
176  bool initialize(QWidget* parent) { return true; }
177 
178  bool run() {
179  return run(parm("Controls X").toInt(), parm("Radius X").toFloat(),
180  parm("Radius Y").toFloat());
181  }
182 
183  bool run(uint bezPointsX, float sizeX, float sizeY);
184  };
185 
189  class mgxBase_EXPORT NewBezierRingFromSelected : public Process {
190  public:
191  NewBezierRingFromSelected(const Process& process) : Process(process)
192  {
193  setName("Misc/Bezier/New Bezier Ring From Selected Cells");
194  setDesc("New Bezier ring from parameters.");
195  setIcon(QIcon(":/images/Bezier.png"));
196 
197  addParm("Controls X","Nb of control points in X","12"); // 0
198  addParm("Radius X","Physical size along X (um)","100"); // 2
199  addParm("Radius Y","Physical size along Y (um)","100"); // 3
200  addParm("Mode","Mode","3D", QStringList() << "2D" << "3D"); // 3
201  }
202 
203  bool initialize(QWidget* parent) { return true; }
204 
205  bool run() {
206  Mesh* m = currentMesh();
207  return run(m, parm("Controls X").toInt(), parm("Radius X").toFloat(),
208  parm("Radius Y").toFloat(), parm("Mode"));
209  }
210 
211  bool run(Mesh* m, uint bezPointsX, float sizeX, float sizeY, QString mode);
212  };
213 
214 
218  class mgxBase_EXPORT FlipBezierLine : public Process {
219  public:
220  FlipBezierLine(const Process& process) : Process(process)
221  {
222  setName("Misc/Bezier/Flip Bezier Line");
223  setDesc("New Bezier ring from parameters.");
224  setIcon(QIcon(":/images/Bezier.png"));
225 
226  }
227 
228  bool initialize(QWidget* parent) { return true; }
229 
230  bool run() {
231  Mesh* m = currentMesh();
232  return run(m);
233  }
234 
235  bool run(Mesh* m);
236  };
237 
238 
239 
240 
241 
242 }
243 
244 #endif
mgx::FlipBezierLine
Definition: BezierProcess.hpp:218
mgx::uint
unsigned int uint
Definition: Geometry.hpp:41
mgx::FlipBezierLine::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:230
Bezier.hpp
Process.hpp
mgx::NewBezierRing::NewBezierRing
NewBezierRing(const Process &process)
Definition: BezierProcess.hpp:165
mgx::LoadBezier::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:39
mgx::FlipBezierLine::initialize
bool initialize(QWidget *parent)
Initialize the process.
Definition: BezierProcess.hpp:228
mgx::LoadBezier
Definition: BezierProcess.hpp:26
mgx::NewBezierRingFromSelected::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:205
mgx::MeasureBezierExport::MeasureBezierExport
MeasureBezierExport(const Process &process)
Definition: BezierProcess.hpp:127
mgx::SaveBezier::SaveBezier
SaveBezier(const Process &process)
Definition: BezierProcess.hpp:52
mgx::NewBezierRingFromSelected::NewBezierRingFromSelected
NewBezierRingFromSelected(const Process &process)
Definition: BezierProcess.hpp:191
mgx::NewBezier::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:94
mgx
Distributed matrix library.
Definition: Assert.hpp:26
mgx::Process
Definition: Process.hpp:219
mgx::NewBezier::initialize
bool initialize(QWidget *parent)
Initialize the process.
Definition: BezierProcess.hpp:92
Parms.hpp
mgx::NewBezier
Definition: BezierProcess.hpp:76
mgx::MeasureBezierExport
Definition: BezierProcess.hpp:124
mgx::NewBezierRing::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:178
mgx::NewBezierRingFromSelected
Definition: BezierProcess.hpp:189
mgx::MeasureBezierExport::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:138
mgx::NewBezierRing
Definition: BezierProcess.hpp:163
mgx::LoadBezier::LoadBezier
LoadBezier(const Process &process)
Definition: BezierProcess.hpp:28
mgx::Mesh
Definition: Mesh.hpp:54
mgx::MeasureBezier
Definition: BezierProcess.hpp:103
mgx::NewBezier::NewBezier
NewBezier(const Process &process)
Definition: BezierProcess.hpp:78
mgx::CollapseBezier
Definition: BezierProcess.hpp:147
mgx::SaveBezier::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:63
mgx::MeasureBezier::MeasureBezier
MeasureBezier(const Process &process)
Definition: BezierProcess.hpp:106
mgx::NewBezierRing::initialize
bool initialize(QWidget *parent)
Initialize the process.
Definition: BezierProcess.hpp:176
mgx::CollapseBezier::CollapseBezier
CollapseBezier(const Process &process)
Definition: BezierProcess.hpp:150
mgx::FlipBezierLine::FlipBezierLine
FlipBezierLine(const Process &process)
Definition: BezierProcess.hpp:220
mgx::SaveBezier
Definition: BezierProcess.hpp:50
mgx::NewBezierRingFromSelected::initialize
bool initialize(QWidget *parent)
Initialize the process.
Definition: BezierProcess.hpp:203
mgx::MeasureBezier::run
bool run()
Runs the process.
Definition: BezierProcess.hpp:115