152 lines
2.9 KiB
Text
152 lines
2.9 KiB
Text
|
/**
|
||
|
* PANDA 3D SOFTWARE
|
||
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||
|
*
|
||
|
* All use of this software is subject to the terms of the revised BSD
|
||
|
* license. You should have received a copy of this license along
|
||
|
* with this source code in a file named "LICENSE."
|
||
|
*
|
||
|
* @file buttonEvent.I
|
||
|
* @author drose
|
||
|
* @date 2000-03-01
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE ButtonEvent::
|
||
|
ButtonEvent() :
|
||
|
_button(ButtonHandle::none()),
|
||
|
_keycode(0),
|
||
|
_type(T_down),
|
||
|
_time(0.0)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE ButtonEvent::
|
||
|
ButtonEvent(ButtonHandle button, ButtonEvent::Type type, double time) :
|
||
|
_button(button),
|
||
|
_keycode(0),
|
||
|
_highlight_start(0),
|
||
|
_highlight_end(0),
|
||
|
_type(type),
|
||
|
_time(time)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE ButtonEvent::
|
||
|
ButtonEvent(int keycode, double time) :
|
||
|
_button(ButtonHandle::none()),
|
||
|
_keycode(keycode),
|
||
|
_highlight_start(0),
|
||
|
_highlight_end(0),
|
||
|
_type(T_keystroke),
|
||
|
_time(time)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE ButtonEvent::
|
||
|
ButtonEvent(const std::wstring &candidate_string, size_t highlight_start,
|
||
|
size_t highlight_end, size_t cursor_pos) :
|
||
|
_button(ButtonHandle::none()),
|
||
|
_keycode(0),
|
||
|
_candidate_string(candidate_string),
|
||
|
_highlight_start(highlight_start),
|
||
|
_highlight_end(highlight_end),
|
||
|
_cursor_pos(cursor_pos),
|
||
|
_type(T_candidate),
|
||
|
_time(ClockObject::get_global_clock()->get_frame_time())
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE ButtonEvent::
|
||
|
ButtonEvent(const ButtonEvent ©) :
|
||
|
_button(copy._button),
|
||
|
_keycode(copy._keycode),
|
||
|
_candidate_string(copy._candidate_string),
|
||
|
_highlight_start(copy._highlight_start),
|
||
|
_highlight_end(copy._highlight_end),
|
||
|
_cursor_pos(copy._cursor_pos),
|
||
|
_type(copy._type),
|
||
|
_time(copy._time)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE void ButtonEvent::
|
||
|
operator = (const ButtonEvent ©) {
|
||
|
_button = copy._button;
|
||
|
_keycode = copy._keycode;
|
||
|
_candidate_string = copy._candidate_string;
|
||
|
_highlight_start = copy._highlight_start;
|
||
|
_highlight_end = copy._highlight_end;
|
||
|
_cursor_pos = copy._cursor_pos;
|
||
|
_type = copy._type;
|
||
|
_time = copy._time;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The equality operator does not consider time significant.
|
||
|
*/
|
||
|
INLINE bool ButtonEvent::
|
||
|
operator == (const ButtonEvent &other) const {
|
||
|
return (_button == other._button &&
|
||
|
_keycode == other._keycode &&
|
||
|
_type == other._type);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE bool ButtonEvent::
|
||
|
operator != (const ButtonEvent &other) const {
|
||
|
return !operator == (other);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
INLINE bool ButtonEvent::
|
||
|
operator < (const ButtonEvent &other) const {
|
||
|
if (_button != other._button) {
|
||
|
return _button < other._button;
|
||
|
}
|
||
|
if (_keycode != other._keycode) {
|
||
|
return _keycode < other._keycode;
|
||
|
}
|
||
|
|
||
|
return _type < other._type;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Calls button_down() or button_up(), as appropriate, according to the
|
||
|
* ButtonEvent.
|
||
|
*/
|
||
|
INLINE bool ButtonEvent::
|
||
|
update_mods(ModifierButtons &mods) const {
|
||
|
switch (_type) {
|
||
|
case T_down:
|
||
|
return mods.button_down(_button);
|
||
|
|
||
|
case T_up:
|
||
|
return mods.button_up(_button);
|
||
|
|
||
|
default:
|
||
|
return false;
|
||
|
}
|
||
|
}
|