スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Ubuntuの調査を色々と | トップページ | まずはエフェクター »

新規部品は揃った感じ

今は、Ubuntu環境用の自製ソフト環境を拡充しようとしているのだが、その為には、新しい試みが必要になるので色々と調査していた。その試みの一つは、昨日書いた様な、GNOME3のシェル拡張を使う事になるのだが、より本質的なのは・・・

マウスクリックエフェクターというのは、マウスの現在位置とボタンの状態を監視して、ボタンが押されたら、現在位置の周辺に波紋アニメーション等を描画するソフトという事になる。
 
上記を見ていると、マウスクリックエフェクターというのは、小学生にプログラミングを教える場合の課題にしても良さそうなくらい、シンプルな感じがするかもしれないのだが、実際の所としては、そう簡単に作れるモノでもない。
 
何故なら、元々、プログラムというのは、入力データを計算式に代入して得られた計算結果を出力するモノ、みたいな所があったので、例えば、数値を入力するためのライブラリ関数だとか計算結果をコンソールにテキスト出力する様なライブラリ関数は普通に存在するので、そういった処理を扱うのは簡単なのだが、そういったライブラリ関数がない機能の実装は大変になるからだ。
 
具体的には、マウスクリックエフェクターの場合、マウスの現在位置とボタンの状態を監視する必要があるのだが、一般的なアプリケーションとは異なり、自分のウインドウとは無関係の場所にあるマウスボインターの位置だとかボタンの状態を把握する必要がある。
 
なので、この時点で一般的なアプリとは異なる機能を実装する必要がある事になるのだが、マウス状態の監視機能については、まだ、それなりに使われる事もあるので、ネットで色々と検索していれば、やり方が書かれたブログ記事なんかがヒットする事もあるかもしれない。
 
マウスクリックエフェクターの実装がより大変になるのは、波紋アニメーション等の描画は、普通、半透明で描画しなければならず、かつ、描画した画像領域に対するマウスクリック等のイベントは透過させなければならない、という事だ。
 
何故なら、マウスをダブルクリックする場合を考えてみれば判りやすいのだが、一度目のクリックが行われたタイミングで波紋アニメーションの描画をスタートすると、二度目のクリックはアニメーション中に行われる事になるからだ。
 
つまり、マウスクリックフェクターが描画する画像がマウスクリックイベントを受け取ってしまうと、本来はダブルクリックしたかったGUI部品に対してはシングルクリックしか行えない事になる。
 
更に言えば、作者製のマウスクリックエフェクターの場合、マウスボタンが押されたタイミングで描画を開始するので、マウスクリックエフェクターの描画領域がマウスイベントを受け取ってしまうと、本来操作したいGUI部品はクリックすら出来ない事になる訳だ。
 
と、言う事で、マウスクリックエフェクターを実現しようとすると、実際の所としては、タイトルバー等を持たない透明背景のウインドウに半透明の画像を描画できなければならないし、そのウインドウはマウスイベントを受け取らない様にする必要がある。
 
で、実際の所、業務用ソフトの開発を20年もやってきた、なんてベテランプログラマーであったとしても、上記の様な機能を実装した事は一度もない、なんて人も多いかもしれない訳だ。
 
なので、上記の様なプログラムを作る場合には、API調査が必要になる訳なのだが、作者的には、既に、Windows/macOS用には、マウスクリックエフェクターを開発してきているのだが、その時には、こんな話は書いてこなかった。
 
これは何故なのかというと、必要なAPIを調査するのに大して苦労しなかったからなのだが、これに対して、Ubuntu版の開発にあたっては、こんな事を書いているのだが、これは、API調査に苦労したからだ。
 
と、言う事で、ネットを色々と検索してみても、中々、必要なAPIに関する情報なんかは出てこない筈なのだが、作者的には、何とか、プロトタイプの開発には成功したので、来週には、真面目な実装に取り掛かる事になる筈だ。
 
ちなみに、このブログでは、細かいAPIの話は書かないのだが、少なくとも、Ubuntu版のマウスクリックエフェクターとキーボードビュアーについては、レジストキー購入者には、ソースコードを提供しようかと思っている。
 
具体的には、現時点で、MasterReversiのレジストキー購入者には、プレミアムアイテムとしてEdaxBoardというソフトをソースコード付きで提供してあるのだが、同じ様な感じにする予定だ。
 
つまり、Ubuntu版のマウスクリックエフェクターとキーボードビュアーについては、AmuseGraphics/Mirror-DTCのレジストキーを購入すれば、ソースコードからビルドする事が可能になるし、その改変版を制作したり、それを自分のソフトとして公開する事も可能になる。
 
もっとも、ソースコードの公開は遠慮して貰うので、GPLでは公開できない事になるのだが、ソースコードを参照して上記の様なAPIの使い方を参考にしつつ、別ソフトを開発してGPLで公開するのは自由なので、実質的には、それで問題ないという人も多いかもしれない訳だ。
 
と、言う事で、マウスクリックエフェクターだとかキーボードビュアーについては、特別なAPIを使う必要があり、実際の所、その点だけが面倒で、それ以外のコーディングについては、最初に書いた小学生のプログラミング課題程度のお話になるので、作者的には、別段、ソースコードを公開しても惜しくはない訳だ。
 
だったら、普通にGPLで公開しろよ、という声も聞こえてきそうなのだが、10年くらい前とは違って、今では、GPLはアチコチで嫌われまくっているので、今時のソフト的には、ライセンスがGPLではない、というだけで、重宝されたりする訳だ。

« Ubuntuの調査を色々と | トップページ | まずはエフェクター »

トラックバック


この記事へのトラックバック一覧です: 新規部品は揃った感じ:

« Ubuntuの調査を色々と | トップページ | まずはエフェクター »

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google