summaryrefslogtreecommitdiff
path: root/inc/NIS_SurfaceDrawer.hxx
blob: a43e9a81cfbea0ea33f68c3a37c9379ef2aca668 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// File:      NIS_SurfaceDrawer.h
// Created:   20.03.08 09:05
// Author:    Alexander GRIGORIEV
// Copyright: Open Cascade S.A. 2008

#ifndef NIS_SurfaceDrawer_HeaderFile
#define NIS_SurfaceDrawer_HeaderFile

#include <NIS_Drawer.hxx>
#include <gp_Trsf.hxx>
#include <Quantity_Color.hxx>

class NIS_Surface;

/**
 * Drawer for interactive object type NIS_Surface.
 */

class NIS_SurfaceDrawer : public NIS_Drawer
{
 public:
  // ---------- PUBLIC METHODS ----------

  /**
   * Constructor.
   */
  Standard_EXPORT NIS_SurfaceDrawer(const Quantity_Color   &theNormal,
                                    const Quantity_Color   &theHilight
                                                        = Quantity_NOC_GRAY65,
                                    const Quantity_Color   &theDynHilight
                                                        = Quantity_NOC_CYAN1);

  /**
   * Sets the color of the drawer.
   */
  Standard_EXPORT void         SetColor (const Quantity_Color &theColor);

  /**
   * Define the color used for the back side of rendered triangles.
   * By default this color is the same as the 'Normal' color. 
   */
  inline void                  SetBackColor (const Quantity_Color& theColor)
  {
    myBackColor = theColor;
  }

  /**
   * Sets the transformation to the drawer.
   */
  inline void                  SetTransformation (const gp_Trsf &theTrsf)
  {
    myTrsf = theTrsf;
  }

  /**
   * Returns the transformation to the drawer.
   */
  inline const gp_Trsf&        GetTransformation () const
  {
    return myTrsf;
  }

  /**
   * Sets the surface offset
   */
  inline void                  SetPolygonOffset  (const Standard_Real theOffset)
  {
    myPolygonOffset = static_cast<Standard_ShortReal>(theOffset);
  }

  /**
   * Get the surface offset.
   */
  inline Standard_Real         GetPolygonOffset  () const
  {
    return static_cast<Standard_Real>(myPolygonOffset);
  }

  /**
   * Copy the relevant information from another instance of Drawer.
   * raises exception if theOther has incompatible type (test IsKind).
   */
  Standard_EXPORT virtual void Assign   (const Handle_NIS_Drawer& theOther);

  /**
   * Called before execution of Draw(), once per group of interactive objects.
   */
  Standard_EXPORT virtual void BeforeDraw(const DrawType         theType,
                                          const NIS_DrawList&    theDrawList);

  /**
   * Called after execution of Draw(), once per group of interactive objects.
   */
  Standard_EXPORT virtual void AfterDraw(const DrawType         theType,
                                         const NIS_DrawList&    theDrawList);

  /**
   * Main function: display the given interactive object in the given view.
   */
  Standard_EXPORT virtual void Draw     (const Handle_NIS_InteractiveObject&,
                                         const DrawType         theType,
                                         const NIS_DrawList&    theDrawList);

  /**
   * Matching two instances, for Map interface.
   */
  Standard_EXPORT virtual Standard_Boolean
                               IsEqual  (const Handle_NIS_Drawer& theOth)const;

 protected:
  Standard_EXPORT virtual void redraw   (const DrawType         theType,
                                         const Handle_NIS_View& theView);


private:
  Quantity_Color      myColor[5];
  Quantity_Color      myBackColor;
  gp_Trsf             myTrsf;
  Standard_ShortReal  myPolygonOffset;
  Standard_Boolean    myIsWireframe;

  friend class NIS_Surface;

 public:
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI (NIS_SurfaceDrawer)
};

// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (NIS_SurfaceDrawer, NIS_Drawer)

#endif