view mde/gui/renderer/SimpleRenderer.d @ 39:5132301e9ed7

Implemented widget saving. Widget creation data saving (sub-widgets, etc:) code there but not used. Widget mutable data saving & loading: window size/position, row/column dimensions saved (still needs a fix in GridWidget.setSize()). committer: Diggory Hardy <diggory.hardy@gmail.com>
author Diggory Hardy <diggory.hardy@gmail.com>
date Wed, 07 May 2008 13:07:03 +0100
parents 8c4c96f04e7f
children b3a6ca4516b4
line wrap: on
line source

/* LICENSE BLOCK
Part of mde: a Modular D game-oriented Engine
Copyright © 2007-2008 Diggory Hardy

This program is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation, either
version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>. */

/** A simple renderer. */
module mde.gui.renderer.SimpleRenderer;

import mde.gui.renderer.IRenderer;

import gl = mde.gl.basic;

/** Interface for renderers.
*
* Renderers provide unified drawing methods for widget, e.g. to draw a window background, a frame,
* or a button. The renderer will effectively be synonymous with the theme, except that a scripted
* renderer may also be available.
*
* The renderer is intended to be per-GUI. */
class SimpleRenderer : IRenderer
{
    BorderDimensions getBorder (BORDER_TYPES type) {
        BorderDimensions dims;
        with (BORDER_TYPES) with (dims) {
            if (type == WINDOW_TOTAL) {
                l = t = r = b = 20;
            } else if (type == WINDOW_RESIZE) {
                r = t = 5;
                l = b = 20;
            }
        }
        return dims;
    }
    
    int layoutSpacing () {
        return 4;
    }
    
    
    void drawWindow (int x, int y, int w, int h) {
        gl.setColor (0f, 0f, .7f);
        gl.drawBox (x,y, w,h);
        
        gl.setColor (0f, 0f, 1f);
        gl.drawBox (x+20,y+5, w-25,h-25);
        
        gl.setColor (.3f, .3f, .3f);
        gl.drawBox (x+20, y+20, w-40, h-40);
    }

    void drawWidgetBack (int x, int y, int w, int h) {}
    
    void drawButton (int x, int y, int w, int h, bool pushed) {
        if (pushed)
            gl.setColor (1f, 0f, 1f);
        else
            gl.setColor (.6f, 0f, .6f);
        gl.drawBox (x,y, w,h);
    }
}