BITMAP(1) — NEWS-OS Programmer’s Manual
名称
bitmap, bmtoa, atobm − X ウィンドウシステム用のビットマップエディタとコンバータ ユーティリティ
形式
bitmap [ −options ... ] [ filename ] [ basename ] bmtoa [ −chars ... ] [ filename ] atobm [ −chars cc ] [ −name variable ] [ −xhot number ] [ −yhot number ] [ filename ]
解説
bitmap プログラムは、1 と 0 かならる矩形のイメージを作成したり 編集するための基本ツールです。 X におけるビットマップの主な用途は、 クリップリージョン、カーソルの形状、アイコンの形状 およびタイルパターンや点刻パターンなどの定義です。
bmtoa および atobm フィルタは、 bitmap ファイル (ファイルのフォーマット の節を参照) から ASCII 文字列への変換と、その逆変換を行います。 これらは、ビットマップの迅速な表示や、テキストに含めるための バージョンの作成において最も多く使用されます。
コマンドラインオプション
bitmap は、標準 X ツールキットのコマンドライン引数をサポートしています。( X(7))。 それ以外に、以下の引数もサポートされています。 −size WIDTHxHEIGHT グリッド (格子) のサイズを四角形の個数で指定します。
−sw dimension
各四角形の幅をピクセルで指定します。
−sh dimension
各四角形の高さをピクセルで指定します。
−gt dimension
グリッドの耐久度。 四角形の寸法が指定した値より小さい場合、 グリッドは自動的にオフになります。
−grid, +grid
グリッドの線を描くのをオン/オフします。
−axes, +axes
主軸をオン/オフします。
−dashed, +dashed
枠およびグリッドの線をダッシュで描くかどうかをオン/オフします。
−stippled, +stippled
ハイライトしている四角形を スティプル (点画) するかどうかオン/オフします。
−proportional, +proportional
比例モードのオン/オフ。 比例モードがオンの場合、 各四角形の幅は、高さと同じになります。 比例モードがオフの場合、 四角形の幅と高さの寸法が違う場合は bitmap は、小さい方の寸法を使用します。
−dashes filename
ダッシュとして使用する点画のビットマップを指定します。
−stipple filename
ハイライトとして使用する点画のビットマップを指定します。
−hl color
ハイライトに使用する色を指定します。
−fr color
枠およびグリッドの線に使用する色を指定します。
filename
プログラム起動時にロードされるビットマップを指定します。 指定したファイルが存在しない場合、 bitmap は、それを新規のファイルとみなします。
basename
C コードのアウトプットファイルで使用されるベース名を指定します。 現在使用しているファイル中のベース名と異なる場合は、 bitmap は、ファイルを格納するときにベース名変更します。
bmtoa は、以下のオプションを受け付けます。
−chars cc
このオプションは、文字列バージョンのビットマップで使用する 文字を (ペアで) 指定します。 最初の文字は、0 ビットとして使用され、 2 文字目が 1 ビットとして使用されます。 デフォルトでは、 ダッシュ (−) が 0 ビット、 シャープサイン (#) が 1 ビットとして使用されます。
atobm は、以下のオプションを受け付けます。
−chars cc
このオプションは、文字列のビットマップを数字の配列に変換する際に使用する 文字を (ペアで) 指定します。 最初の文字が 0 ビット、 2 文字目が 1 ビットを表します。 デフォルトでは、 ダッシュ (−) が 0 ビット、 シャープサイン (#) が 1 ビットとして使用されます。
−name variable
このオプションは、ビットマップファイルに書き込む際、 使用する変数名を指定します。 デフォルトでは、 filename コマンドラインの引数のベース名を使用し、 標準インプットが入力された場合は、空白のままです。
−xhot number
このオプションは、ホットスポットの X 座標を指定します。 正の値のみ使用できます。 デフォルトでは、 ホットスポットの情報は含まれていません。
−yhot number
このオプションは、ホットスポットの Y 座標を指定します。 正の値のみ使用できます。 ホットスポットの情報は含まれていません。
使用法
bitmap はグリッド(格子)を表示します。 そのグリッドの四角一つ一つは編集中の画像内のひとつのビットを表します。 Meta-I キーを一度押すと、 実物大のビットマップイメージ (通常のものと反転したもの両方) が、 表示されます。 ポップアップした状態のイメージを自由に移動して エディットを続行しても構いません。 ポップアップウィンドウでマウスボタンを左クリックするか、 Meta-I をもう一度押すことで、 実物大のビットマップイメージは取り除かれます。
ビットマップをカーソルの定義に使用する場合は、 イメージ内の四角のうちのひとつを、ホットスポットとして 指定できます。 これにより、カーソルが実際にどの点を指しているかを決めます。 通常、ホットスポットの位置は、 鋭い先端をもったカーソル(矢印や指マークなど)ではそのマークの先端に、 また、対称カーソル(十字形あるいは小さな円)ではマークの中央になります。
ビットマップは、 アプリケーションでインクルードするのに適した 短い C コードのかたちで保持されます。 これはビット配列と、 幅、高さ、ホットスポット(指定されていれば)を表す記号定数からなります。 これらは、カーソル、アイコン、タイル等を作成するのに使用することができます。
編集
ビットマップイメージを編集するには、 描画コマンドボタン ( Point、 Curve、 Line、 Rectangle など) のどれかをクリックし、 ビットマップのグリッド (格子) ウィンドウへポインタを移動します。 マウスボタンの内、どれかをクリックすることにより、動作します。 グリッドの四角を、セット、クリア、反転させることができます。 グリッドの四角をセットすると、 対応するビットマップイメージのビットが 1 に設定されます。 グリッドの四角をクリアすると、 対応するビットマップイメージのビットが 0 に設定されます。 グリッドの四角を反転させると、 対応するビットマップイメージのビットが 0 から 1 に、 あるいは 1 から 0 に、 変更前の状態によって、変更されます。 デフォルトのマウスボタンの動作は以下の様に指定されています。
MouseButton1Set
MouseButton2Invert
MouseButton3Clear
MouseButton4Clear
MouseButton5Clear
このデフォルトの動作は、 ボタン関数のリソースを設定することで変更できます。 設定方法の例は、以下のとおりです。
bitmap∗button1Function: Set
bitmap∗button2Function: Clear
bitmap∗button3Function: Invert
など
ボタン関数は、コピー、移動、ペースト、塗りつぶし、 ホットスポットの設定を含め、全ての描画コマンドに適用されます。
描画コマンド
アプリケーションウィンドウの左側にあるボタンを通して使用できる 描画コマンドのリストです。 いくつかのコマンドは、 ビットマップウィンドウ内で A と押してアボートすることができるます。 これにより、ユーザは、適用できるところで、異なるガイドポイントを 選択できます。
Clear
このコマンドは、 ビットマップイメージ内のすべてのビットをクリアするのに使用されます。 グリッドの四角は、バックグラウンドの色に設定されます。 ビットマップウィンドウ内で C と押しても、同様の効果があります。
Set このコマンドは、 ビットマップイメージ内のすべてのビットを設定するのに使用されます。 グリッドの四角は、フォアグラウンドの色に設定されます。 ビットマップウィンドウ内で S と押しても、同様の効果があります。
Invert
このコマンドは、 ビットマップイメージ内のすべてのビットを反転するのに使用されます。 グリッドの四角は、正しく反転されます。 ビットマップウィンドウ内で I と押しても、同様の効果があります。
Mark
このコマンドは、 グリッドの領域をマークするのに使用されます。 マークは、ハイライトされた長方形をドラッグして行います。 一度マークされた領域は、 様々のコマンド ( UP、 Down、 Left、 Right、 Rotate、 Flip、 Cut など) で操作できます。 一度に 1 つの領域しかマークできません。 他の領域をマークすると、 前の古いマークは消えます。 Shift-MouseButton1 を押しながら、 グリッドのウィンドウ内で長方形をドラッグしても、同様の効果があります。 Shift-MouseButton2 を押すと、 グリッド領域全体がマークされます。
Unmark
個のコマンドは、 マークされた領域を解除します。 Shift-MouseButton3 を押しても、同様の効果があります。
Copy
このコマンドは、 グリッドのある領域をある場所から別の場所に複写するのに使用されます。 マークされたグリッド領域が表示されていない場合は、 Copy は、上記の Mark と全く同じ動作をします。 マークされたグリッド領域がハイライトされて表示されている場合は、 以下の 2 つの内のいずれかの動作をします。 マークされた領域内でマウスボタンをクリックした場合、 マークされた領域をあらわす長方形を、 希望する場所へドラッグして移動することができます。 マウスボタンを離すと、領域がコピーされます。 マークされた領域外をクリックした場合、 Copy は、ユーザがビットマップイメージの別の領域を マークしようとしていると想定し、 Mark と全く同じ動作をします。
Move
このコマンドは、 グリッドのある領域をある場所から別の場所に移動するのに使用されます。 このコマンドの動作は、 コピーされるかわりに、移動するという点を除いて、 Copy コマンドと同じような動作をします。
Flip Horizontally
このコマンドは、 横軸を軸としてビットマップイメージをひっくり返します (フリップします)。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で F と押しても、同様の効果があります。
Up このコマンドは、 ビットマップイメージを 1 ピクセルずつ、上に移動させます。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で上向き矢印 (UpArrow) を押しても、同様の効果があります。 Flip Vertically このコマンドは、 縦軸を軸としてビットマップイメージをひっくり返します (フリップします)。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で V と押しても、同様の効果があります。
Left
このコマンドは、 ビットマップイメージを 1 ピクセルずつ、左に移動させます。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で左矢印 (LeftArrow) を押しても、 同様の効果があります。
Fold
このコマンドは、 ビットマップイメージを、 反対のコーナーが隣接するように折りかさね (フォールドし) ます。 これは、タイル用のビットマップイメージを作成する場合に便利です。 ビットマップウィンドウ内で F と押しても、同様の効果があります。
Right
このコマンドは、 ビットマップイメージを 1 ピクセルずつ、右に移動させます。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で右矢印 (RightArrow) を押しても、 同様の効果があります。
Rotate Left
このコマンドは、 ビットマップイメージを 90 度、左に (反時計回り) 回転します。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で L と押しても、同様の効果があります。
Down
このコマンドは、 ビットマップイメージを 1 ピクセルずつ、下に移動させます。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で下向き矢印 (DownArrow) を押しても、 同様の効果があります。
Rotate Right
このコマンドは、 ビットマップイメージを 90 度、右に (時計回り) 回転します。 マークされたグリッド領域がハイライトされている場合は、 マーク領域内でのみ行われます。 ビットマップウィンドウ内で R と押しても、同様の効果があります。
Point
このコマンドは、 マウスボタンを押したままの状態で、 マウスのポインタの下のグリッドの四角を変更します。 マウスボタンを絶え間なくドラッグしても、 システムのスピードおよびマウスモーションイベントの頻度により、 ライン (線) は、連続的に描かれない場合もあります。
Curve
このコマンドは、 マウスボタンを押したままの状態で、 マウスのポインタの下のグリッドの四角を変更します。 マウスボタンを絶え間なくドラッグすると、 ライン (線) は、連続的に描かれます。 システムのスピードが遅い場合、あるいは Bitmap がマウスモーションイベントをあまり受け取らない場合は、 奇妙な動作をする場合があります。
Line
このコマンドは、2 点間のラインのグリッドの四角を変更します。 ライン上のグリッドの四角を、2 点間に変更します。 グリッドウィンドウ上でマウスボタンを押すと、 bitmap は、初めにマウスボタンが押された四角から、 マウスポインタがある四角まで線をハイライト (強調) します。 マウスボタンを離すと、実際に変更され、 ハイライトされたラインは消えます。
Rectangle
このコマンドは、 このコマンドは、2 点で示される長方形上のグリッドの四角を変更します。 グリッドウィンドウ上でマウスボタンを押すと、 bitmap は、初めにマウスボタンが押された四角から、 マウスポインタがある四角で形成される長方形をハイライト (強調) します。 マウスボタンを離すと、実際に変更され、 ハイライトされた長方形は消えます。
Filled Rectangle
このコマンドは、 長方形の枠が描かれる代わりに、長方形が塗りつぶされる点を除いて、 Rectangle と同じです。
Circle
このコマンドは、 2 点で示される円上のグリッドの四角を変更します。 グリッドウィンドウ上でマウスボタンを押すと、 bitmap は、初めにマウスボタンが押された四角から、 マウスポインタがある四角で形成される円をハイライト (強調) します。 マウスボタンを離すと、実際に変更され、 ハイライトされた円は消えます。
Filled Circle
このコマンドは、円の枠が描かれる代わりに、円が塗りつぶされる点を除いて、 Circle と同じです。
Flood Fill
このコマンドは、 希望する四角をクリックした際、 マウスのポインタの下と隣接する領域をすべて塗りつぶします。 斜めにある四角は、隣接する領域とはみなされません。
Set Hot Spot
このコマンドは、 ビットマップイメージがカーソルを定義するのに使用される場合は、 グリッド内のある四角をホットスポットとして指定します。 マウスボタンを希望する四角の上で押すと、 ダイヤモンド型が表示されます。
Clear Hot Spot
このコマンドは、 ビットマップイメージから、設定されていホットスポットを削除します。
Undo
このコマンドは、一番最後に実行されたコマンドを、 アンドゥ (操作を行う前の状態に) します。 深さは 1 です。(つまり、 Undo の後に Undo を押すと、 その操作自体がアンドゥされます。
ファイルメニュー
ファイルメニューコマンドは、 ファイル (File) ボタンを押しながら、 適当なメニューのエントリを選択するか、 または、コントロールキーとあるキーを一緒に押して、 使用します。 これらのコマンドは、 ファイルと グローバルなビットマップパラメータ (サイズ、ベース名、ファイル名など) を取り扱います。
New
このコマンドは、 編集領域をクリアし、 新規に編集するファイル名のプロンプトを表示します。 新規のファイルへロードしません。
Load
このコマンドは、 ビットマップエディタ、新しいビットマップファイルをロードするのに 使用します。 現在のイメージが保存されていない場合は、 ユーザに変更を保存するか、無視するかを尋ねます。 エディタは、一度に一つのファイルしか編集できません。 複数のファイル間で編集が必要な場合は、 必要な数だけエディタを起動し、 以下に説明するカットとペースト機能を使用してください。
Insert
このコマンドは、 ビットマップファイルを現在編集中のイメージに挿入するのに 使用します。 ファイル名のプロンプトが表示された後、 グリッドのウィンドウ上をクリックし、 長方形の枠をファイルを挿入したい場所へドラッグします。
Save
このコマンドは、 ビットマップイメージを保存します。 <none> というファイル名の場合以外は、 ファイル名をプロンプトしません。 ファイル名を指定しない場合、または − とした場合は、 アウトプットは標準出力 (stdout) へパイプされます。
Save As
このコマンドは、 ビットマップイメージを新規のファイル名でプロンプト下の値、保存します。 ファイル名を変更したい場合に使用します。
Resize
このコマンドは、 編集領域のサイズを新たなピクセル数に変更するのに使用します。 サイズは、WIDTHxHEIGHT の形式で入力されなければいけません。 編集中のイメージ情報は、 現在のイメージサイズより新しいサイズが小さい場合を除いて、 失われません。 エディタは巨大なファイルを編集するためのものではありません。
Rescale
このコマンドは、 編集領域を、新しい幅と高さに、スケールしなおすのに使用されます。 サイズは、WIDTHxHEIGHT の形式で入力されなければいけません。 小さいサイズにスケールしなおすと、 アンチエイリアスは行われず、編集中のイメージ情報は失われます。 もっとよい独自のリスケールのアルゴリズムを自由に追加しても構いません。
Filename
このコマンドは、 ベース名を変更したり、ファイルを保存しないで、 ファイル名を変更するのに使用されます。 ファイル名に − を指定した場合、 アウトプットは標準出力にパイプされます。
Basename
このコマンドは、 指定したファイル名と異なる名前が必要な場合に、 ベース名を変更するのに使用されます。
Quit
このコマンドは、 ビットマップアプリケーションを終了させます。 ファイルが保存されていない場合は、 ユーザにイメージを保存するか否かを、プロンプトを出して、尋ねます。 プロセスを殺したい場合は、このコマンドを使用してください。
編集メニュー
編集 (Edit) メニューコマンドは、 編集 (Edit) ボタンを押しながら、適切なメニューエントリを選択する、 あるいは、メタキーと他のキーを一緒に押して、使用することができます。 これらのコマンドを用いて、 グリッド、軸、ズーム、カット、ペーストなどの編集ができます。
Image
このコマンドは、 編集中のイメージと、 別のウィンドウに実際のサイズのイメージを反転させて表示します。 ウィンドウを移動して、編集を続行することもできます。 イメージのウィンドウ上でマウスの左ボタンをクリックすると、 ウィンドウが画面から消えます。
Grid
このコマンドは、 編集領域のグリッドを制御します。 グリッドのスペーシングが、 gridTolerance リソースで指定されている値 (デフォルトでは 8) より 小さい場合は、 グリッドは自動的にオフになります。 明示的にこのコマンドを実行することで、エンフォースされます。
Dashed
このコマンドは、 グリッドの線の stipple (点線) を制御します。 このコマンドは、 dashes のリソースで指定されている stipple をオン/オフします。
Axes
このコマンドは、 編集中のイメージのメインの軸をハイライトするかどうかを制御します。 この線は、イメージの一部ではありません。 これは、ユーザが対称的なイメージを作成するのを手助けするためのもので、 メインの軸がハイライトされていることで、編集を手助けします。
Stippled
このコマンドは、 ビットマップイメージの杯来とされた領域の stipple を制御します。 このコマンドは、 stipple リソースに指定されている stipple をオン/オフします。
Proportional
このコマンドは、 比例モードを制御します。 比例モードがオンの場合、 ビットマップウィンドウの比率に関係なく、 イメージの個々の四角の幅と高さが全て同じになります。
Zoom
このコマンドは、 ズームのモードを制御します。 マークされたイメージがすでに表示されている場合は、 ビットマップは自動的にズームインされます。 それ以外の場合は、 ユーザがズームモードで編集する領域をハイライトします。 そうすると、ビットマップが自動的にそちらへスイッチします。 編集コマンドおよび他のユーティリティの全てが、 ズームモードで使用できます。 ズームアウトした場合、 undo コマンドは、ズームモードで行った全てのセッションをアンドゥします。
Cut このコマンドは、 ハイライトされたイメージ領域の内容を 内部のカット/ペーストバッファにカットします。
Copy
このコマンドは、 ハイライトされたイメージ領域の内容を 内部のカット/ペーストバッファにコピーします。
Paste
このコマンドは、 他のビットマップのアプリケーションで ハイライトされたイメージ領域があるかどうか、および 内部のカット/ペーストバッファに何かあるかどうかをチェックし、 ある場合はそれをイメージにコピーします。 コピーするイメージを希望する場所に置くためには、 編集中のウィンドウをクリックし、 アウトラインされたイメージを希望する場所までドラッグし、 希望する場所でボタンを離します。
カット/ペースト
ビットマップでは、2 つのカット/ペーストのメカニズムをサポートしてます。 内部のカット/ペーストと、 グローバルな X 選択カット/ペーストです。 内部のカット/ペーストは、 copy や move などの描画コマンドを実行する際、および edit メニューから cut や copy 個亜mん度を実行する際に 使用されます。 グローバルな X 選択カット/ペーストは、 画面に表示されているイメージで、 ハイライトされた領域がある場合に使用されます。 他のビットマップエディタからイメージの一部をコピーするには、 Mark コマンドを使用して、希望する領域をハイライトするか、 シフトキーを押しながらマウスの左ボタンで押しながら領域をドラッグします。 選択した領域がハイライトされると、 他のアプリケーション (xterm など) の選択した値は消され、 その領域はハイライトされなくなります。 Edit メニューの Paste コマンドを使用して、 あるいは、マウスボタンを制御して、 イメージのある特定の部分を 別の (または同一の)ビットマップアプリケーションに コピーしてみましょう。 イメージ領域をハイライトせずにこれを行おうとした場合、 ビットマップは内部のカット/ペーストバッファに読み込まれ、 その時点そこに保存されていたものがペーストされます。
ウィジェット
以下は、 bitmap アプリケーションのウィジェットの構造体です。 インデントは、階層を示します。 ウィジェットクラス名が最初に与えられ、 その後にウィジェットのインスタンス名が続きます。 ビットマップウィジェットを除いて、他のウィジェットは全て 標準 Athena ウィジェットセットを使用しています。
Bitmap bitmap
TransientShell image
Box box
Label normalImage
Label invertedImage
TransientShell input
Dialog dialog
Command okay
Command cancel
TransientShell error
Dialog dialog
Command abort
Command retry
TransientShell qsave
Dialog dialog
Command yes
Command no
Command cancel
Paned parent
Form formy
MenuButton fileButton
SimpleMenu fileMenu
SmeBSB new
SmeBSB load
SmeBSB insert
SmeBSB save
SmeBSB saveAs
SmeBSB resize
SmeBSB rescale
SmeBSB filename
SmeBSB basename
SmeLine line
SmeBSB quit
MenuButton editButton
SimpleMenu editMenu
SmeBSB image
SmeBSB grid
SmeBSB dashed
SmeBSB axes
SmeBSB stippled
SmeBSB proportional
SmeBSB zoom
SmeLine line
SmeBSB cut
SmeBSB copy
SmeBSB paste
Label status
Pane pane
Bitmap bitmap
Form form
Command clear
Command set
Command invert
Toggle mark
Command unmark
Toggle copy
Toggle move
Command flipHoriz
Command up
Command flipVert
Command left
Command fold
Command right
Command rotateLeft
Command down
Command rotateRight
Toggle point
Toggle curve
Toggle line
Toggle rectangle
Toggle filledRectangle
Toggle circle
Toggle filledCircle
Toggle floodFill
Toggle setHotSpot
Command clearHotSpot
Command undo
色
ビットマップに色を使用したい場合は、 xrdb で読み込むファイルの #ifdef COLOR の部分に 以下を指定します。 ∗customization: −color これにより、 ビットマップはアプリケーションデフォルトの色指定のファイル ( /usr/lib/X11/app-defaults/Bitmap-color) 色を読み込みます。
ビットマップウィジェット
ビットマップウィジェットは、 ラスタイメージを編集する単独のウィジェットです。 大きなイメージを編集するためのものではありませんが、 使用はできます。 他のアプリケーションに組み込んで、 標準編集ツールとして使用しても構いません。 以下は、ビットマップウィジェットが提供するリソースです。
Bitmap Widget
Header file Bitmap.h
ClassbitmapWidgetClass
Class NameBitmap
SuperclassBitmap
全て Simple Widget リソースに ... を加えたものです。
リソース名クラス型デフォルト値
foregroundForegroundPixelXtDefaultForeground
highlightHighlightPixelXtDefaultForeground
framingFramingPixelXtDefaultForeground
gridToleranceGridToleranceDimension8
sizeSizeString32x32
dashedDashedBooleanTrue
gridGridBooleanTrue
stippledStippledBooleanTrue
proportionalProportionalBooleanTrue
axesAxesBooleanFalse
squareWidthSquareWidthDimension16
squareHeightSquareHeightDimension16
marginMarginDimension16
xHotXHotPositionNotSet (−1)
yHotYHotPositionNotSet (−1)
button1FunctionButton1FunctionDrawingFunctionSet
button2FunctionButton2FunctionDrawingFunctionInvert
button3FunctionButton3FunctionDrawingFunctionClear
button4FunctionButton4FunctionDrawingFunctionInvert
button5FunctionButton5FunctionDrawingFunctionInvert
filenameFilenameStringNone ("")
basenameBasenameStringNone ("")
ファイルのフォーマット
Write Output コマンドは、ビットマップをプログラムに変換でき、 X ツールキットのピクスマップリソースによって参照でき、 その他のプログラムによって操作でき (xsetroot 参照)、 あるいは種々のプログラミングライブラリ中のユーティリティルーチンを 使用して読み込むことのできる簡単な C プログラムの断片としてストアします。 ビットマップならびにホットスポット(指定されている場合)の幅と高さは、 ファイルの初めにプリプロセッサのシンボルとして書き込まれます。 それからビットマップイメージは文字の配列として書かれます。
#define name_width 11
#define name_height 5
#define name_x_hot 5
#define name_y_hot 2
static char name_bits[] = {
0x91, 0x04, 0xca, 0x06, 0x84,
0x04, 0x8a, 0x04, 0x91, 0x04
};
プリプロセッサのシンボルとビット配列に対する name プレフィックス は、コマンド行に与えられた filename 引数から構成されます。 どんなディレクトリでも、名前の前部(プレフィックス)はとられ、ピリオド で始まるサフィックスもとられます。 それ以外のアルファベット文字は、下線と置き換えられます。 name_x_hot および name_y_hot シンボルは、ホットスポット が Set Hot Stop コマンドを使用して指定された場合にだけ存在します。
配列内の各文字には、イメージのひとつの行からの 8 ビットが含まれます (行はその終わりで 8 の倍数になるよう埋込みが行われ、これを可能にします)。 行は、左から右へ、そして上から下へ書かれます。 配列の最初の文字は最上行の1番左側の 8 ビットを保ち、最後の文字は、 1番下の行の最も右側の 8 ビット(埋込みを含む)を保ちます。 各文字において、ビットマップ内の1番左側のビットは、文字内の最下位ビットです。
このプロセスは、行をそれぞれ 8 ビットを含んだ語に分割し、 ビットを各語ごとに逆にし(アラビア数字は右側に有効数字をもち、 イメージは左側に最下位ビットをもっているためです)、 そして各語を 2 進から 16 進数に翻訳することによって、 ビジュアルに表示することができます。
下記の例においては、左側の 1 と 0 の配列は X11 とスペルする 5 行と 11 列を含むビットマップを表しています。 右側は、長さが 8 の倍数 (16) となるように、0 が埋め込まれた各行をもった 8 ビットの語に分割された左側と同じ配列です。
10001001001 10001001 00100000
01010011011 01010011 01100000
00100001001 00100001 00100000
01010001001 01010001 00100000
10001001001 10001001 00100000
ビットマップの埋め込みと分割が行われた各語内のビットを逆にすると、 下記の左側の数字が生じます。 各語を 16 進数として解釈すると、右側の数字配列が生じます。
10010001 00000100 0x91 0x04
11001010 00000110 0xca 0x06
10000100 00000100 0x84 0x04
10001010 00000100 0x8a 0x04
10010001 00000100 0x91 0x04
次に、左から右へ、上から下へ各行を読み取ることによって、文字配列が 生じます。
static char name_bits[] = {
0x91, 0x04, 0xca, 0x06, 0x84,
0x04, 0x8a, 0x04, 0x91, 0x04
};
bmtoa プログラムを使用して、表示やテキストファイルへの保管の ために bitmap ファイルを文字配列に変換することができます。 atobm プログラムを使用して、文字列を bitmap フォーマットに 変換し、戻すことができます。
プログラムでのビットマップの使用
bitmap ファイルのフォーマットは、X プログラム内で簡単に 使用することのできるビットマップとカーソルを作るよう設計されています。 下記のコードを使用して、this.cursor および this_mask.cursor で定義されたビットマップからカーソルを作成することができます。
#include "this.cursor"
#include "this_mask.cursor"
XColor foreground, background;
/∗ フォアグラウンドとバックグラウンドカラーの構造体をフィルする ∗/
Pixmap source = XCreateBitmapFromData (display, drawable,
this_bits, this_width, this_height);
Pixmap mask = XCreateBitmapFromData (display, drawable,
this_mask_bits, this_mask_width, this_mask_height);
Cursor cursor = XCreatePixmapCursor (display, source, mask,
foreground, background, this_x_hot, this_y_hot);
Bitmap (点刻を必要とするルーチンとともに使用されるシングルプレーン の Pixmap)、あるいはフルデプスの Pixmap (ウィンドウのバックグラウンド およびボーダに使用されることが多い) においては、bitmap ファイルに 読み込んだり、ファイル内のデータを返すのにそれ以外のルーチンを使用する こともできます。 アプリケーションの著者は、プログラムが正しくカラーおよび白黒 ディスプレイ上で機能するよう、Bitmaps と Pixmaps の相違を慎重に 理解しなければなりません。
旧バージョンとの互換性のために、bitmap は X10 フォーマット の bitmap ファイルも受け付けます。 ただし、ファイルがそれに再度書き出される場合は、それは X11 フォーマット となります。
X のデフォルト
bitmap は下記のリソースを使用します。
Background
ウィンドウのバックグラウンドの色。 ビットマップにおいて 0 であるビットは、この色で表示されます。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 白 です。
BorderColor
ボーダの色。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
BorderWidth
ボーダの幅。 デフォルト値は 2 です。
BodyFont
テキストのフォント。 デフォルト値は 変数 です。
Dashed
“off” の場合、 bitmap はグリッドの線を実線で描きます。 デフォルト値は “on” です。
Foreground
フォアグラウンドの色。 ビットマップ内で 1 であるビットは、この色で表示されます。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
Highlight
強調の色。 bitmap はこの色を使って、ホットスポットを示し、 Move Area、 Copy Area、 Set Area、 Clear Area、 および Invert Area コマンドによって影響を受ける矩形領域を示します。 強調の色が指定されない場合は、 bitmap を逆にすることにより強調します。 このオプションは、カラーディスプレイ上でだけ役に立ちます。
Mouse
ポインタ(マウス)カーソルの色。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
Geometry
ビットマップウィンドウのサイズと位置。
Dimensions
新しいビットマップを作成するときに使用される WIDTHxHEIGHT 。
関連事項
X(7), Xlib − C Language X Interface (particularly the section on Manipulating Bitmaps), XmuReadBitmapDataFromFile
バグ
古いコマンド行引数は、他の X プログラムと一致しません。
ポインタボタンを押したままポインタを早く動かしすぎると、 失われてしまう四角もあります。 これは、X サーバがポインタの位置を試すことのできる頻度に対する制限の ため起こります。
コマンド行上で指定されたもの以外のファイルに書込みを行う方法はありません。
プログラムが起動されてしまってから、 ビットマップのサイズを変更する方法はありません。
undo コマンドはありません。
著作権
Copyright 1988, Massachusetts Institute of Technology.
権利と許可の声明文については X(7) を参照のこと。
著者
bitmap by Ron Newman, MIT Project Athena; documentation, bmtoa, and atobm by Jim Fulton, MIT X Consortium.
複数の四角は、ボタンを押したままそれらの四角にカーソルを通過させる ことによって、1 度に変更することができます。 セットされた四角はぬりつぶされ、ビットマップでは1を表します。 クリアされた四角は空で 0 を表します。
ボタン 1
このボタン(通常はポインタの最も左側)は、1つ以上の四角をセットする のに使用されます。 ビットマップ内のそれに対応するビットがオンになり(1 に設定される)、 /へ角がぬりつぶされます。
ボタン 2
このボタン(通常は真中)は、1以上の四角を反転させるのに使用します。 ビットマップ内のそれに対応するビットがフリップします(1 が 0 になり、 0 が 1 になります)。
ボタン 3
このボタン(通常右側)は、1つ以上の四角をクリアするのに使用されます。 ビットマップ内のそれに対応するビットがオフになり(0 に設定される)、 四角は空になります。
メニューコマンド
形状をより簡単に定義できるよう、bitmap はグリッドの全部分を 1度に描くためのコマンドを 13、ホットスポットを操作するためのコマンドを 2 つ、そしてビットマップファイルを更新して終了するためのコマンドを 2 つ提供します。 これらの操作のそれぞれに対応するコマンドボタンは、グリッドの右側にあります。
コマンドの中には、グリッドの矩形領域を処理するものもあります。 それらの領域は、コマンドボタンを押してから、カーソルを希望する領域の 左上部の四角に移動させ、ポインタボタンを押し、カーソルを下部右側の 隅(ボタンは押したまま)にまで移動し、ボタンから手を離すことにより 選択します。 カーソルを移動している間に他のボタンを押すか、 グリッド外でボタンを離せばコマンドを中止することができます。
コマンドを呼び出すには、そのコマンドボタンの上にポインタを移動させ、 いずれかのボタンをクリックします。
Clear All
このコマンドは、ボタン3 がグリッド内のあらゆる四角に対して押されたかのように、 ビットマップ内のすべてのビットをクリアするのに使用されます。 これをアンドゥすることはできません。
Set All
このコマンドは、ボタン1がグリッド内のあらゆる四角に対して押されたかのように、 ビットマップ内のすべてのビットを設定するのに使用されます。 これをアンドゥすることはできません。
Invert All
このコマンドは、ボタン2がグリッド内のあらゆる四角に対して押されたかのように、 ビットマップ内のすべてのビットを逆にするのに使用されます。
Clear Area
このコマンドは、ボタン3 がリージョン内の各四角に対して押されたかのように、 グリッドのリージョンをクリアするのに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、 クリアする領域が上記に概略されているとおりに選択されなければならないことを 示します。
Set Area
このコマンドは、ボタン1 がリージョン内の各四角に対して押されたかのように、 グリッドのリージョンを設定するのに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、設定する領域が 上記に概略されているとおりに選択されなければならないことを示します。
Invert Area
このコマンドは、ボタン2がリージョン内の各四角に対して押されたかのように、 グリッドのリージョンを逆にするのに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、 逆にする領域が上記に概略されているとおりに選択されなければならないことを 示します。
Copy Area
このコマンドは、グリッドのリージョンをある位置から別の位置に複写する のに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、 複写する領域が上記に概略されているとおりに 選択されなければならないことを示します。 次にカーソルを、リージョンの上部左隅が複写される四角上で クリックしなければなりません。
Move Area
このコマンドは、グリッドのリージョンをある位置から別の位置に 移動するのに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、 移動する領域が上記に概略されているとおりに 選択されなければならないことを示します。 次にカーソルを、リージョンの上部左隅が移動される四角上で クリックしなければなりません。 リージョンの元の位置にあり、新しい位置にはない四角はどれもクリアされます。
Overlay Area
このコマンドは、グリッドのリージョンをある位置から別の位置に複写する のに使用されます。 このコマンドが呼び出された場合は、カーソルは形状を変え、 複写する領域が上記に概略されているとおりに 選択されなければならないことを示します。 次にカーソルを、リージョン上部左隅がオーバレイされる四角上でクリック しなければなりません。 リージョン内で設定される四角だけが、新しい位置でタッチされます。
Line このコマンドは、2点間のラインに各四角を設定します。 このコマンドが呼び出された場合は、カーソルは形状を変え、 ポインタがラインの両端上でクリックされなければならないことを示します。
Circle
このコマンドは、中心点と曲線上の点によって指定される円上に四角を設定します。 このコマンドが呼び出された場合は、カーソルは形状を変え、 ポインタが円の中心上でクリックされてから曲線上の点で クリックされなければならないことを示します。 グリッドのサイズと離散ピクセルを用いて作業しなければならないという 制限のために、小さい円は余り丸く見えないこともあります。
Filled Circle
このコマンドは、中心点と曲線上の点によって指定される円内のすべての 四角を設定します。 このコマンドが呼び出された場合は、カーソルは形状を変え、 ポインタが円の中心点上でクリックされてから、 曲線上の点上でクリックされなければならないことを示します。 円をぬりつぶすためのあらゆる四角が設定されます。
Flood Fill
このコマンドは、すべてのクリアする四角を包囲形状に設定します。 このコマンドが呼び出された場合は、カーソルは形状を変え、 ポインタはぬりつぶす形状内の任意の空の四角上でクリックされなければならない ことを示します。 示された四角と水平あるいは垂直に隣接するすべての空の四角は、 包囲形状に並べられます。 形状がクローズされないとグリッド全体がぬりつぶされます。
Set Hot Spot
このコマンドは、ビットマップがカーソルを定義するのに使用される場合は、 グリッド内の 1つの四角をホットスポットとして指定します。 このコマンドが呼び出された場合は、カーソルは形状を変え、 ポインタはホットスポットを含むために 四角上でクリックされなければならないことを示します。
Clear Hot Spot
このコマンドは、ビットマップからあらゆる指定されたホットスポットを削除します。
Write Output
このコマンドは、コマンド行上に指定されたファイル名に対する ビットマップを表す C コードの小さい断片を書き込みます。 ファイルがすでに存在する場合は、新しいファイルを作成する前に、 元のファイルは filename~ に再命名されます。 ビットマップファイルの再命名または書き込みのどちらかにおいてエラーが 生じた場合は、対話ボックスが現れ、ビットマップ が 代わりに /tmp/filename を使用しなければならないか否かを尋ねます。
Quit このコマンドは、bitmap にビットマップをセーブして(それが変更 された場合)から、終了しなければならないか否かを尋ねる対話ボックスを 表示させます。 yes と応答すると、Write Output を呼び出すのと同じ結果を 生じ、no と応答すると、bitmap は単に終了し、cancel と 応答すると、Quit コマンドが中止され、さらに変更を行うことができます。
ファイルのフォーマット
Write Output コマンドは、ビットマップをプログラムに変換でき、 X ツールキットのピクスマップリソースによって参照でき、 その他のプログラムによって操作でき (xsetroot 参照)、 あるいは種々のプログラミングライブラリ中のユーティリティルーチンを 使用して読み込むことのできる簡単な C プログラムの断片としてストアします。 ビットマップならびにホットスポット(指定されている場合)の幅と高さは、 ファイルの初めにプリプロセッサのシンボルとして書き込まれます。 それからビットマップイメージは文字の配列として書かれます。
#define name_width 11
#define name_height 5
#define name_x_hot 5
#define name_y_hot 2
static char name_bits[] = {
0x91, 0x04, 0xca, 0x06, 0x84,
0x04, 0x8a, 0x04, 0x91, 0x04
};
プリプロセッサのシンボルとビット配列に対する name プレフィックス は、コマンド行に与えられた filename 引数から構成されます。 どんなディレクトリでも、名前の前部(プレフィックス)はとられ、ピリオド で始まるサフィックスもとられます。 それ以外のアルファベット文字は、下線と置き換えられます。 name_x_hot および name_y_hot シンボルは、ホットスポット が Set Hot Stop コマンドを使用して指定された場合にだけ存在します。
配列内の各文字には、イメージのひとつの行からの 8 ビットが含まれます (行はその終わりで 8 の倍数になるよう埋込みが行われ、これを可能にします)。 行は、左から右へ、そして上から下へ書かれます。 配列の最初の文字は最上行の1番左側の 8 ビットを保ち、最後の文字は、 1番下の行の最も右側の 8 ビット(埋込みを含む)を保ちます。 各文字において、ビットマップ内の1番左側のビットは、文字内の最下位ビットです。
このプロセスは、行をそれぞれ 8 ビットを含んだ語に分割し、 ビットを各語ごとに逆にし(アラビア数字は右側に有効数字をもち、 イメージは左側に最下位ビットをもっているためです)、 そして各語を 2 進から 16 進数に翻訳することによって、 ビジュアルに表示することができます。
下記の例においては、左側の 1 と 0 の配列は X11 とスペルする 5 行と 11 列を含むビットマップを表しています。 右側は、長さが 8 の倍数 (16) となるように、0 が埋め込まれた各行をもった 8 ビットの語に分割された左側と同じ配列です。
10001001001 10001001 00100000
01010011011 01010011 01100000
00100001001 00100001 00100000
01010001001 01010001 00100000
10001001001 10001001 00100000
ビットマップの埋め込みと分割が行われた各語内のビットを逆にすると、 下記の左側の数字が生じます。 各語を 16 進数として解釈すると、右側の数字配列が生じます。
10010001 00000100 0x91 0x04
11001010 00000110 0xca 0x06
10000100 00000100 0x84 0x04
10001010 00000100 0x8a 0x04
10010001 00000100 0x91 0x04
次に、左から右へ、上から下へ各行を読み取ることによって、文字配列が 生じます。
static char name_bits[] = {
0x91, 0x04, 0xca, 0x06, 0x84,
0x04, 0x8a, 0x04, 0x91, 0x04
};
bmtoa プログラムを使用して、表示やテキストファイルへの保管の ために bitmap ファイルを文字配列に変換することができます。 atobm プログラムを使用して、文字列を bitmap フォーマットに 変換し、戻すことができます。
プログラムでのビットマップの使用
bitmap ファイルのフォーマットは、X プログラム内で簡単に 使用することのできるビットマップとカーソルを作るよう設計されています。 下記のコードを使用して、this.cursor および this_mask.cursor で定義されたビットマップからカーソルを作成することができます。
#include "this.cursor"
#include "this_mask.cursor"
XColor foreground, background;
/∗ フォアグラウンドとバックグラウンドカラーの構造体をフィルする ∗/
Pixmap source = XCreateBitmapFromData (display, drawable,
this_bits, this_width, this_height);
Pixmap mask = XCreateBitmapFromData (display, drawable,
this_mask_bits, this_mask_width, this_mask_height);
Cursor cursor = XCreatePixmapCursor (display, source, mask,
foreground, background, this_x_hot, this_y_hot);
Bitmap (点刻を必要とするルーチンとともに使用されるシングルプレーン の Pixmap)、あるいはフルデプスの Pixmap (ウィンドウのバックグラウンド およびボーダに使用されることが多い) においては、bitmap ファイルに 読み込んだり、ファイル内のデータを返すのにそれ以外のルーチンを使用する こともできます。 アプリケーションの著者は、プログラムが正しくカラーおよび白黒 ディスプレイ上で機能するよう、Bitmaps と Pixmaps の相違を慎重に 理解しなければなりません。
旧バージョンとの互換性のために、bitmap は X10 フォーマット の bitmap ファイルも受け付けます。 ただし、ファイルがそれに再度書き出される場合は、それは X11 フォーマット となります。
X のデフォルト
bitmap は下記のリソースを使用します。
Background
ウィンドウのバックグラウンドの色。 ビットマップにおいて 0 であるビットは、この色で表示されます。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 白 です。
BorderColor
ボーダの色。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
BorderWidth
ボーダの幅。 デフォルト値は 2 です。
BodyFont
テキストのフォント。 デフォルト値は 変数 です。
Dashed
“off” の場合、 bitmap はグリッドの線を実線で描きます。 デフォルト値は “on” です。
Foreground
フォアグラウンドの色。 ビットマップ内で 1 であるビットは、この色で表示されます。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
Highlight
強調の色。 bitmap はこの色を使って、ホットスポットを示し、 Move Area、 Copy Area、 Set Area、 Clear Area、 および Invert Area コマンドによって影響を受ける矩形領域を示します。 強調の色が指定されない場合は、 bitmap を逆にすることにより強調します。 このオプションは、カラーディスプレイ上でだけ役に立ちます。
Mouse
ポインタ(マウス)カーソルの色。 このオプションは、カラーディスプレイ上でだけ役に立ちます。 デフォルト値は 黒 です。
Geometry
ビットマップウィンドウのサイズと位置。
Dimensions
新しいビットマップを作成するときに使用される WIDTHxHEIGHT 。
関連事項
X(7), Xlib − C Language X Interface (particularly the section on Manipulating Bitmaps), XmuReadBitmapDataFromFile
バグ
古いコマンド行引数は、他の X プログラムと一致しません。
ポインタボタンを押したままポインタを早く動かしすぎると、 失われてしまう四角もあります。 これは、X サーバがポインタの位置を試すことのできる頻度に対する制限の ため起こります。
コマンド行上で指定されたもの以外のファイルに書込みを行う方法はありません。
プログラムが起動されてしまってから、 ビットマップのサイズを変更する方法はありません。
undo コマンドはありません。
著作権
Copyright 1988, Massachusetts Institute of Technology.
権利と許可の声明文については X(7) を参照のこと。
著者
bitmap by Ron Newman, MIT Project Athena; documentation, bmtoa, and atobm by Jim Fulton, MIT X Consortium.
NEWS-OSRelease 4.2.1R