c426f933e678573f0ebd2d98715921ccb91404d2
[blender.git] / intern / iksolver / test / ik_glut_test / common / GlutMouseManager.cpp
1 /**
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 #include "GlutMouseManager.h"
29 #include "MT_assert.h"
30
31 MEM_SmartPtr<GlutMouseManager> GlutMouseManager::m_s_instance = MEM_SmartPtr<GlutMouseManager>();
32
33
34         GlutMouseManager *
35 GlutMouseManager::
36 Instance(
37 ){
38         if (m_s_instance == NULL) {
39                 m_s_instance = new GlutMouseManager();
40         }
41
42         return m_s_instance;
43 }       
44
45 // these are the functions you should pass to GLUT      
46
47         void
48 GlutMouseManager::
49 Mouse(
50         int button,
51         int state,
52         int x,
53         int y
54 ){
55         GlutMouseManager *manager = GlutMouseManager::Instance();
56
57         if (manager->m_handler != NULL) {
58                 manager->m_handler->Mouse(button,state,x,y);
59         }
60 }
61
62         void
63 GlutMouseManager::
64 Motion(
65         int x,
66         int y
67 ){
68         GlutMouseManager *manager = GlutMouseManager::Instance();
69
70         if (manager->m_handler != NULL) {
71                 manager->m_handler->Motion(x,y);
72         }
73 }
74
75         void
76 GlutMouseManager::
77 InstallHandler(
78         GlutMouseHandler *handler
79 ){
80
81         MT_assert(m_handler == NULL);
82         m_handler = handler;
83 }
84
85         void
86 GlutMouseManager::
87 ReleaseHandler(
88 ){
89         m_handler = NULL;
90 }
91
92 GlutMouseManager::
93 ~GlutMouseManager(
94 ){
95
96         delete(m_handler);
97 }
98
99