Akira's Commentary


シェイプ(非矩形)ウィンドウ

OS/2-PM上でシェイプウィンドウ(非矩形のウィンドウ)を 実現したコントロール(ウィジェット)を作り、 それを使って3本のサンプルプログラムを作りました。 コントール、サンプルプログラムともにソースを公開します。

アーカイブ (v2.00, Dec. 2001)
スクリーンショット (左側の部分)

シェイプコントロールはXの Shape Extension に相当するものです。 サンプルプログラムを使っていただけると判ると思いますが、 シェイプコントロールを使うと、デスクトップ上にいきなり (四角い窓に囲まれずに)絵を表示することができます。

この機能を使っていろいろとあやしげな(軟弱な) プログラムが作成されることを願っています。 サンプルプログラムでも、使い方によって、 デスクトップが軟弱になること請け合いです。

このライブラリはLGPLで配布します。これにより、 このライブラリは商用プログラムを含むいかなるプログラムでも 使用(リンク/配布)することが可能になります。

サンプルプログラム

trbitmap - ビットマップを背景部分を透過にして表示

trbitmapは、ビットマップを背景部分 (左下隅と同じ色の部分を背景とみなします)を透明にして表示します。 コマンドラインで以下のように起動するか、 プログラムオブジェクトを作って、 ビットマップファイルをドロップしてください。

trbitmap ビットマップファイル

デスクトップ上には、前景部分だけのウィンドウが表示されます。 あまり大きなビットマップや、複雑な形状のビットマップを 表示しようとするとシステム(というかPM)に 多大な負荷がかかりますのでご注意の程を。

XMascotの マスコットなんかはちょうど手頃な大きさです。 こんなのをビットマップに変換して表示してやると デスクトップがとても軟弱になります。 なお、XMascotの作者の渡邊剛さんの許可を得て、 アーカイブにはこれらのビットマップが含まれています。 'bitmaps'ディレクトリの下にありますので、試してみてください。 元の絵は、 「同級生2」マスコットページ で入手できます。

ところで、誰か、XMascotをOS/2に移植しませんか?

tranime- 複数ビットマップによるアニメーション

tranimeは複数のファイルを繰り返し表示して アニメーションもどきで表示します。 一連のビットマップファイルを指定して起動してください。

tranime ビットマップファイル ...

起動すると制御ダイアログが表示されます。 そこで、アニメーションの時間間隔と移動量を設定してください。 これも、大きな、複雑な、大量のビットマップを表示しようとすると システムに多大な負荷がかかります。 なるべく小さな、簡単な、少量のビットマップで試してください。

変わった使い方としては、Animated GIF の各フレームを ビットマップに変換し、移動量0で表示してやると、 デスクトップで同じ(まあ、性能の問題で遅くなるとは思いますが) アニメーションを表示することもできます。 これも使うビットマップによっては思いっきり軟弱になります。

アーカイブにはアニメーション用のビットマップも含まれています。

tranime bitmaps\multi*.bmp

で起動してみてください。 マルチがデスクトップをお掃除してくれます。

これらのビットマップは、 XMultiパッケージの ものを変換したもので、 XMultiの作者の渡邊剛さん (これも!!)の許可を得てアーカイブに含めています。

プログラムオブジェクトに複数ファイルを渡す方法、ですが、 標準のプログラムオブジェクトではできないようです。 しょうがないので、昔EDM/2 に出ていたものを改造して、 複数ファイルでプログラムを起動するようなプログラムオブジェクト Multiple Argument Program Object を作ってみました。

treyes - Shape Extension 付の xeyes もどき

treyesは、 まあありがちなマウスを見つめる目玉です。コマンドラインから

treyes

で、あるいはプログラムオブジェクトを作って起動してください。 特に指定がなければ、デフォルトの大きさで、 マウス位置に目玉が表示されます。 目玉の位置、サイズは変更できます。

このサンプルでは、シェイプウィンドウ上での 画面の更新を取り扱っています。同じような方法で、 丸い時計やらなにやらが作れると思います。

更新記録

2001-12-06
ライセンス変更、バグフィックス

ライセンスをGPLからLGPLに変更しました。 これによって、ソースを公開することなくこのライブラリを使用 (リンク、配布)することが可能になりました。

Masami Kitamura さん(masamik@attglobal.net)から 報告があったバグを修正しました。 hpsDrawとhpsMaskとを一部混同している部分があり、 異なったものを指定した場合に誤動作する、というものです。

1999-03-05
高速化チューニング

Ulrich Moeller さん (ulrich.moeller@rz.hu-berlin.de、XFolderの作者の方)から頂いた 高速化の修正を組み込みました。 これでいきなりCPU負荷が半減してしまいました。

1998-12-02
バグフィックスと高速化チューニング

諏訪さん(jjsuwa@ibm.net)より頂いた高速化の修正を 組み込みました。これで、とあるビットマップのアニメーションで、 CPU負荷が80%→60%に下がりました。

シェイプウィンドウを使ったプログラム

Romyさんがあなたを見つめます

Romy's Page を見ている内に思い付いて作ってしまったプログラムです。 Romyさんよりビットマップの使用/公開許可をいただきました。 デスクトップでRomyさんがあなたのマウスを見つめます。

ダウンロード   [Normal Version] [Xmas Version]
EMX (0.9d以上)、およびshapewin.dllが必要です。

2001-12-06
ライブラリの更新に伴い、再makeしました。 Romyさんのページのクリスマス用の絵を見て、 クリスマス版も作ってしまいました。
1999-03-05
シェイプウィンドウの更新に伴い、再makeしました。

お座りマルチ for OS/2 PM

「お座りマルチ」のOS/2-PM版を作ってしまいました。 「なでなで」、「ふにふに」して幸せになりましょう。

詳細...

仲間たちと紹介記事

OS/2 eZine
Romy's Eyeとお座りマルチとが OS/2 eZine紹介 されました。
魅亜ちゃん
Sofiyaさん は、シェイプウィンドウライブラリを使って、可愛い 魅亜ちゃん を作られました。
Tile Window Library
諏訪さんは 他の手法による非矩形ウィンドウライブラリ TileWindow とそれを使ったいくつかの軟弱プログラムを公開されています。 私のは、HPSから形状を生成するようになっているのに対して、 TileWindowは、形状はREGIONを元にするようにしています (ただ、HPSからREGIONを生成するヘルパーが付属してしますが)。