クラス fk_Image

画像を生成、管理するクラス [詳細]

fk_Imageに対する継承グラフ
Inheritance graph
[凡例]
fk_Imageのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 fk_Image (int w=0, int h=0)
 コンストラクタ
 ~fk_Image ()
 デストラクタ
 fk_Image (const fk_Image &)
 コピーコンストラクタ
void init ()
 初期化関数
bool readBMP (const std::string fileName)
 BMP ファイル入力関数.
bool readBMPData (fk_ImType *buf)
 BMP バッファ入力関数.
bool readPNG (const std::string fileName)
 PNG ファイル入力関数.
bool readPNGData (fk_ImType *buf)
 PNG データ入力用関数.
bool readJPG (const std::string fileName)
 JPEG ファイル入力関数.
bool writeBMP (const std::string fileName, const bool transFlg=false)
 BMP ファイル出力関数.
bool writePNG (const std::string fileName, const bool transFlg=true)
 PNG ファイル出力関数.
bool writeJPG (const std::string fileName, int quality=80)
 JPEG ファイル出力関数.
void newImage (int w, int h, bool initFlg=true)
 画像領域生成関数
void copyImage (const fk_Image *image)
 画像データコピー関数1
void copyImage (const fk_Image *image, int x, int y)
 画像データコピー関数2
bool subImage (const fk_Image *image, int x, int y, int w, int h)
 画像データ部分抽出関数
int getWidth (void) const
 画像横幅取得関数
int getHeight (void) const
 画像縦幅取得関数
const fk_DimensiongetImageSize (void)
 画像サイズ取得関数
const fk_DimensiongetBufferSize (void)
 画像バッファサイズ取得関数
int getR (int x, int y) const
 ピクセルR要素取得関数
int getG (int x, int y) const
 ピクセルG要素取得関数
int getB (int x, int y) const
 ピクセルB要素取得関数
int getA (int x, int y) const
 ピクセルA要素取得関数
fk_Color getColor (int x, int y) const
 ピクセル色要素取得関数
bool setRGBA (int x, int y, int r, int g, int b, int a)
 ピクセル RGBA 値設定関数
bool setRGB (int x, int y, int r, int g, int b)
 ピクセル RGB 値設定関数
bool setR (int x, int y, int r)
 ピクセル R 値設定関数
bool setG (int x, int y, int g)
 ピクセル G 値設定関数
bool setB (int x, int y, int b)
 ピクセル B 値設定関数
bool setA (int x, int y, int a)
 ピクセル A 値設定関数
bool setColor (int x, int y, const fk_Color &col)
 ピクセル色値設定関数
void fillColor (const fk_Color &col)
 バッファ全体初期化関数1
void fillColor (int r, int g, int b, int a=0)
 バッファ全体初期化関数2
const fk_ImType * getBufPointer (void) const
 画像データ配列先頭アドレス取得関数

説明

画像を生成、管理するクラス

このクラスは、画像データを制御する機能を提供します。 主な利用用途はテクスチャ画像の管理ですが、 画像処理のための基本的な機能を保持しています。 画像データは RGBA 形式で保存されます。 各要素は整数値で最小値は 0、最大値は 255 です。 透過色要素は 0 が完全な不透明、255 が完全な透明を表します。 現バージョンのピクセルサイズの最大値は縦幅横幅共に 65536 までです。

実際の画像サイズと、格納するデータについての関係は getBufferSize() 関数の覚え書きを参照して下さい。

参照:
fk_Rect, fk_Dimension, fk_Texture

コンストラクタとデストラクタ

fk_Image::fk_Image ( int  w = 0,
int  h = 0 
)

コンストラクタ

引数:
[in] w 画像の横幅
[in] h 画像の縦幅
fk_Image::~fk_Image (  ) 

デストラクタ

fk_Image::fk_Image ( const fk_Image  ) 

コピーコンストラクタ


関数

void fk_Image::init (  ) 

初期化関数

画像データを初期化します。 画像サイズも (0, 0) となります。

bool fk_Image::readBMP ( const std::string  fileName  ) 

BMP ファイル入力関数.

BMP (Windows Bitmap) 形式のファイルからデータを読み込みます。

引数:
[in] fileName ファイル名
戻り値:
入力に成功すれば true、失敗すれば false を返します。
bool fk_Image::readBMPData ( fk_ImType *  buf  ) 

BMP バッファ入力関数.

BMP (Windows Bitmap) 形式のバッファからデータを読み込みます。 fk_ImType 型は、OpenGL をサポートしている環境においては GLubyte、 サポートしていない環境では unsigned char 型として定義されています。

引数:
[in] buf データバッファ
戻り値:
入力に成功すれば true、失敗すれば false を返します。
bool fk_Image::readPNG ( const std::string  fileName  ) 

PNG ファイル入力関数.

PNG 形式のファイルからデータを読み込みます。

引数:
[in] fileName ファイル名
戻り値:
入力に成功すれば true、失敗すれば false を返します。
bool fk_Image::readPNGData ( fk_ImType *  buf  ) 

