C++ では、「ファンクタ」と呼ばれる方法(通常「()」オペレーターを使う)で、クラスに対しての操作を一般化できる。
//-----------------------------------------------------------------//
/*!
@brief 描画ファンクタ
@param[in] x X 座標
@param[in] y Y 座標
@param[in] r R カラー
@param[in] g G カラー
@param[in] b B カラー
*/
//-----------------------------------------------------------------//
void operator() (int16_t x, int16_t y, uint8_t r, uint8_t g, uint8_t b) noexcept
{
・・・
}
まず、plot_ クラスに対して、スケールを設定する。
※スケールは、「整数比」で設定する。
※画像全体を収める為、縦か横で長い方を基準にする。
auto n = std::max(ifo.width, ifo.height);
plot_.set_scale(272, n);
jpeg_ クラス内から、plot_ クラスに対して、以下のように普通に描画すれば、設定された拡大、縮小比で描画される。
※ワークメモリを使わないのと引き換えに、描画する領域は、あらかじめ「0」クリアしておく必要がある。
plot_(x, y, r, g, b);
また、描画時にオフセットを与えられるようにしてある。
plot_.set_offset(vtx::spos(480 - 272, 0));