1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef LASTEXPRESS_GRAPHICS_H 24 #define LASTEXPRESS_GRAPHICS_H 25 26 #include "lastexpress/drawable.h" 27 28 namespace LastExpress { 29 30 class GraphicsManager { 31 public: 32 enum BackgroundType { 33 kBackgroundA, 34 kBackgroundC, 35 kBackgroundOverlay, 36 kBackgroundInventory, 37 kBackgroundAll 38 }; 39 40 GraphicsManager(); 41 ~GraphicsManager(); 42 43 // Update the screen 44 void update(); 45 46 // Signal a change to the screen, will cause the planes to be remerged 47 void change(); 48 49 // Clear some screen parts 50 void clear(BackgroundType type); 51 void clear(BackgroundType type, const Common::Rect &rect); 52 53 // FIXME this is there for animation until we change it to use the graphic surface here instead of its private ones. 54 Graphics::Surface _screen; // Actual screen surface 55 56 bool draw(Drawable *drawable, BackgroundType type, bool transition = false); 57 58 private: 59 Graphics::Surface _backgroundA; // Background A 60 Graphics::Surface _backgroundC; // Background C 61 Graphics::Surface _overlay; // Overlay 62 Graphics::Surface _inventory; // Overlay 63 64 void mergePlanes(); 65 void updateScreen(); 66 Graphics::Surface *getSurface(BackgroundType type); 67 68 bool _changed; 69 }; 70 71 } // End of namespace LastExpress 72 73 #endif // LASTEXPRESS_GRAPHICS_H 74