ビットマップの読み込み
文書は次の場合に読み込まれます。
「ファイル」>「開く」をアプリケーション・メニュー・バーから選択したとき。
あるいは、ツールバーから「開く」ボタンを選択したとき。
あるいは、CTRL-O アクセラレーターで選択したとき。
ユーザー・アクションと文書アクションの間の関連付けは、自動的に Application Framework によって実行されます。
「ファイル」>「開く」を選択すると、Application Framework は、BitmapDocument::readDocument メソッドを呼び出します。このメソッドは、ビットマップ・ファイルを読み込むときに実行される実際の作業を実装するためにオーバーライドされます。
IlvBoolean
BitmapDocument::readDocument(const IlvPathName& pathname)
{
IlvDisplay* display = getDisplay();
// Read the bitmap
IlvBitmap* bitmap = display->readBitmap(pathname);
// If the bitmap has not been read correctly
if (!bitmap || bitmap->isBad()) {
delete bitmap;
IlvFatalError("Cannot load %s bitmap !", getPathName());
return IlvFalse;
} else {
// The bitmap read by readBitmap is a shared bitmap.
// Here you do not want to use a shared bitmap because the editor may
// modify it.So, the name set by the call to IlvDisplay::readBitmap
// is removed.
bitmap->setName(0);
setBitmap(bitmap);
setPalette(display->defaultPalette());
return IlvTrue;
}
}
メモ:IlvDvDocument::readDocument メソッドのデフォルト実装は、 serialize 仮想メソッドを呼び出します。文書内部の I/O を扱う別の方法は、 serialize メソッドのみをオーバーライドすることです。しかし、 serialize メソッドはここでは使用できません。ビットマップはフル・パスを使用して読み込む必要があるからです。 serialize メソッドはストリームをパラメーターとして受け取りますが、ビットマップを読み込むのに使用されるメソッドは、文字列をパラメーター ( IlvDisplay::readBitmap(const char*)) として受け取ります。 IlvDvDocument::readDocument および IlvDvDocument::serialize メソッドに関する詳細は、リファレンス・マニュアルを参照してください。 |
以上で、ビットマップ・エディター・アプリケーションは、ビットマップを読み込み、ビットマップ・データをBitmapDocument クラスに格納することができるようになりました。
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.