Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=75997 --- shadow/75997 2005-09-06 06:26:27.000000000 -0400 +++ shadow/75997.tmp.32276 2005-09-06 06:26:27.000000000 -0400 @@ -0,0 +1,78 @@ +Bug#: 75997 +Product: Mono: Class Libraries +Version: 1.1 +OS: +OS Details: WinXP, Mono 1.1.8.3/win32 +Status: NEW +Resolution: +Severity: +Priority: Wishlist +Component: Mono.Cairo +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: Mono.Cairo 100% non-usable on win32. + +Problem +======= + +Mono.Cairo doesn't do the win32 dance. + +The reason for this is that Cairo.Graphics.SetTargetDrawable() wraps only +cairo_xlib_surface_create(), and not also cairo_win32_surface_create(). + +There's also a set of "examples" in the win32 mono distribution which look +like they will work, but they don't, as they try: + +[DllImport("libgdk-win32-2.0-0.dll")] +static extern IntPtr gdk_x11_drawable_get_xdisplay (IntPtr raw); + +[DllImport("libgdk-win32-2.0-0.dll")] +static extern IntPtr gdk_x11_drawable_get_xid (IntPtr raw); + +Obviously, these don't exist in libgdk-win32. Probably, they should be +removed from the Mono/win32 distribution until they do work as they are +misleading. + + +What to do to fix the problem: +============================== + +I don't understand why this isn't done via overloaded Cairo.Graphics +constructors + +// create a win32 cairo.graphics +public Graphics(IntPtr hdc) {...} + +// create a xlibs cairo.graphics +public Graphics(IntPtr dpy, IntPtr drawable, IntPtr visual, int width, int +height) {...} + +or even, via some static constructor + +public static Cairo.Graphics GetGraphicsWin32(IntPtr hdc) {...} +etc... you get the idea. + +There's no reason not to provide an overloaded SetTargetDrawable() function +either, but it seems silly to do this for something that *must* happen at +the time the class is instanced, if somebody actually wants to make use of +the class. Seems sensible to do it via the constructor. + +The Alternate Solution +====================== + +I notice that there's a gdk function: +gdk_cairo_create () + +but then it depends if this function correctly senses which platform it's +running on and calls the appropriate cairo_XXX_surface_create(). I've not +yet taken a look at the sources for this. + +I'd be happy to take on this task, I think it's something I could +contribute to, however I am going away for a week on business, so I will +only be back to look at this on 14th sept. + +-Idan _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