PNG データ入力用関数.

PNG 形式のバッファからデータを読み込みます。 fk_ImType 型は、OpenGL をサポートしている環境においては GLubyte、 サポートしていない環境では unsigned char 型として定義されています。

引数:
[in] buf データバッファ
戻り値:
入力に成功すれば true、失敗すれば false を返します。
bool fk_Image::readJPG ( const std::string  fileName  ) 

JPEG ファイル入力関数.

JPEG 形式のファイルからデータを読み込みます。

引数:
[in] fileName ファイル名
戻り値:
入力に成功すれば true、失敗すれば false を返します。
bool fk_Image::writeBMP ( const std::string  fileName,
const bool  transFlg = false 
)

BMP ファイル出力関数.

画像データを BMP (Windows Bitmap) 形式でファイルに保存します。

引数:
[in] fileName ファイル名
[in] transFlg true の場合、透過色要素をファイル中に書き出します。 透過色要素は本来 BMP 形式では標準でサポートされておらず、 FK によって利用する画像ファイルの独自拡張となっています。 ただし、透過色要素を埋め込んだ画像ファイルは一般のアプリケーションでも (透過色が追加されていないデータとして)読み込むことは可能です。 false の場合は、データ中の透過色要素をファイルには出力しません。
戻り値:
書き出しに成功すれば true、失敗すれば false を返します。
bool fk_Image::writePNG ( const std::string  fileName,
const bool  transFlg = true 
)

PNG ファイル出力関数.

画像データを PNG 形式でファイルに保存します。

引数:
[in] fileName ファイル名
[in] transFlg true の場合、透過色要素をファイル中に書き出します。 false の場合は、データ中の透過色要素をファイルには出力しません。
戻り値:
書き出しに成功すれば true、失敗すれば false を返します。
bool fk_Image::writeJPG ( const std::string  fileName,
int  quality = 80 
)

JPEG ファイル出力関数.

画像データを JPEG 形式でファイルに保存します。 なお、JPEG 形式は透過がサポートされていないので、 画像中に透過色データを出力することはできません。

引数:
[in] fileName ファイル名
[in] quality 画像の品質を設定します。 品質が高いほどファイルのサイズは大きくなります。 100 が最高品質、0 が最低品質となります。範囲外の数値が入力された場合、 上下限に丸められます。
戻り値:
書き出しに成功すれば true、失敗すれば false を返します。
void fk_Image::newImage ( int  w,
int  h,
bool  initFlg = true 
)

画像領域生成関数

画像データを与えられたサイズに従って生成します。

引数:
[in] w 画像の横幅
[in] h 画像の縦幅
[in] initFlg true の場合は、 データ全体を (0, 0, 0, 0) で初期化します。 false の場合は初期化を行いませんが、 その場合でも横幅が変更されたときは 各ピクセルの縦横関係が崩れてしまう可能性があります。
void fk_Image::copyImage ( const fk_Image image  ) 

画像データコピー関数1

画像データを別インスタンスからコピーします。 この引数形式の場合、画像サイズは元画像データと同一となります。

引数:
[in] image 元画像データのアドレス
void fk_Image::copyImage ( const fk_Image image,
int  x,
int  y 
)

画像データコピー関数2

画像データの部分矩形領域を、別インスタンスの画像データ内容に書き換えます。 この引数形式では、画像中の一部分となる任意領域を書き換えることが可能ですが、 コピー元となる画像全体がコピー先の中に完全に収まるような配置である必要があります。 この条件を満たさなかった場合は、データの書き換えを行いません。 配置の際の座標系は fk_Rect の座標系に従います。

引数:
[in] image 元画像データのアドレス
[in] x 書き換え領域左上の x 座標
[in] y 書き換え領域左上の y 座標
bool fk_Image::subImage ( const fk_Image image,
int  x,
int  y,
int  w,
int  h 
)

画像データ部分抽出関数

別インスタンス中にある画像データの部分矩形領域をコピーします。 指定した矩形領域は全て元画像内に収まっている必要があります。 領域の座標系は fk_Rect の座標系に従います。

引数:
[in] image 元画像データのアドレス
[in] x 抽出矩形領域左上の x 座標
[in] y 抽出矩形領域左上の y 座標
[in] w 抽出矩形領域の横幅
[in] h 抽出矩形領域の縦幅
int fk_Image::getWidth ( void   )  const

画像横幅取得関数

戻り値:
横幅
int fk_Image::getHeight ( void   )  const

画像縦幅取得関数

戻り値:
縦幅
const fk_Dimension* fk_Image::getImageSize ( void   ) 

画像サイズ取得関数

戻り値:
画像サイズのポインタ
const fk_Dimension* fk_Image::getBufferSize ( void   ) 

画像バッファサイズ取得関数

fk_Image では、本来の画像サイズに対し、 格納するデータ領域はより大きなものとなっています。 この関数は、実際に確保しているデータ領域の大きさを fk_Dimension 型で返すものです。

