GraphicLibrary
0.5.0
|
矩形パターンを画像に描画するルーチン群 [詳解]
関数 | |
void | Put (const DrawingArea_IF &pattern, DrawingArea_IF &draw, GPixelDraw &pixelDraw, Coord< int > s, bool reverseX, bool reverseY, bool swapXY) |
パターンの描画 [詳解] | |
void | ResizePut (const DrawingArea_IF &pattern, DrawingArea_IF &draw, GPixelDraw &pixelDraw, Coord< int > s, Coord< int > e, bool reverseX, bool reverseY, bool swapXY, const GInterpolation_IF &ipF) |
パターンの拡大・縮小描画 [詳解] | |
void | TransPut (const DrawingArea_IF &pattern, DrawingArea_IF &draw, GPixelDraw &pixelDraw, Coord< int > lu, Coord< int > ru, Coord< int > rd, Coord< int > ld, const GInterpolation_IF &ipF, bool priorFirst) |
パターンの自由変形 [詳解] | |
void | RotPut (const DrawingArea_IF &pattern, DrawingArea_IF &draw, GPixelDraw &pixelDraw, Coord< int > o, double r, const GInterpolation_IF &ipF, double scale=1) |
パターンの回転描画 [詳解] | |
矩形パターンを画像に描画するルーチン群
void GPatternOp::Put | ( | const DrawingArea_IF & | pattern, |
DrawingArea_IF & | draw, | ||
GPixelDraw & | pixelDraw, | ||
Coord< int > | s, | ||
bool | reverseX, | ||
bool | reverseY, | ||
bool | swapXY | ||
) |
パターンの描画
reverseX, reverseY, swapXY はパターンの向きを変えたり反転させる場合に利用できる。 全て false なら通常の描画になる。その他、よく利用する例は
など。swapXY は、描画する座標を単純に ( x, y ) から ( y, x ) にするだけなので、これだけでは回転処理にならないことに注意。 また、swapXY が true の場合、reverseX は垂直方向、reverseY は水平方向に適用される。
パターン pattern、描画領域 draw のいずれかが未定義の場合は assert を実行する。
パターン pattern と描画領域 draw が等しい場合、処理は行わないことに注意。
pattern | 描画するパターン |
draw | パターンを描画する領域 |
pixelDraw | ピクセル描画用関数オブジェクト |
s | パターンの描画開始位置 |
reverseX | X 方向の描画を反転させるか |
reverseY | Y 方向の描画を反転させるか |
swapXY | X,Y の描画を反転させるか |
void GPatternOp::ResizePut | ( | const DrawingArea_IF & | pattern, |
DrawingArea_IF & | draw, | ||
GPixelDraw & | pixelDraw, | ||
Coord< int > | s, | ||
Coord< int > | e, | ||
bool | reverseX, | ||
bool | reverseY, | ||
bool | swapXY, | ||
const GInterpolation_IF & | ipF | ||
) |
パターンの拡大・縮小描画
reverseX, reverseY, swapXY はパターンの向きを変えたり反転させる場合に利用できる。 全て false なら通常の描画になる。その他、よく利用する例は
など。swapXY は、描画する座標を単純に ( x, y ) から ( y, x ) にするだけなので、これだけでは回転処理にならないことに注意。 また、swapXY が true の場合、reverseX は垂直方向、reverseY は水平方向に適用される。
ipF はサンプル補間用の関数オブジェクト GInterpolation_IF を指定するために利用する。例えば
によって「最近傍法 (Nearest Neighbour)」によるサンプル補間が行われる。
パターン pattern、描画領域 draw のいずれかが未定義の場合は assert を実行する。
パターン pattern と描画領域 draw が等しい場合、処理は行わないことに注意。
pattern | 描画するパターン |
draw | パターンを描画する領域 |
pixelDraw | ピクセル描画用関数オブジェクト |
s,e | パターンの描画開始・終了位置 |
reverseX | X 方向の描画を反転させるか |
reverseY | Y 方向の描画を反転させるか |
swapXY | X,Y の描画を反転させるか |
ipF | サンプル補間用関数オブジェクト |
void GPatternOp::RotPut | ( | const DrawingArea_IF & | pattern, |
DrawingArea_IF & | draw, | ||
GPixelDraw & | pixelDraw, | ||
Coord< int > | o, | ||
double | r, | ||
const GInterpolation_IF & | ipF, | ||
double | scale = 1 |
||
) |
パターンの回転描画
ipF はサンプル補間用の関数オブジェクト GInterpolation_IF を指定するために利用する。例えば
によって「最近傍法 (Nearest Neighbour)」によるサンプル補間が行われる。
パターン pattern、描画領域 draw のいずれかが未定義の場合は assert を実行する。
パターン pattern と描画領域 draw が等しい場合、処理は行わないことに注意。
pattern | 描画するパターン |
draw | 描画領域 |
pixelDraw | ピクセル描画用関数オブジェクト |
o | パターンの中心位置 |
r | 回転角度 |
ipF | サンプル補間用関数オブジェクト |
scale | 拡大・縮小率 |
void GPatternOp::TransPut | ( | const DrawingArea_IF & | pattern, |
DrawingArea_IF & | draw, | ||
GPixelDraw & | pixelDraw, | ||
Coord< int > | lu, | ||
Coord< int > | ru, | ||
Coord< int > | rd, | ||
Coord< int > | ld, | ||
const GInterpolation_IF & | ipF, | ||
bool | priorFirst | ||
) |
パターンの自由変形
処理の性格上、一つのピクセルを複数回描画する場合がある。priorFirst を true にすると最初に描画されたときの色が優先される。 描画はパターンの上側から順に行われるので、重なった部分は priorFirst が true なら先に描画される上側の方が、false なら 後で描画される下側の方が残ることになる。 priorFirst を true にした場合、内部で座標をキャッシュするため処理速度は落ちることになるが、点描画のコストが高い場合は 重複した描画がなくなる分、逆に早く描画できるようになる。
ipF はサンプル補間用の関数オブジェクト GInterpolation_IF を指定するために利用する。例えば
によって「最近傍法 (Nearest Neighbour)」によるサンプル補間が行われる。
パターン pattern、描画領域 draw のいずれかが未定義の場合は assert を実行する。
パターン pattern と描画領域 draw が等しい場合、処理は行わないことに注意。
pattern | 描画するパターン |
draw | 描画領域 |
pixelDraw | ピクセル描画用関数オブジェクト |
lu,ru,rd,ld | 変形後の各頂点(パターンの左上・右上・右下・左下にそれぞれ対応) |
ipF | サンプル補間用関数オブジェクト |
priorFirst | 先に描画されたときの色を優先するなら true |