File: window_graphics.h

package info (click to toggle)
scummvm 2.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 450,580 kB
  • sloc: cpp: 4,299,825; asm: 28,322; python: 12,901; sh: 11,302; java: 9,289; xml: 7,895; perl: 2,639; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (132 lines) | stat: -rw-r--r-- 2,920 bytes parent folder | download | duplicates (3)
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