Files
Webcam/include/engine/ui/widget_text.h
2026-06-22 11:49:35 +02:00

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__