メディアプレイヤー(12月22日版)

Jコミで「らぶひな」が全巻がPDF形式で無償公開された。
PDFにはCMページとリンクが入っており、そのページ(リンク)をクリックする事で、CMのURLへジャンプするようになっている。

自分の「本プレイヤー」(ブックリーダー)は、「自炊」ファイルが対象なので、PDFを直接読む事は出来ない、それで、実験的にPDFからJPEG画像を取り出して、アーカイブしたものの、結構、面倒で時間がかかる作業だと判った、まず、画像の解像度(DPI)を指定しなければならないが、大きすぎても小さすぎても駄目な為、適当なDPI値を探る必要がある点、一番問題なのは、リンクが無くなる事で、CMへのリダイレクトが無くなり、「無償公開」の「意義」が損なわれる点。
これは、問題だ!、そこで、オープンソースのPDFリーダーを探していた、いくつかあるようだが、多少の情報収集から、SumatraPDFが良さそうと思い、早速自分のシステムに取り込んでみた。

「SumatraPDF」はC言語で書かれていて、フォントの描画はFreetype2、それに、JPEG、Jpeg2000、big2dec、PNG、Z-lib などオープンソースのライブラリーを使って構築されている。

それに先立ち、cygwin 上に新しく追加された mingw のクロスコンパイラ環境をインストールした。
以前は、gcc3 では、Windowsのコンパイル用に、「-mno-cygwin」オプションを使っていたが、新しい gcc4 系では仕様が変り「-mno-cygwin」が廃止された為コンパイル出来なかったのだが、クロスコンパイル環境を別途インストールしてWindowsのプログラムをコンパイル出来るようになった為、ようやく最新のコンパイラでWindowsのコンパイルも出来るようになった。

次に、自分のシステムに無いものとして、Jpeg2000、big2decなどがある為、まず、そこからライブラリーの作成組み込みを行った、ソースコードを取得して、mingw クロスコンパイラを使って各ソースをコンパイル、ライブラリーを作成した。

次にSumatraPDF本体を取得して、ライブラリーをコンパイル、mingw用に多少手直ししたが、これもなんとか上手く出来あがった。

次に、「apps」にあるアプリケーションのソースコードを頼りに、C++のラッパーを作成し、ブックリーダーのコア部分「pager」クラスに組み込んでみて、レンダリングさせてみたが、とりあえず動作しているようだ、一般的なPDFも食わせてみたが、フォントの描画がイマイチおかしい部分はあるものの、普通に描画できる(素晴らしい!)

後はリンクなどの処理を加えれば良い感じだけど、これは、まだ考え中で開発中。
※GUIは、基本、今までのようにしておき、そこにリンク部分を追加したい。

で、最新版をアーカイブに入れた。
コンパイル済みライブラリーやヘッダーファイルも「mingw」のアーカイブに入れておく。