2007-01-05 Alp Toker <alp@atoker.com>
[mono.git] / mcs / class / Mono.Cairo / Mono.Cairo / Surface.cs
index 8fc1d7d9df62154a2f70b78f69c0b29ab446a78a..527ffe621414ebc3ada331cf46ee694656f082c5 100644 (file)
@@ -66,7 +66,36 @@ namespace Cairo {
                                return (Surface) o;
                        }
                }               
-               
+
+               static internal Surface LookupSurface (IntPtr surface)
+               {
+                               SurfaceType st = CairoAPI.cairo_surface_get_type (surface);
+                               switch (st) {
+                                       case SurfaceType.Image:
+                                               return new ImageSurface (surface, true);
+                                       case SurfaceType.XLib:
+                                               return new XlibSurface (surface, true);
+                                       case SurfaceType.Xcb:
+                                               return new XcbSurface (surface, true);
+                                       case SurfaceType.Glitz:
+                                               return new GlitzSurface (surface, true);
+                                       case SurfaceType.Win32:
+                                               return new Win32Surface (surface, true);
+#if CAIRO_1_2
+                                       case SurfaceType.Pdf:
+                                               return new PdfSurface (surface, true);
+                                       case SurfaceType.PS:
+                                               return new PSSurface (surface, true);
+                                       case SurfaceType.DirectFB:
+                                               return new DirectFBSurface (surface, true);
+                                       case SurfaceType.Svg:
+                                               return new SvgSurface (surface, true);
+#endif
+                                       default:
+                                               return Surface.LookupExternalSurface (surface);
+                               }
+               }
+
                [Obsolete ("Use an ImageSurface constructor instead.")]
                 public static Cairo.Surface CreateForImage (
                         ref byte[] data, Cairo.Format format, int width, int height, int stride)
@@ -102,9 +131,9 @@ namespace Cairo {
                        Dispose (false);
                }
 
-               public void Show (Context gr, int width, int height
+               public void Show (Context gr, double x, double y
                {
-                       CairoAPI.cairo_set_source_surface (gr.Handle, surface, width, height);
+                       CairoAPI.cairo_set_source_surface (gr.Handle, surface, x, y);
                        CairoAPI.cairo_paint (gr.Handle);
                }