/*	
 *	clipmou.h
 *
 *	シリアルマウスドライバ
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2004 Naoyuki Sawa
 *
 *	* Mon May 31 05:44:00 JST 2004 Naoyuki Sawa
 *	- 作成開始。
 *	* Wed Nov 18 21:37:53 JST 2015 Naoyuki Sawa
 *	- 'extern "C" {'〜'}'で囲みました。.cppを含むWin32プロジェクトからもインクルード出来るようにするためです。
 */
#ifndef __CLIP_MOU_H__
#define __CLIP_MOU_H__

#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus

/****************************************************************************
 *	
 ****************************************************************************/

/* マウス用COMポートを開きます。
 * [out]
 *	戻り値		成功ならば0を返します。
 *			失敗ならば負値を返します。
 * [note]
 *	* mouse_open()が成功したら、アプリケーション終了前にmouse_close()を呼んでください。
 *	  mouse_close()を呼ばずにアプリケーションを終了すると、P/ECEがハングアップします。
 */
int mouse_open();

/* マウス用COMポートを開きます。
 * [note]
 *	* マウス用COMポートが開かれていなければ、何もしません。
 */
void mouse_close();

/* マウスの状態を取得します。
 * [in]
 *	各引数は、結果を受け取るための変数へのポインタです。
 *	NULLを指定すると、その値は格納されません。
 *	格納される値は、次のとおりです。
 *	dx		前回からの水平移動量。(左:マイナス<=>プラス:右)
 *	dy		前回からの垂直移動量。(上:マイナス<=>プラス:下)
 *	button		bit 0 左ボタン状態。(MOUSE_BUTTON(0))
 *			bit 1 右ボタン状態。(MOUSE_BUTTON(1))
 *			bit 2 中ボタン状態。(MOUSE_BUTTON(2))
 *			bit 8 左ボタン押下エッジ。(MOUSE_PRESS(0))
 *			bit 9 右ボタン押下エッジ。(MOUSE_PRESS(1))
 *			bit10 中ボタン押下エッジ。(MOUSE_PRESS(2))
 *			bit16 左ボタン開放エッジ。(MOUSE_RELEASE(0))
 *			bit17 右ボタン開放エッジ。(MOUSE_RELEASE(1))
 *			bit18 中ボタン開放エッジ。(MOUSE_RELEASE(2))
 * [note]
 *	* 2004/05/31現在の実装では、中ボタンの状態判定が正しく動いていません。
 *	  buttonのビットのうち、中ボタンのビットは使わないでください。
 */
void mouse_get(int* dx, int* dy, int* button);

#define MOUSE_BUTTON(i)		((1 <<  0) << (i))
#define MOUSE_PRESS(i)		((1 <<  8) << (i))
#define MOUSE_RELEASE(i)	((1 << 16) << (i))

#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus

#endif /*__CLIP_MOU_H__*/
