summaryrefslogtreecommitdiff
path: root/indra/llui/lllocalcliprect.h
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-08-25 15:58:08 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-08-25 15:58:08 +0100
commit1d89a80ba7293309fd4fbdd03b802c5c2998aac7 (patch)
tree70eb3619b9a3df35687836d9daa328eb52ba85ab /indra/llui/lllocalcliprect.h
parent6fcde580c3a2e6cc62bfab52bd47cae8726c56d4 (diff)
parente416840f85dc4a367894036b9fe483f17d959c54 (diff)
merge
Diffstat (limited to 'indra/llui/lllocalcliprect.h')
-rw-r--r--indra/llui/lllocalcliprect.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/indra/llui/lllocalcliprect.h b/indra/llui/lllocalcliprect.h
index 0097958916..eeeaf2adb6 100644
--- a/indra/llui/lllocalcliprect.h
+++ b/indra/llui/lllocalcliprect.h
@@ -25,7 +25,9 @@
#ifndef LLLOCALCLIPRECT_H
#define LLLOCALCLIPRECT_H
+#include "llgl.h"
#include "llrect.h" // can't forward declare, it's templated
+#include <stack>
// Clip rendering to a specific rectangle using GL scissor
// Just create one of these on the stack:
@@ -33,15 +35,29 @@
// LLLocalClipRect(rect);
// draw();
// }
-class LLLocalClipRect
+class LLScreenClipRect
{
public:
- LLLocalClipRect(const LLRect& rect, BOOL enabled = TRUE);
- ~LLLocalClipRect();
+ LLScreenClipRect(const LLRect& rect, BOOL enabled = TRUE);
+ virtual ~LLScreenClipRect();
+
+private:
+ static void pushClipRect(const LLRect& rect);
+ static void popClipRect();
+ static void updateScissorRegion();
private:
- // implementation class
- class LLScreenClipRect* mScreenClipRect;
+ LLGLState mScissorState;
+ BOOL mEnabled;
+
+ static std::stack<LLRect> sClipRectStack;
+};
+
+class LLLocalClipRect : public LLScreenClipRect
+{
+public:
+ LLLocalClipRect(const LLRect& rect, BOOL enabled = TRUE);
+ ~LLLocalClipRect();
};
#endif