2012-03-10 18:50:27 +00:00
|
|
|
/* 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.
|
|
|
|
*
|
2021-12-26 17:47:58 +00:00
|
|
|
* 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 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
2014-02-18 01:34:22 +00:00
|
|
|
*
|
2012-03-10 18:50:27 +00:00
|
|
|
* 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.
|
2014-02-18 01:34:22 +00:00
|
|
|
*
|
2012-03-10 18:50:27 +00:00
|
|
|
* You should have received a copy of the GNU General Public License
|
2021-12-26 17:47:58 +00:00
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2012-03-10 18:50:27 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef MOHAWK_MYST_GRAPHICS_H
|
|
|
|
#define MOHAWK_MYST_GRAPHICS_H
|
|
|
|
|
|
|
|
#include "mohawk/graphics.h"
|
|
|
|
|
|
|
|
#include "common/file.h"
|
2018-04-29 17:22:50 +00:00
|
|
|
#include "graphics/font.h"
|
2012-03-10 18:50:27 +00:00
|
|
|
|
|
|
|
namespace Mohawk {
|
|
|
|
|
|
|
|
class MystBitmap;
|
|
|
|
class MohawkEngine_Myst;
|
|
|
|
|
|
|
|
enum RectState {
|
|
|
|
kRectEnabled,
|
|
|
|
kRectDisabled,
|
|
|
|
kRectUnreachable
|
|
|
|
};
|
|
|
|
|
|
|
|
class MystGraphics : public GraphicsManager {
|
|
|
|
public:
|
2018-03-31 10:52:08 +00:00
|
|
|
explicit MystGraphics(MohawkEngine_Myst *vm);
|
|
|
|
~MystGraphics() override;
|
2012-03-10 18:50:27 +00:00
|
|
|
|
|
|
|
void copyImageSectionToScreen(uint16 image, Common::Rect src, Common::Rect dest);
|
|
|
|
void copyImageSectionToBackBuffer(uint16 image, Common::Rect src, Common::Rect dest);
|
|
|
|
void copyImageToScreen(uint16 image, Common::Rect dest);
|
|
|
|
void copyImageToBackBuffer(uint16 image, Common::Rect dest);
|
|
|
|
void copyBackBufferToScreen(Common::Rect r);
|
2012-12-15 10:49:41 +00:00
|
|
|
void runTransition(TransitionType type, Common::Rect rect, uint16 steps, uint16 delay);
|
2012-03-10 18:50:27 +00:00
|
|
|
void drawRect(Common::Rect rect, RectState state);
|
|
|
|
void drawLine(const Common::Point &p1, const Common::Point &p2, uint32 color);
|
|
|
|
void fadeToBlack();
|
|
|
|
void fadeFromBlack();
|
2018-07-02 19:04:19 +00:00
|
|
|
void clearScreen();
|
2012-03-10 18:50:27 +00:00
|
|
|
|
2013-08-23 00:37:16 +00:00
|
|
|
void clearScreenPalette();
|
|
|
|
void setPaletteToScreen();
|
|
|
|
const byte *getPalette() const { return _palette; }
|
|
|
|
|
2018-04-29 17:22:50 +00:00
|
|
|
void saveStateForMainMenu();
|
|
|
|
void restoreStateForMainMenu();
|
|
|
|
Graphics::Surface *getThumbnailForMainMenu() const;
|
|
|
|
|
2020-03-27 18:45:25 +00:00
|
|
|
void loadMenuFont();
|
2018-07-06 05:06:05 +00:00
|
|
|
Common::Rect getTextBoundingBox(const Common::U32String &text, const Common::Rect &dest, Graphics::TextAlign align);
|
|
|
|
void drawText(uint16 image, const Common::U32String &text, const Common::Rect &dest, uint8 r, uint8 g, uint8 b, Graphics::TextAlign align, int16 deltaY);
|
2018-04-29 17:22:50 +00:00
|
|
|
|
|
|
|
void replaceImageWithRect(uint16 destImage, uint16 sourceImage, const Common::Rect &sourceRect);
|
|
|
|
|
2012-03-10 18:50:27 +00:00
|
|
|
protected:
|
2016-02-06 10:21:00 +00:00
|
|
|
MohawkSurface *decodeImage(uint16 id) override;
|
|
|
|
MohawkEngine *getVM() override { return (MohawkEngine *)_vm; }
|
2013-08-23 00:37:16 +00:00
|
|
|
|
2012-03-10 18:50:27 +00:00
|
|
|
private:
|
|
|
|
MohawkEngine_Myst *_vm;
|
|
|
|
MystBitmap *_bmpDecoder;
|
|
|
|
|
|
|
|
Graphics::Surface *_backBuffer;
|
|
|
|
Graphics::PixelFormat _pixelFormat;
|
|
|
|
Common::Rect _viewport;
|
2013-08-23 00:37:16 +00:00
|
|
|
byte _palette[256 * 3];
|
2012-03-10 18:50:27 +00:00
|
|
|
|
2018-04-29 17:22:50 +00:00
|
|
|
Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> _mainMenuBackupScreen;
|
|
|
|
Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> _mainMenuBackupScreenThumbnail;
|
|
|
|
Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> _mainMenuBackupBackBuffer;
|
|
|
|
|
2013-08-23 00:37:16 +00:00
|
|
|
void transitionDissolve(Common::Rect rect, uint step);
|
|
|
|
void transitionSlideToLeft(Common::Rect rect, uint16 steps, uint16 delay);
|
|
|
|
void transitionSlideToRight(Common::Rect rect, uint16 steps, uint16 delay);
|
|
|
|
void transitionSlideToTop(Common::Rect rect, uint16 steps, uint16 delay);
|
|
|
|
void transitionSlideToBottom(Common::Rect rect, uint16 steps, uint16 delay);
|
|
|
|
void transitionPartialToRight(Common::Rect rect, uint32 width, uint32 steps);
|
|
|
|
void transitionPartialToLeft(Common::Rect rect, uint32 width, uint32 steps);
|
2016-06-26 05:20:21 +00:00
|
|
|
|
|
|
|
void remapSurfaceToSystemPalette(MohawkSurface *mhkSurface);
|
|
|
|
byte getColorIndex(const byte *palette, byte red, byte green, byte blue);
|
2017-08-12 06:51:47 +00:00
|
|
|
|
|
|
|
void applyImagePatches(uint16 id, const MohawkSurface *mhkSurface) const;
|
2018-04-29 17:22:50 +00:00
|
|
|
|
|
|
|
Graphics::Font *_menuFont;
|
|
|
|
|
|
|
|
const Graphics::Font *getMenuFont() const;
|
2012-03-10 18:50:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // End of namespace Mohawk
|
|
|
|
|
|
|
|
#endif
|