diff options
Diffstat (limited to 'engines/m4/viewmgr.h')
-rw-r--r-- | engines/m4/viewmgr.h | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/engines/m4/viewmgr.h b/engines/m4/viewmgr.h deleted file mode 100644 index bb4f76cfaa..0000000000 --- a/engines/m4/viewmgr.h +++ /dev/null @@ -1,204 +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. - * - */ - -#ifndef M4_VIEWMGR_H -#define M4_VIEWMGR_H - -#include "common/algorithm.h" -#include "common/array.h" -#include "common/list.h" -#include "common/events.h" -#include "common/rect.h" - -#include "m4/font.h" -#include "m4/globals.h" -#include "m4/events.h" -#include "m4/graphics.h" - -namespace M4 { - -class View; -class ViewManager; - -enum SceneTransition { - kTransitionNone = 0, - kTransitionFadeIn = 1, - kTransitionFadeIn2 = 2, - kTransitionBoxInBottomLeft = 3, - kTransitionBoxInBottomRight = 4, - kTransitionBoxInTopLeft = 5, - kTransitionBoxInTopRight = 6, - kTransitionPanLeftToRight = 7, - kTransitionPanRightToLeft = 8, - kTransitionCircleIn = 9 -}; - -enum {SCREEN_DIALOG, SCREEN_BUFFER, SCREEN_TEXT, SCREEN_TRANSPARENT}; -enum ScreenEventType {SCREVENT_NONE = 0, SCREVENT_KEY = 1, SCREVENT_MOUSE = 2, SCREVENT_ALL = 3}; -enum ScreenLayers { - LAYER_BACKGROUND = 0, LAYER_DRIFTER = 1, LAYER_INTERFACE = 1, LAYER_FLOATER = 2, - LAYER_SURFACE = 3, LAYER_MENU = 9, LAYER_DIALOG = 10, LAYER_MOUSE = 15 -}; - -enum ViewIds { - VIEWID_MAINMENU = 1, - VIEWID_SCENE = 2, - VIEWID_TEXTVIEW = 3, - VIEWID_ANIMVIEW = 4, - VIEWID_MENU = 69, - VIEWID_CONVERSATION = 48, - VIEWID_INTERFACE = 49 -}; - -struct ScreenFlags { - bool visible:1; - bool transparent:1; - bool immovable:1; - - enum ScreenEventType blocks:2; - enum ScreenEventType get:2; - - uint layer:4; -}; - -#define SCREEN_FLAGS_DEFAULT _screenFlags.layer = LAYER_DRIFTER; \ - _screenFlags.get = SCREVENT_ALL; _screenFlags.blocks = SCREVENT_NONE; \ - _screenFlags.visible = true; -#define SCREEN_FLAGS_ALERT _screenFlags.layer = LAYER_FLOATER \ - _screenFlags.get = SCREVENT_ALL; _screenFlags.blocks = SCREVENT_ALL; \ - _screenFlags.visible = true; - -class RectList : public Common::Array<Common::Rect> { -public: - RectList(); - ~RectList(); - void addRect(int x1, int y1, int x2, int y2); - void addRect(const Common::Rect &rect); - -// Common::Rect& operator [](int idx) { return _rects[idx]; } - int find(const Common::Point &pt); -}; - -struct Hotkey { -public: - typedef void (*Callback)(MadsM4Engine *vm, View *view, uint32 key); - Hotkey(uint32 keyVal, Hotkey::Callback callbackFn) : key(keyVal), callback(callbackFn) {} - uint32 key; - Hotkey::Callback callback; -}; - -class HotkeyList { -public: - HotkeyList(View *owner); - ~HotkeyList(); - void add(uint32 key, Hotkey::Callback callback); - void remove(uint32 key); - bool call(uint32 key); -private: - Common::Array<Hotkey*> _hotkeys; - View *_view; -}; - -class View : public M4Surface { -public: - View(MadsM4Engine *vm, const Common::Rect &viewBounds, bool transparent = false); - View(MadsM4Engine *vm, int x = 0, int y = 0, bool transparent = false); - virtual ~View() {} - - void getCoordinates(Common::Rect &rect); - void extract(int *status); - virtual void show(); - virtual void hide(); - void moveToFront() {} - void moveToBack(); - void moveAbsolute(int x, int y); - void moveRelative(int x, int y); - void resize(int newWidth, int newHeight); - void restore(int x1, int y1, int x2, int y2); - - Common::Rect bounds() const { return _coords; } - bool isInside(int x, int y) const { return _coords.contains(x, y); } - ScreenFlags screenFlags() const { return _screenFlags; } - int screenType() const { return _screenType; } - bool isOffscreen() const { return !_screenFlags.visible; } - bool isTransparent() const { return _screenFlags.transparent; } - bool isVisible() const { return _screenFlags.visible; } - uint layer() const { return _screenFlags.layer; } - HotkeyList &hotkeys() { return _hotkeys; } - - virtual void onRefresh(RectList *rects, M4Surface *destSurface); - virtual bool onEvent(M4EventType eventType, int32 param, int x, int y, bool &captureEvents) { return false; } - virtual void updateState() {} - -protected: - MadsM4Engine *_vm; - Common::Rect _coords; - HotkeyList _hotkeys; - int _screenType; - ScreenFlags _screenFlags; - bool _transparent; -}; - -class ViewManager { -private: - MadsM4Engine *_vm; - HotkeyList _systemHotkeys; - Common::List<View *> _views; - View *_captureScreen; - bool _captureEvents; -public: - typedef Common::List<View *>::iterator ListIterator; - - ViewManager(MadsM4Engine *vm); - ~ViewManager(); - - void addView(View *view); - void deleteView(View *view); - - void handleEvents(const Common::Event &event); - void handleKeyboardEvents(uint32 keycode); - void handleMouseEvents(M4EventType event); - void restore(int x1, int y1, int x2, int y2); - void restore(const Common::Rect &rect); - - void moveToFront(View *view); - void moveToBack(View *view); - - Common::List<View *> views() const { return _views; } - bool contains(View *key) const { - return Common::find(_views.begin(), _views.end(), key) != _views.end(); - } - bool contains(int screenType) { return getView(screenType) != NULL; } - View *getView(int screenType); - int containsViews() { return !_views.empty(); } - - void showTextView(const char *textViewName, bool returnToMainMenu = true); - void showAnimView(const char *animViewName, bool returnToMainMenu = true); - - void updateState(); - void refreshAll(); - HotkeyList &systemHotkeys() { return _systemHotkeys; } -}; - -} - -#endif |