File: gui_mouse.h

package info (click to toggle)
scummvm 2.9.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 450,268 kB
  • sloc: cpp: 4,297,604; asm: 28,322; python: 12,901; sh: 11,219; java: 8,477; xml: 7,843; perl: 2,633; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (80 lines) | stat: -rw-r--r-- 3,590 bytes parent folder | download | duplicates (2)
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

/* 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 M4_GUI_GUI_MOUSE_H
#define M4_GUI_GUI_MOUSE_H

#include "m4/m4_types.h"
#include "m4/gui/gui_univ.h"
#include "m4/mem/reloc.h"

namespace M4 {

constexpr uint32 kArrowCursor = 0;

struct Mouse_Globals {
	ScreenContext *_mouseScreen = nullptr;
	transSprite *_mouseScreenSource = nullptr;

	Buffer _mouseBuffer;							// A scratch buffer used by RedrawMouse()
	Common::String _mouseSeriesResource;
	MemHandle _mouseSeriesHandle = nullptr;
	int32 _mouseSeriesOffset = 0;
	int32 _mouseSeriesPalOffset = 0;
	M4sprite *_mouseSprite = nullptr;			// The specific sprite which is drawn to indicate the current mouse position.
	int32 _mouseX1offset = 0;					// These two are the "x" and "Y" offset into the sprite which will center that 
	int32 _mouseY1offset = 0;					// sprite onto the current mouse position. ie. the mouse "hot spot".
	int32 _mouseX2offset = 0;					// These two are the horizontal and vertical distances from the mouse "hot spot"
	int32 _mouseY2offset = 0;					// to the edge of the sprite.
	int32 _currMouseNum = 0;						// The current index into the sprite series of the sprite which currently is the mouse.
	bool _mouseIsLocked = false;					// An bool which when TRUE will prevent any other mouse from being set.
	int32 _newMouseNum = 0;						// An int32 which stores the currMouseNum while the mouse is locked.

	int32 _hideMouseX1 = MIN_VIDEO_X - 1;	// These 4 represent the mouse "hide" rectangle.  The mouse is drawn if'f it is
	int32 _hideMouseY1 = MIN_VIDEO_Y - 1;	// located within the mouse "show" rectangle (below), or it is not within the
	int32 _hideMouseX2 = MIN_VIDEO_X - 1;	// mouse "hide" rectangle.  ie. If the "hide" rect covers the whole monitor, and
	int32 _hideMouseY2 = MIN_VIDEO_Y - 1;	// the "show" rectangle covers a specific window, then the mouse will be hidden
																	// everywhere except within the specific window.
	int32 _showMouseX1 = MIN_VIDEO_X;		   // These 4 represent the mouse "show" rectangle.
	int32 _showMouseY1 = MIN_VIDEO_Y;
	int32 _showMouseX2 = MAX_VIDEO_X;
	int32 _showMouseY2 = MAX_VIDEO_Y;

	int32 _mouseX = MAX_VIDEO_X >> 1;			// The current mouse "x" position (global coords).
	int32 _mouseY = MAX_VIDEO_Y >> 1;			// The current mouse "y" position (global coords).

	int32 _oldX = MAX_VIDEO_X >> 1;				// The previous mouse "x" and "y" position.  When the mouse has moved, the
	int32 _oldY = MAX_VIDEO_Y >> 1;				// position where the mouse sprite was last drawn is here.
};

bool gui_mouse_init();
void gui_mouse_shutdown();
bool mouse_set_sprite(int32 spriteNum);
void gui_mouse_refresh();
void mouse_hide();
void mouse_show();
void mouse_lock_sprite(int32 mouseNum);
void mouse_unlock_sprite();

} // End of namespace M4

#endif