unit UMenuText;
interface
uses TextGL, UTexture, OpenGL12, SysUtils;
type
TText = class
private
SelectBool: boolean;
public
X: real;
Y: real;
// W: real; // if text is wider than W then it is streched (not yet implemented)
// H: real;
Size: real;
Text: string;
ColR: real;
ColG: real;
ColB: real;
Int: real;
Style: integer;
Visible: boolean;
Align: integer; // 0 = left, 1 = center, 2 = right
procedure SetSelect(Value: Boolean);
property Selected: Boolean read SelectBool write SetSelect;
procedure Draw;
constructor Create; overload;
constructor Create(X, Y: real; Tekst: string); overload;
constructor Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); overload;
end;
implementation
uses UGraphic;
procedure TText.SetSelect(Value: Boolean);
begin
SelectBool := Value;
end;
procedure TText.Draw;
var
X2: real;
Text2: string;
begin
if Visible then begin
SetFontStyle(Style);
SetFontSize(Size);
glColor3f(ColR*Int, ColG*Int, ColB*Int);
if not SelectBool then
Text2 := Text
else
Text2 := Text + '|';
case Align of
0: X2 := X;
1: X2 := X - glTextWidth(pchar(Text2))/2;
2: X2 := X - glTextWidth(pchar(Text2));
end;
SetFontPos(X2, Y);
glPrint(PChar(Text2));
SetFontStyle(0); // reset to default
end;
end;
constructor TText.Create;
begin
Create(0, 0, '');
end;
constructor TText.Create(X, Y: real; Tekst: string);
begin
Create(X, Y, 0, 10, 0, 0, 0, 0, Tekst);
end;
constructor TText.Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string);
begin
inherited Create;
X := ParX;
Y := ParY;
Style := ParStyle;
Size := ParSize;
Text := ParTekst;
ColR := ParColR;
ColG := ParColG;
ColB := ParColB;
Int := 1;
Align := ParAlign;
SelectBool := false;
Visible := true;
end;
end.