CIDから作成したHTMLDocumentでもCanvasが問題なく扱える

CIDからHTMLDocumentが作成できるのはnanto_viさんが書いているとおり.DonutGにサムネイル機能を搭載するにあたって,nsICanvasRenderingContextInternalのインスタンスを作って,そこからコンテキストを作るのがいいらしいとなったのだけれど,風博士のソースを見る限り,MOZILLA_INTERNAL_APIというマクロをオンにしないとたぶん使えない.んで,それを回避するために,CIDから空のHTMLDocumentを作ってCanvas要素を作ればいいんじゃね?と考えた.試したところ問題なく動いた.以下はExtension Developer上で試したコード.Shell.enumWinsという変数で,今開いているウィンドウの配列が取得できる.

const NS_HTMLDOCUMENT_CID =  '{5d0fcdd0-4daa-11d2-b328-00805f8a3859}';
var doc = Components.classesByID[NS_HTMLDOCUMENT_CID].createInstance();
var canvas = doc.createElement("canvas");
var ctx =  canvas.getContext('2d');
ctx.drawWindow(Shell.enumWins[1].content, 0,0,300,300,  "rgb(255,255,255)");
var str = canvas.toDataURL();

これがstrの内容の画像:

昨日はいろんなものが目についた

  • 三四郎池前で足がつぶれたバッタがもがいていた.
  • 三四郎池前でカナヘビさんがうろついていた.
  • 理学部一号館二階に鳩が入っていくのが見えた.おそらく巣がある.
  • 総合図書館前でアオスジアゲハが飛んでいくのが見えた.よく見かけるけど,クスノキでも生えてるのかな.
  • 中型のジェット機が俺んち近くで飛んでいくのが見えた.

IHTMLDocument2も順調に減っている

IWebBrowser2に続きIHTMLDocument2も4箇所に減った.

今困っているのは,Windowのサムネイルを取得する方法と,nsIWebBrowserFocus::Activateしているのに実際にはActivateされないという怪現象.

サムネイルのほうは,MOZILLA_INTERNAL_APIをオンにしないでやる方法を探している.なので,本当に困ったらそれを使えばよく,クリティカルではない.

フォーカスは…どうしたものか.前WTLでGecko組み込んだときはこんなこと起こらなかったぞ?

粛々と実装を進める

いつの間にかv0.1.8になっていた.残りの

  • nsIPromptService
  • 名前をつけて保存・印刷関連
  • ページ内検索・ハイライト

をどうにかすれば,一通り使えるようになる.しかしすごいな,ソースコード中で「IWebBrowser2」が登場する箇所が4箇所にまで減ったwww 次はIHTMLDocument2を撲滅していこう.

目下のところ困っているのは,nsIWebBrowserFocus::activateを呼んでいるのに,実際にはactivateされないこと.いったんタブを切り替えたり,リンクをクリックしたり,テキストボックスをクリックしたりすると,やっとactivateされる.ウィンドウズプログラミングムズカシイネー

もうちょっとGecko対応を進めて公開した

http://donut.tnose.net/

例によって低品質なり。未実装部分は向こうを見てください。

GeckoベースDonut とりあえずできた

http://tnose.net/tmp/DonutG.zip

閲覧ができるだけの代物で、戻るボタンさえ動きません。使い方はReadme.txt読んでください。

unDonut+modをGeckoエンジンベースにすることは可能か

いつのまにかVS9でコンパイルが通るソースが出ていたのね。

Donutの肝はDonutView, IWebBrowserEvents2Impl, CWebBrowser2, ChildFrameあたり.で,CWebBrowser2はIWebBrowser2の単なるラッパ.IWebBrowserEvents2Implがイベントリスナ.IWebBrowserEvents2Implを継承したクラス(ChildFrame)からWebBrowserEvents2Adviseを呼び出すと,IWebBrowser2と接続されるというわけか.

骨は折れるけれども,Geckoを使うようにすることはそんなに難しくないんじゃないかって気がしてきた.

再開したUVB-76をインターネット経由で聴く

GlobalTuners という、世界各国に配置された無線の受信機をインターネット経由で使えるサイトがあるのですが、こいつを使って、停止した後再開したという話が出ているUVB-76を聴くのを試みてみました。

Vienna 3 という名前の受信機を使い、周波数を4.625MHz, そしてAMにセット。時間帯を変えていろいろ試したところ、先ほどブザー音を聴くことに成功しました。いつか実際に機材を買って、自宅で聴いてみたい物です。

触れてみるべきソフトウェア

Bagel2について (その2)の実質続き.ほとんどメモ.半年前の下書きからサルベージした出がらしなのでこれまたちょっと古い.

LiLFeS.infoを取得

お名前.comで.infoドメインが10円だったのでカッとなって取得した.反省はしていない → LiLFeS.info

辻井先生おめでとうございます.