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