ディスプレイ・パス
ディスプレイ・パス・メカニズムによって、ファイルへのアクセスが非常に簡単になります。ファイルを開き、読み込む関数の呼び出しで使用されるパス名が相対的な場合、関数はディスプレイ・パスで指定されたディレクトリーでファイル名を検索します。
IlvDisplay のメンバー関数は、ディスプレイ・パスをチェックしたり操作したり、ファイル名がディスプレイ・パスで指定されたディレクトリーに存在するかどうかをチェックするために使用できます。
ディスプレイ・パス・メカニズムの詳細については、 以下を参照してください。
ディスプレイ・パスの設定
ディスプレイ・パスは複数のディレクトリー・パス名を含む文字列で、通常のシステム・パス区切り文字 (UNIX では「:」、DOS では「;」) で区切られています。
最初 (
IlvDisplay インスタンスの作成時) は、ディスプレイ・パスは次のように
3 つの異なる要素の連結に設定されています (UNIX 表記をパスに使用)。
<.:user path:system path:>最初のセクションは、現在のディレクトリーのみを含みます (e
.=f と記述)。
次のセクションである
user path は、ディスプレイ・リソース
path の内容で構成されており、環境変数
ILVPATH の内容が続きます。
3 つ目のセクションである
system path には、
IlvHome のサブディレクトリーが含まれます。
すなわち、IlvPath の初期値は次のとおりです (ILVHOME が定義済みの場合)。
.:<path resource>:$ILVPATH:$ILVHOME/data:$ILVHOME/data/icon:$ILVHOME
data/images
パス・リソース
X Window では、
path リソースは次の例のようになります。
AppName*path:/usr/local/views/ilv
Microsoft Windows では、
path リソースは
VIEWS.INI またはアプリケーションに依存するファイル
.INI にあります。
[AppName]
path=C:\USER\DATA\ILV
ILVPATH 環境変数
ILVPATH 環境変数は、アプリケーションの起動前に設定できます。
UNIX では、この設定は次の行で定義できます。
$ ILVPATH=/usr/home/user/ilvimages:/usr/home/user/ilvpanels
$ export ILVPATH
Microsoft Windows コマンドのプロンプト・ウィンドウでは、設定は次のようになります。
C:\> SET ILVPATH=C:\USER\DATA\ILV;C:\USER\DATA\IMAGES
ディスプレイ・パスの問い合わせまたは変更
IlvDisplay クラスは、ディスプレイ・パスを操作するメンバー関数を備えています。これらは、
getPath、
setPath、
appendToPath、および
prependToPath です。
これらのメソッドにより、user path (ディスプレイ・パスの 2 つ目のセクション) を取得、設定、変更できます。ディスプレイ・パスの構造は変更されず、以下のとおりになります。
<.:user path:system path.>
findInPath メソッドは以下に使用します。
ファイルがディスプレイ・パスにあるかどうかをチェックします。
絶対パス名を取得します。
例:ディレクトリーをディスプレイ・パスに追加する
次の例は、ディレクトリーをディスプレイ・パスに追加し、ファイルがディスプレイ・パスにあるかどうかをチェックする方法を示しています。
IlvDisplay* display = new IlvDisplay(“AppName”, “DisplayName”, argc, argv); if (display->isBad()) { delete display; IlvFatalError(“Could not create display”); IlvExit(-1); } const char* dirName = “./localDirectory/subDirectory”; const char* fileName = “foo.txt”; display->prependToPath(dirName); // Now, if a file such as // “./localDirectory/subDirectory/foo.txt” // or // “.\localDirectory\subDirectory\foo.txt” // exists, we should be able to find it. const char* filePath = display->findInPath(fileName); if (filePath) IlvPrint(“File %s found at %s”, fileName, filePath); else IlvWarning(“File %s not found”, fileName); |
Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.