FineKernelToolKit 4.2.13
|
文字列板を管理するクラス [詳解]
#include <CLI/FK_CLI/include/TextImage_CLI.h>
公開メンバ関数 | |
fk_TextImage () | |
コンストラクタ | |
~fk_TextImage () | |
デストラクタ | |
!fk_TextImage () | |
ファイナライザ | |
フォント関連メソッド | |
bool | InitFont (String^ fontFileName) |
フォント情報入力メソッド | |
文字配置事前設定関連メソッド | |
void | SetOffset (int up, int down, int left, int right) |
オフセット設定メソッド | |
int | GetUpOffset (void) |
オフセット上幅参照メソッド | |
int | GetDownOffset (void) |
オフセット下幅参照メソッド | |
int | GetLeftOffset (void) |
オフセット左幅参照メソッド | |
int | GetRightOffset (void) |
オフセット右幅参照メソッド | |
文字列入力メソッド | |
bool | LoadUniStr (fk_UniStr^ str) |
文字列データ入力メソッド | |
bool | LoadStrFile (String^ fileName, fk_StringCode code) |
文字列データファイル入力メソッド1 | |
bool | LoadStrFile (String^ fileName) |
文字列データファイル入力メソッド2 | |
int | GetLineCharNum (int num) |
行中文字数参照メソッド | |
int | GetLineWidth (int num) |
行横幅参照メソッド | |
int | GetLineHeight (int num) |
行縦幅参照メソッド | |
int | GetLineStartXPos (int num) |
行開始位置 x 成分取得メソッド | |
int | GetLineStartYPos (int num) |
行開始位置 y 成分取得メソッド | |
文字送り関連メソッド | |
bool | Send (void) |
文字送り実行メソッド | |
bool | Finish (void) |
文字送り完了メソッド | |
bool | Clear (void) |
文字送り初期化メソッド | |
![]() | |
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 | |
静的公開メンバ関数 | |
キャッシュ関連メソッド | |
static void | ClearCache (void) |
キャッシュ初期化メソッド | |
プロパティ | |
int | DPI [get, set] |
フォント解像度プロパティ | |
int | PTSize [get, set] |
フォントサイズプロパティ | |
int | BoldStrength [get, set] |
太さ値プロパティ | |
bool | ShadowMode [get, set] |
影付け効果プロパティ | |
fk_Dimension^ | ShadowOffset [get, set] |
影付けずらし幅プロパティ | |
fk_Color^ | ShadowColor [get, set] |
影付け色プロパティ | |
fk_Color^ | ForeColor [get, set] |
文字色プロパティ | |
fk_Color^ | BackColor [get, set] |
背景色プロパティ | |
bool | SmoothMode [get, set] |
アンチエイリアシング効果プロパティ | |
bool | MonospaceMode [get, set] |
等幅表示プロパティ | |
int | MonospaceSize [get, set] |
等幅表示文字幅プロパティ | |
int | CharSkip [get, set] |
文字間幅プロパティ | |
int | LineSkip [get, set] |
行間幅プロパティ | |
int | SpaceLineSkip [get, set] |
空行縦幅プロパティ | |
fk_TextAlign | Align [get, set] |
文字列寄せ方向(アライメント)プロパティ | |
int | MinLineWidth [get, set] |
画像最小横幅プロパティ | |
int | LineNum [get] |
行数プロパティ | |
int | AllCharNum [get] |
文字数プロパティ | |
int | MaxLineWidth [get] |
最大横幅プロパティ | |
int | MaxLineHeight [get] |
最大縦幅プロパティ | |
fk_TextSendingMode | SendingMode [get, set] |
文字送りモードプロパティ | |
static bool | CacheMode [get, set] |
キャッシュ機能制御プロパティ | |
![]() | |
fk_Color^ | default [int, int] [get, set] |
画素プロパティ | |
fk_Dimension^ | Size [get] |
画像サイズプロパティ | |
fk_Dimension^ | BufferSize [get] |
画像バッファサイズプロパティ | |
文字列板を管理するクラス
このクラスは、文字列板を制御する機能を提供します。
本クラスは fk_Image の派生クラスであり、本質的には画像を意味します。 通常の画像に対し、文字列を表示することに特化したクラスです。 このクラスを用いて作成した文字列を矩形テクスチャとすることで、 シーン上にメッセージを表示することができます。 実質的には通常の矩形テクスチャとなりますので、 単純に画面に文字を表示するだけではなく、 3次元空間中に自由に配置することができます。
文字列画像生成に際しては、複数行を一枚の画像中に表示することができます。 その際、左寄り、中寄り、右寄りといったアライメントや、 画像端からのマージンなども細かく設定することができます。
また、本クラスの特徴的な機能として「文字送り」があります。 これは、初期状態として全ての文字が表示されていない状態にしておき、 一文字ずつ、あるいは一行ずつ順番に表示していくという機能です。
本クラスを用いる場合、以下の順番で処理を進める必要があります。
これは、実際の画像生成を文字列データ入力の段階で行うため、 それ以外の設定を事前にしておかなければならないためです。 詳細はユーザーズマニュアルの「文字列板」の項目を参照して下さい。
なお、文字列板はその性質上、常に画面上で最前面に表示しておきたい場合が多くあります。 これは、シーン登録においてオーバーレイモデルとして登録することで容易に実現できます。 詳細は fk_DisplayLink::EntryOverlayModel() の解説を参照して下さい。
FK_CLI::fk_TextImage::fk_TextImage | ( | ) |
コンストラクタ
FK_CLI::fk_TextImage::~fk_TextImage | ( | ) |
デストラクタ
FK_CLI::fk_TextImage::!fk_TextImage | ( | ) |
ファイナライザ
bool FK_CLI::fk_TextImage::InitFont | ( | String^ | fontFileName | ) |
フォント情報入力メソッド
フォントの入力を行います。 ここで指定するものは TrueType 形式のフォントファイルとなります。 通常は「ttf」あるいは「ttc」という拡張子のファイルとなっています。
なお、このメソッドは LoadUniStr() や LoadStrFile() などの文字列入力よりも先に行っておく必要があります。
[in] | fontFileName | フォントファイル名 |
void FK_CLI::fk_TextImage::SetOffset | ( | int | up, |
int | down, | ||
int | left, | ||
int | right | ||
) |
オフセット設定メソッド
文字が実際に表示されている部分と、画面の縁までの幅を設定します。 単位はピクセルとなります。 デフォルトでは、全て 0 に設定されています。
文字との対比については、解像度やフォントサイズに応じて変わってきます。 つまり、解像度やフォントサイズが大きい場合、 空白を作るには大きな値が必要となります。 従って、解像度やフォントサイズを変更した場合には、 この値も再度調整する必要があります。
[in] | up | 上幅 |
[in] | down | 下幅 |
[in] | left | 左幅 |
[in] | right | 右幅 |
int FK_CLI::fk_TextImage::GetUpOffset | ( | void | ) |
int FK_CLI::fk_TextImage::GetDownOffset | ( | void | ) |
int FK_CLI::fk_TextImage::GetLeftOffset | ( | void | ) |
int FK_CLI::fk_TextImage::GetRightOffset | ( | void | ) |
bool FK_CLI::fk_TextImage::LoadUniStr | ( | fk_UniStr^ | str | ) |
文字列データ入力メソッド
fk_UniStr 型のインスタンスに格納されている文字列を入力します。
文字列板画像は、 このメソッドかまたは LoadStrFile() が呼ばれた時点で生成されます。 従って、色や配置などの設定は本メソッドを呼ぶ前に行わなければなりません。
既に本メソッドを実行したインスタンスに対し、改めて本メソッドを実行することは可能です。 その場合は、新たな文字列と設定に基づき、文字列板画像を再構築します。
[in] | str | 文字列が格納されているインスタンス |
bool FK_CLI::fk_TextImage::LoadStrFile | ( | String^ | fileName, |
fk_StringCode | code | ||
) |
文字列データファイル入力メソッド1
テキストファイルに入っている文字列を入力します。
文字列板画像は、 このメソッドかまたは LoadUniStr() が呼ばれた時点で生成されます。 従って、色や配置などの設定は本メソッドを呼ぶ前に行わなければなりません。
既に本メソッドを実行したインスタンスに対し、改めて本メソッドを実行することは可能です。 その場合は、新たな文字列と設定に基づき、文字列板画像を再構築します。
[in] | fileName | ファイル名 |
[in] | code | 入力する文字列の想定日本語コード。 サポートしているのは JISコード、SJISコード、EUC、UTF-16 です。 具体的な指定値は fk_StringCode のリストを参照して下さい。 |
bool FK_CLI::fk_TextImage::LoadStrFile | ( | String^ | fileName | ) |
文字列データファイル入力メソッド2
テキストファイルに入っている文字列を入力します。 なお、文字コードは UTF-16 であることを前提としています。 その他の文字コードで入力したい場合は LoadStrFile(String^, fk_StringCode) を利用して下さい。
文字列板画像は、 このメソッドかまたは LoadUniStr() が呼ばれた時点で生成されます。 従って、色や配置などの設定は本メソッドを呼ぶ前に行わなければなりません。
既に本メソッドを実行したインスタンスに対し、改めて本メソッドを実行することは可能です。 その場合は、新たな文字列と設定に基づき、文字列板画像を再構築します。
[in] | fileName | ファイル名 |
int FK_CLI::fk_TextImage::GetLineCharNum | ( | int | num | ) |
行中文字数参照メソッド
入力した文字列中の、指定した行の文字数を取得します。
[in] | num | 行番号。最初の行は 0 となります。 |
int FK_CLI::fk_TextImage::GetLineWidth | ( | int | num | ) |
行横幅参照メソッド
入力した文字列中の、指定した行の横幅を取得します。 単位はピクセルとなります。
[in] | num | 行番号。最初の行は 0 となります。 |
int FK_CLI::fk_TextImage::GetLineHeight | ( | int | num | ) |
行縦幅参照メソッド
入力した文字列中の、指定した行の縦幅を取得します。 単位はピクセルとなります。
[in] | num | 行番号。最初の行は 0 となります。 |
int FK_CLI::fk_TextImage::GetLineStartXPos | ( | int | num | ) |
行開始位置 x 成分取得メソッド
入力した文字列中の、 指定した行の開始位置(文字列左下部分)の x 成分を取得します。 単位はピクセルとなります。
[in] | num | 行番号。最初の行は 0 となります。 |
int FK_CLI::fk_TextImage::GetLineStartYPos | ( | int | num | ) |
行開始位置 y 成分取得メソッド
入力した文字列中の、 指定した行の開始位置(文字列左下部分)の y 成分を取得します。 単位はピクセルとなります。
[in] | num | 行番号。最初の行は 0 となります。 |
bool FK_CLI::fk_TextImage::Send | ( | void | ) |
文字送り実行メソッド
fk_TextImage::SendingMode プロパティで指定したモードに従い、 文字送りを行います。
bool FK_CLI::fk_TextImage::Finish | ( | void | ) |
文字送り完了メソッド
文字送りが有効である場合に、 まだ表示されていない文字を全て表示させます。
bool FK_CLI::fk_TextImage::Clear | ( | void | ) |
文字送り初期化メソッド
文字送りが有効である場合に、 全ての文字を初期状態、つまり非表示の状態に戻します。
|
static |
|
getset |
フォント解像度プロパティ
フォントの解像度の参照・設定を行います。 解像度を高くするほど高精細な画像となりますが、 画像サイズが大きくなるため描画時の負担が高くなっていきます。 デフォルトでは 48 に設定されています。
|
getset |
フォントサイズプロパティ
フォントのサイズの参照・設定を行います。 サイズを大きくするほど高精細な画像となりますが、 画像サイズが大きくなるため描画時の負担が高くなっていきます。 デフォルトでは 48 に設定されています。
|
getset |
|
getset |
影付け効果プロパティ
表示文字に対し、影付け効果有無の参照・設定を行います。 true の場合有効、false の場合無効となります。 デフォルトでは無効となっています。
|
getset |
影付けずらし幅プロパティ
影付け効果の際、影のずらし幅を設定します。
x 成分は横方向のずれを設定します。単位はピクセルです。 正の値で右方向、負の値で左方向にずらします。
y 成分は縦方向のずれを設定します。単位はピクセルです。 正の値で下方向、負の値で上方向にずらします。
|
getset |
|
getset |
|
getset |
|
getset |
|
getset |
等幅表示プロパティ
文字の等幅表示効果の参照・設定を行います。 true の場合有効、false の場合無効となります。 デフォルトでは無効となっています。
設定を有効とした場合、半角全角問わず全ての文字を等幅で表示します。 なお、 fk_TextImage::CharSkip によって設定する文字間幅は等幅においても有効となります。
|
getset |
等幅表示文字幅プロパティ
等幅表示の際の文字幅の参照・設定を行います。単位はピクセルとなります。 デフォルトでは 0 が設定されています。
|
getset |
文字間幅プロパティ
文字同士の横方向の空白幅の参照・設定を行います。 単位はピクセルとなります。 デフォルトは 0 に設定されています。
文字との対比については、解像度やフォントサイズに応じて変わってきます。 つまり、解像度やフォントサイズが大きい場合、 空白を作るには大きな値が必要となります。 従って、解像度やフォントサイズを変更した場合には、 この値も再度調整する必要があります。
|
getset |
行間幅プロパティ
行同士の縦方向の空白幅の参照・設定を行います。 単位はピクセルとなります。 デフォルトは 0 に設定されています。
文字との対比については、解像度やフォントサイズに応じて変わってきます。 つまり、解像度やフォントサイズが大きい場合、 空白を作るには大きな値が必要となります。 従って、解像度やフォントサイズを変更した場合には、 この値も再度調整する必要があります。
|
getset |
空行縦幅プロパティ
文字列中に空行が入っていた場合の、その縦幅を設定します。 単位はピクセルとなります。 この値が 0 である場合、空行は結果的に省略されることになります。
文字との対比については、解像度やフォントサイズに応じて変わってきます。 つまり、解像度やフォントサイズが大きい場合、 空白を作るには大きな値が必要となります。 従って、解像度やフォントサイズを変更した場合には、 この値も再度調整する必要があります。
|
getset |
文字列寄せ方向(アライメント)プロパティ
文字列を表示する際の、文字寄せ方向(アライメント)の参照・設定を行います。
複数行に渡る文字列の場合で、各行の横幅が異なる場合や、 fk_TextImage::MinLineWidth によって画像の横幅をあらかじめ設定した場合などは、 行の横幅が画像の横幅に満たない状況が生じます。 このような行に対し、本メソッドでどちら側に寄るのかを設定します。 デフォルトは fk_Align.LEFT 、つまり左寄せとなっています。
|
getset |
画像最小横幅プロパティ
生成される文字列板画像の横幅の最小値の参照・設定を行います。 単位はピクセルとなります。 デフォルトは 0 に設定されています。
通常、文字列板として生成される画像の横幅は、 入力した文字列に依存します。 行の文字数が多ければ幅は広がり、逆に少ない場合は狭まります。 このような異なる画像を同じテクスチャ画像として連続に表示した場合、 一文字の横幅が画像によって変動してしまうという現象が生じます。 これは、あまり見栄えが良いとは言えません。 そのような場合、本メソッドを用いて十分な横幅を予め確保しておきます。 そうすることで、文字列はアライメントに従って適切に配置され、 文字の幅も画像によって変わることはありません。
ただし、ここで設定した横幅を超える幅を持つ行が発生した場合、 画像の幅はその行による幅に設定されることになります。
|
get |
|
get |
|
get |
|
get |
最大縦幅プロパティ
入力した文字列のうち、最も縦幅が広い行の縦幅を参照します。 単位はピクセルとなります。
画像全体の縦幅を取得するには、 fk_Image::Size を利用して下さい。
|
getset |
文字送りモードプロパティ
文字送りのモードの参照・設定を行います。
「文字送り」とは、読み込んだ文字列を最初は表示せず、 一文字ずつ、あるいは一行ずつ徐々に表示していく機能のことです。 文字送りを有効とした場合、 Send() を呼び出すごとに一文字ずつ、あるいは一行ずつが表示されていきます。 一度表示した文字列については、 Clear() を呼び出すことで初期状態 (文字が表示されていない状態)に戻すことができます。
本メソッドは、文字列を LoadUniStr() や LoadStrFile() で入力する前に設定しておくことが可能です。 また、入力後に動的に変更することも可能です。
値として、以下のものが設定可能です。
- fk_TextSendingMode.CHAR: 一文字ずつ送るモード。 - fk_TextSendingMode.LINE: 一行ずつ送るモード。 - fk_TextSendingMode.ALL: 文字送りを無効とするモード。
|
staticgetset |
キャッシュ機能制御プロパティ
このメソッドは、フォントデータのキャッシュの制御を参照・設定します。 true であれば有効、false であれば無効とします。 デフォルトでは無効となっています。
文字列の画像を生成する際には、 入力されたフォントデータからビットマップとしての 画像情報に変換するという処理がなされます。 同じ文字に対してこの処理を行うことは、計算時間の点で無駄となります。 そこで、 fk_TextImage には一度得た画像情報を保存しておき、 同じ文字が登場した際には再利用するという機能があります。 これが「キャッシュ機能」です。 特に数字やアルファベット、平仮名などは再利用する頻度が高いため、 本機能を有効とすることで処理が高速となる利点があります。
一方、キャッシュ機能はメモリの利用量が増えることを意味します。 高い解像度やフォントサイズを用いている場合は、 キャッシュのメモリ利用量も膨大となっていきますので、 場合によっては処理速度がむしろ低下することもありえます。
ここで利用されるキャッシュデータは、 インスタンス毎ではなくシステム全体で共有されます。 従って、異なるインスタンスで読み込んだ文字に関しても キャッシュ効果が働くことになります。