GraphicLibrary
0.5.0
|
Supersampling 用パターン [詳解]
クラス | |
struct | Pixel |
パターンの要素の型 [詳解] | |
公開メンバ関数 | |
SuperSamplingPattern (const Coord< int > &sz, int mag) | |
実際の大きさと倍率を指定して構築 [詳解] | |
void | init () |
要素を消去して初期化する [詳解] | |
void | init (int mag) |
要素を消去して初期化する(同時に倍率を変更する) [詳解] | |
virtual bool | pset (Coord< int > vc, RGB col) |
パターンへの描画 [詳解] | |
virtual Coord< int > | size () const |
疑似パターン・サイズの取得 [詳解] | |
void | put (DrawingArea_IF &draw, Coord< int > s) |
パターンの描画 [詳解] | |
![]() | |
virtual | ~DrawingArea_IF () |
仮想デストラクタ (何もしない) | |
限定公開メンバ関数 | |
bool | getPixel (Coord< int > rc, Pixel *pixel) const |
パターンのPixel値を取得する [詳解] | |
bool | add (const Coord< int > &rc, const Pixel &pixel) const |
パターンへのPixel値の加算 [詳解] | |
Supersampling 用パターン
パターンを擬似的に拡大して、その中で描画を行う。実画面にはパターンを縮小して再現する。 実際に拡大した分の要素を用意するのではなく、要素数は実画面と同数としておき、一つの要素が 複数の RGB 成分を持つものとみなす。従って、各要素は RGB 各成分の和とその個数を保持する。
以下はその利用例である。
DrawingArea_IF で用意されている仮想関数 DrawingArea_IF::point は非公開としているため、 SuperSamplingPattern インスタンスを利用して Put 等により他の描画領域に描画を行うことは できない。代わりに、専用のメンバ関数 put が用意されておりこれを利用する。
SuperSamplingPattern::SuperSamplingPattern | ( | const Coord< int > & | sz, |
int | mag | ||
) |
実際の大きさと倍率を指定して構築
各要素は Pixel のデフォルト値 ( 全要素がゼロ ) で初期化される。
パターンの大きさ sz の X, Y 座標それぞれ負数の場合はゼロで初期化される。 倍率 mag が負数の場合はゼロで初期化される。
sz | パターンの実際の大きさ |
mag | 倍率(疑似解像度との比率) |
|
protected |
パターンへのPixel値の加算
描画とは異なり、加算回数はカウントされない。誤差項を追加する場合等に利用する。 指定した座標がパターン外部の場合は処理しない。
rc | 描画する位置(実サイズ上) |
pixel | 加算するPixel値 |
|
protected |
パターンのPixel値を取得する
指定した座標がパターン外部の場合、もっとも近いピクセルのPixel値を取得する
rc | 取得する位置(実サイズ上) |
pixel | 取得したPixel値 |
|
inline |
要素を消去して初期化する
各要素は Pixel のデフォルト値 ( 全要素がゼロ ) で初期化される。
|
inline |
|
virtual |
パターンへの描画
擬似サイズ上の座標を指定することに注意。実サイズ上の座標に変換された上で、Pixel の要素に値が加算される。 倍率 mag がゼロ、指定した座標がパターン外部の場合は処理しない
vc | 描画する位置(疑似サイズ上) |
col | 描画する色コード |
DrawingArea_IFを実装しています。
void SuperSamplingPattern::put | ( | DrawingArea_IF & | draw, |
Coord< int > | s | ||
) |
パターンの描画
倍率 mag がゼロの場合は何も描画されないことに注意。
draw | 描画領域 |
s | パターンの描画開始位置 |
|
inlinevirtual |