さていよいよ RubberBandを SimpleCap へ組み込む。まずは SimpleCap のアーキテクチャのおさらいから。
SimpleCap は単一の NSWindowとNSViewから構成されていて、キャプチャ毎に処理クラス(ハンドラ)を用意している。NSViewへの表示やイベントハンドリングは主要メッセージをこれらのハンドラへ転送している。転送対象のメソッドは Handlerプロトコルで定義されている。
Handler.h
@protocol Handler
- (void)reset;
- (void)start;
- (void)tearDown;
- (void)drawRect:(NSRect)rect;
- (void)mouseMoved:(NSEvent *)theEvent;
- (void)mouseDown:(NSEvent *)theEvent;
- (void)keyDown:(NSEvent *)theEvent;
@end
今まで作ってきた RubberBandは NSViewのサブクラスだが使っているメソッドは上記に含まれるのでハンドラで十分実装できる。そこで SelectionHandler へ RubberBand のソースコードを移植する。これは若干の手直しでできた。とりあえず組み立て完了。
- - - -
RubberBandを開始してからようやくここまで来られた。時間がかかっただけに今回はちょっとうれしい。趣味でやっていると遅々として進まない部分もあるが、こうして形が見えてくるとやっぱり楽しい。
次回以降、いよいよ SimpleCapの選択範囲キャプチャの実装に入っていく。