Update Cairo Sample

svn path=/trunk/gtk-sharp/; revision=33460
This commit is contained in:
Miguel de Icaza 2004-09-06 23:54:35 +00:00
parent 5a116de32a
commit e474831d5e
4 changed files with 64 additions and 11 deletions

View file

@ -34,7 +34,7 @@ class X {
{
int offx, offy;
using (Cairo.Graphics o = args.Event.window.CairoGraphics (out offx, out offy)){
using (Cairo.Graphics o = GtkCairo.GraphicsFromWindow (args.Event.Window, out offx, out offy)){
o.SetRGBColor (1, 0, 0);
o.Translate (-offx, -offy);
o.MoveTo (0, 0);
@ -52,15 +52,15 @@ class X {
static void CirclesExposeHandler (object obj, ExposeEventArgs args)
{
Rectangle area = args.Event.area;
Gdk.Window window = args.Event.window;
Pixmap p = new Pixmap (window, area.width, area.height, -1);
Rectangle area = args.Event.Area;
Gdk.Window window = args.Event.Window;
Pixmap p = new Pixmap (window, area.Width, area.Height, -1);
int x, y;
//Cairo.Object o = p.CairoGraphics ();
using (Cairo.Graphics o = window.CairoGraphics (out x, out y))
using (Cairo.Graphics o = GtkCairo.GraphicsFromWindow (window, out x, out y))
{
o.Translate (-area.x, -area.y);
o.Translate (-area.X, -area.Y);
DrawCircles (o, rect);
//using (Gdk.GC gc = new Gdk.GC (window)){
@ -101,8 +101,8 @@ class X {
o.Restore ();
// Fill the surface with the check
o.SetPattern (check);
o.Rectangle (0, 0, rect.width, rect.height);
//o.SetPattern (check);
o.Rectangle (0, 0, rect.Width, rect.Height);
o.Fill ();
#endif
}
@ -111,7 +111,7 @@ class X {
o.Alpha = 0.5;
Console.WriteLine (rect);
o.MoveTo (0, 0);
o.LineTo (rect.width, rect.height);
o.LineTo (rect.Width, rect.Height);
o.Stroke ();
}
}

46
sample/GtkCairo.cs Normal file
View file

@ -0,0 +1,46 @@
using System;
using Cairo;
using System.Runtime.InteropServices;
public class GtkCairo {
#region You can cut and paste this into your application
[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);
[DllImport("libgdk-win32-2.0-0.dll")]
static extern void gdk_window_get_internal_paint_info(IntPtr raw, out IntPtr real_drawable, out int x_offset, out int y_offset);
static public Cairo.Graphics GraphicsFromWindow (Gdk.Window window, out int offset_x, out int offset_y)
{
IntPtr real_drawable;
Cairo.Graphics o = new Cairo.Graphics ();
gdk_window_get_internal_paint_info (window.Handle, out real_drawable, out offset_x, out offset_y);
IntPtr x11 = gdk_x11_drawable_get_xid (real_drawable);
IntPtr display = gdk_x11_drawable_get_xdisplay (real_drawable);
o.SetTargetDrawable (display, x11);
return o;
}
static public Cairo.Graphics GraphicsFromDrawable (Gdk.Drawable drawable)
{
Cairo.Graphics o = new Cairo.Graphics ();
IntPtr display = gdk_x11_drawable_get_xdisplay (drawable.Handle);
o.SetTargetDrawable (display, gdk_x11_drawable_get_xid (drawable.Handle));
return o;
}
static GtkCairo ()
{
}
#endregion
}

View file

@ -80,8 +80,8 @@ glade-viewer.exe: $(srcdir)/GladeViewer.cs $(assemblies)
glade-test.exe: $(srcdir)/GladeTest.cs $(srcdir)/test.glade $(assemblies)
$(CSC) /resource:$(srcdir)/test.glade,test.glade /out:glade-test.exe $(references) $(srcdir)/GladeTest.cs
cairo-sample.exe: $(srcdir)/CairoSample.cs $(assemblies)
$(CSC) /out:cairo-sample.exe $(references) /r:Mono.Cairo $(srcdir)/CairoSample.cs
cairo-sample.exe: $(srcdir)/CairoSample.cs $(srcdir)/GtkCairo.cs $(assemblies)
$(CSC) /out:cairo-sample.exe $(references) /r:Mono.Cairo $(srcdir)/CairoSample.cs $(srcdir)/GtkCairo.cs
testdnd.exe: $(srcdir)/TestDnd.cs $(assemblies)
$(CSC) /debug /unsafe /out:testdnd.exe $(references) $(srcdir)/TestDnd.cs
@ -123,4 +123,5 @@ EXTRA_DIST = \
DrawingSample.cs \
sysdraw.cs \
drawing-sample.exe.config \
cairo-sample.exe.config \
CustomWidget.cs

View file

@ -0,0 +1,6 @@
<configuration>
<dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
<dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
<dllmap dll="libgdk-win32-2.0-0.dll" target="libgdk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
<dllmap dll="libgdk_pixbuf-2.0-0.dll" target="libgdk_pixbuf-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
</configuration>