tahoma2d/toonz/sources/include/tstencilcontrol.h

61 lines
1,006 B
C++

#pragma once
#ifndef TSTENCILCONTROL_H
#define TSTENCILCONTROL_H
#include <memory>
#include <stack>
#include "tcommon.h"
#undef DVAPI
#undef DVVAR
#ifdef TGL_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
//------------------------------------------------------
// singleton
class DVAPI TStencilControl {
public:
enum MaskType { SHOW_INSIDE = 0, SHOW_OUTSIDE };
enum DrawMode {
DRAW_ONLY_MASK = 0,
DRAW_ALSO_ON_SCREEN,
DRAW_ON_SCREEN_ONLY_ONCE
};
private:
class Imp;
std::unique_ptr<Imp> m_imp;
std::stack<Imp *> m_impStack;
public:
static TStencilControl *instance();
TStencilControl();
~TStencilControl();
void beginMask(DrawMode drawMode = DRAW_ONLY_MASK);
void endMask();
void enableMask(MaskType maskType);
void disableMask();
bool isMaskEnabled();
void stashMask();
void restoreMask();
};
//------------------------------------------------------
#endif