Cocoaはやっぱり!
NSRectを調べる
NSRect...それは矩形
今回のテーマ

先程登場したNSRectについてどんな関数があるのかをここで勉強しておくことにします。一気に全部覚える必要はありませんので、必要になった時にここのページを参照していただければよいかと思います。

難しいものはありませんので、ざっと目を通してどんな機能があるのかを知っておきましょう。

推奨環境 この解説は、以下の環境を前提に作成し、動作確認等を行っています。ご確認ください。

改版履歴

定義
NSRect : 矩形位置情報
typedef struct _NSRect { NSPoint origin; // 左下の位置 NSSize size; // 幅と高さ } NSRect;
NSRectの生成に関するもの
NSRectを生成する
書式 : NSRect NSMakeRect( float x, float y, float w, float h ) 入力 : x - 矩形の左端の座標    : y - 矩形の下端の座標    : w - 矩形の幅    : h - 矩形の高さ 出力 : RETURN - 矩形
文字列からNSRectを生成する
書式 : NSRect NSRectFromString( NSString *aString ) 入力 : aString - 文字列のフォーマット : "{{x, y}, {h, w}}" 出力 : RETURN - 矩形
NSRectから文字列を生成する
書式 : NSString *NSStringFromRect( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 矩形を表す文字列 : "{{x, y}, {h, w}}"
NSRectの情報を取得するもの
NSRectの幅を取得
書式 : float NSWidth( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 矩形の幅
NSRectの高さを取得
書式 : float NSHeight( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 矩形の高さ
NSRectの左端のX座標を取得
書式 : float NSMinX( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 左端のX座標
NSRectの中心のX座標を取得
書式 : float NSMidX( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 中心のX座標
NSRectの右端のX座標を取得
書式 : float NSMaxX( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 右端のX座標
NSRectの下端のY座標を取得
書式 : float NSMinY( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 下端のY座標
NSRectの中心のY座標を取得
書式 : float NSMidY( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 下端のY座標
NSRectの上端のY座標を取得
書式 : float NSMaxY( NSRect aRect ) 入力 : aRect - 矩形 出力 : RETURN - 上端のY座標

注:Cocoaは、左下原点で上向きにY座標がデフォルトですが、図は下向きY座標になってます。いつか修正します。

NSRectの演算を行うもの
NSRectを平行移動する
書式 : NSRect NSOffsetRect( NSRect aRect, float dX, float dY ) 入力 : aRect - 矩形    : dX - X座標方向の移動量    : dY - Y座標方向の移動量 出力 : RETURN - 移動後の矩形
NSRectを指定サイズ小さくする
書式 : NSRect NSInsetRect( NSRect aRect, float dX, float dY ) 入力 : aRect - 矩形    : dX - X座標方向の縮小量    : dY - Y座標方向の縮小量 出力 : RETURN - 縮小後の矩形
2つのNSRectの共通部分を求める
書式 : NSRect NSIntersectionRect( NSRect aRect, NSRect bRect ) 入力 : aRect - 矩形    : bRect - 矩形 出力 : RETURN - aRectとbRectの共通部分の矩形、共通部分が無いときはNSZeroRect(0,0,0,0)が返る。
2つのNSRectを含む最小のNSRectを求める
書式 : NSRect NSUnionRect( NSRect aRect, NSRect bRect ) 入力 : aRect - 矩形    : bRect - 矩形 出力 : RETURN - aRectとbRectを含む最小の矩形、共通部分が無いときはNSZeroRect(0,0,0,0)が返る。
NSRectの判定を行うもの
NSRectが空かどうかを判定
書式 : BOOL NSIsEmptyRect(NSRect aRect) 入力 : aRect - 矩形 出力 : RETURN - 高さと幅のどちらかが0以下のときYES。それ以外はNO。
2つのNSRectが同じであるかを判定
書式 : BOOL NSEqualRects( NSRect aRect, NSRect bRect ) 入力 : aRect - 矩形 出力 : RETURN - 同じならYES。それ以外はNO。
NSPointがNSRectを含んでいるかを判定
書式 : BOOL NSPointInRect( NSPoint aPoint, NSRect aRect ) 入力 : aPoint - 位置    : aRect - 矩形 出力 : RETURN - aRectがaPointを含んでいればYES。それ以外はNO。
aRectが完全にbRectを含んでいるかを判定
書式 : BOOL NSContainsRect( NSRect aRect, NSRect bRect ) 入力 : aRect - 矩形    : bRect - 矩形 出力 : RETURN - aRectが完全にbRectを含んでいればYES。それ以外はNO。
2つのNSRectに共通部分があるかを判定
書式 : BOOL NSIntersectsRect( NSRect aRect, NSRect bRect ) 入力 : aRect - 矩形    : bRect - 矩形 出力 : RETURN - 2つのNSRectに共通部分があればYES。それ以外はNO。