Groupクラスの解説

<ソース解説> <目次>


クラスの説明

線とグループを所有してまとめるクラスです。 PathクラスSubGroupクラスの基本クラスです。

GroupがSubGroupを所有して、SubGroupがGroupを継承しているのでグループは入れ子にできます。

アプリケーションは普段はPathクラスの関数を使います。 曲線そのものを扱いたい場合はGroupクラスのメンバー関数を使う必要があります。


メンバー関数

Group()

説明

コンストラクタ


~Group()

説明

デストラクタ


int CurveCount() const

説明

の数を数えます。 グループ内の線は含みません。

戻り値

線の数


int SubGroupCount() const

説明

グループの数を数えます。 グループ内のグループは含みません。

戻り値

グループの数


bool IsEmpty() const

説明

線やグループを所有しているかを調べます。

戻り値

一つでも所有しているならtrue。


void Destroy()

説明

所有している線やグループを全て削除します。


int InsertKnot(INSERTKNOTMODE mode,double t,int knotIndex,int curveIndex)

説明

継ぎ目を追加します。

追加をするとそれ以降の継ぎ目の番号がずれます。

引数

mode 継ぎ目を加える方法

INSERTKNOT_STRAIGHT_JUST
直線をそのまま2つの直線に分けます。
INSERTKNOT_STRAIGHT_CURVE
直線を分ける場合に追加した継ぎ目から方向線を延ばします。

t 節を分割する場合の位置

knotIndex 継ぎ目を加える節の手前側の継ぎ目の番号

curveIndex 継ぎ目を加える線

戻り値

追加した継ぎ目の番号


int AddEndKnot(const FPoint & point,int knotIndex,int curveIndex)

説明

線の末端に継ぎ目を追加します。

追加をするとそれ以降の継ぎ目の番号がずれます。

引数

point 追加する継ぎ目の座標

knotIndex 追加する末端の継ぎ目の番号

curveIndex 追加する線

戻り値

追加した継ぎ目の番号


int KnotCount(int curveIndex) const

説明

線の継ぎ目の数を得る。

引数

curveIndex 線の番号

戻り値

継ぎ目の数


void SelectKnot(SELECTMODE mode,int knotIndex,int curveIndex)

説明

継ぎ目を選択する

引数

mode 選択方法

SELECTMODE_SINGLE
指定した継ぎ目だけ選択して他は全て解除します。
SELECTMODE_ADD
指定した継ぎ目を選択に加えます。
SELECTMODE_TOGGLE
指定した継ぎ目の選択を切り替えます。
SELECTMODE_UNSELECT
指定した継ぎ目の選択を解除します。
SELECTMODE_ALL
全ての継ぎ目を選択します。knotIndexは無視します。
SELECTMODE_UNSELECTALL
全ての継ぎ目の選択を解除します。knotIndexは無視します。

knotIndex 継ぎ目の番号

curveIndex 線の番号


bool IsSelectedKnot(int knotIndex,int curveIndex) const

説明

継ぎ目の選択状態を得る。

引数

knotIndex 継ぎ目の番号

curveIndex 線の番号

戻り値

選択しているならtrue。選択していなければfalse。


void MoveSelectedKnots(const FPoint & rel)

説明

選択されている全ての線の継ぎ目とグループを移動する。

引数

rel 相対座標


void DeleteKnot(DELETEKNOTMODE mode,int knotIndex,int curveIndex)

説明

継ぎ目を削除する

削除するとそれ以降の継ぎ目の番号がずれます。

引数

mode DELETEKNOT_JUSTを指定してください。

knotIndex 削除する継ぎ目の番号


void LinkKnot(bool isLinked,int knotIndex,int curveIndex)

説明

前後の方向線をつなげるか折る。

方向線を折ると角になります。

引数

isLinked trueならつなげます。falseなら折ります。

knotIndex 継ぎ目の番号

curveIndex 線の番号


void CurveKnot(bool isCurved,int part,int knotIndex,int curveIndex)

説明

継ぎ目から方向点を出して前後の節を曲線にするか、方向点を削除して直線にします。

実際に線を曲げるには方向点を通過点と違う場所に移動します。

方向点を削除すると方向点は通過点と同じ座標になります。

引数

isCurved trueなら方向点を出す。falseなら方向点を削除する。

part 部位

PART_FORWARDCONTROL
前方の方向点
PART_BACKCONTROL
後方の方向点
PART_CONTROL
両方の方向点

knotIndex 継ぎ目の番号

curveIndex 線の番号


bool IsCurved(int part,int knotIndex,int curveIndex) const

