Mercurial > projects > mde
diff mde/gui/widget/Widget.d @ 44:07bd1a09e161
Started implementing text rendering.
Can now position glyphs accurately and render them, in a very basic way.
A basic TextWidget.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Fri, 16 May 2008 12:22:10 +0100 |
parents | 1530d9c04d4d |
children | 0fd51d2c6c8a |
line wrap: on
line diff
--- a/mde/gui/widget/Widget.d Thu May 15 10:39:57 2008 +0100 +++ b/mde/gui/widget/Widget.d Fri May 16 12:22:10 2008 +0100 @@ -20,6 +20,8 @@ import mde.gui.exception; import mde.gui.renderer.IRenderer; +import mde.resource.font; + import tango.io.Stdout; /** An abstract base widget class. @@ -42,6 +44,9 @@ return data; } + bool isWSizable () { return false; } + bool isHSizable () { return false; } + // Widget type should always be the first value. int[] getCreationData () { return [widgetType]; @@ -84,18 +89,15 @@ /** A base for fixed-size widgets. */ class FixedWidget : Widget { this (IWindow wind, int[] data) { + w = wF; + h = hF; super (wind, data); - w = wF = data[1]; - h = hF = data[2]; } int[] getCreationData () { return [widgetType, wF, hF]; } - bool isWSizable () { return false; } - bool isHSizable () { return false; } - /* Not resizable, so return current size. */ void getMinimalSize (out int mw, out int mh) { mw = wF; @@ -142,6 +144,8 @@ { this (IWindow wind, int[] data) { if (data.length != 3) throw new WidgetDataException; + wF = data[1]; + hF = data[2]; super (wind, data); } void draw () { @@ -169,6 +173,8 @@ this (IWindow wind, int[] data) { if (data.length != 3) throw new WidgetDataException; + wF = data[1]; + hF = data[2]; super (wind, data); } @@ -206,4 +212,24 @@ window.requestRedraw; } } + +/// Basic text widget +class TextWidget : FixedWidget +{ + this (IWindow wind, int[] data) { + if (data.length != 1) throw new WidgetDataException; + wF = 100; //FIXME: set properly + hF = 25; + super (wind,data); + } + + void draw () { + super.draw(); + if (font is null) font = Font.get("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"); + font.drawStr (x,y, "Text Widget"); + } + +protected: + static Font font; +} //END Widgets