1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/* 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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef GLK_WINDOW_GRAPHICS_H
#define GLK_WINDOW_GRAPHICS_H
#include "glk/windows.h"
#include "glk/picture.h"
namespace Glk {
/**
* Graphics window
*/
class GraphicsWindow : public Window {
private:
void touch();
void drawPicture(Picture *src, int x0, int y0, int width, int height, uint linkval);
public:
uint _bgnd;
bool _dirty;
uint _w, _h;
Graphics::ManagedSurface *_surface;
public:
/**
* Constructor
*/
GraphicsWindow(Windows *windows, uint rock);
/**
* Destructor
*/
~GraphicsWindow() override;
bool drawPicture(const Common::String &image, int xpos, int ypos, bool scale,
uint imagewidth, uint imageheight);
void drawPicture(const Graphics::Surface &image, uint transColor, int x0, int y0,
int width, int height, uint linkval = 0);
/**
* Rearranges the window
*/
void rearrange(const Rect &box) override;
/**
* Get window split size within parent pair window
*/
uint getSplit(uint size, bool vertical) const override {
return size;
}
/**
* Click the window
*/
void click(const Point &newPos) override;
/**
* Cancel a mouse event
*/
void cancelMouseEvent() override {
_mouseRequest = false;
}
/**
* Cancel a hyperlink event
*/
void cancelHyperlinkEvent() override {
_hyperRequest = false;
}
void requestMouseEvent() override {
_mouseRequest = true;
}
void requestHyperlinkEvent() override {
_hyperRequest = true;
}
/**
* Redraw the window
*/
void redraw() override;
void eraseRect(bool whole, const Rect &box) override;
/**
* Fill an area of the window
*/
void fillRect(uint color, const Rect &box) override;
/**
* Clear the window
*/
void clear() override;
/**
* Draw a rectangle in the given area
*/
void frameRect(uint color, const Rect &box);
/**
* Draws a line between two points
*/
void drawLine(uint color, const Point &from, const Point &to);
void getSize(uint *width, uint *height) const override;
void setBackgroundColor(uint color) override;
};
} // End of namespace Glk
#endif
|