説明

継ぎ目から方向点が出ているかを調べます。

引数

part 部位

PART_FORWARDCONTROL
前方の方向点
PART_BACKCONTROL
後方の方向点
PART_CONTROL
どちらかの方向点が出ていればtrue

knotIndex 継ぎ目の番号

curveIndex 線の番号

戻り値

方向点が出ていればtrue。出ていなければfalse。


int SymbolizeKnotIndex(int knotIndex,int curveIndex) const

説明

継ぎ目の番号を特殊な番号に変換します。

継ぎ目を追加したり削除したりすると番号が変わってしまいますが、 特殊な番号ならいつでも線の末端などを指定できます。

引数

knotIndex 継ぎ目の番号

curveIndex 線の番号

戻り値

特殊な番号に変換できる場合は変換します。 当てはまらない場合はそのままの番号を返します。


int SelectedKnotCount() const

説明

選択されている継ぎ目の数を数えます。

戻り値

選択されている継ぎ目の数。


FPoint GetPoint(int part,int knotIndex,int curveIndex) const

説明

部位の座標を得ます。

引数

part 部位

PART_ANCHOR
通過点
PART_FORWARDCONTROL
前方の通過点
PART_BACKCONTROL
後方の通過点

戻り値

座標。


void MovePoint(const FPoint & point,int part,int knotIndex,int curveIndex)

説明

状況に合わせて部位を移動します。

通過点を移動すると方向点も動きます。

方向線が折れていない状態で、方向点を動かすと反対側の方向点も動きます。

方向点が出ていない状態で、方向点を移動すると方向点が出ます。

一つの部位の座標だけ移動したい場合はSetPointを呼んでください。

引数

point 絶対座標

part 部位

PART_ANCHOR
通過点
PART_FORWARDCONTROL
前方の方向点
PART_BACKCONTROL
後方の方向点

knotIndex 継ぎ目の番号

curveIndex 線の番号


void SetPoint(const FPoint & point,int part,int knotIndex,int curveIndex)

説明

状況に関わらず座標だけ移動します。

方向点の状態に応じて移動するにはMovePointを呼んでください。

引数

point 絶対座標

part 部位

PART_ANCHOR
通過点
PART_FORWARDCONTROL
前方の方向点
PART_BACKCONTROL
後方の方向点

knotIndex 継ぎ目の番号

curveIndex 線の番号


void MoveWControls(const FPoint & point,bool grippedForward,int knotIndex,int curveIndex)

説明

方向線を両側へ伸ばします。 通過点と両方の方向点との間隔を同じにします。

一方の方向点の座標を示すともう一方が反対側へ動きます。

引数

point 絶対座標

grippedForward pointが指している座標が前方の方向点ならtrue。後方の方向点ならfalse。

knotIndex 継ぎ目の番号

curveIndex 線の番号


int NewCurve(int curveIndex)

説明

新しい空の線を追加します。

追加した以降の線の番号がずれます。

引数

curveIndex 追加する線の手前の線の番号

戻り値

追加された線の番号


void DeleteCurve(int curveIndex)

説明

線を削除します。

削除した以降の線の番号がずれます。

線に含まれる継ぎ目も全て削除します。

引数

curveIndex 削除する線の番号


void SelectCurve(SELECTMODE selectMode,int curveIndex)

説明

線を選択するか、または選択解除します。

引数

selectMode 選択方法

SELECTMODE_SINGLE
指定した線だけ選択して他の線とグループは全て解除します。
SELECTMODE_ADD
指定した線を選択に加えます。
SELECTMODE_TOGGLE
指定した線の選択を切り替えます。
SELECTMODE_UNSELECT
指定した線の選択を解除します。
SELECTMODE_ALL
全ての線を選択します。curveIndexは無視します。
SELECTMODE_UNSELECTALL
全ての線の選択を解除します。curveIndexは無視します。

curveIndex 線の番号


bool IsSelectedCurve(int curveIndex) const

説明

線が選択されているかを得ます。

引数

curveIndex 線の番号

戻り値

選択されていればtrue。選択されていなければfalse。


void MoveCurve(const FPoint & newPoint,const FPoint & oldPoint,MOVECURVEMODE mode,int knotIndex,int curveIndex)

説明

線全体か節を移動します。

oldPointにあるものがnewPointに来るように動かします。 座標が線そのものの位置を指している必要はありません。

引数

newPoint 新しい座標

oldPoint 元の座標

mode 移動方法

