FineKernelToolKit: FK::fk_Image クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_Image クラス

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

`#include <FK/Image.h>`

FK::fk_Image の継承関係図
[凡例]
FK::fk_Image 連携図
[凡例]

## 公開メンバ関数

| 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_Dimension * | getImageSize (void)
| 画像サイズ取得関数
const fk_Dimension * | getBufferSize (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
| 画像データ配列先頭アドレス取得関数
基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
| fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
| コンストラクタ
fk_Type | getObjectType (void) const
| タイプ取得関数

## 詳解

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

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

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

参照
  fk_Rect, fk_Dimension, fk_Texture

## 構築子と解体子

## ◆ fk_Image() [1/2]

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

コンストラクタ

引数

  [in] | w | 画像の横幅
  [in] | h | 画像の縦幅

## ◆ ~fk_Image()

virtual FK::fk_Image::~fk_Image | ( |  | ) |

virtual

デストラクタ

## ◆ fk_Image() [2/2]

FK::fk_Image::fk_Image | ( | const fk_Image & |  | ) |

コピーコンストラクタ

## 関数詳解

## ◆ init()

void FK::fk_Image::init | ( |  | ) |

初期化関数

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

## ◆ readBMP()

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

BMP ファイル入力関数

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

引数

  [in] | fileName | ファイル名

戻り値
  入力に成功すれば true、失敗すれば false を返します。

## ◆ readBMPData()

bool FK::fk_Image::readBMPData | ( | fk_ImType * | buf | ) |

BMP バッファ入力関数

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

引数

  [in] | buf | データバッファ

戻り値
  入力に成功すれば true、失敗すれば false を返します。

## ◆ readPNG()

bool FK::fk_Image::readPNG | ( | const std::string | fileName | ) |

PNG ファイル入力関数

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

引数

  [in] | fileName | ファイル名

戻り値
  入力に成功すれば true、失敗すれば false を返します。

## ◆ readPNGData()

bool FK::fk_Image::readPNGData | ( | fk_ImType * | buf | ) |

PNG データ入力用関数

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

引数

  [in] | buf | データバッファ

戻り値
  入力に成功すれば true、失敗すれば false を返します。

## ◆ readJPG()

bool FK::fk_Image::readJPG | ( | const std::string | fileName | ) |

JPEG ファイル入力関数

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

引数

  [in] | fileName | ファイル名

戻り値
  入力に成功すれば true、失敗すれば false を返します。

## ◆ writeBMP()

bool FK::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 を返します。

## ◆ writePNG()

bool FK::fk_Image::writePNG | ( | const std::string | fileName,
|  | const bool | transFlg = true )

PNG ファイル出力関数

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

引数

  [in] | fileName | ファイル名
  [in] | transFlg | true の場合、透過色要素をファイル中に書き出します。 false の場合は、データ中の透過色要素をファイルには出力しません。

戻り値
  書き出しに成功すれば true、失敗すれば false を返します。

## ◆ writeJPG()

bool FK::fk_Image::writeJPG | ( | const std::string | fileName,
|  | int | quality = 80 )

JPEG ファイル出力関数

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

引数

  [in] | fileName | ファイル名
  [in] | quality | 画像の品質を設定します。 品質が高いほどファイルのサイズは大きくなります。 100 が最高品質、0 が最低品質となります。範囲外の数値が入力された場合、 上下限に丸められます。

戻り値
  書き出しに成功すれば true、失敗すれば false を返します。

## ◆ newImage()

void FK::fk_Image::newImage | ( | int | w,
|  | int | h,
|  | bool | initFlg = true )

画像領域生成関数

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

引数

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

## ◆ copyImage() [1/2]

void FK::fk_Image::copyImage | ( | const fk_Image * | image | ) |

画像データコピー関数1

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

引数

  [in] | image | 元画像データのアドレス

## ◆ copyImage() [2/2]

void FK::fk_Image::copyImage | ( | const fk_Image * | image,
|  | int | x,
|  | int | y )

画像データコピー関数2

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

引数

  [in] | image | 元画像データのアドレス
  [in] | x | 書き換え領域左上の x 座標
  [in] | y | 書き換え領域左上の y 座標

## ◆ subImage()

bool FK::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 | 抽出矩形領域の縦幅

## ◆ getWidth()

int FK::fk_Image::getWidth | ( | void |  | ) | const

画像横幅取得関数

戻り値
  横幅

## ◆ getHeight()

int FK::fk_Image::getHeight | ( | void |  | ) | const

画像縦幅取得関数

戻り値
  縦幅

## ◆ getImageSize()

const fk_Dimension * FK::fk_Image::getImageSize | ( | void |  | ) |

画像サイズ取得関数

戻り値
  画像サイズのポインタ

## ◆ getBufferSize()

const fk_Dimension * FK::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 \) となるように補正しています。

戻り値
  データサイズのポインタ

## ◆ getR()

int FK::fk_Image::getR | ( | int | x,
|  | int | y ) const

ピクセルR要素取得関数

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

引数

  [in] | x | ピクセルの x 座標
  [in] | y | ピクセルの y 座標

戻り値
  ピクセルのR(赤)要素値。 指定した座標が画像内にない場合は、-1 を返します。

## ◆ getG()

int FK::fk_Image::getG | ( | int | x,
|  | int | y ) const

ピクセルG要素取得関数

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

引数

  [in] | x | ピクセルの x 座標
  [in] | y | ピクセルの y 座標

戻り値
  ピクセルのG(緑)要素値。 指定した座標が画像内にない場合は、-1 を返します。

## ◆ getB()

int FK::fk_Image::getB | ( | int | x,
|  | int | y ) const

ピクセルB要素取得関数

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

引数

  [in] | x | ピクセルの x 座標
  [in] | y | ピクセルの y 座標

戻り値
  ピクセルのB(青)要素値。 指定した座標が画像内にない場合は、-1 を返します。

## ◆ getA()

int FK::fk_Image::getA | ( | int | x,
|  | int | y ) const

ピクセルA要素取得関数

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

引数

  [in] | x | ピクセルの x 座標
  [in] | y | ピクセルの y 座標

戻り値
  ピクセルのA(透過度)要素値。 指定した座標が画像内にない場合は、-1 を返します。

## ◆ getColor()

fk_Color FK::fk_Image::getColor | ( | int | x,
|  | int | y ) const

ピクセル色要素取得関数

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

引数

  [in] | x | ピクセルの x 座標
  [in] | y | ピクセルの y 座標

戻り値
  ピクセルの色要素値。 指定した座標が画像内にない場合は、(0, 0, 0, 1) の値を返します。

## ◆ setRGBA()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setRGB()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setR()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setG()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setB()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setA()

bool FK::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 を返します。 値の丸めが入った場合については、失敗とはみなしません。

## ◆ setColor()

bool FK::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 を返します。

## ◆ fillColor() [1/2]

void FK::fk_Image::fillColor | ( | const fk_Color & | col | ) |

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

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

引数

  [in] | col | 色要素値

## ◆ fillColor() [2/2]

void FK::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(赤)要素値

## ◆ getBufPointer()

const fk_ImType * FK::fk_Image::getBufPointer | ( | void |  | ) | const

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

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

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

戻り値
  画像データ配列の先頭アドレス