88 lines
1.5 KiB
C++
88 lines
1.5 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NWINDOW__
|
|
#define __NWINDOW__
|
|
|
|
|
|
#include "ui/widget.h"
|
|
#include "ui/ui_sprite.h"
|
|
#include "ui/ui_window_skin.h"
|
|
|
|
|
|
namespace GS {
|
|
struct RenderResourceFactory;
|
|
|
|
namespace S2D {
|
|
|
|
/*!
|
|
@short Window class.
|
|
@author Emmanuel Julien (ejulien@nworks.fr)
|
|
*/
|
|
class Window : public Sprite
|
|
{
|
|
public:
|
|
|
|
enum
|
|
{
|
|
FlagNoDecoration = (1 << 0),
|
|
FlagNoTitleBar = (1 << 1),
|
|
|
|
// Non-serializable
|
|
FlagCacheDirty = (1 << 2),
|
|
FlagRenderDirty = (1 << 3)
|
|
};
|
|
|
|
protected:
|
|
|
|
sWindowSkin skin;
|
|
sPicture cache;
|
|
|
|
sWidget title_widget;
|
|
sWidget base_widget;
|
|
|
|
BitField window_flags;
|
|
|
|
public:
|
|
|
|
Picture *GetCache() const { return cache; }
|
|
|
|
void Invalidate();
|
|
|
|
void SetSkin(WindowSkin *);
|
|
void ComposeSkin();
|
|
void Compose();
|
|
|
|
void SetSize(float w, float h);
|
|
|
|
sPicture background_picture;
|
|
Color background_color;
|
|
|
|
Widget *GetWidget(uint id);
|
|
|
|
Widget *GetTitleWidget() const;
|
|
void SetTitleWidget(Widget *);
|
|
Widget *GetBaseWidget() const;
|
|
void SetBaseWidget(Widget *);
|
|
|
|
iRect GetRect() const;
|
|
iRect GetClientRect() const;
|
|
|
|
virtual void RenderSetup(Core::ResourceFactories * = 0);
|
|
virtual void Render(Renderer &, GPU::TriangleBatch * = 0);
|
|
|
|
virtual bool FromMetaTag(NML::Tag &);
|
|
virtual NML::Tag *AsMetaTag() const;
|
|
|
|
Window();
|
|
};
|
|
|
|
} // S2D
|
|
} // GS
|
|
|
|
|
|
#endif // __NWINDOW__
|