<Type Name="Visual" FullName="Gdk.Visual">
  <TypeSignature Language="C#" Value="public class Visual : GLib.Object, IWrapper, IDisposable" Maintainer="miguel" />
  <AssemblyInfo>
    <AssemblyName>gdk-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <AssemblyCulture>neutral</AssemblyCulture>
    <Attributes />
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>Describes a particular video hardware display format.</summary>
    <remarks>
      <para>
	A Gdk.Visual describes a particular video hardware display
	format. It includes information about the number of bits used
	for each color, the way the bits are translated into an RGB
	value for display, and the way the bits are stored in
	memory. For example, a piece of display hardware might support
	24-bit color, 16-bit color, or 8-bit color; meaning
	24/16/8-bit pixel sizes. For a given pixel size, pixels can be
	in different formats; for example the "red" element of an RGB
	pixel may be in the top 8 bits of the pixel, or may be in the
	lower 4 bits.
      </para>
      <para>
	Usually you can avoid thinking about visuals in GTK+. Visuals
	are useful to interpret the contents of a <see cref="T:Gdk.Image" />, but you should avoid GdkImage precisely
	because its contents depend on the display hardware; use <see cref="T:Gdk.Pixbuf" /> instead, for all but the most low-level
	purposes.  Also, anytime you provide a <see cref="T:Gdk.Colormap" />, the visual is implied as part of the
	colormap (<see cref="P:Gdk.Colormap.Visual" />), so you won't
	have to provide a visual in addition.
      </para>
      <para>
	There are several standard visuals.  The visual returned by
	<see cref="P:Gdk.Visual.System" /> is the system's default
	visual.  <see cref="P:Gdk.Rgb.Visual" /> return the visual most
	suited to displaying full-color image data. If you use the
	calls in <see cref="T:Gdk.RGB" />, you should create your
	windows using this visual (and the colormap returned by <see cref="P:Gdk.Rgb.Colormap" />).
      </para>
      <para>
	A number of functions are provided for determining the "best"
	available visual.  For the purposes of making this
	determination, higher bit depths are considered better, and
	for visuals of the same bit depth, <see cref="E:Gdk.VisualType.PseudoColor" /> is preferred at 8bpp,
	otherwise, the visual types are ranked in the order of
	(highest to lowest) <see cref="E:Gdk.VisualType.DirectColor" /><see cref="E:Gdk.VisualType.TrueColor" />, <see cref="E:Gdk.VisualType.PseudoColor" />, <see cref="Gdk.VisualType.StaticColor" />, <see cref="Gdk.VisualType.Grayscale" />, then
	<see cref="E:Gdk.VisualType.StaticGray" />.
      </para>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>GLib.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>GLib.IWrapper</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <Member MemberName="GetBestWithDepth">
      <MemberSignature Language="C#" Value="public static Gdk.Visual GetBestWithDepth (int depth);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Visual</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="depth" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Get the best visual with depth depth for the default GDK screen.</summary>
        <param name="depth">A bit depth</param>
        <returns>Best visual for the given depth.</returns>
        <remarks>
          <para>
	    Get the best visual with depth depth for the default GDK
	    screen.  Color visuals and visuals with mutable colormaps
	    are preferred over grayscale or fixed-colormap visuals.
	    The return value should not be freed. <see langword="null" /> may be returned if no visual supports
	    <paramref name="depth" />.
	  </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="GetBestWithType">
      <MemberSignature Language="C#" Value="public static Gdk.Visual GetBestWithType (Gdk.VisualType visual_type);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Visual</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="visual_type" Type="Gdk.VisualType" />
      </Parameters>
      <Docs>
        <summary>Get the best visual of the given visual_type for the default GDK screen.</summary>
        <param name="visual_type">Required visual type.</param>
        <returns>Best visual of the given type</returns>
        <remarks>
          <para>
	    Get the best visual of the given <paramref name="visual_type" /> for the default GDK screen.  Visuals
	    with higher color depths are considered better. The return
	    value should not be freed. <see langword="null" /> may be
	    returned if no visual has type <paramref name="visual_type" />.
	  </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="GetBestWithBoth">
      <MemberSignature Language="C#" Value="public static Gdk.Visual GetBestWithBoth (int depth, Gdk.VisualType visual_type);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Visual</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="depth" Type="System.Int32" />
        <Parameter Name="visual_type" Type="Gdk.VisualType" />
      </Parameters>
      <Docs>
        <summary>Get the best visual given a visual type and a
        required depth.</summary>
        <param name="depth">Required depth.</param>
        <param name="visual_type">Required visual type.</param>
        <returns>Best visual of the given type and depth.</returns>
        <remarks>
          <para>
	    Get the best visual of the given <paramref name="visual_type" /> at the given <paramref name="depth" />for the default GDK screen.  Visuals with
	    higher color depths are considered better. The return
	    value should not be freed. <see langword="null" /> may be
	    returned if no visual that match the type <paramref name="visual_type" /> and <paramref name="depth" />.
	  </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="protected override void Finalize ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Disposes the resources associated with the object.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Visual (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="raw">Pointer to the C object.</param>
        <returns>An instance of Visual, wrapping the C object.</returns>
        <remarks>
          <para>This is an internal constructor, and should not be used by user code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="BestType">
      <MemberSignature Language="C#" Value="public static Gdk.VisualType BestType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.VisualType</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Best visual type for the default Gdk screen</summary>
        <returns>The best visual type available.</returns>
        <remarks>Return the best available visual type for the default GDK screen.</remarks>
      </Docs>
    </Member>
    <Member MemberName="BestDepth">
      <MemberSignature Language="C#" Value="public static int BestDepth { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Best depth for the default Gdk screen.</summary>
        <returns>The best depth</returns>
        <remarks>
          <para>
	    Get the best available depth for the default GDK
	    screen. "Best" means "largest," i.e. 32 preferred over 24
	    preferred over 8 bits per pixel.
	  </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Best">
      <MemberSignature Language="C#" Value="public static Gdk.Visual Best { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Visual</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Visual with the most available colors for the default GDK screen.</summary>
        <returns>The best visual.</returns>
        <remarks>Get the visual with the most available colors for the default GDK screen. </remarks>
      </Docs>
    </Member>
    <Member MemberName="System">
      <MemberSignature Language="C#" Value="public static Gdk.Visual System { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Visual</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The system'sdefault visual for the default GDK
        screen.</summary>
        <returns>The system visual</returns>
        <remarks>Get the system'sdefault visual for the default GDK
        screen. This is the visual for the root window of the
        display.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Screen">
      <MemberSignature Language="C#" Value="public Gdk.Screen Screen { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Screen</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <returns>a <see cref="T:Gdk.Screen" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="GType">
      <MemberSignature Language="C#" Value="public static GLib.GType GType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>GLib.GType</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added</summary>
        <returns>a <see cref="T:GLib.GType" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Visual (GLib.GType gtype);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="gtype" Type="GLib.GType" />
      </Parameters>
      <Docs>
        <summary>To be added</summary>
        <param name="gtype">a <see cref="T:GLib.GType" /></param>
        <returns>a <see cref="T:Gdk.Visual" /></returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
  </Members>
</Type>