覚え書き:
fk_Image のデータ格納がこのような仕様になっている理由は、 古い OpenGL の仕様に基づきます。 ver 2.0 以前の OpenGL では、 テクスチャ画像として与えられるデータ領域について、 横幅と縦幅は $ 2^n $ で表される 整数値でなければならないという制約がありました。 (縦幅と横幅は同一である必要はありません。) また、OpenGL の 2.0 以降をサポートしたハードウェアであっても、 $ 2^n $ 以外の幅であった場合に 描画速度が著しく低下する場合があるという報告もあります。 このような理由から、 fk_Image では内部データで幅を $ 2^n $ となるように補正しています。
戻り値:
データサイズのポインタ
int fk_Image::getR ( int  x,
int  y 
) const

ピクセルR要素取得関数

ピクセルのR(赤)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
戻り値:
ピクセルのR(赤)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int fk_Image::getG ( int  x,
int  y 
) const

ピクセルG要素取得関数

ピクセルのG(緑)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
戻り値:
ピクセルのG(緑)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int fk_Image::getB ( int  x,
int  y 
) const

ピクセルB要素取得関数

ピクセルのB(青)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
戻り値:
ピクセルのB(青)要素値。 指定した座標が画像内にない場合は、-1 を返します。
int fk_Image::getA ( int  x,
int  y 
) const

ピクセルA要素取得関数

ピクセルのA(透過度)要素値を取得します。 座標系は fk_Rect の座標系に従います。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
戻り値:
ピクセルのA(透過度)要素値。 指定した座標が画像内にない場合は、-1 を返します。
fk_Color fk_Image::getColor ( int  x,
int  y 
) const

ピクセル色要素取得関数

ピクセルの色要素値を fk_Color 型で取得します。 座標系は fk_Rect の座標系に従います。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
戻り値:
ピクセルの色要素値。 指定した座標が画像内にない場合は、(0, 0, 0, 1) の値を返します。
bool fk_Image::setRGBA ( int  x,
int  y,
int  r,
int  g,
int  b,
int  a 
)

ピクセル RGBA 値設定関数

ピクセルの RGBA 各色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] r R(赤)要素値
[in] g G(赤)要素値
[in] b B(赤)要素値
[in] a A(赤)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setRGB ( int  x,
int  y,
int  r,
int  g,
int  b 
)

ピクセル RGB 値設定関数

ピクセルの RGB 各色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] r R(赤)要素値
[in] g G(赤)要素値
[in] b B(赤)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setR ( int  x,
int  y,
int  r 
)

ピクセル R 値設定関数

ピクセルの R 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] r R(赤)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setG ( int  x,
int  y,
int  g 
)

ピクセル G 値設定関数

ピクセルの G 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] g G(緑)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setB ( int  x,
int  y,
int  b 
)

ピクセル B 値設定関数

ピクセルの B 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] b B(青)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setA ( int  x,
int  y,
int  a 
)

ピクセル A 値設定関数

ピクセルの A 色要素を設定します。 座標系は fk_Rect の座標系に従います。 値が 0 から 255 の範囲内になかった場合は、 上下限それぞれに丸められます。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] a A(透過度)要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。 値の丸めが入った場合については、失敗とはみなしません。
bool fk_Image::setColor ( int  x,
int  y,
const fk_Color col 
)

ピクセル色値設定関数

ピクセルの色要素を fk_Color 型で設定します。 座標系は fk_Rect の座標系に従います。 座標が画像内になかった場合は、画像情報を変更しません。

引数:
[in] x ピクセルの x 座標
[in] y ピクセルの y 座標
[in] col 色要素値
戻り値:
更新に成功した場合 true を、失敗した場合 false を返します。
void fk_Image::fillColor ( const fk_Color col  ) 

バッファ全体初期化関数1

画像データ内の全てのピクセルを同一色で初期化します。 初期化の際には、実際の表示領域ではない部分についても更新を行います。 格納データについては getBufferSize() の覚え書きを参照して下さい。

引数:
[in] col 色要素値
void fk_Image::fillColor ( int  r,
int  g,
int  b,
int  a = 0 
)

バッファ全体初期化関数2

画像データ内の全てのピクセルを同一色で初期化します。 初期化の際には、実際の表示領域ではない部分についても更新を行います。 格納データについては getBufferSize() の覚え書きを参照して下さい。

引数:
[in] r R(赤)要素値
[in] g G(赤)要素値
[in] b B(赤)要素値
[in] a A(赤)要素値
const fk_ImType* fk_Image::getBufPointer ( void   )  const

画像データ配列先頭アドレス取得関数

画像データを実際に格納しているデータ配列の先頭アドレスを参照します。

警告:
この関数は fk_Image の内部構造に強く依存します。 内部構造は今後の更新で変更される可能性があるため、 本関数を用いた場合は後方互換性が保証できません。 また、この関数を用いて得た内部データを更新した場合、 システム全体の整合性が維持できなくなる可能性があります。 上記の2点の理由から、この関数の利用は推奨しません。
戻り値:
画像データ配列の先頭アドレス
FineKernelToolKitに対してFri Apr 23 16:38:40 2010に生成されました。  doxygen 1.6.3