<Type Name="Surface" FullName="Cairo.Surface">
  <TypeSignature Language="C#" Value="public class Surface : IDisposable" />
  <AssemblyInfo>
    <AssemblyName>Mono.Cairo</AssemblyName>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Surface ();" />
      <MemberType>Constructor</MemberType>
      <Parameters />
      <Docs>
        <summary>Internal constructor</summary>
        <remarks>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="surfaces">
      <MemberSignature Language="C#" Value="protected static System.Collections.Hashtable surfaces;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Collections.Hashtable</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateForImage">
      <MemberSignature Language="C#" Value="public static Cairo.Surface CreateForImage (Cairo.Format format, int width, int height);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Surface</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="format" Type="Cairo.Format" />
        <Parameter Name="width" Type="System.Int32" />
        <Parameter Name="height" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="format">format of pixels in the surface to create</param>
        <param name="width">width of the surface, in pixels</param>
        <param name="height">height of the surface, in pixels</param>
        <summary>Creates an image surface of the specified format and dimensions.</summary>
        <returns>Newly created surface.</returns>
        <remarks>The initial contents of the surface is undefined; you must explicitely clear the buffer, using, for example, cairo_rectangle() and cairo_fill() if you want it cleared.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="protected virtual void Dispose (bool disposing);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="disposing" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="disposing">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Finish">
      <MemberSignature Language="C#" Value="public Cairo.Status Finish ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Status</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Destroy">
      <MemberSignature Language="C#" Value="public void Destroy ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Handle">
      <MemberSignature Language="C#" Value="public IntPtr Handle { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.IntPtr</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="DeviceOffset">
      <MemberSignature Language="C#" Value="public Cairo.PointD DeviceOffset { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.PointD</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>In cairo 1.0 this property is write only.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Pointer">
      <MemberSignature Language="C#" Value="public IntPtr Pointer { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.IntPtr</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>System.Obsolete("Use Handle instead.")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="WriteToPng">
      <MemberSignature Language="C#" Value="public void WriteToPng (string filename);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="filename" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="filename">The name of a file to write to</param>
        <summary>Writes the contents of the surface to a new file <paramref name="filename" /> as a PNG image.</summary>
        <remarks>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateSimilar">
      <MemberSignature Language="C#" Value="public Cairo.Surface CreateSimilar (Cairo.Content content, int width, int height);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Surface</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="content" Type="Cairo.Content" />
        <Parameter Name="width" Type="System.Int32" />
        <Parameter Name="height" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="content">the content for the new surface</param>
        <param name="width">width of the new surface, (in device-space units)</param>
        <param name="height">height of the new surface (in device-space units)</param>
        <summary>Create a new surface that is as compatible as possible with an existing surface.</summary>
        <returns>the newly allocated surface.</returns>
        <remarks>The new surface will use the same backend unless that is not possible for some reason.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Status">
      <MemberSignature Language="C#" Value="public Cairo.Status Status { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Status</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Checks whether an error has previously occurred for this surface.</summary>
        <value>the status</value>
        <remarks>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Flush">
      <MemberSignature Language="C#" Value="public void Flush ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="MarkDirty">
      <MemberSignature Language="C#" Value="public void MarkDirty ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="MarkDirty">
      <MemberSignature Language="C#" Value="public void MarkDirty (Cairo.Rectangle rectangle);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="rectangle" Type="Cairo.Rectangle" />
      </Parameters>
      <Docs>
        <param name="rectangle">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Surface (IntPtr ptr, bool owns);" />
      <MemberType>Constructor</MemberType>
      <Parameters>
        <Parameter Name="ptr" Type="System.IntPtr" />
        <Parameter Name="owns" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="ptr">To be added.</param>
        <param name="owns">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateForImage">
      <MemberSignature Language="C#" Value="public static Cairo.Surface CreateForImage (ref byte[] data, Cairo.Format format, int width, int height, int stride);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Surface</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="data" Type="System.Byte[]&amp;" RefType="ref" />
        <Parameter Name="format" Type="Cairo.Format" />
        <Parameter Name="width" Type="System.Int32" />
        <Parameter Name="height" Type="System.Int32" />
        <Parameter Name="stride" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="data">a buffer supplied by the application in which to write contents</param>
        <param name="format">the format of pixels in the buffer</param>
        <param name="width">the width of the image to be stored in the buffer</param>
        <param name="height">the height of the image to be stored in the buffer</param>
        <param name="stride">the number of bytes between the start of rows in the buffer. Having this be specified separate from width  allows for padding at the end of rows, or for writing to a subportion of a larger image</param>
        <summary>Creates an image surface for the provided pixel data. The output buffer must be kept around until the cairo_surface_t is destroyed or cairo_surface_finish() is called on the surface. The initial contents of buffer will be used as the inital image contents; you must explicitely clear the buffer, using, for example, cairo_rectangle() and cairo_fill() if you want it cleared.</summary>
        <returns>Newly created surface.</returns>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetFallbackResolution">
      <MemberSignature Language="C#" Value="public void SetFallbackResolution (double x, double y);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="x" Type="System.Double" />
        <Parameter Name="y" Type="System.Double" />
      </Parameters>
      <Docs>
        <param name="x">To be added.</param>
        <param name="y">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
        <since version="cairo 1.2" />
      </Docs>
    </Member>
    <Member MemberName="Content">
      <MemberSignature Language="C#" Value="public Cairo.Content Content { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Content</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SurfaceType">
      <MemberSignature Language="C#" Value="public Cairo.SurfaceType SurfaceType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.SurfaceType</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
        <since version="cairo 1.2" />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Surface (IntPtr ptr, bool owns);" />
      <MemberType>Constructor</MemberType>
      <Parameters>
        <Parameter Name="ptr" Type="System.IntPtr" />
        <Parameter Name="owns" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="ptr">To be added.</param>
        <param name="owns">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Content">
      <MemberSignature Language="C#" Value="public Cairo.Content Content { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Content</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CreateForImage">
      <MemberSignature Language="C#" Value="public static Cairo.Surface CreateForImage (ref byte[] data, Cairo.Format format, int width, int height, int stride);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.Surface</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="data" Type="System.Byte[]&amp;" RefType="ref" />
        <Parameter Name="format" Type="Cairo.Format" />
        <Parameter Name="width" Type="System.Int32" />
        <Parameter Name="height" Type="System.Int32" />
        <Parameter Name="stride" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="data">To be added.</param>
        <param name="format">To be added.</param>
        <param name="width">To be added.</param>
        <param name="height">To be added.</param>
        <param name="stride">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Flush">
      <MemberSignature Language="C#" Value="public void Flush ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="MarkDirty">
      <MemberSignature Language="C#" Value="public void MarkDirty ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="MarkDirty">
      <MemberSignature Language="C#" Value="public void MarkDirty (Cairo.Rectangle rectangle);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="rectangle" Type="Cairo.Rectangle" />
      </Parameters>
      <Docs>
        <param name="rectangle">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetFallbackResolution">
      <MemberSignature Language="C#" Value="public void SetFallbackResolution (double x, double y);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="x" Type="System.Double" />
        <Parameter Name="y" Type="System.Double" />
      </Parameters>
      <Docs>
        <param name="x">To be added.</param>
        <param name="y">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Show">
      <MemberSignature Language="C#" Value="public void Show (Cairo.Context gr, double x, double y);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="gr" Type="Cairo.Context" />
        <Parameter Name="x" Type="System.Double" />
        <Parameter Name="y" Type="System.Double" />
      </Parameters>
      <Docs>
        <param name="gr">To be added.</param>
        <param name="x">To be added.</param>
        <param name="y">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SurfaceType">
      <MemberSignature Language="C#" Value="public Cairo.SurfaceType SurfaceType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Cairo.SurfaceType</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
  <Docs>
    <summary>Base class for surfaces</summary>
    <remarks>A <see cref="T:Cairo.Surface" /> represents an image, either as the destination of a drawing operation or as source when drawing onto another surface. There are different subtypes of Surface for different drawing backends; for example, <see cref="T:Cairo.ImageSurface" /> creates a bitmap image in memory.</remarks>
  </Docs>
</Type>
