Initial revision
[blender.git] / intern / ghost / intern / GHOST_ModifierKeys.cpp
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30  */
31
32 /**
33
34  * $Id$
35  * Copyright (C) 2001 NaN Technologies B.V.
36  * @author      Maarten Gribnau
37  * @date        May 31, 2001
38  */
39
40 #include "GHOST_ModifierKeys.h"
41
42
43 GHOST_ModifierKeys::GHOST_ModifierKeys()
44 {
45         clear();
46 }
47
48
49 GHOST_TKey GHOST_ModifierKeys::getModifierKeyCode(GHOST_TModifierKeyMask mask)
50 {
51         GHOST_TKey key;
52         switch (mask) {
53         case GHOST_kModifierKeyLeftShift:               key = GHOST_kKeyLeftShift;              break;
54         case GHOST_kModifierKeyRightShift:              key = GHOST_kKeyRightShift;             break;
55         case GHOST_kModifierKeyLeftAlt:                 key = GHOST_kKeyLeftAlt;                break;
56         case GHOST_kModifierKeyRightAlt:                key = GHOST_kKeyRightAlt;               break;
57         case GHOST_kModifierKeyLeftControl:             key = GHOST_kKeyLeftControl;    break;
58         case GHOST_kModifierKeyRightControl:    key = GHOST_kKeyRightControl;   break;
59         case GHOST_kModifierKeyCommand:                 key = GHOST_kKeyCommand;                break;
60         default:
61                 // Should not happen
62                 key = GHOST_kKeyUnknown;
63                 break;
64         }
65         return key;
66 }
67
68
69 bool GHOST_ModifierKeys::get(GHOST_TModifierKeyMask mask) const
70 {
71     switch (mask) {
72     case GHOST_kModifierKeyLeftShift:
73         return m_LeftShift;
74     case GHOST_kModifierKeyRightShift:
75         return m_RightShift;
76     case GHOST_kModifierKeyLeftAlt:
77         return m_LeftAlt;
78     case GHOST_kModifierKeyRightAlt:
79         return m_RightAlt;
80     case GHOST_kModifierKeyLeftControl:
81         return m_LeftControl;
82     case GHOST_kModifierKeyRightControl:
83         return m_RightControl;
84     case GHOST_kModifierKeyCommand:
85         return m_Command;
86     default:
87         return false;
88     }
89 }
90
91
92 void GHOST_ModifierKeys::set(GHOST_TModifierKeyMask mask, bool down)
93 {
94     switch (mask) {
95     case GHOST_kModifierKeyLeftShift:
96         m_LeftShift = down; break;
97     case GHOST_kModifierKeyRightShift:
98         m_RightShift = down; break;
99     case GHOST_kModifierKeyLeftAlt:
100         m_LeftAlt = down; break;
101     case GHOST_kModifierKeyRightAlt:
102         m_RightAlt = down; break;
103     case GHOST_kModifierKeyLeftControl:
104         m_LeftControl = down; break;
105     case GHOST_kModifierKeyRightControl:
106         m_RightControl = down; break;
107     case GHOST_kModifierKeyCommand:
108         m_Command = down; break;
109     default:
110         break;
111     }
112 }
113
114
115 void GHOST_ModifierKeys::clear()
116 {
117     m_LeftShift = false;
118     m_RightShift = false;
119     m_LeftAlt = false;
120     m_RightAlt = false;
121     m_LeftControl = false;
122     m_RightControl = false;
123     m_Command = false;
124 }
125
126
127 bool GHOST_ModifierKeys::equals(const GHOST_ModifierKeys& keys) const
128 {
129         return (m_LeftShift == keys.m_LeftShift) &&
130                 (m_RightShift == keys.m_RightShift) &&
131                 (m_LeftAlt == keys.m_LeftAlt) &&
132                 (m_RightAlt == keys.m_RightAlt) &&
133                 (m_LeftControl == keys.m_LeftControl) &&
134                 (m_RightControl == keys.m_RightControl) &&
135         (m_Command == keys.m_Command);
136 }