Silverlight で HTML5::Canvas を実現するライブラリの実装を開始しました
「Silverlight で HTML5::Canvas を実現できないか」から早5日(うち3日はサボり)。ぼちぼち動くようになってきました。
今回書いたライブラリは、Silverlightがインストールされている環境ではSilverlightを使い、インストールされていなければ、VMLでレンダリングします。
現在の実装状況
左上が IE6 + Silverlight2 でレンダリング、右上がFirefox3.0.3, 右下がSafari3.1.2
パターンブラシを実装しきれていませんが、あとは大体いけてます。
- 実装済みのメソッド
- CanvasRenderingContext2D
- clearRect, beginPath, moveTo, lineTo, bezierCurveTo, quadraticCurveTo, rect, strokeRect, fillRect, closePath, createLinearGradient, createRadialGradient, stroke, fill
- CanvasGradient
- addColorStop
- CanvasPattern(問題あり)
- CanvasRenderingContext2D
- 未実装
- CanvasRenderingContext2D
- arc, drawImage, save, restore, translate, rotate, scale, clip, arcTo
- CanvasRenderingContext2D
名前のこととか、今後のこととか
excanvas.js から多くのアイデアを(ありがたく)拝借させてもらっています。
本来は excanvas.js にパッチを送って本流にマージしてもらうのが一番良いのですが、
- VMLモードでの線形グラデーションの多色化
- VMLモードでの円形グラデーションの実装
- VMLモードでのパターンブラシの実装
- excanvas.js の追補(clearRect, drawImage, transform, setTransform, グラデーションのサポート等々)
- Silverlight 用の実装(excanvas.js 本体のコードよりもはるかに大きい)
等、多くのコードが入れ替わっているため、既に別のプログラムになっています。
また、excanvas.js の開発は2年前からストップしているようです。
ですので、excanvas.js という名前ではなく、何か別の新しい名前をつけて、MIT or Apache の デュアルライセンスで公開するつもりです。
といっても、山積みの問題を解決してからになりますが。
Silverlight の普及拡大作戦とか 妄想してみる
IE8β2の標準準拠モードではVMLがレンダリングされない⇒ 後に標準準拠モードでもレンダリングする方法が判明するQuirksモード なら OK なので、MS は VML に見切りをつけたと思われる。
- 現行の MS Officeは、HTMLフォーマットで文章を出力させると、HTML + VMLで図形がレンダリングされるが、今後は、Silverlight のコードを吐き出すようにしてくるはず。
- 来年以降に登場するオンライン版の MS Office の バックエンドに、Silverlight が使われるかもしれない。
- Officeの画面に「Silverlight が必要です。今すぐインストールしますか?」と表示されたり、 Office をインストールすると Silverlight も一緒にインストールされそう。
- 来年以降に登場するオンライン版の MS Office の バックエンドに、Silverlight が使われるかもしれない。
RIAの本命は HTML + Ajax なのか、Flashベースの技術か、それとも Silverlight なのか。
3年後はどうなってるのでしょう?