Mac Dev

ウィンドウがアクティブなスペース上にあるか判定方法

Spacesでスペースを切り替えた時に、ウィンドウが表示中のSpaceにあるか判定したい場合がある。 この判定には、NSWindowのisOnActiveSpaceを使用する。isOnActiveSpaceは、Mac OS X 10.6から追加されているため、10.5では使えない。 Mac OS X 10.5では、非公…

SpacesでアクティブなSpaceが切り替わったことを検出

SpacesでアクティブなSpaceが切り替わったことを検出するには、 NSWorkspaceActiveSpaceDidChangeNotificationが通知されるようにする。 記事は、アトトックLabo http://www.atotok.com/labo/mac_dev/20110208000227.html

View上でマウスカーソルを変更する

アトトックラボに投稿しました。マウスカーソルがView上にある場合に、カーソルの形状を変更する方法。http://www.atotok.com/labo/mac_dev/20110105000156.html

NSScreenでスクリーンの情報を取得

先日、投稿したメニューバーが表示されているスクリーンの情報を取得について、 動作確認した結果をまとめてみました。記事はこちら http://www.atotok.com/labo/mac_dev/20101229021258.html

NSAlertでアラートシートを表示

ウィンドウのタイトルバーの下に表示されるアラートシートを表示するにはNSAlertを使用する。記事はこちら http://www.atotok.com/labo/mac_dev/20101229011240.html

URLを指定してブラウザを開く方法

