view mde/gui/types.d @ 166:55667d048c31

Made content displayable while being dragged.
author Diggory Hardy <diggory.hardy@gmail.com>
date Sun, 21 Jun 2009 12:19:18 +0200
parents 42e241e7be3e
children
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/>. */

/*************************************************************************************************
 * Basic data types used by widgets.
 *************************************************************************************************/
module mde.gui.types;


/** Widget ID type. Each ID is unique under this window. */
alias char[] widgetID;

/** Window coordinate and dimension/size type (int).
*
* Used to disambiguate between general integers and coordinates; all widget positions/sizes should
* use this type (or one of the aliases below).
* 
* Aliases of wdim providing extra information about what their contents hold: absolute position,
* position relative to the containing widget (wdrel should not be used if relative to anything
* else), or size. Their use instead of wdim is optional (and in some cases wdim values aren't of
* any of these types). Also don't use these aliases for variables which may also be used to other
* effects, e.g. if they can have special values with special meanings. */
typedef int     wdim;
alias   wdim    wdabs;  /// ditto
alias   wdim    wdrel;  /// ditto
alias   wdim    wdsize; /// ditto

/** A pair of wdim variables, and strictly no other data (methods may be added if deemed useful).
*
* Potentially usable to return two wdim variables, e.g. width and height, from a function.
* However, the current usage of out variables looks like it's better. */
struct wdimPair {
    wdim x, y;  /// data
}

/// Used to save column sizes, etc.
alias wdim[] wdims;


/*************************************************************************************************
* The data type all widgets creatable by the widget manager receive on creation.
* 
* Conversion code to/from MT tags is contained in the addTag and writeAll methods of
* WidgetDataSet and WidgetDataChanges.
*************************************************************************************************/
struct WidgetData
{
    int[]    ints;      /// Integer data
    char[][] strings;   /// char[] data
    
    static WidgetData opCall (int[] i = [], char[][] s = []) {
	WidgetData ret;
	ret.ints = i;
	ret.strings = s;
	return ret;
    }
    
    /** For creating a DebugWidget. */
    static WidgetData dbg = { ints : [0xF] };   // 0xf is current code for debug widget
}