155 lines
5.8 KiB
Plaintext
155 lines
5.8 KiB
Plaintext
// Filename: buttonHandle.I
|
|
// Created by: drose (01Mar00)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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."
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Constructor
|
|
// Access: Published
|
|
// Description: The default constructor must do nothing, because we
|
|
// can't guarantee ordering of static initializers. If
|
|
// the constructor tried to initialize its value, it
|
|
// might happen after the value had already been set
|
|
// previously by another static initializer!
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE ButtonHandle::
|
|
ButtonHandle() {
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Constructor
|
|
// Access: Published
|
|
// Description: Constructs a ButtonHandle with the corresponding
|
|
// index number, which may have been returned by an
|
|
// earlier call to ButtonHandle::get_index().
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE ButtonHandle::
|
|
ButtonHandle(int index) : _index(index) {
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Copy Constructor
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE ButtonHandle::
|
|
ButtonHandle(const ButtonHandle ©) : _index(copy._index) {
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Equality Operator
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool ButtonHandle::
|
|
operator == (const ButtonHandle &other) const {
|
|
return (_index == other._index);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Inequality Operator
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool ButtonHandle::
|
|
operator != (const ButtonHandle &other) const {
|
|
return (_index != other._index);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::Ordering Operator
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool ButtonHandle::
|
|
operator < (const ButtonHandle &other) const {
|
|
return (_index < other._index);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::has_ascii_equivalent
|
|
// Access: Published
|
|
// Description: Returns true if the button was created with an ASCII
|
|
// equivalent code (e.g. for a standard keyboard
|
|
// button).
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool ButtonHandle::
|
|
has_ascii_equivalent() const {
|
|
return (_index > 0 && _index < 128);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::get_ascii_equivalent
|
|
// Access: Published
|
|
// Description: Returns the character code associated with the
|
|
// button, or '\0' if no ASCII code was associated.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE char ButtonHandle::
|
|
get_ascii_equivalent() const {
|
|
return has_ascii_equivalent() ? (char)_index : '\0';
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::matches
|
|
// Access: Published
|
|
// Description: Returns true if this ButtonHandle is the same as the
|
|
// other one, or if the other one is an alias for this
|
|
// one. (Does not return true if this button is an
|
|
// alias for the other one, however.)
|
|
//
|
|
// This is a more general comparison than operator ==.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE bool ButtonHandle::
|
|
matches(const ButtonHandle &other) const {
|
|
return ((*this) == other ||
|
|
(other != ButtonHandle::none() &&
|
|
get_alias() == other));
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::get_index
|
|
// Access: Published
|
|
// Description: Returns the integer index associated with this
|
|
// ButtonHandle. Each different ButtonHandle will have a
|
|
// different index. However, you probably shouldn't be
|
|
// using this method; you should just treat the
|
|
// ButtonHandles as opaque classes. This is provided
|
|
// for the convenience of non-C++ scripting languages to
|
|
// build a hashtable of ButtonHandles.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE int ButtonHandle::
|
|
get_index() const {
|
|
return _index;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::output
|
|
// Access: Published
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE void ButtonHandle::
|
|
output(ostream &out) const {
|
|
out << get_name();
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: ButtonHandle::none
|
|
// Access: Published, Static
|
|
// Description: Returns a special zero-valued ButtonHandle that is
|
|
// used to indicate no button.
|
|
////////////////////////////////////////////////////////////////////
|
|
INLINE ButtonHandle ButtonHandle::
|
|
none() {
|
|
return _none;
|
|
}
|