FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_Image クラス

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

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

## 公開メンバ関数
| fk_Image ()
| コンストラクタ1 [詳解]
| fk_Image (int W, int H)
| コンストラクタ [詳解]
| ~fk_Image ()
| デストラクタ [詳解]
| !fk_Image ()
| ファイナライザ [詳解]
void | Init (void)
| 初期化メソッド [詳解]
void | NewImage (int w, int h, bool initFlg)
| 画像領域生成メソッド1 [詳解]
void | NewImage (int w, int h)
| 画像領域生成メソッド2 [詳解]
void | CopyImage (fk_Image^ image)
| 画像データコピーメソッド1 [詳解]
void | CopyImage (fk_Image^ image, int x, int y)
| 画像データコピーメソッド2 [詳解]
bool | SubImage (fk_Image^ image, int x, int y, int w, int h)
| 画像データ部分抽出メソッド [詳解]
int | GetR (int x, int y)
| ピクセルR要素取得メソッド [詳解]
int | GetG (int x, int y)
| ピクセルG要素取得メソッド [詳解]
int | GetB (int x, int y)
| ピクセルB要素取得メソッド [詳解]
int | GetA (int x, int y)
| ピクセルA要素取得メソッド [詳解]
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 値設定メソッド [詳解]
void | FillColor (fk_Color^ color)
| バッファ全体初期化メソッド1 [詳解]
void | FillColor (int r, int g, int b, int a)
| バッファ全体初期化メソッド2 [詳解]
void | FillColor (int r, int g, int b)
| バッファ全体初期化メソッド3 [詳解]
bool | ReadBMP (String^ fileName)
| BMP ファイル入力メソッド [詳解]
bool | ReadPNG (String^ fileName)
| PNG ファイル入力メソッド [詳解]
bool | ReadJPG (String^ fileName)
| JPEG ファイル入力メソッド [詳解]
bool | WriteBMP (String^ fileName, bool transFlg)
| BMP ファイル出力メソッド1. [詳解]
bool | WriteBMP (String^ fileName)
| BMP ファイル出力メソッド2. [詳解]
bool | WritePNG (String^ fileName, bool transFlg)
| PNG ファイル出力メソッド1. [詳解]
bool | WritePNG (String^ fileName)
| PNG ファイル出力メソッド2. [詳解]
bool | WriteJPG (String^ fileName, int quality)
| JPEG ファイル出力メソッド1. [詳解]
bool | WriteJPG (String^ fileName)
| JPEG ファイル出力メソッド2. [詳解]

## プロパティ
fk_Color^ | default[int, int]`[get, set]`
| 画素プロパティ [詳解]
fk_Dimension^ | Size`[get]`
| 画像サイズプロパティ [詳解]
fk_Dimension^ | BufferSize`[get]`
| 画像バッファサイズプロパティ [詳解]

## 詳解

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

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

実際の画像サイズと、格納するデータについての関係は BufferSize プロパティの覚え書きを参照して下さい。

参照
  fk_Rect, fk_Dimension, fk_Texture

## 構築子と解体子

FK_CLI::fk_Image::fk_Image | ( |  | ) |

コンストラクタ1

空画像を生成します。

FK_CLI::fk_Image::fk_Image | ( | int | W,
|  | int | H
| ) |  |

コンストラクタ

引数

  [in] | W | 画像の横幅
  [in] | H | 画像の縦幅

FK_CLI::fk_Image::~fk_Image | ( |  | ) |

デストラクタ

FK_CLI::fk_Image::!fk_Image | ( |  | ) |

ファイナライザ

## 関数詳解

void FK_CLI::fk_Image::Init | ( | void |  | ) |

初期化メソッド

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

void FK_CLI::fk_Image::NewImage | ( | int | w,
|  | int | h,
|  | bool | initFlg
| ) |  |

画像領域生成メソッド1

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

引数

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

void FK_CLI::fk_Image::NewImage | ( | int | w,
|  | int | h
| ) |  |

画像領域生成メソッド2

画像データを与えられたサイズに従って生成します。 データ全体の色値は (0, 0, 0, 0) で初期化します。

引数

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

void FK_CLI::fk_Image::CopyImage | ( | fk_Image^ | image | ) |

画像データコピーメソッド1

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

引数

  [in] | image | 元画像インスタンス

