[Mono-winforms-list] System.Drawing implementation issues.

Vladimir Kaluzhny vkaluzhny@openlinksw.co.uk
Mon, 22 Sep 2003 20:43:57 +0700


Hello guys.
Rushing to inform all of you,  that commdlg32.dll and resources
utilization functionality  are done. Patch  will be published in few days.
Now I am working on migration of all of my patches onto latest
build of wine.

I find this issue below about System.Drawing implementation very
interesting.
Arguments, delivered by Miguel look like weightness.

In fact,  implementation of GDI+ is not  easy work, but I do not see
any problems to do it. Actually,  if community would decide to write it,
I can do this myself. But I think this will not be a quick deal.

The only argument in this discussion for sake of GDI+  usage
I see here is as follow -
If we have already decided to use Win32 API shared libraries,
pulled from Wine, why we should decline out from this way further?

Meantime , since Cairo is a power graphic engine , it would be resonable
to use it too.
I guess there should a compromised  solution here.
Why not to try to integrate Cairo into our implementation of graphic
engine for SWF  and use it together with wine-based Win32 API
shared libraries
(obviously, gdi32.dll should be modified then, but I do not see
any problems here). This is seen as curious, but can be  considered
as a possible solution, which give us a fastest result.

My opinion  is as follow - we need  to integrate Cairo into our gdi32.dll.

Regards, Vlad


----- Original Message -----
From: "Miguel de Icaza" <miguel@ximian.com>
To: "Mono Winforms" <mono-winforms-list@ximian.com>
Sent: Monday, September 22, 2003 07:18
Subject: [Mono-winforms-list] System.Drawing implementation issues.


> Hello,
>
>    Currently we have two System.Drawing implementations, and depending
> on the kind of application running we pick one of them: the Cairo-based
> implementation and the Wine-based implementation.
>
>    If Windows.Forms is initialized, we set a flag to use the Wine-based
> implementation, if not, we use the Cairo-based one.   This is the state
> of each implementation:
>
> * Wine implementation: works directly with Wine, so rendering
>   for Windows.Forms apps just works.  The problem is that Wine
>   lacks a GDI+ implementation, so some of the most advanced
>   rendering features are not available, and will require us
>   to reimplement lots of it, or work with the Wine team to
>   implement GDI+.
>
> * The Cairo implementation has the most future, as it is a
>   complete engine for doing the kind of 2d graphics that System.
>   Drawing is.
>
>     The main problem we have today is that we have to maintain two
> implementations of it, and the way this is done is rather cumbersome to
> maintain: a front-end class that acts as the proxy (Pen, Brush, etc) an
> interface that defines the contract between the backends and the
> front-end, and the backends themselves.   This is a lot of complexity
> that I would like to avoid.
>
>      The question to the Wine experts in the list is whether it is
> possible to just use Cairo for everything and have it work nicely with
> Wine to avoid the duplication of work.
>
> Miguel.
> _______________________________________________
> Mono-winforms-list maillist  -  Mono-winforms-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-winforms-list
>