プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

Javaで筆圧を取得しよう3 〜JPen〜

疲れましたが、これで終わりです。いや、もうちょっとだけ続いたんじゃよ
まぁ、実装の仕方に関してはこれで終わりです。



PKindEventを処理する

PKindはPButtonEventの処理でちょろっとお話ししましたが、ポインターを操作するデバイスを表しています。
これのイベントが発生する………すなわち、ポインターを操作するデバイスが変わったときに起こります
ペン先から消しゴムに変えたり、マウスに持ち替えたりといった時に発生するというわけですね。



なので、することは「このデバイスに変わったよ〜」ということを知らせれば良いだけです。デバイスは今まで通りPKindから取得します。PKindはPenから取得するも良し、PKindEventが持ってるkindから取得するも良し!好きにやれい!
簡単だね。


PScrolleventを処理する

その名の通りスクロールイベントです。私は単純にMouseWheelEventにコンバートして使っています。
説明するより、プログラム見た方が早そうなので載せておきます。

public void penScrollEvent(PScrollEvent e) {
	int val = e.scroll.value;
	if(val==0)return;
	int rotation =e.scroll.getType()==PScroll.Type.DOWN? 
			1:-1;
	Pen pen = e.pen;
	int x = (int) pen.getLevelValue(PLevel.Type.X);//x取得
	int y = (int) pen.getLevelValue(PLevel.Type.Y);//y取得
	MouseWheelEvent mwe=new MouseWheelEvent(component, MouseEvent.MOUSE_WHEEL, e.getTime(), keymodify,
		x, y, pen.getPressedButtonsCount(), false,
		0, val, rotation);

componentは最初から自分で所持しています。

ま〜、説明もこれくらいで良いでしょう。


penTockメソッドについて

タブレットデバイスから発生するPLevelEventはシステムのマウスイベントに比べてその発生間隔が短い。
場合によっては処理しきれないこともあるでしょう。
penTockメソッドはPLevelEventが発生する度に、その発生間隔を通知してくれます。
この渡される値をうまく使って、処理しきれない場合はうまいこと処理をスルーしてね、というだけのメソッドです。
必要なければ特に何か実装する必要はありません。



私が作っているJPenを簡単に扱うためのライブラリーをGitHubにおいておきました。
PenTablet


ついでにJTablet2にも対応しようとして中途半端に放置しています。