From 9907742a0f73bdbbf578cd2b6c424b80d254fed1 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 9 Feb 2009 01:06:23 +0000 Subject: (svn r15423) -Codechange: split widget related types to their own header and add a bit of type strictness. --- src/window_gui.h | 121 +------------------------------------------------------ 1 file changed, 1 insertion(+), 120 deletions(-) (limited to 'src/window_gui.h') diff --git a/src/window_gui.h b/src/window_gui.h index 85e4bce3b..abf10c237 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -5,85 +5,14 @@ #ifndef WINDOW_GUI_H #define WINDOW_GUI_H -#include "core/bitmath_func.hpp" #include "core/geometry_type.hpp" #include "vehicle_type.h" #include "viewport_type.h" #include "company_type.h" -#include "strings_type.h" #include "core/alloc_type.hpp" #include "window_type.h" #include "tile_type.h" - -/* How the resize system works: - First, you need to add a WWT_RESIZEBOX to the widgets, and you need - to add the flag WDF_RESIZABLE to the window. Now the window is ready - to resize itself. - As you may have noticed, all widgets have a RESIZE_XXX in their line. - This lines controls how the widgets behave on resize. RESIZE_NONE means - it doesn't do anything. Any other option let's one of the borders - move with the changed width/height. So if a widget has - RESIZE_RIGHT, and the window is made 5 pixels wider by the user, - the right of the window will also be made 5 pixels wider. - Now, what if you want to clamp a widget to the bottom? Give it the flag - RESIZE_TB. This is RESIZE_TOP + RESIZE_BOTTOM. Now if the window gets - 5 pixels bigger, both the top and bottom gets 5 bigger, so the whole - widgets moves downwards without resizing, and appears to be clamped - to the bottom. Nice aint it? - You should know one more thing about this system. Most windows can't - handle an increase of 1 pixel. So there is a step function, which - let the windowsize only be changed by X pixels. You configure this - after making the window, like this: - w->resize.step_height = 10; - Now the window will only change in height in steps of 10. - You can also give a minimum width and height. The default value is - the default height/width of the window itself. You can change this - AFTER window - creation, with: - w->resize.width or w->resize.height. - That was all.. good luck, and enjoy :) -- TrueLight */ - -enum ResizeFlag { - RESIZE_NONE = 0, ///< no resize required - - RESIZE_LEFT = 1, ///< left resize flag - RESIZE_RIGHT = 2, ///< rigth resize flag - RESIZE_TOP = 4, ///< top resize flag - RESIZE_BOTTOM = 8, ///< bottom resize flag - - RESIZE_LR = RESIZE_LEFT | RESIZE_RIGHT, ///< combination of left and right resize flags - RESIZE_RB = RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of right and bottom resize flags - RESIZE_TB = RESIZE_TOP | RESIZE_BOTTOM, ///< combination of top and bottom resize flags - RESIZE_LRB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of left, right and bottom resize flags - RESIZE_LRTB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of all resize flags - RESIZE_RTB = RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of right, top and bottom resize flag - - /* The following flags are used by the system to specify what is disabled, hidden, or clicked - * They are used in the same place as the above RESIZE_x flags, Widget visual_flags. - * These states are used in exceptions. If nothing is specified, they will indicate - * Enabled, visible or unclicked widgets*/ - WIDG_DISABLED = 4, ///< widget is greyed out, not available - WIDG_HIDDEN = 5, ///< widget is made invisible - WIDG_LOWERED = 6, ///< widget is paint lowered, a pressed button in fact -}; - -enum { - WIDGET_LIST_END = -1, ///< indicate the end of widgets' list for vararg functions -}; - -/** - * Window widget data structure - */ -struct Widget { - byte type; ///< Widget type, see WindowWidgetTypes - byte display_flags; ///< Resize direction, alignment, etc. during resizing. @see ResizeFlags - byte color; ///< Widget colour, see docs/ottd-colourtext-palette.png - int16 left; ///< The left edge of the widget - int16 right; ///< The right edge of the widget - int16 top; ///< The top edge of the widget - int16 bottom; ///< The bottom edge of the widget - uint16 data; ///< The String/Image or special code (list-matrixes) of a widget - StringID tooltips; ///< Tooltips that are shown when rightclicking on a widget -}; +#include "widget_type.h" /** * Flags to describe the look of the frame @@ -445,54 +374,6 @@ public: virtual ~PickerWindowBase(); }; -/****************** THESE ARE NOT WIDGET TYPES!!!!! *******************/ -enum WindowWidgetBehaviours { - WWB_PUSHBUTTON = 1 << 5, - - WWB_MASK = 0xE0, -}; - - -/** - * Window widget types - */ -enum WindowWidgetTypes { - WWT_EMPTY, ///< Empty widget, place holder to reserve space in widget array - - WWT_PANEL, ///< Simple depressed panel - WWT_INSET, ///< Pressed (inset) panel, most commonly used as combo box _text_ area - WWT_IMGBTN, ///< Button with image - WWT_IMGBTN_2, ///< Button with diff image when clicked - - WWT_TEXTBTN, ///< Button with text - WWT_TEXTBTN_2, ///< Button with diff text when clicked - WWT_LABEL, ///< Centered label - WWT_TEXT, ///< Pure simple text - WWT_MATRIX, ///< List of items underneath each other - WWT_SCROLLBAR, ///< Vertical scrollbar - WWT_FRAME, ///< Frame - WWT_CAPTION, ///< Window caption (window title between closebox and stickybox) - - WWT_HSCROLLBAR, ///< Horizontal scrollbar - WWT_STICKYBOX, ///< Sticky box (normally at top-right of a window) - WWT_SCROLL2BAR, ///< 2nd vertical scrollbar - WWT_RESIZEBOX, ///< Resize box (normally at bottom-right of a window) - WWT_CLOSEBOX, ///< Close box (at top-left of a window) - WWT_DROPDOWN, ///< Raised drop down list (regular) - WWT_DROPDOWNIN, ///< Inset drop down list (used on game options only) - WWT_EDITBOX, ///< a textbox for typing - WWT_LAST, ///< Last Item. use WIDGETS_END to fill up padding!! - - WWT_MASK = 0x1F, - - WWT_PUSHBTN = WWT_PANEL | WWB_PUSHBUTTON, - WWT_PUSHTXTBTN = WWT_TEXTBTN | WWB_PUSHBUTTON, - WWT_PUSHIMGBTN = WWT_IMGBTN | WWB_PUSHBUTTON, -}; - -/** Marker for the "end of widgets" in a Window(Desc) widget table. */ -#define WIDGETS_END WWT_LAST, RESIZE_NONE, 0, 0, 0, 0, 0, 0, STR_NULL - /** * Window flags */ -- cgit v1.2.3-54-g00ecf