MOVECURVE_ALLSELECTED
選択されている線を全て動かします。curveIndexとknotIndexは無視します。
MOVECURVE_JUST
線をそのままの形で動かします。knotIndexは無視します。
MOVECURVE_SEGMENT
節を挟む継ぎ目を動かします。

knotIndex 節の手前の継ぎ目の番号

curveIndex 線の番号


bool IsSameCurve(int indexA,int indexB) const

説明

同じ線を指す番号かを調べます。

数値として違っていても同じ線を指している場合もあります。

引数

indexA 線の番号

indexB 線の番号

戻り値

同じならtrue。別ならfalse。


bool IsClosedCurve(int curveIndex) const

説明

線が閉じているかを調べます。

引数

curveIndex 線の番号

戻り値

閉じていればtrue。開いていればfalse。


void CloseCurve(bool isClosed,int curveIndex)

説明

の末端同士をつなげて線を閉じます。

BZPathの線の表現では、最初の最後の通過点は同じ位置にある必要はありませんし、 同じ位置にあるとダブります。

引数

isClosed 閉じるならtrue。開くならfalse。

curveIndex 線の番号


int SelectedCurveCount() const

説明

選択している線の数を数えます。

戻り値

選択している線の数。


void SelectSubGroup(SELECTMODE mode,int subGroupIndex)

説明

グループを選択または選択解除します。

引数

selectMode 選択方法

SELECTMODE_SINGLE
指定したグループだけ選択して他の線とグループは全て解除します。
SELECTMODE_ADD
指定したグループを選択に加えます。
SELECTMODE_TOGGLE
指定したグループの選択を切り替えます。
SELECTMODE_UNSELECT
指定したグループの選択を解除します。
SELECTMODE_ALL
全てのグループを選択します。subGroupIndexは無視します。
SELECTMODE_UNSELECTALL
全てのグループの選択を解除します。subGroupIndexは無視します。

subGroupIndex グループの番号


bool IsSelectedSubGroup(int subGroupIndex) const

説明

グループが選択されているかを調べる。

引数

subGroupIndex グループの番号

戻り値

選択されていればtrue。選択されていなければfalse。


void DeleteSubGroup(int subGroupIndex)

説明

void AddSubGroup(SubGroup *subGroup); void ReleaseSubGroup(int subGroupIndex); SubGroup *GetSubGroup(int index); void MoveSelectedSubGroups(const FPoint & rel); int SelectedSubGroupCount() const; void ExtractCurve(CurvePointers *curvePtrs,int part) const; void PutInGroup(); void Ungroup(); const SubGroup *GetSubGroup(int index) const; void GetOuterRectGroup(FRect *rect,int part,double precision) const; void Transform(const TRANSFORM & transform); void CutCurvePoint(double t,int knotIndex,int curveIndex); void CutCurveSegment(int knotIndex,int curveIndex);

void SetBoundRect(const RECT& rect)

説明

パスの実座標を設定します。 Pathオブジェクトを作成したら必ず設定してください。

パスはこの範囲内からはみだすこともできます。

ここで設定した座標はパスを変形するときなどに使われます。 表示のための座標変換にはGraphオブジェクトに設定された座標が使われます。 同じ座標を設定してください。 違う座標を設定した場合の動作は未定です。

引数

rect 実座標を表す矩形


void GetBoundRect(RECT *rect)

説明

以前に設定したパスの実座標を得ます。

引数

rect 実座標を返す矩形のポインタ


void SelectAll(bool isSelected)

説明

パスの全ての線とグループを選択・選択解除します。

引数

isSelected trueなら選択する。falseなら選択を解除する。


void GetOuterRect(RECT *rect,int part,double precision=1.0)

説明

パスが収まる最小の矩形を得ます。

引数

rect 矩形のポインタ

part 対象になる部位。以下を組み合わせます。

PART_SUBGROUP
グループの線を含める
PART_CURVE
線を含める
PART_KNOT
継ぎ目の通過点と方向点を含める
PART_SELECTED
選択している線かグループのみ
PART_UNSELECTED
選択していない線かグループのみ

precision 許容する誤差
正確な値を出そうとすると無限ループに入るかも知れないので、 見切りをつける許容範囲を指定します。 0より大きい数で無いといけません。


void Move(double x,double y)

説明

パス全体の平行移動をします。

引数

x 右に移動する量

y 下に移動する量


void HReverse()

説明

パス全体の左右反転をします。 SetBoundRectで設定した矩形を外枠とみなします。


void VReverse()

説明

パス全体の上下反転をします。 SetBoundRectで設定した矩形を外枠とみなします。


<頁の先頭> <ソース解説> <目次>