96 lines
2.0 KiB
C++
96 lines
2.0 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NUIWIDGETTEXT__
|
|
#define __NUIWIDGETTEXT__
|
|
|
|
|
|
#include "ui/widget.h"
|
|
#include "font/font_renderer.h"
|
|
|
|
|
|
namespace GS {
|
|
namespace S2D {
|
|
|
|
/*!
|
|
@short Text widget.
|
|
@author Emmanuel Julien (ejulien@nworks.fr)
|
|
*/
|
|
class TextWidget : public Widget
|
|
{
|
|
protected:
|
|
|
|
TextState state; ///< Widget text state.
|
|
String text; ///< Widget text.
|
|
|
|
public:
|
|
|
|
const char *GetText() const { return text.c_str(); }
|
|
void SetText(const char *);
|
|
|
|
/// Set text block formatting rule.
|
|
void SetTextFormat(TextState::Format f)
|
|
{
|
|
if (state.format != f)
|
|
{
|
|
state.format = f;
|
|
Invalidate();
|
|
}
|
|
}
|
|
/// Get text formatting rule.
|
|
TextState::Format GetTextFormat() const { return state.format; }
|
|
|
|
/// Get text alignment rule.
|
|
TextState::Alignment GetTextAlignment() const { return state.alignment; }
|
|
/// Set text alignment rule.
|
|
void SetTextAlignment(TextState::Alignment align)
|
|
{
|
|
if (state.alignment != align)
|
|
{
|
|
state.alignment = align;
|
|
Invalidate();
|
|
}
|
|
}
|
|
|
|
void SetFont(FontEx *);
|
|
void SetFontSize(int size);
|
|
void SetFontColor(float r, float g, float b, float a = 1.0);
|
|
|
|
/// Set column formatting width in character.
|
|
void SetColumnWidth(int w)
|
|
{
|
|
state.column_width = w;
|
|
Invalidate();
|
|
}
|
|
|
|
/// Set font tracking.
|
|
void SetTextTracking(float tracking_offset = 0)
|
|
{
|
|
state.SetTracking(tracking_offset);
|
|
dirty = true;
|
|
}
|
|
/// Set font heading.
|
|
void SetTextHeading(float heading_offset = 0)
|
|
{
|
|
state.SetLeading(heading_offset);
|
|
dirty = true;
|
|
}
|
|
|
|
void SetTextState(const TextState &);
|
|
void GetTextState(TextState &) const;
|
|
|
|
virtual void Refresh();
|
|
virtual void Compose(Picture &output, const iRect &clip_rect);
|
|
|
|
TextWidget(int id = -1, const char * = "Text", FontEx * = 0, int size = 16);
|
|
};
|
|
|
|
} // S2D
|
|
} // GS
|
|
|
|
|
|
#endif // __NUIWIDGETTEXT__
|