アプリケーションからURLをしていしてブラウザを開くには、 下記のように1行書けばOK。 [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://atotok.com"]];

システムのバージョンを取得

アプリケーションが動作しているシステムのバージョンを取得する方法 SInt32 ver ; if(!Gestalt(gestaltSystemVersion,&ver)) { NSLog(@"ver : %x",ver); } 実行結果 Mac OS X 10.6.4で実行した場合 ver : 1064

ターミナルからファイル名を一括変換

複数の画像ファイル「*.jpg」のファイル名を、「*_s.jpg」などに変えたい場合、ターミナルからコマンドで一括変換する。 $ for fn in *.jpg ; do mv $fn ${fn/.jpg/_s.jpg}; done

オブジェクトのクラスを確認する方法

Objective-Cのオブジェクトが何のクラスなのか確認する方法 isKindOfClass で確認する。 例 if ([obj isKindOfClass:[NSDictionary class]]) { } if ([obj isKindOfClass:[NSArray class]]) { }

NSViewのmouseEnteredとmouseExitedを有効にする方法

NSViewのmouseEnteredメッセージとmouseExitedメッセージはマウス移動した時にViewが受信するメッセージだ。 mouseEnteredはNSViewにマウスが入ったとき、mouseExitedはNSViewからマウスが出たときに受信する。 しかし、この2つのメソッドはデフォルトの状…

スレッドと描画

ビューの描画は必ずしもメインスレッドで実行しなければならないわけではない。 NSViewオブジェクトのプロパティ(たとえばビューのフレーム矩形など)を可変にすることができるのは、メインスレッドだけである。 NSViewのdisplayメソッドを呼び出すと、Appl…

Boostのregexをビルド

ビルド環境 Mac OS X 10.5.8 Leopard Xcode 3.1.3 Boost 1.39 ビルド $ ./bjam --toolset=darwin --with-regex link=static runtime-link=static architecture=combined address-model=32_64 Building C++ Boost. After the build, the headers will be loca…

NSLogで出力するコンソールメッセージの出力先

NSLogでデバッグ出力したログは、コンソール.appのコンソールメッセージに表示されるが ここに表示されるメッセージは、/var/log/system.log に出力されている。

CGBitmapContextCreateが対応している色空間

CGBitmapContextCreateがサポートしている色空間について、 Technical Q&A QA1037で説明されている。 http://developer.apple.com/jp/qa/qa2001/qa1037.html 24ビットピクセルにはならないのか

24ビットのビットマップ

24ビットのビットマップを作成してみた。 CGDataProviderCreateWithDataに渡すbitmapにはRGBAではなくRGBの24ビットの連続したデータを格納し 下記のソースのように、NSBitmapImageRepを作成すると正常に作成され、 bitsPerPixelは24になっている。 先日、試…

24bitのビットマップ

24bitのビットマップデータを作るにはどうしたら良いかといろいろ試していると CGImageCreateのbitmapInfoの指定で24bitのビットマップができた。 CGImageCreate Creates a bitmap image from data supplied by a data provider. CGImageRef CGImageCreate (…

デスクトップのスクリーンショットを取得

デスクトップのスクリーンショットはCGWindowListCreateImageで取得できる。 CGImageRef screenImageRef = CGWindowListCreateImage( [[NSScreen mainScreen]frame], kCGWindowListOptionOnScreenBelowWindow, kCGNullWindowID, kCGWindowImageDefault); CGW…

Boostのdate_timeをビルド

ビルド環境 Mac OS X 10.5.8 Leopard Xcode 3.1.3 ビルド Boostのdate_timeをビルドしUniversal Binaryのライブラリを作成する。 iMac:boost_1_39_0 kuru$ ./bjam --toolset=darwin --with-date_time link=static runtime-link=static architecture=combined…

Boostのsystemをビルド

ビルド環境 Mac OS X 10.5.8 Leopard Xcode 3.1.3 ビルド BoostのsystemをビルドしUniversal Binaryのライブラリを作成する。 iMac:boost_1_39_0 kuru$ ./bjam --toolset=darwin --with-system link=static runtime-link=static architecture=combined addre…

CGRectとNSRect

CGRectとNSRectを相互に変換する関数 NSRectからCGRect CGRect NSRectToCGRect(NSRect nsrect) CGRectからNSRect NSRect NSRectFromCGRect(CGRect cgrect) Available in Mac OS X v10.5 and later.

C++とObjective-Cを混ぜる

C++のコードでObjective-Cのオブジェクトを扱いたい場合 拡張子を .cppでなく .mmにする ソースのファイルタイプをsourcecode.cpp.cppでなくsourcecode.cpp.objcppにする どちらかで対応する。 参考 Objective-CとC++の機能の混在

NSScreenクラス

スクリーンサイズを取得するにはNSScreenクラスを使用する。 NSRect rect1 = [[NSScreen mainScreen]frame] ; NSLog(@"rect1 : %@",NSStringFromRect(rect1)) ; NSRect rect2 = [[NSScreen mainScreen]visibleFrame] ; NSLog(@"rect2 : %@",NSStringFromRect…

WebKit関連のドキュメント

WebKit Objective-C Framework Reference WebKit Objective-C Programming Guide WebKit Plug-In Programming Topics WebScripting Protocol Reference

WebKit Plug-Inの中からJavaScriptのfunctionを実行する方法

WebKit Plug-Inの中からJavaScriptのfunctionを実行するには、 WebScriptObjectクラスの下記のメソッドを使用する。 - (id)callWebScriptMethod:(NSString *)namewithArguments:(NSArray *)args JavaScript側のfunction <script LANGUAGE="JavaScript"> function test_func(){ alert('test_</script>…

文字列からセレクタを生成する方法

セレクタを文字列から生成するにはNSSelectorFromStringを使用する。 SEL sel = NSSelectorFromString(@"hogehoge::") ;

NSViewでキーイベントを取得

NSViewのサブクラスで下記のメソッドをオーバーライドしてもキーイベントが取得できない。 - (void)keyDown:(NSEvent *)theEvent - (void)keyUp:(NSEvent *)theEvent - (void)flagsChanged:(NSEvent *)theEvent NSViewのサブクラスでキーイベントを取得した…

libpngはUniversal Binaryにしなくても動く?

libpngとzlibをビルドし、各OS環境で動作することを確認した。 png_sig_cmpを使用したテストプログラムを作成し確認した。 ライブラリのバージョン libpng-1.2.12 zlib-1.2.3 ビルド環境 Mac OS X 10.6.1 Xcode 3.2 zlibをビルド $ configure $ make libpng…

zlibのUniversal Binaryを作成

configure とmake 「zlibの動作確認 - Panther〜Snow Leopard」と同じ方法で下記の環境でzlibをビルドする。 Power Mac G3 , Mac OS X 10.3.9 , Xcode 1.0 iMac (Intel) , Mac OS X 10.5.8 , Xcode 3.13 $ configure $ make ライブラリをマージ 複数のライブ…

libpngのUniversal Binaryを作成 - 環境変数CFLAGSとLDFLAGSに適切な値を渡し、configureで単純にUniversal Binary

Technical Note TN2137:“configure”ベースのオープンソースプロジェクトからのUniversal Binaryのビルドを参考にやってみたが、makeでエラーになってしまう。 CFLAGSとLDFLAGSを設定 Macintosh:libpng-1.2.12 kuru$ export CFLAGS="-O -g -isysroot /Develop…

libpngのUniversal Binaryを作成 - 途中

libpng-1.2.12のUniversal Binaryを作成する。 下記の3つの環境でlibpng-1.2.12をビルドしてみる。 Mac OS X 10.3.9 , Power Mac G3 Mac OS X 10.5.8 , iMac (Intel) Mac OS X 10.6.1 , MacBook Pro (Intel) 下記のように3つの環境でlibpng-1.2.12をビルド…