Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

Keyboard.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * キーボードヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef KEYBOARD_H_
00026 #define KEYBOARD_H_
00027 
00028 #include <Input/Keyboard/KeyboardKey.h>
00029 #include <Input/Keyboard/KeyboardState.h>
00030 #include <Input/Keyboard/KeyboardDevice.h>
00031 
00032 namespace Lamp{
00033 
00034 //------------------------------------------------------------------------------
00035 /**
00036  * キーボード
00037  */
00038 class Keyboard : public KeyboardKey{
00039 friend class LampInput;
00040 friend class BufferedInput;
00041 public:
00042     //--------------------------------------------------------------------------
00043     /**
00044      * キー数の取得
00045      * @return キー数
00046      */
00047     virtual int getKeyCount() const{ return device_->getButtonCount(); }
00048 
00049     /**
00050      * キーが押されているか
00051      * @param key 対象キー
00052      * @return キーが押されていればtrue
00053      */
00054     virtual bool pressed(Key key) const{ return state_.keyPressed(key); }
00055 
00056     /**
00057      * キーが下がった
00058      * @param key キー
00059      * @return キーが下がったならばtrue
00060      */
00061     virtual bool down(Key key) const{
00062         return (state_.keyPressed(key) && (!preState_.keyPressed(key)));
00063     }
00064 
00065     /**
00066      * キーが上がった
00067      * @param key キー
00068      * @return キーが上がったならばtrue
00069      */
00070     virtual bool up(Key key) const{
00071         return ((!state_.keyPressed(key)) && preState_.keyPressed(key));
00072     }
00073 
00074     //--------------------------------------------------------------------------
00075     /**
00076      * 名前の取得
00077      * @return 名前
00078      */
00079     virtual String getName() const{ return device_->getProductName(); }
00080 
00081     /**
00082      * アタッチされているか
00083      * @return アタッチされていればtrue
00084      */
00085     virtual bool isAttached() const{ return device_->isAttached(); }
00086 
00087     /**
00088      * ポーリングが必要か
00089      * @return ポーリングが必要ならtrue
00090      */
00091     virtual bool isPolled() const{ return device_->isPolled(); }
00092 
00093     /**
00094      * 文字列への変換
00095      * @return 文字列
00096      */
00097     virtual String toString() const;
00098 
00099     /**
00100      * クリア
00101      */
00102     virtual void clear(){
00103         state_.clear();
00104         preState_.clear();
00105     }
00106 
00107     /**
00108      * 協調レベルの設定
00109      * @param exclusive 排他モードならtrue
00110      * @param foreground フォアグラウンドモードならtrue
00111      * @return 成功すればtrue
00112      */
00113     virtual bool setCooperativeLevel(bool exclusive, bool foreground){
00114         return device_->setCooperativeLevel(exclusive, foreground);
00115     }
00116 
00117     /**
00118      * 排他モードか
00119      * @return 排他モードならtrue
00120      */
00121     virtual bool isExclusive() const{ return device_->isExclusive(); }
00122 
00123     /**
00124      * フォアグラウンドモードか
00125      * @return フォアグラウンドモードならtrue、バックグラウンドモードならfalse
00126      */
00127     virtual bool isForeground() const{ return device_->isForeground(); }
00128 
00129 protected:
00130     //--------------------------------------------------------------------------
00131     /**
00132      * コンストラクタ
00133      */
00134     Keyboard(KeyboardDevice* device);
00135 
00136     /**
00137      * デストラクタ
00138      */
00139     virtual ~Keyboard();
00140 
00141     /**
00142      * 次のステート設定
00143      * @param state 次のステート
00144      */
00145     virtual void setNextState(const KeyboardState& state);
00146 
00147     /**
00148      * ステートの取得
00149      * @return ステート
00150      */
00151     virtual const KeyboardState& getState(){ return state_; }
00152 
00153 private:
00154     //--------------------------------------------------------------------------
00155     // デバイス
00156     KeyboardDevice* device_;
00157     // ステート
00158     KeyboardState state_;
00159     // 前回のステート
00160     KeyboardState preState_;
00161 };
00162 
00163 //------------------------------------------------------------------------------
00164 } // End of namespace Lamp
00165 #endif // End of KEYBOARD_H_
00166 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:31 2005 for Lamp by doxygen 1.3.2