void FK_CLI::fk_Image::CopyImage | ( | fk_Image^ | image,
|  | int | x,
|  | int | y
| ) |  |

画像データコピーメソッド2

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

引数

  [in] | image | 元画像インスタンス
  [in] | x | 書き換え領域左上の x 座標
  [in] | y | 書き換え領域左上の y 座標

bool FK_CLI::fk_Image::SubImage | ( | 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_CLI::fk_Image::GetR | ( | int | x,
|  | int | y
| ) |  |

ピクセルR要素取得メソッド

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

引数

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

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

int FK_CLI::fk_Image::GetG | ( | int | x,
|  | int | y
| ) |  |

ピクセルG要素取得メソッド

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

引数

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

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

int FK_CLI::fk_Image::GetB | ( | int | x,
|  | int | y
| ) |  |

ピクセルB要素取得メソッド

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

引数

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

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

int FK_CLI::fk_Image::GetA | ( | int | x,
|  | int | y
| ) |  |

ピクセルA要素取得メソッド

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

引数

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

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

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

void FK_CLI::fk_Image::FillColor | ( | fk_Color^ | color | ) |

バッファ全体初期化メソッド1

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

引数

  [in] | color | 色要素値

void FK_CLI::fk_Image::FillColor | ( | int | r,
|  | int | g,
|  | int | b,
|  | int | a
| ) |  |

バッファ全体初期化メソッド2

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

引数

  [in] | r | R(赤)要素値
  [in] | g | G(赤)要素値
  [in] | b | B(赤)要素値
  [in] | a | A(赤)要素値

void FK_CLI::fk_Image::FillColor | ( | int | r,
|  | int | g,
|  | int | b
| ) |  |

バッファ全体初期化メソッド3

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

引数

  [in] | r | R(赤)要素値
  [in] | g | G(赤)要素値
  [in] | b | B(赤)要素値

bool FK_CLI::fk_Image::ReadBMP | ( | String^ | fileName | ) |

BMP ファイル入力メソッド

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

引数

  [in] | fileName | ファイル名

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

bool FK_CLI::fk_Image::ReadPNG | ( | String^ | fileName | ) |

PNG ファイル入力メソッド

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

引数

  [in] | fileName | ファイル名

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

bool FK_CLI::fk_Image::ReadJPG | ( | String^ | fileName | ) |

JPEG ファイル入力メソッド

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

引数

  [in] | fileName | ファイル名

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

bool FK_CLI::fk_Image::WriteBMP | ( | String^ | fileName,
|  | bool | transFlg
| ) |  |

BMP ファイル出力メソッド1.

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

引数

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

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

bool FK_CLI::fk_Image::WriteBMP | ( | String^ | fileName | ) |

BMP ファイル出力メソッド2.

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

引数

  [in] | fileName | ファイル名

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

bool FK_CLI::fk_Image::WritePNG | ( | String^ | fileName,
|  | bool | transFlg
| ) |  |

PNG ファイル出力メソッド1.

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

引数

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

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

bool FK_CLI::fk_Image::WritePNG | ( | String^ | fileName | ) |

PNG ファイル出力メソッド2.

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

引数

  [in] | fileName | ファイル名

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

bool FK_CLI::fk_Image::WriteJPG | ( | String^ | fileName,
|  | int | quality
| ) |  |

JPEG ファイル出力メソッド1.

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

引数

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

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

bool FK_CLI::fk_Image::WriteJPG | ( | String^ | fileName | ) |

JPEG ファイル出力メソッド2.

画像データを JPEG 形式でファイルに保存します。 なお、JPEG 形式は透過がサポートされていないので、 画像中に透過色データを出力することはできません。 本メソッドは WriteJPG(String^, int) において、 品質値を 80 に設定した場合と同一の挙動となります。

引数

  [in] | fileName | ファイル名

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

## プロパティ詳解

fk_Color^ FK_CLI::fk_Image::default[int, int]
| get set

画素プロパティ

各画素色値の設定や参照を行います。

    image[100, 100] = new fk_Color(0.3, 0.4, 0.5);

fk_Dimension^ FK_CLI::fk_Image::Size
| get

画像サイズプロパティ

画像サイズの参照を行います。

fk_Dimension^ FK_CLI::fk_Image::BufferSize
| get

画像バッファサイズプロパティ

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

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