DGtal  0.9.2
DrawWithDisplay3DModifier.h
1 
17 #pragma once
18 
30 #if defined(DrawWithDisplay3DModifier_RECURSES)
31 #error Recursive header files inclusion detected in DrawWithDisplay3DModifier.h
32 #else // defined(DrawWithDisplay3DModifier_RECURSES)
33 
34 #define DrawWithDisplay3DModifier_RECURSES
35 
36 #if !defined DrawWithDisplay3DModifier_h
37 
38 #define DrawWithDisplay3DModifier_h
39 
41 // Inclusions
42 #include <iostream>
43 #include "DGtal/base/Common.h"
44 #include "DGtal/helpers/StdDefs.h"
45 #include "DGtal/base/Alias.h"
46 #include "DGtal/base/ConstAlias.h"
47 #include "DGtal/images/CConstImage.h"
48 #include "DGtal/base/CountedPtr.h"
49 #include "DGtal/topology/KhalimskySpaceND.h"
51 
52 namespace DGtal
53 {
54 
61 {
62  std::string className() const;
63 };
64 
65 
66 
74 {
80  SetMode3D( std::string classname, std::string mode )
81  : myClassname( classname ), myMode( mode )
82  {}
83 
84  std::string myClassname;
85  std::string myMode;
86 };
87 
88 
89 
90 
97 {
104  CustomStyle3D( std::string aClassname, DrawableWithDisplay3D* style ): myClassname( aClassname ), myStyle( style )
105  {}
106 
107  std::string className() const;
108 
109  std::string myClassname;
111 };
112 
113 
114 
115 
130 {
133 
140  CustomColors3D( const Color & penColor,
141  const Color & fillColor )
142  : myPenColor( penColor ), myFillColor( fillColor )
143  {}
144 
145 
146 };
147 
148 
149 
150 
157 {
161  ClippingPlane( double a, double b, double c, double d, bool drawPlane=true )
162  : myA( a ), myB( b ), myC( c ), myD ( d ), myDrawPlane(drawPlane)
163  {}
164 
165  double * getEquation();
166  double myA;
167  double myB;
168  double myC;
169  double myD;
171 };
172 
173 
174 
180 {
189  double aShift, double aSizeFactor=1.0 ):mySurfel(aSurfel), myShift(aShift), mySizeFactor(aSizeFactor)
190  {
191  }
192 
193 
203  const DGtal::Z3i::SCell & aVoxel,
204  double aShift=0.05, double aSizeFactor=0.75 )
205  : mySurfel(aSurfel), myShift(aShift), mySizeFactor(aSizeFactor)
206  {
207  auto const& preSurfel = aSurfel.preCell();
208  auto const& preVoxel = aVoxel.preCell();
209 
210  bool xodd = (preSurfel.coordinates[ 0 ] & 1 );
211  bool yodd = (preSurfel.coordinates[ 1 ] & 1 );
212  bool zodd = (preSurfel.coordinates[ 2 ] & 1 );
213  if(!xodd )
214  {
215  myShift*= ((preVoxel.coordinates[ 0 ]-preSurfel.coordinates[ 0 ] <0)? -1.0: 1.0);
216  }else if(!yodd )
217  {
218  myShift*=((preVoxel.coordinates[ 1 ]-preSurfel.coordinates[ 1 ] <0)? -1.0: 1.0);
219  }else if(!zodd )
220  {
221  myShift*=((preVoxel.coordinates[ 2 ]-preSurfel.coordinates[ 2 ] <0)? -1.0: 1.0);
222  }
223  }
224 
227  double myShift;
228  double mySizeFactor;
229 };
230 
231 
245  SetName3D( DGtal::int32_t aName = -1 ) : name( aName ) {}
247  std::string className() const { return "SetName3D"; }
250  };
251 
262  typedef int (*CallbackFct)( void* viewer, DGtal::int32_t name, void* data );
264  void* data,
265  DGtal::int32_t min = 0, DGtal::int32_t max = 0x7fffffff )
266  : myFct( f ), myData( data ), myMin( min ), myMax( max ) {}
268  std::string className() const { return "SetSelectCallback3D"; }
271  void* myData;
274  };
275 } // namespace DGtal
276 
277 
279 // Includes inline functions.
280 #include "DGtal/io/DrawWithDisplay3DModifier.ih"
281 
282 
283 // //
285 
286 #endif // !defined DrawWithDisplay3DModifier_h
287 
288 #undef DrawWithDisplay3DModifier_RECURSES
289 #endif // else defined(DrawWithDisplay3DModifier_RECURSES)
TransformedPrism(const DGtal::Z3i::SCell &aSurfel, const DGtal::Z3i::SCell &aVoxel, double aShift=0.05, double aSizeFactor=0.75)
SetName3D(DGtal::int32_t aName=-1)
ClippingPlane(double a, double b, double c, double d, bool drawPlane=true)
std::string className() const
std::string className() const
SetSelectCallback3D(CallbackFct f, void *data, DGtal::int32_t min=0, DGtal::int32_t max=0x7fffffff)
double * getEquation()
CustomColors3D(const Color &penColor, const Color &fillColor)
DGtal::int32_t name
the "OpenGL name" for selection, or -1 for none.
Base class specifying the methods for classes which intend to modify a Viewer3D stream.
Modifier class in a Display3D stream. Useful to choose your own style for a given class...
SetMode3D(std::string classname, std::string mode)
std::string className() const
TransformedPrism(const DGtal::Z3i::SCell &aSurfel, double aShift, double aSizeFactor=1.0)
SPreCell const & preCell() const
Returns the underlying constant signed pre-cell.
DGtal is the top-level namespace which contains all DGtal functions and types.
Represents a signed cell in a cellular grid space by its Khalimsky coordinates and a boolean value...
int(* CallbackFct)(void *viewer, DGtal::int32_t name, void *data)
Structure representing an RGB triple with alpha component.
Definition: Color.h:66
boost::int32_t int32_t
signed 32-bit integer.
Definition: BasicTypes.h:72
Class for adding a Clipping plane through the Viewer3D stream. Realizes the concept CDrawableWithView...
CountedPtr< DrawableWithDisplay3D > myStyle
CallbackFct myFct
The callback function associated to the selection of an element.
class to modify the position and scale to construct better illustration mode.
Modifier class in a Display3D stream. Useful to choose your own mode for a given class. Realizes the concept CDrawableWithDisplay3D.
CustomStyle3D(std::string aClassname, DrawableWithDisplay3D *style)