diff mde/gui/types.d @ 80:ea58f277f487

Gui reorganization and changes; partial implementation of floating widgets. Moved contents of mde/gui/WidgetData.d elsewhere; new gui/WidgetDataSet.d and gui/types.d modules. Changes to widget/createWidget.d Partially implemented FloatingAreaWidget to provide an area for floating "window" widgets. New DebugWidget and some uses of it (e.g. bad widget data). Decoupled OptionChanges from Options.
author Diggory Hardy <diggory.hardy@gmail.com>
date Thu, 07 Aug 2008 11:25:27 +0100
parents
children 08a4ae11454b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mde/gui/types.d	Thu Aug 07 11:25:27 2008 +0100
@@ -0,0 +1,64 @@
+/* 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.
+*
+* Type is int since this is the widget data type. */
+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
+}
+
+
+/*************************************************************************************************
+* 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
+    
+    /** For creating a DebugWidget. */
+    static WidgetData dbg = { ints : [0xF] };   // 0xf is current code for debug widget
+}