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