1 #pragma once
2 
3 #ifndef TSTENCILCONTROL_H
4 #define TSTENCILCONTROL_H
5 
6 #include <memory>
7 
8 #include "tcommon.h"
9 
10 #undef DVAPI
11 #undef DVVAR
12 #ifdef TGL_EXPORTS
13 #define DVAPI DV_EXPORT_API
14 #define DVVAR DV_EXPORT_VAR
15 #else
16 #define DVAPI DV_IMPORT_API
17 #define DVVAR DV_IMPORT_VAR
18 #endif
19 
20 //------------------------------------------------------
21 
22 // singleton
23 class DVAPI TStencilControl {
24 public:
25   enum MaskType { SHOW_INSIDE = 0, SHOW_OUTSIDE };
26 
27   enum DrawMode {
28     DRAW_ONLY_MASK = 0,
29     DRAW_ALSO_ON_SCREEN,
30     DRAW_ON_SCREEN_ONLY_ONCE
31   };
32 
33 private:
34   class Imp;
35   std::unique_ptr<Imp> m_imp;
36 
37 public:
38   static TStencilControl *instance();
39 
40   TStencilControl();
41   ~TStencilControl();
42 
43   void beginMask(DrawMode drawMode = DRAW_ONLY_MASK);
44   void endMask();
45 
46   void enableMask(MaskType maskType);
47   void disableMask();
48 };
49 
50 //------------------------------------------------------
51 
52 #endif
53