Mercurial > projects > mde
view mde/gui/renderer/IRenderer.d @ 58:d43523ed4b62
Included a wdim typedef for all variables to do with window position or size instead of just using int.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 14 Jun 2008 17:15:06 +0100 |
parents | 1530d9c04d4d |
children | 25cb7420dc91 |
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/>. */ /** Interface for the renderer. This is planned to replace decoration.d */ module mde.gui.renderer.IRenderer; public import mde.gui.IGui; // wdim type is used by just about everything including this /** 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. */ interface IRenderer { //BEGIN Get dimensions /// A container for the dimensions struct BorderDimensions { /// The dimensions: left, top, right, bottom wdim l, t, r, b; void opAddAssign (BorderDimensions d) { l += d.l; t += d.t; r += d.r; b += d.b; } } /** Use to set and reset these parameters, and to get the border size (which may depend on * them). */ BorderDimensions setSizable (bool wSizable, bool hSizable); /// Which edges of a window are being resized enum RESIZE_TYPE : ubyte { NONE = 0x0, L = 0x1, R = 0x2, T = 0x4, B = 0x8 } /** Used to tell if a click on a window's border is for resizing or moving. * * Depends on setSizable's parameters. * * Params: * cx = * cy = click coordinates relative to window border * w = * h = window size * * Returns: * RESIZE_TYPE = NONE for a move, an or'd combination of L/R/T/B for resizing. */ RESIZE_TYPE getResizeType (wdim cx, wdim cy, wdim w, wdim h); /** Return the renderer's between-widget spacing (for layout widgets). */ wdim layoutSpacing (); //END Get dimensions //BEGIN draw routines /** Draw a window border plus background. */ void drawWindow (wdim x, wdim y, wdim w, wdim h); /** Draws a widget background. Usually doesn't do anything since backgrounds are transparent. */ void drawWidgetBack (wdim x, wdim y, wdim w, wdim h); /** Draws a blank widget (temporary) */ void drawBlank (wdim x, wdim y, wdim w, wdim h); /** Draws a button frame, in if pushed == true. */ void drawButton (wdim x, wdim y, wdim w, wdim h, bool pushed); //END draw routines }