スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 人生の無駄遣いではある | トップページ | 明日には何とかなるかも »

当然、自前ライブラリ化

今はmacOS用AGMPlayerの開発フェーズで、まずは、macOS用AG-ムービーカッターを開発する必要がある。なので、今週から真面目に作業を始めているのだが、何度も書いた様に、macOS用のAPIはそのまま使えるシロモノではない。なので、自前ライブラリ化は必須だ。

今回、作者的に必要になるmacOS用のAPIは、主に、グラフィックスの作成用APIになる。

何故なら、作者的には、まず、Mirror-DTCのmacOS用ネイティブ版を開発済みな訳なので、その時に、既に、CreateThreadだとか、CreateEventの様な、Mirror-DTCで山の様に使っているスレッド系APIについては、Windows版ソフトからの移植が行える様に、同一関数名のmacOS用自前ライブラリを構築済みだからだ。

そして、昨年の終わりごろから開発していたAGMConvのmacOS版では、AV Foundationを使ったMP4なんかの一般動画のデコードとエンコードが行えるのだが、そもそも、このAGMConvというのは、AG-ムービーカッター/AGMPlayer用に、一般動画を扱える自前ライブラリを構築する為に、そのサンプルソフトとして開発していた、というのが実情な訳だ。

なので、作者的には、既に、一般動画を扱える自前ライブラリも所持しているし、AGM形式動画を扱うために必要になるクラスなんかについても、前述のスレッド系APIを移植済みなので、それを使えば、Windows版のソースコードを殆ど無変更で使える体制になっている訳だ。

しかし、AG-ムービーカッターとAGMPlayerには、シークバーが付いたコントロール領域があって、macOS版についても、この領域を描画する必要がある。

当然の事ながら、映像表示領域についても何とかする必要があるのだが、実際の所、この映像表示領域については、Windows版でも、基本的には、Mirror-DTCクライアントの画像表示領域と変らない。

と、いうか、スクロールバーを表示する必要が無い分、AG-ムービーカッター/AGMPlayerの方が実装は楽なので、問題になるのは、前述のコントロール領域のみ、な訳だ。

と、いう事なので、普通は、こんなコントロール領域くらい、半日もあれば、実装可能な訳なのだが、macOSの場合、そうは行かない訳だ。

何故なら、このコントロール領域を描画したければ、まず、メモリ上にビットマップ領域を作成し、その領域に対して、描画を行う必要があるのだが、macOSで、こういう作業を行おうとすると、二重三重の罠を潜り抜ける必要があるからだ。

更に、その罠を潜り抜けられたとしても、その道筋は、当然、平坦ではないし、短くも無い。

なので、描画の度に、そんな事をやっている訳には行かないので、冒頭に書いた様に、macOSの場合、APIを直接使うのは現実的ではない訳だ。

つまり、macOSのAPIというのは、ある意味、CPUの命令に相当しているので、当然の事ながら、それを並べていけば、コードは動作するのだが、それはつまり、良くてアセンブラのコードを書いているのに等しい感じになる訳だ。

このため、せめて、一連の処理の流れをサブルーチン化して、扱い易くしておかないと、人間的には、やっていられない訳だ。

と、いう事で、作者的には、今は、例えば、テキストを描画するDrawTextみたいな関数を自前ライブラリに追加していっている。

しかしまあ、macOSのAPIについて知識が無い人は、DrawTextを自前ライブラリ化???みたいに感じる事だろう。

何故なら、そんな基本処理がAPIに無い訳はないので、自前ライブラリ化なんか必要になる訳がない、と、思う筈だからなのだが、macOSのAPIについて知識がある人なら、特に、違和感は無い筈だ。

« 人生の無駄遣いではある | トップページ | 明日には何とかなるかも »

トラックバック

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

この記事へのトラックバック一覧です: 当然、自前ライブラリ化:

« 人生の無駄遣いではある | トップページ | 明日には何とかなるかも »

2017年10月
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