スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 通報者が悪者にされる風土 | トップページ | 来年はフリー版を終了? »

Ubuntu版もほぼ完成

今は、macOS / Ubuntu版 AGMPlayer / AG-ムービーカッターのVer1.3.2を開発中で、macOS版は完成させたのでUbuntu版に移ったのだが、今日の時点で、こちらについても、ほぼ完成させた。まあ、作業はほぼコピペなので、当然ではあるのだが。

何度か書いて来た様に、作者製のmacOS版ソフトの開発環境では、作者がよく使うAPIについては、Windows版と同じモノが使える様にしている。

具体的には、CreateThreadだとかCreateEventだとかWaitForSingleObjectみたいなマルチスレッド系の関数だとか、CreateFileだとかSetFilePointerだとかReadFileだとかのファイル系の関数だとかは、macOS版ソフトでも、普通に使える訳だ。

つまり、上記の様な関数をmacOSの関数を使って処理する自前のライブラリを構築してあるので、Windows版ソフトの開発が終われば、UIを除いたmacOS版ソフトの殆どの処理については、Windows版ソフトのソースコードからコピペして来れる体勢になっている訳だ。

更に、Ubuntu版についても、同様に、Windows環境用の処理関数が使えるので、コピペして来れるのだが、作者製ソフトの開発環境的には、macOS版とUbuntu版の互換性はより高いので、macOS版ソフトをWindows版ソフトから移植する時には、それなりに頭を使う必要がある部分も無いことはないのだが、macOS版ソフトが完成してしまえば、Ubuntu版ソフトは、より簡単に開発可能な体勢になっている。

と、言うことなので、労多くして益少なしな事を嫌っている筈の作者的にも、ユーザー数がWindows環境と比べて圧倒的に少ない筈のUbuntu版ソフトの開発も行えている訳なのだが、前述の様に、自前ライブラリでは、UI部分は除かれている訳だ。

まあ、AfxMessageBoxの様な、メッセージ表示用のダイアログについては、一応、入れてあるので、単純なメッセージ表示だとか、YesNoダイアログみたいなモノについては問題はないのだが、例えば、今回の開発で必要になるシークプレビュー表示を行いたい場合には、特別なウインドウを作成する必要があるので、各OS用の処理関数を使う必要がある。

と、言うことで、Ubuntu版についても、実質的に問題となったのは、このシークプレビュー表示用のウインドウ作成をどうするか、という事だけだった訳だ。

で、macOS版の開発時に書いたのだが、macOS環境では、既に、TiExtenderを開発してあって、このTiExtenderを使ってみれば判る筈なのだが、作者的には、既に、macOS環境でも、半透明描画が可能なウインドウの作成処理ルーチンは持っている訳だ。

具体的には、少し前に、TiExtenderにはAG-デスクトップレコーダーよりも高性能な画面収録機能を搭載したのだが、当然のことながら、この画面収録機能でも、AG-デスクトップレコーダーと同様の領域指定録画が行える。

で、この領域指定録画時には、その領域を示す半透明の枠が表示されるのだが、こんな機能はOS自体には無い訳なので、実際の所としては、作者がその表示用に特別なウインドウを作成し、その中に、半透明な枠を描画している訳だ。

つまり、作者的には、macOS環境では、半透明の画像を描画可能なウインドウを作成できる処理ルーチンを持っていた訳なのだが、Ubuntu環境では、まだ、AG-デスクトップレコーダー相当のソフトは開発していないので、作者製の既存ソフトの中には、まだ、半透明描画が可能なウインドウを作成しているソフトは無かった訳だ。

と、言うことなので、作者的にも、この部分がどうなるのかが、唯一、心配ではあったのだが、特に苦労する事なく、実現できた。

もっとも、判っている人は少ない様な気もするのだが、現行のUbuntu版AGMPlayerにも、特別なウインドウを作成する機能は搭載されていた訳だ。

具体的には、AGMPlayerでは、全画面表示状態で、マウスカーソルを画面の最上部に持っていくと、メインメニューが表示されるのだが、この機能はOSに搭載されている訳ではなく、作者自らが、特別なウインドウを作成し、その中にメニュー項目を描画し、マウスイベントを取得して、メニューとして動作する様にしてある訳だ。

と、言うことなので、実は、Ubuntu環境でも、タイトルバー等が何も無いウインドウを作成する為の処理コードは存在していた訳なので、本当に問題となっていたのは、どうやって半透明描画を可能にするか、という事だけだったのだが、実は、この問題についても、既に、5年前に予備調査をしてあった訳だ。

具体的には、2012年8月14日の記事に「Gtkmm3.0で半透明ウインドウ 」というのがあって、今回、そこに書かれている手法を応用してみた所、半透明描画も可能になったので、無事、シークプレビュー機能の実装も行えた訳だ。

ちなみに、Windows版のユーザーなら、上記の文章を見て、シークプレビュー画像の何処に半透明描画が使われているんだ? と、疑問に思っているかもしれないのだが、実際の所としては、リリース版では、半透明描画は行わない様にした。

と、言う事で、長くなったので、結論だけ書いておくと、シークプレビュー機能用には、半透明描画機能自体は必須でもなかったのだが、実は、透明描画は行なっているので、透明描画関連の処理関数は必要だった訳だ。

なので、少し、苦労する事になった訳なのだが、これで、Ubuntu環境でも、今回は使わなかったものの、半透明描画は可能になったので、AG-デスクトップレコーダー相当のソフトを開発する為のピースは揃った事になる。

« 通報者が悪者にされる風土 | トップページ | 来年はフリー版を終了? »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/66218162

この記事へのトラックバック一覧です: Ubuntu版もほぼ完成:

« 通報者が悪者にされる風土 | トップページ | 来年はフリー版を終了? »

2018年1月
  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 31      

広告

プライバシーポリシー

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

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

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google