とにもかくにも地道が一番たい!

猫好きなプログラマのつぶやき

DWGファイラー つう物を作って使ってるざます

まあ、簡単に言えばDWGファイル専用のファイラーみたいなもんだけど、下の写真のようにサムネイルを複数表示できる。サムネイルは、履歴からでもフォルダの中からでも、ファイル検索した中からでもいい。

f:id:mazoo:20181125200832p:plain


サムネイルをクリックするとその図面があるところのフォルダとファイルリストを表示する。つまり同期してくれる。

それはそんなに難しくないんだけど、このファイラーのサムネイルは、すべて黒背景で表示されるところがミソなんだ。

AutoCADは昔は、画面の背景を黒にしててもサムネイルは白背景で作ってたんだ。黄色の線なんかほとんど見えないし、それじゃ何が書かれてるかわからない。
やっと今は黒背景のサムネイルになったけど、昔の図面なんかのサムネイルは作り直さない限り白いまま。

そこで自前でファイルからサムネイルを読み込むルーチンを作って、背景がもし白ならそれを黒に変えてやるという離れ業?をやってるんだよねえ。

サムネイルの画像データはそのファイルの先頭あたりに保存されている。それを直接バイト単位で読み込んでイメージに変換するわけだけど、そんなたいそうな行数にはならない。ただしAutoCADはいつからか画像のフォーマットをBMPからPNGに変えたので、それを判断しなければならない。
APIには Database.ThumbnailBitmap というメソッドがあるけど、これを使うにはファイルをいったん読み込まなければ使えない。そのオーバーヘッドが大きいから、ファイルの中身を直接見に行くわけだ。そうすれば100KBのファイルだろうが100MBのファイルだろうが高速で読める。


そんなこんなで、なかなか便利なもんですよ。

結構、ユーザーさんたちの使用頻度は高いです。