試しに一つ設定を追加してみる。
InterfaceBuilderへラベルとポップアップボタンを配置し、NSUserDefaultsControllerへ接続するたけでユーザインターフェイスはできあがり。
コードでは SimpleCap内でファイル保存を担当する FileManagerクラスに手を入れる。
FileManager.m
- (void)saveImage:(NSBitmapImageRep*)bitmap_rep
{
int image_format_tag = [[[[NSUserDefaultsController
sharedUserDefaultsController] values]
valueForKey:@"image_format"] intValue];
NSData* data;
switch (image_format_tag) {
case 1:
// GIF
data = [bitmap_rep representationUsingType:NSGIFFileType
properties:[NSDictionary dictionary]];
break;
case 2:
// JPEG
data = [bitmap_rep representationUsingType:NSJPEGFileType
properties:[NSDictionary dictionary]];
break;
case 0:
defaults:
// PNG
data = [bitmap_rep representationUsingType:NSPNGFileType
properties:[NSDictionary dictionary]];
break;
}
[data writeToFile:[self nextFilename] atomically:YES];
}
"image_format" という名前で NSUserDefaultsから値を取り出して利用する。
PNG形式。ブログの画像では分かりづらいが影の部分はアルファチャネルが保存されいる。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEVqFxIEg7L2TMN9nGpADJhEBASnzWbnrcN-giHwBq1jun1AE2e5RqPy77KTo2pdDy5xA6gonAtmgwSJiVvNIIyWdZAB3WavhwhKXldpp1bi6amfBZAFQu1P74d7iG0S1Nltm6Tz6iXPwS/s400/080914-0003.png)
JPEG形式。背景が白色となっている。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilkviyADGGaExvhRy_tS8ldI7KpXHJksUTm4TtAlhTBqNQR4FO9WwkNOQw0QImlBeg1pGgKX42pWrhM-Oqjn4lYXk1Zk-5hw13Cg7tR6cIJWF1cdwl0V8x9ChvJ9gGcRYAUXLk2ngXtXU/s400/080914-0005.jpg)
GIF形式。影の部分が真っ黒になってしまった。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXNiPUnD98DiqZQI9RIDw8QgsMQ433mOqarlWdbIV7D-zI_iOJTMhyphenhyphen5zDdRFo_OLUI_lJtf3Wa5nkY1qBqj0TC2gAfwQUc08bChgBPp7sdtRrnewvq5ZbSlIQXR3mm3z1gXYdqv89XB5I/s400/080914-0004.png)
- - - -
GIFの問題はあるが、環境設定はこんな感じで使っていけることがわかった。
どしどし追加していこう。