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も自動的に用意してくれるようだ。