Salome HOME
#1404 Random crash with Shaper: AIS presentations: operation prs, result sketch prs...
[modules/shaper.git] / src / PartSet / PartSet_PreviewPlanes.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        PartSet_PreviewPlanes.h
4 // Created:     22 Mar 2016
5 // Author:      Natalia ERMOLAEVA
6
7 #ifndef PartSet_PreviewPlanes_H
8 #define PartSet_PreviewPlanes_H
9
10 #include <GeomAPI_AISObject.h>
11
12 #include <GeomAPI_Pnt.h>
13 #include <GeomAPI_Dir.h>
14 #include <GeomAPI_AISObject.h>
15
16 class ModuleBase_IWorkshop;
17
18 /// the plane edge width
19 #define SKETCH_WIDTH        "4"
20 /// face of the square-face displayed for selection of general plane
21 #define PLANE_SIZE          "200"
22
23 /**
24 * \class PartSet_PreviewPlanes
25 * \ingroup Modules
26 * A class to show/hide sketch preview planes
27 */
28 class PartSet_PreviewPlanes
29 {
30 public:
31   /// Constructor
32   PartSet_PreviewPlanes();
33
34   ~PartSet_PreviewPlanes() {};
35
36   /// Returns true if there is body visualized in the viewer
37   /// \param theWorkshop the application workshop
38   /// \return boolean value
39   static bool hasVisualizedBodies(ModuleBase_IWorkshop* theWorkshop);
40
41   /// Returns true if there is at least one Sketch visualized in the viewer
42   /// \param theWorkshop the application workshop
43   /// \return boolean value
44   static bool hasVisualizedSketch(ModuleBase_IWorkshop* theWorkshop);
45
46   /// Returns if the preview was displayed
47   /// \param theWorkshop the application workshop
48   /// \return boolean value
49   bool isPreviewDisplayed() const { return myPreviewDisplayed; }
50
51   /// Erase preview planes
52   /// \param theWorkshop the application workshop
53   void erasePreviewPlanes(ModuleBase_IWorkshop* theWorkshop);
54
55   /// Show preview planes
56   /// \param theWorkshop the application workshop
57   void showPreviewPlanes(ModuleBase_IWorkshop* theWorkshop);
58
59 private:
60      /// Create preview of planes for sketch plane selection
61    /// \param theOrigin an origin of the plane
62    /// \param theNorm a normal vector of the plane
63    /// \param theRGB a color of plane presentation [r, g, b] array
64   AISObjectPtr createPreviewPlane(std::shared_ptr<GeomAPI_Pnt> theOrigin, 
65                                   std::shared_ptr<GeomAPI_Dir> theNorm, 
66                                   const int theRGB[3]);
67
68 private:
69   bool myPreviewDisplayed;
70
71   AISObjectPtr myYZPlane;
72   AISObjectPtr myXZPlane;
73   AISObjectPtr myXYPlane;
74 };
75
76 #endif