home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
gnu
/
gchsrc31
/
include
/
mousepos.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-27
|
3KB
|
86 lines
//////////////////////////////////////////////////////////////////////////////
//
// This file is part of the Atari Machine Specific Library,
// and is Copyright 1992 by Warwick W. Allison.
//
// You are free to copy and modify these sources, provided you acknoledge
// the origin by retaining this notice, and adhere to the conditions
// described in the file COPYING.
//
//////////////////////////////////////////////////////////////////////////////
#ifndef _MousePosition_h
#define _MousePosition_h
//
//
// Support for the Atari Mouse - directly. Do not use with AES.
//
// Simply use Mouse.X(), Mouse.Y(), Mouse.LeftButton(), Mouse.RightButton()
// to directly access mouse state.
//
// The mouse may be used in one of two modes. Bound and Unbound.
//
// When the mouse is bound, it operates similarly to the way the
// mouse does in the GEM environment.
//
// When the mouse is unbound, you will probably use the MoveTo and
// MoveBy methods to move the mouse into appropriate locations.
//
// Mouse.Speed() can be used to _decrease_ mouse speed 0=normal 255=slowest.
//
#include <values.h>
#include <bool.h>
class MousePosition;
extern MousePosition Mouse;
// **** Only one MousePosition may be declared (ie. Mouse above) ****
class MousePosition
{
public:
MousePosition();
~MousePosition();
int X();
int Y();
bool LeftButton();
bool RightButton();
int MoveTo(int,int);
int MoveBy(int,int);
void Speed(short x,short y); // Thresholds
void Unbound(); // Default
void Bound(int MinX=0, int MinY=0,
int Width=MAXINT, int Height=MAXINT);
void SetLeft(int);
void SetRight(int);
private:
void Bind();
bool Bounded=0;
int minx,miny,maxx,maxy;
void* OldVec;
volatile int x,y;
volatile bool Left,Right;
};
inline bool MousePosition::LeftButton() { return Left; }
inline bool MousePosition::RightButton() { return Right; }
inline int MousePosition::X() { return x; }
inline int MousePosition::Y() { return y; }
inline int MousePosition::MoveTo(int X,int Y) { x=X; y=Y; if (Bounded) Bind(); }
inline int MousePosition::MoveBy(int X,int Y) { x+=X; y+=Y; if (Bounded) Bind(); }
inline void MousePosition::Unbound() { Bounded=0; }
inline void MousePosition::Bound(int MinX=0, int MinY=0, int Width=MAXINT, int Height=MAXINT)
{ Bounded=1; minx=MinX; miny=MinY; maxx=Width+minx-1; maxy=Height+miny-1; Bind(); }
inline void MousePosition::SetLeft(int on) { Left=on; }
inline void MousePosition::SetRight(int on) { Right=on; }
#endif