ページ

2008年6月3日火曜日

RubberBand(その37)コピー&ペースト(2)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

RubberBandへコピー機能を組み込んでみる。ボタンを押したときの RubberBandの内容をペーストボードへコピーする。

ボタンを押したときのイベントハンドラにコードを実装する。今回は背景画像を表示している ImageView.m の中に記述することにした。

ImageView.m

-(void)clickedAtTag:(NSNumber*)tag
{
[self lockFocus];
NSBitmapImageRep *bitmap_rep =[[NSBitmapImageRep alloc] initWithFocusedViewRect:_rect];
[self unlockFocus];
NSData* data = [bitmap_rep representationUsingType:NSTIFFFileType
properties:[NSDictionary dictionary]];
NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb declareTypes:[NSArray arrayWithObject:NSTIFFPboardType] owner:self];
[pb setData:data forType:NSTIFFPboardType];
}


RubberBandの選択範囲に表示されている内容を NSBitmapImageRep へ落とし、これを TIFFデータに変換してペーストボードへ書き込む。ペーストボードタイプには NSTIFFPboardType を使ってみた。

実行して任意の範囲をコピーし、プレビューに貼付けてみる。

できた。RubberBandやボタンが含まれているのは手抜き。。

前回のソフトを使ってペーストボードの内容を見てみる。
(
"public.tiff",
"NeXT TIFF v4.0 pasteboard type",
"com.apple.pict",
"Apple PICT pasteboard type"
)

TIFFだけでなく PICTも自動的に用意してくれるようだ。