On Sun, Mar 29, 2009 at 7:00 PM, Matthew Flatt <mfl...@cs.utah.edu> wrote: > `dc<%>' already supports `dc-path%', which is close to the Cairo (i.e., > PostScript) model. There's also already a global alpha, and we'll add > more things like rotation (or, more generally, a transformation > matrix). > > Is masking different from clipping? I guess I'll find out...
Heh. I didn't know about this stuff. I even went so far as to start implementing 2D vector graphics in OpenGL to replicate this functionality. > BTW, I'm writing this message in a SirMail that's running on top of > `editor<%>' classes that are implemented in Scheme instead of C++ > (which is phase 1 of this re-implement MrEd experiment). If testing > continues to go well, I may be able to merge to the trunk soon. Cool. I've implemented a bit of the dc<%> interface. Commit message reproduced below. I have an issue writing tests. It appears that I can't use Cairo/Cocoa from a MrEd application. This is understandable. There also appears to be a threading issue. Does Cocoa take over the main thread or something? cocoa.ss runs, but my almost identical dc-test.ss (replace #lang scheme/gui with #lang scheme/base, comment out MrEd code) doesn't draw anything. The only difference I can see is the thread created in cocoa, so perhaps I need to duplicate that. Commit msg: Start implementing the dc<%> interface. Currently draw-rectangle and draw-line are defined for Cocoa only. common/dc.ss: - contains a mixin that defines the common Cairo based methods - defines an interface, dc-backend<%>, that the backends must implement cocoa/dc.ss: - defines a Cocoa specific backend and a Cocoa dc implementation tests/dc-test.ss - An attempt to define a test comparing Cocoa/Cairo rendering and MrEd rendering. This just hangs -- I don't know why. Run as mred dc-test.ss {cocoa|mred} To add new dc<%> methods: - Extend cairo.ss with any new cairo functions needed - Implement methods on common/dc.ss - Add test to tests/dc-test.ss (and get dc-test.ss working if you know how!) N. _________________________________________________ For list-related administrative tasks: http://list.cs.brown.edu/mailman/listinfo/plt-dev