5 月底收到在巴黎举行的 ReMix07 大会的参会邀请后,Mono 团队开始夜以继日地投入到他们的 Silverlight 实现——Moonlight 项目中。用 Miguel de Icaza 自己的话 说:
5 月 31 日,除了学习 Silverlight、探究如何解码视频、对视频进行简单测试 并开始计划 之外,还没有什么可以演示的东西。
不过仅靠 Silverlight 1.0 API 做为参考,通过 Email 沟通和即时通讯工具(IRC),在三周的时间内他们就完成了下面这些工作:
6 月 14 日
- 文本渲染(Jeff)
- 放射变化(Sebastien)
- 在改变子节点时 Canvas 处理附带属性
- 实现下载工具(Downloader)(Toshok)
- 托管下载工具(Miguel)
- 鼠标移入 / 移出事件(Miguel)
- 从网络上加载图片
- Everaldo 实现内嵌型插件,而不是现在正用的 Hack
6 月 15 日
- 文本中的 Inline 和 Run
- 性能提升
- 连接单个对象的鼠标事件
- 使用 Assembly 从 XAML 文件中装载定制的对象
- Everaldo 完成用 Javascript 修改界面的插件
- Sebastien 开始用 Silverlight 将 Surface 导出至 Gtk#
6 月 16 日
- XAML 依赖文件的装载(Miguel,Jackson)
- Toshok 使用绑定沙盒优化渲染
- Jackon 负责 hook 依赖装载
- Jeff 重构视频引擎,使其可重用
- C#绑定
6 月 17 日
- Jeff 实现 VideoBrush
- Sebastien 实现多种图像属性,可通过特定参数进行渲染
- 更新 Event 系统,Surface 现在能以正确的顺序得到事件
- 修复动画解析器,Surface 动画现在可正常定时
- Everaldo 在 HTML 页面里增加对 XAML 内容的支持(在 URL 里面用#标识)
- Jackson 实现 XAML 装载时对 x:Class 的支持
6 月 18 日
- Rolf 实现在 Moon 类型系统和绑定里对 Nullable 类型的支持,以在 C#代码中映射 Nullable 到 C++ Nullable
- Jeff 实现了对 VideoBrush 共享 MediaElement 的支持
- Jeff 为 Runs 实现 Brush
- Paolo 帮助勾画 Moonlight 的 Surface,使交互更平滑
- Chris 和 Sebsatien 优化屏幕渲染的性能
- Chris 提高动画和屏幕的刷新,构建基于 Xlib 的图像表面
- Jackson 实现 Path Data 解析,Sebsatien 完成底层的架构,使得 Sam Ruby 的例子站点上的其他例子可以渲染
- Jackson 和 Sebastien 实现由于 Path 渲染丢失的不同片段
- Jason 实现了对 XAML 的支持
6 月 19 日
- Javascript 桥接 DependencyObject 可用,Javascript 控制的 XAML 时钟事例现在可以运行
- 实现集合迭代
- 解决浏览器正常关闭问题
- Rolf 实现一些丢失的托管绑定
项目的进展确实让人惊讶,在如此短的时间里竟然撰写了超过 3 万 8 千行代码,展示的截屏证明了这一切。在一个应用程序中内置 Moonlight,以让 Linux 应用支持 Silverlight 内容的这个想法令人惊叹。祝贺 Mono 团队,在这么短的时间内就在 Moonlight 项目上取得了如此不俗的成绩!
查看英文原文: Moonlight in 21 days
评论