Changeset 44:07bd1a09e161

Show
Ignore:
Timestamp:
05/16/08 07:22:10 (8 months ago)
Author:
Diggory Hardy <diggory.hardy@gmail.com>
branch:
default
convert_revision:
8ef6ecc0b87abdf60a028e3bbd7e7c6f18d3dcf1
Message:

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>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • codeDoc/jobs.txt

    r43 r44  
    44 
    55In progress: 
     6Implementing font rendering 
    67 
    78 
  • data/conf/gui.mtt

    r43 r44  
    88<int|x=150> 
    99<int|y=200> 
    10 <int[][int]|widgetData=[0:[0xB004,5,5,2,1,2,1,2,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,2,1,2,1,2],1:[0x3001],2:[0x4010,75,75]]> 
     10<int[][int]|widgetData=[0:[0xB004,5,5,2,1,2,1,2,1,1,1,1,1,2,1,2,1,2,1,1,1,1,1,2,1,2,1,2],1:[0x3001],2:[0x2]]> 
  • doc/Readme.txt

    r26 r44  
    2222Walter Bright and Digital Mars for D and DMD. 
    2323The tango team for Tango. 
     24[derelict] 
     25[sdl] 
     26[opengl] 
     27[freetype] 
    2428 
    2529 
  • mde/gl/basic.d

    r34 r44  
    2626void glSetup () { 
    2727    glClearColor (0.0f, 0.0f, 0.0f, 0.0f); 
     28    glDisable(GL_DEPTH_TEST); 
     29     
     30    glMatrixMode(GL_MODELVIEW); 
     31    glLoadIdentity(); 
    2832} 
    2933 
     
    3943     
    4044    glMatrixMode(GL_MODELVIEW); 
    41     glLoadIdentity(); 
    4245} 
    4346//END GL & window setup 
  • mde/gui/widget/Widget.d

    r43 r44  
    2020import mde.gui.exception; 
    2121import mde.gui.renderer.IRenderer; 
     22 
     23import mde.resource.font; 
    2224 
    2325import tango.io.Stdout; 
     
    4345    } 
    4446     
     47    bool isWSizable () {    return false;   } 
     48    bool isHSizable () {    return false;   } 
     49     
    4550    // Widget type should always be the first value. 
    4651    int[] getCreationData () { 
     
    8590class FixedWidget : Widget { 
    8691    this (IWindow wind, int[] data) { 
    87         super (wind, data)
    88         w = wF = data[1]
    89         h = hF = data[2]
     92        w = wF
     93        h = hF
     94        super (wind, data)
    9095    } 
    9196     
     
    9398        return [widgetType, wF, hF]; 
    9499    } 
    95      
    96     bool isWSizable () {    return false;   } 
    97     bool isHSizable () {    return false;   } 
    98100     
    99101    /* Not resizable, so return current size. */ 
     
    143145    this (IWindow wind, int[] data) { 
    144146        if (data.length != 3) throw new WidgetDataException; 
     147        wF = data[1]; 
     148        hF = data[2]; 
    145149        super (wind, data); 
    146150    } 
     
    170174    this (IWindow wind, int[] data) { 
    171175        if (data.length != 3) throw new WidgetDataException; 
     176        wF = data[1]; 
     177        hF = data[2]; 
    172178        super (wind, data); 
    173179    } 
     
    207213    } 
    208214} 
     215 
     216/// Basic text widget 
     217class TextWidget : FixedWidget 
     218{ 
     219    this (IWindow wind, int[] data) { 
     220        if (data.length != 1) throw new WidgetDataException; 
     221        wF = 100;   //FIXME: set properly 
     222        hF = 25; 
     223        super (wind,data); 
     224    } 
     225     
     226    void draw () { 
     227        super.draw(); 
     228        if (font is null) font = Font.get("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"); 
     229        font.drawStr (x,y, "Text Widget"); 
     230    } 
     231     
     232protected: 
     233    static Font font; 
     234} 
    209235//END Widgets 
  • mde/gui/widget/createWidget.d

    r39 r44  
    6161    SizableBlank            = WSIZABLE | HSIZABLE | 0x1, 
    6262     
     63    // text: 0x2 
     64    Text            = 0x2, 
     65     
    6366    // buttons: 0x10 
    6467    Button                  = INTERACTIBLE | 0x10, 
     
    7275const char[][] WIDGETS = [ 
    7376        "FixedBlank", 
     77        "Text", 
    7478        "SizableBlank", 
    7579        "Button", 
     
    7781 
    7882// Purely to add indentation. Could just return "" without affecting functionality. 
    79 /+static char[] indent (uint i) { 
     83static char[] indent (uint i) { 
    8084    char[] ret; 
    8185    for (; i > 0; --i) ret ~= "  "; 
     
    8488        //ret[] = ' ';      // character to indent with 
    8589    return ret; 
    86 }+/ 
    87 char[] indent (uint) {  return "";  } 
     90} 
     91//char[] indent (uint) {  return "";  } 
    8892 
    8993/* Generates a binary search algorithm. */ 
  • mde/resource/paths.d

    r28 r44  
    151151* 
    152152* Note: the logger cannot be used yet, so only output is exception messages. */ 
    153  
     153// FIXME: use tango/sys/Environment.d 
    154154version (linux) { 
    155155    void resolvePaths () { 
  • mde/scheduler/init2.d

    r39 r44  
    3636import mde.gui.Gui; 
    3737import mde.input.Input; 
    38 import ft = mde.ft.init; 
     38import font = mde.resource.font; 
    3939 
    4040// NOTE: error reporting needs a revision 
     
    8787void initFreeType () {  // init func 
    8888    try { 
    89         ft.initFreeType; 
     89        font.Font.initialize; 
    9090    } catch (Exception e) { 
    9191        logger.fatal ("initFreeType failed: " ~ e.msg);