diff options
Diffstat (limited to 'engines/sci/gfx/menubar.h')
-rw-r--r-- | engines/sci/gfx/menubar.h | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/engines/sci/gfx/menubar.h b/engines/sci/gfx/menubar.h deleted file mode 100644 index 6208c16e02..0000000000 --- a/engines/sci/gfx/menubar.h +++ /dev/null @@ -1,232 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -/* Header for SCI0 menu bar management */ - -#include "sci/sci.h" // for INCLUDE_OLDGFX -#ifdef INCLUDE_OLDGFX - -#ifndef SCI_GFX_SCI_MENUBAR_H -#define SCI_GFX_SCI_MENUBAR_H - -#include "sci/engine/vm_types.h" -#include "sci/gfx/operations.h" - -#include "common/array.h" -#include "common/rect.h" - -namespace Sci { - -struct EngineState; - -#define MENU_HBAR_STRING_1 "--!" -#define MENU_HBAR_STRING_2 "-!" -#define MENU_HBAR_STRING_3 "!--" -/* These strings are used in SCI to determine an empty menu line */ - -#define MENU_BORDER_SIZE 0 -/* The number of pixels added to the left and right to the text of a menu on the menu bar */ - -#define MENU_LEFT_BORDER 5 -/* The number of pixels added to the left of the first menu */ - -#define MENU_BOX_CENTER_PADDING 10 -/* Number of pixels to leave in between the left and the right centered text content in boxes that use right centered content */ - -#define MENU_BOX_LEFT_PADDING 0 -/* Number of pixels to pad to the left */ -#define MENU_BOX_RIGHT_PADDING 2 -/* Number of pixels to pad to the right */ - -#define MENU_BAR_HEIGHT 10 - - -/* Special characters used while building the menu bar */ -#define SCI_SPECIAL_CHAR_FUNCTION 'F' -#define SCI_SPECIAL_CHAR_CTRL 3 -#define SCI_SPECIAL_CHAR_ALT 2 - -/* Maximum number of bytes per SAID spec */ -#define MENU_SAID_SPEC_SIZE 64 - -#define MENU_ATTRIBUTE_SAID 0x6d -#define MENU_ATTRIBUTE_TEXT 0x6e -#define MENU_ATTRIBUTE_KEY 0x6f -#define MENU_ATTRIBUTE_ENABLED 0x70 -#define MENU_ATTRIBUTE_TAG 0x71 - -/* Those flags determine whether the corresponding MenuItem entries are valid */ -#define MENU_ATTRIBUTE_FLAGS_KEY 0x01 -#define MENU_ATTRIBUTE_FLAGS_SAID 0x02 - - -enum MenuType { - MENU_TYPE_NORMAL = 0, - MENU_TYPE_HBAR = 1 /* Horizontal bar */ -}; - -class MenuItem : public Common::Serializable { -public: - MenuType _type; /**< Normal or hbar */ - Common::String _keytext; /**< right-centered part of the text (the key) */ - - int _flags; - byte _said[MENU_SAID_SPEC_SIZE]; /**< Said spec for this item */ - reg_t _saidPos; - Common::String _text; - reg_t _textPos; - int _modifiers; /**< Hotkey for this item */ - int _key; /**< Hotkey for this item */ - int _enabled; - int _tag; - -public: - MenuItem(); - - virtual void saveLoadWithSerializer(Common::Serializer &ser); - - /** - * Determines whether a message/modifiers key pair matches a menu item's key parameters. - * - * @param[in] message The message to match - * @param[in] modifiers The modifier flags to match - * @return true on match, false otherwise - */ - bool matchKey(int message, int modifiers); -}; - - -class Menu : public Common::Serializable { -public: - Common::String _title; - - /** Width of the title in pixels */ - int16 _titleWidth; - - /** Pixel width of the menu window */ - int16 _width; - - /** - * Actual entries into the menu. - * Window height equals to number of items times 10. - */ - Common::Array<MenuItem> _items; - -public: - Menu(); - - virtual void saveLoadWithSerializer(Common::Serializer &ser); - -//protected: - // FIXME: This should be (partially) turned into a MenuItem constructor - int addMenuItem(GfxState *state, MenuType type, const char *left, const char *right, - int font, int key, int modifiers, int tag, reg_t text_pos); -}; - - - - -class Menubar : public Common::Serializable { -public: - /** The actual menus. */ - Common::Array<Menu> _menus; - -public: - virtual void saveLoadWithSerializer(Common::Serializer &ser); - - /** - * Adds a menu to the menubar. - * - * The menu entries use the following special characters: - * '`' : Right justify the following part - * ':' : End of this entry - * '#' : Function key (replaced by 'F') - * '^' : Control key (replaced by \002, which looks like "CTRL") - * '=' : Initial tag value - * and the special string "--!", which represents a horizontal bar in the - * menu. - * - * @param[in] state The state the fonts are stored in - * @param[in] title The menu title - * @param[in] entries A string of menu entries - * @param[in] font The font which is to be used for drawing - * @param[in] entries_base Segmented VM address of the entries string - */ - void addMenu(GfxState *state, const Common::String &title, const Common::String &entries, int font, reg_t entries_base); - - /** - * Sets the attributes for a menu item. - * - * @param[in] s The current state - * @param[in] menu The menu number to edit - * @param[in] item The menu item to change - * @param[in] attribute The attribute to modify - * @param[in] value The value the attribute should be set to - * @return 0 on success, 1 if either menu or item were invalid - */ - int setAttribute(EngineState *s, int menu, int item, int attribute, reg_t value); - - - /** - * Gets an attribute for a menuitem. - * - * @param[in] menu The menu number - * @param[in] item The menu item to read - * @param[in] attribute The attribute to read from - * @return The attribute value, or -1 on error - */ - reg_t getAttribute(int menu, int item, int attribute) const; - - - /** - * Determines whether the specified menu entry may be activated. - * - * @return true if the menu item may be selected, false otherwise - */ - bool itemValid(int menu, int item) const; - - - /** - * Maps the pointer position to a (menu,item) tuple. - * - * @param[in] pointerPos the current pointer position - * @param[in] menu_nr the current menu (updated by this function if - * necessary) - * @param[in] item_nr the current menu item (updated by this function - * if necessary) - * @param[in] portBounds the port bounds of the currently active menu (if any) - * @return true if the pointer is outside a valid port, - * false otherwise. - */ - bool mapPointer(const Common::Point &pointerPos, int &menu_nr, int &item_nr, Common::Rect portBounds) const; - -}; - -} // End of namespace Sci - -#endif // SCI_GFX_SCI_MENUBAR_H - -#endif - |