ビルドして実行。#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
int main( int argc, char** argv ) {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];[[NSScreen screens] enumerateObjectsUsingBlock:^(NSScreen *screen, NSUInteger idx, BOOL *stop) {NSLog(@"%lu - backingScaleFactor:%lf", idx, [screen backingScaleFactor]);}];[pool release];return 0;
}
$ gcc -Wall -std=c99 main.m -o ScaleFactors -framework Foundation -framework AppKit$ ./ScaleFactors2015-08-23 16:47:08.594 ScaleFactors[16437:1688844] 0 - backingScaleFactor:2.0000002015-08-23 16:47:08.595 ScaleFactors[16437:1688844] 1 - backingScaleFactor:1.000000
スクリーン0はMacBookPro Retinaモデルのディスプレイ、スクリーン1はUSBディスプレイです。
スクリーン0のbackingScaleFactorが2でHiDPIになっていることが確認できます。
システム環境設定のディスプレイ設定で"スペースを拡大"ってありますよね。
この設定だとHiDPIが無効になるのか確認したかったんですが、
どうやら有効のままのようでした。
なお、SwitchResXでHiDPIになってない項目を選ぶと、期待通りbackingScaleFactorが1になります。
参考: NSScreen Class Reference
参考: SwitchResX - The Most Versatile Tool For Controlling Screen Resolutions On Your Mac