summaryrefslogtreecommitdiff
path: root/indra/llui/llui.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llui.h')
-rw-r--r--indra/llui/llui.h57
1 files changed, 44 insertions, 13 deletions
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index dbe79338e5..fefe75f43e 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -16,6 +16,8 @@
#include "llrect.h"
#include "llcoord.h"
#include "llhtmlhelp.h"
+#include "llgl.h"
+#include <stack>
class LLColor4;
class LLVector3;
@@ -123,7 +125,7 @@ extern BOOL gShowTextEditCursor;
extern LLString gLanguage;
class LLImageProviderInterface;
-typedef void (*LLUIAudioCallback)(const LLUUID& uuid, F32 volume);
+typedef void (*LLUIAudioCallback)(const LLUUID& uuid);
class LLUI
{
@@ -144,8 +146,8 @@ public:
//helper functions (should probably move free standing rendering helper functions here)
static LLString locateSkin(const LLString& filename);
- static void setScissorRegionScreen(const LLRect& rect);
- static void setScissorRegionLocal(const LLRect& rect); // works assuming LLUI::translate has been called
+ static void pushClipRect(const LLRect& rect);
+ static void popClipRect();
static void setCursorPositionScreen(S32 x, S32 y);
static void setCursorPositionLocal(LLView* viewp, S32 x, S32 y);
static void setScaleFactor(const LLVector2& scale_factor);
@@ -153,6 +155,11 @@ public:
static LLUUID findAssetUUIDByName(const LLString& name);
static LLVector2 getWindowSize();
static void setHtmlHelp(LLHtmlHelp* html_help);
+
+private:
+ static void setScissorRegionScreen(const LLRect& rect);
+ static void setScissorRegionLocal(const LLRect& rect); // works assuming LLUI::translate has been called
+
public:
static LLControlGroup* sConfigGroup;
static LLControlGroup* sColorsGroup;
@@ -163,6 +170,8 @@ public:
static LLWindow* sWindow;
static BOOL sShowXUINames;
static LLHtmlHelp* sHtmlHelp;
+ static std::stack<LLRect> sClipRectStack;
+
};
// UI widgets
@@ -251,6 +260,7 @@ typedef enum e_widget_type
WIDGET_TYPE_TEXTURE_VIEW,
WIDGET_TYPE_MEMORY_VIEW,
WIDGET_TYPE_FRAME_STAT_VIEW,
+ WIDGET_TYPE_LAYOUT_STACK,
WIDGET_TYPE_DONTCARE,
WIDGET_TYPE_COUNT
} EWidgetType;
@@ -272,38 +282,38 @@ public:
}
// default show and hide methods
- static T* showInstance(const LLSD& seed)
+ static T* showInstance(const LLSD& seed = LLSD())
{
T* instance = INSTANCE_ADAPTOR::getInstance(seed);
INSTANCE_ADAPTOR::show(instance);
return instance;
}
- static void hideInstance(const LLSD& seed)
+ static void hideInstance(const LLSD& seed = LLSD())
{
T* instance = INSTANCE_ADAPTOR::getInstance(seed);
INSTANCE_ADAPTOR::hide(instance);
}
- static void toggleInstance(const LLSD& seed)
+ static void toggleInstance(const LLSD& seed = LLSD())
{
- if (!INSTANCE_ADAPTOR::instanceVisible(seed))
+ if (INSTANCE_ADAPTOR::instanceVisible(seed))
{
- INSTANCE_ADAPTOR::showInstance(seed);
+ INSTANCE_ADAPTOR::hideInstance(seed);
}
else
{
- INSTANCE_ADAPTOR::hideInstance(seed);
+ INSTANCE_ADAPTOR::showInstance(seed);
}
}
- static BOOL instanceVisible(const LLSD& seed)
+ static BOOL instanceVisible(const LLSD& seed = LLSD())
{
T* instance = INSTANCE_ADAPTOR::findInstance(seed);
return instance != NULL && INSTANCE_ADAPTOR::visible(instance);
}
- static T* getInstance(const LLSD& seed)
+ static T* getInstance(const LLSD& seed = LLSD())
{
T* instance = INSTANCE_ADAPTOR::findInstance(seed);
if (instance == NULL)
@@ -312,6 +322,7 @@ public:
}
return instance;
}
+
};
// Creates a UI singleton by ignoring the identifying parameter
@@ -326,12 +337,12 @@ public:
LLUISingleton() : LLUIInstanceMgr<T, INSTANCE_ADAPTOR>() { sInstance = (T*)this; }
~LLUISingleton() { sInstance = NULL; }
- static T* findInstance(const LLSD& seed)
+ static T* findInstance(const LLSD& seed = LLSD())
{
return sInstance;
}
- static T* createInstance(const LLSD& seed)
+ static T* createInstance(const LLSD& seed = LLSD())
{
if (sInstance == NULL)
{
@@ -346,4 +357,24 @@ protected:
template <class T, class U> T* LLUISingleton<T,U>::sInstance = NULL;
+class LLClipRect
+{
+public:
+ LLClipRect(const LLRect& rect, BOOL enabled = TRUE);
+ virtual ~LLClipRect();
+protected:
+ LLGLState mScissorState;
+ BOOL mEnabled;
+};
+
+class LLLocalClipRect
+{
+public:
+ LLLocalClipRect(const LLRect& rect, BOOL enabled = TRUE);
+ virtual ~LLLocalClipRect();
+protected:
+ LLGLState mScissorState;
+ BOOL mEnabled;
+};
+
#endif