RubyCocoa の構造体クラスを使いやすくした
いままで、RubyCocoa で Cocoa の構造体クラス (NSRect、NSPoint、NSSize、NSRange) を使うときに、
a = NSRect.new b = NSRect.new if NSIntersectsRect(a, b) # 矩形が交差してる場合 end
のように書いていたが、これでは使いづらいので、
a.intersect?(b)
みたいに書けるようにした。(r2002)
追加したメソッドは、以下の通り。
NSRect
center | 矩形の中央の点を返す |
---|---|
contain?(rect or point) | rect か point が矩形に含まれるなら true |
empty? | 矩形のサイズが 0 なら true |
inflate(dx, dy) | X方向に dx、Y方向に dy だけ矩形を拡張 |
inset(dx, dy) | X方向に dx、Y方向に dy だけ矩形を縮める |
integral | float の座標と大きさを int に丸める |
intersect?(rect) | 矩形が rect と交差していれば true |
intersection(rect) | 矩形と rect の交差矩形を返す |
offset(dx, dy) | 矩形の位置を X方向に dx、Y方向に dy だけずらす |
union(rect) | 矩形と rect の包含矩形を返す |
NSPoint
in?(rect) / inRect?(rect) | 点が rect に含まれるなら true |
---|
NSRange
contain?(range or location) | range か location が範囲に含まれるなら true |
---|---|
empty? | 範囲の長さが 0 なら true |
intersect?(range) | 範囲と range が重なる部分があれば true |
intersection(range) | 範囲と range の交差領域を返す |
union(range) | 範囲と range の包含領域を返す |
他にも、
p NSRect.new(150, 150, 100, 100) #<OSX::NSRect:0x62218c> p NSPoint.new(200, 200) #<OSX::NSPoint:0x6285a0> p NSSize.new(150, 300) #<OSX::NSSize:0x62c9d4> p NSRange.new(10, 8) #<OSX::NSRange:0x62bef8>
と表示されていたのを、
#<OSX::NSRect x=150.0, y=150.0, width=100.0, height=100.0> #<OSX::NSPoint x=200.0, y=200.0> #<OSX::NSSize width=150.0, height=300.0> #<OSX::NSRange location=10, length=8>
のように、きちんと内部の状態を出力するようにした。(r2003)
細かいことだけど、これでだいぶデバッグがやりやすくなると思う。