[Mono-list] Re: System.Drawing (libart, gdkpixbuf)

Christian Meyer christian.meyer@cs.tum.edu
10 Apr 2002 20:12:35 +0200


Hi!

sorry for the late answer. I just came back from Spain yesterday at
11:30 pm.

Am Son, 2002-04-07 um 15.24 schrieb Miguel de Icaza:
> Hello Christian,
> 
>    It was great meeting you at GUADEC.  I think we should have had a
> Mono BOF, but it was too late by the time I thought of it ;-(

Yeah. That would have been great.
 
>    Anyways, here are my thoughts:
> 
> 	* gdk-pixbuf is a generic image loader that loads an image
> 	  and leaves it into an RGB buffer.  It hides all the details
> 	  about what image file format is being loaded.
>
> 	* Libart is a general framework for rendering RGB/RGBA buffers
> 	  into RGB buffers and rendering postscript-like paths into
> 	  RGB/RGBA buffers.

OK, sounds easy.
 
>    So we want to use gdk-pixbuf as the image loader for the image
> classes, and then we need operations to render that into the windowing
> system (Gtk+, MacOS, etc).  But notice how there is very little
> dependnecies in Gdk-pixbuf on gtk, and libart has none.
> 
>    They are pretty independent from a windowing system (gdk-pixbuf comes
> with some "helper" routines for rendering data into a pixmap and to load
> pixmaps into RGB buffers).
> 
>    A few things to keep in mind:
> 
> 	* gdk-pixbuf can be used to load images for Gtk+, MacOS X and 	 
> Windows, it should be pretty portable, although we might need
> 	  in the future to back-port some new features from Gtk head. 
> 	  Lets talk to Federico about this, and get a status report.

OK.

> 	* Libart is probably only going to be used with X11, as the
> 	  MacOS X provides the same features in Quartz, and Win32
> 	  *probably* has that in GDI+.  If not, we should use libart
> 	  in Win32 as well (or for older Windows systems).

Sounds like that this will be the most diffcult part. How can we find
out if GDI+ has that feature?

> * Directory Layout
> 
>    My suggestion is to have:
> 
> 	System.Drawing 	(assembly directory)
> 		System.Drawing.Blah
> 			Common code for "Blah"
> 			Stubs for "Blah" to ease ports.
> 
> 		Gtk
> 			System.Drawing.Blah.
> 				Gtk ports of "System.Drawing.Blah"

Wouldn't it be better to say Linux instead of Gtk?!

> 		MacOS
> 			System.Drawing.Blah
> 				MacOS ports of "System.Drawing.Blah"
> 		Win32
> 			System.Drawing.Blah
> 				Win32 ports of "System.Drawing.Blah"
> 
>     Then we use nant targets to include/exclude the right set of files
> to create the assembly.

aha. OK.
 
> * Open questions:
> 
>     I believe that the graphics contexts that are used to render can
> accept either libart-like rendering operations and X11-like rendering
> operations.  This complicates matters, but I am not sure.  Someone needs
> to investigate this.

eeeeeek. This seems to be even more complicated. I don't know anything
about those things.
Another thing is that university will start on monday and I won't have
much time for looking closer at that kind of stuff. Does anybody
volunteer?

Greetings and thanks for the explanations.
Christian