passage/minorGems/ui/Mouse.h
2025-10-03 02:19:59 -04:00

97 lines
1.7 KiB
C++

/*
* Modification History
*
* 2000-November-28 Jason Rohrer
* Created.
*/
#ifndef MOUSE_INCLUDED
#define MOUSE_INCLUDED
/**
* Interface for accessing mouse input.
*
* Note:
* Certain implementations may require a ScreenGraphics object to
* be constructed before accessing the mouse (i.e., to give the
* mouse coordinates a context).
*/
class Mouse {
public:
/**
* Constructs a Mouse.
*
* @param inNumButtons the number of buttons on the mouse that should
* be monitored. Default = 1.
*/
Mouse( int inNumButtons );
~Mouse();
/**
* Gets the location of the mouse.
*
* @param outX pointer to location where x component will be returned.
* @param outY pointer to location where y component will be returned.
*/
void getLocation( int *outX, int *outY );
/**
* Gets whether the main mouse button is down.
*
* @return true if the main mouse button is down.
*/
char isButtonDown();
/**
* Gets whether a specified mouse button is down.
*
* @param inButtonNumber the number of the button to check for
* (0 is the main mouse button).
*
* @return true if the specified mouse button is down.
*/
char isButtonDown( int inButtonNumber );
private:
int mXLocation;
int mYLocation;
int mNumButtons;
// array of booleans that represent the current
// (or last known) state of each button
char *mButtonDown;
};
inline Mouse::Mouse( int inNumButtons = 1 )
: mNumButtons( inNumButtons ),
mButtonDown( new char[inNumButtons] ) {
}
inline Mouse::~Mouse() {
delete [] mButtonDown;
}
inline char Mouse::isButtonDown() {
return isButtonDown( 0 );
}
#endif