FineKernelToolKit  2.9.0
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Public メソッド | すべてのメンバ一覧
クラス fk_Image

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

+ fk_Imageに対する継承グラフ
+ fk_Imageのコラボレーション図

Public メソッド

 fk_Image (int w=0, int h=0)
 コンストラクタ [詳細]
 
virtual ~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
 画像データ配列先頭アドレス取得関数 [詳細]
 
- Public メソッド inherited from fk_BaseObject
 fk_BaseObject (fk_ObjectType type=FK_BASEOBJECT)
 コンストラクタ [詳細]
 
fk_ObjectType getObjectType (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画像の縦幅
virtual fk_Image::~fk_Image ( )
virtual

デストラクタ

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

PNG ファイル出力関数

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

引数
[in]fileNameファイル名
[in]transFlgtrue の場合、透過色要素をファイル中に書き出します。 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]initFlgtrue の場合は、 データ全体を (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]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
[in]aA(赤)要素値
戻り値
更新に成功した場合 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]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
戻り値
更新に成功した場合 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]rR(赤)要素値
戻り値
更新に成功した場合 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]gG(緑)要素値
戻り値
更新に成功した場合 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]bB(青)要素値
戻り値
更新に成功した場合 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]aA(透過度)要素値
戻り値
更新に成功した場合 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]rR(赤)要素値
[in]gG(赤)要素値
[in]bB(赤)要素値
[in]aA(赤)要素値
const fk_ImType* fk_Image::getBufPointer ( void  ) const

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

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

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