diff options
Diffstat (limited to 'web/drawing')
-rw-r--r-- | web/drawing | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/web/drawing b/web/drawing new file mode 100644 index 00000000000..987301236d4 --- /dev/null +++ b/web/drawing @@ -0,0 +1,51 @@ +* Drawing + + Mono provides two mechanism to draw. The first exposes the + Microsoft System.Drawing API and the second exposes the <a + href="http://www.cairographics.org">Cairo</a> API. + +* System.Drawing + + The System.Drawing implementation in Mono is designed to be + compatible with the Microsoft API. The imaging model is very + similar to the PDF 1.4 composition-based imaging model. + + Our implementation is a C# wrapper around the GDI+ C API (also + called the <a + href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusReference.asp">"GDI+ + Flat API"</a>). + + This means that the C# code is the same for Windows and Unix + systems. The following graph explains the situation: + + <center> + <img src="images/system-drawing.png"> + </center> + + In Windows Mono uses the GDI+ library that is included with + the operating system (<tt>GDIPLUS.DLL</tt>, while in Unix we + provide an implementation of this API in the + <tt>libgdiplus.so</tt> shared library. Our + <tt>libgdiplus.so</tt> has the same C Flat API as the + <tt>GDIPLUS.DLL</tt>. Our implementation uses Cairo to do + the heavy lifting. + + The implementation of GDI+ lives in the libgdiplus cvs module + and requires <a + href="http://www.cairographics.org">Cairo</a> to be installed + to get the package built. + + The C# code that implement System.Drawing is the same for + Windows and Unix builds. + + Since this is an implementation of an existing Microsoft API + no architectural changes go here. + +* Mono.Cairo + + The Mono.Cairo.dll assembly exposes the Cairo API to managed + applications. The mapping is a pretty straightforward one, + and the programming model is very close to the C API. + + This API is still unstable due to the nature of the underlying + API being used and will be revisited as Cairo evolves. |