前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

9.5. 図形クラスの詳細な機能

9.5.1. SFXRectangle の詳細

SFXRectangle には比較、判定、各種演算のためのメンバ関数が存在します。

SFXRectangle rectangle1(10, 20, 30, 40);
SFXRectangle rectangle2(20, 10, 30, 40);
SFXRectangle rectangle3;

// 比較
if (rectangle1 == rectangle2) {
    // rectangle1 と rectangle2 が長方形として等しい(重なる)なら
}

// 長方形が有効かどうか
if (rectangle1.IsEmpty()) { 
    // 幅が 0 以下、または高さが 0 以下なら
}

// 長方形の包含関係
if (rectangle1.IsInsideOf(rectangle2)) {
    // rectangle1 が rectangle2 に含まれるなら
}

// 2つの長方形の重なった部分を取得
rectangle3 = rectangle1.Intersection(rectangle2);

// 長方形の重なり判定
if (rectangle1.IntersectsWith(rectangle2)) {
    // 2つの長方形の重なった部分が存在するなら
}

// 2つの長方形を含む長方形を取得
rectangle3 = rectangle1.Union(rectangle2);

// 2つの長方形を含む長方形が存在するか判定
if (rectangle1.UnifiesWith(rectangle2)) {
    // 2つの長方形を含む長方形が存在するなら
}

// 幅と高さが負の場合は正にする
rectangle1.Normalize();

9.5.2. const 図形

図形クラスの定数オブジェクト生成時にはコンストラクタが呼び出され、わずかながらオーバーヘッドが生じます。

SFXRectangleConst rectangle(10, 20, 30, 40); // rectangle は定数。コンストラクタが呼び出される。
SFXLineConst line(50, 60, 70, 80); // line は定数。コンストラクタが呼び出される。

graphics->DrawRectangle(rectangle);

graphics->DrawLine(line);

AtomRec 構造体を用いて定数オブジェクトを生成すると、このオーバーヘッドがなくなります。

// rectangle は定数。コンストラクタは呼び出されない。
static SFXRectangle::AtomRecConst rectangle = {
    10, 20, 30, 40
};

// line は定数。コンストラクタは呼び出されない。
static SFXLine::AtomRecConst line = {
    50, 60, 70, 80
};

graphics->DrawRectangle(rectangle);

graphics->DrawLine(line);