File: MyKeyboardMouseCallback

package info (click to toggle)
openscenegraph 1.2.0-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 26,924 kB
  • ctags: 25,229
  • sloc: cpp: 239,326; ansic: 2,178; sh: 1,990; yacc: 548; perl: 237; makefile: 227; lex: 151
file content (73 lines) | stat: -rw-r--r-- 1,467 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
#ifndef PRODUCER_EXAMPLES_MYKEYBOARD_MOUSE_CALLBACK
#define PRODUCER_EXAMPLES_MYKEYBOARD_MOUSE_CALLBACK
#include <stdio.h>
#include <Producer/RenderSurface> // For definition of KeySymbol
#include <Producer/KeyboardMouse>

#ifdef WIN32
#include <windows.h>
#else
#include <X11/keysym.h>
#endif

class MyKeyboardMouseCallback : public Producer::KeyboardMouseCallback
{
    public:
		MyKeyboardMouseCallback(bool &done) :
			Producer::KeyboardMouseCallback(),
			_mx(0.0f),_my(0.0f),_mbutton(0),
			_done(done)	
			{}

		virtual void specialKeyPress( Producer::KeyCharacter key )
		{
			switch( key )
			{
				case Producer::KeyChar_Escape:
					_done = true;
					break;
			}
		}

        virtual void shutdown()
        {

            _done = true; 
        }

		virtual void keyPress( Producer::KeyCharacter key )
		{
		}

		virtual void mouseMotion( float mx, float my ) 
		{
			_mx = mx;
			_my = my;
		}
		virtual void buttonPress( float mx, float my, unsigned int mbutton ) 
		{
			_mx = mx;
			_my = my;
			_mbutton |= (1<<(mbutton-1));
		}
		virtual void buttonRelease( float mx, float my, unsigned int mbutton ) 
		{
			_mx = mx;
			_my = my;
			_mbutton &= ~(1<<(mbutton-1));
		}

		bool done() { return _done; }
		float mx()  { return _mx; }
		float my()  { return _my; }
		unsigned int mbutton()  { return _mbutton; }

    protected:
		virtual ~MyKeyboardMouseCallback() {}

    private:
		bool &_done;
		float _mx, _my;
		unsigned int _mbutton;
};
#endif