星期日, 八月 26, 2007

Cursor Theme,鼠标指针的主题

Mighty Mouse可以改变鼠标的样式,不过至今没有1.3版的sn,也没有破解。虽然Mighty Mouse只要$10,貌似很便宜,可以换成¥的话,就是¥80了,作为一个只是换鼠标主题的软件来说太贵了。

把Mighty Mouse踢开后,现在两种选择,要么继续忍受那个丑陋的I-beam满天飞,要么就hack系统的指针样式。在忍无可忍之后,我选择了后者。

然后就开始了漫长而枯燥的搜索和分析过程,developer.apple.com上没有什么很有价值的东西,example也看过了,都没有什么帮助。开始以为改进一下CarbonCocoa_PictureCursor这个 例子应该能实现,后来发现困难还是比较大的。只能hack系统中的资源了。curosrdata中没有包含arrow/I-beam等指针的图像,据说是包含在某个运行库中。
又仔细分析了一下Mighty Mouse里的那个QECursorDefaults.plist文件,其实.MightyMouse文件也是一个xml,把后缀改成.plist就可以用property list editor编辑了,看到里面又com.apple.coregraphics.arrow之类的keyword。系统并没有com.apple.coregraphics这个文件,估计应该是包含那个库里。最有可能的就是在CoreGraphics.framework里。

漫长的搜索+一点点运气+第六感和合作,终于在CoreGraphics里找到了,Arrow/I-beam/Alias/....的图像。在里面连续的存放着指针的图像,没有找到在哪里定义图像的大小和热点,没有和图像数据放在一起。这个问题不算严重。

10.4.10的CoreGraphics,偏移4527A0~452BA0存放的是I-beam的图像 ,大小16*16*4=1024字节,图像大小16*16,每点4字节,前3字节是rgb,第4字节是alpha。在Mighty Mouse的数据中,也是每个像素4字节,但是alpha是第1字节,后面3字节是rgb。

4527A0~452BA0 400Byte I-beam
452BA0~4534A0 900Byte arrow
4534A0~ alias

文件都放到自己的主页上了。

没有评论: