#region --- License ---
/* Copyright (c) 2006, 2007 Stefanos Apostolopoulos
* See license.txt for license info
*/
#endregion
#region --- Using directives ---
using System;
using System.Drawing;
using System.Globalization;
#endregion
namespace OpenTK.Platform
{
public sealed class DisplayMode
{
#region --- Private Variables ---
private int width, height;
private ColorDepth color;
private int depthBits, stencilBits, auxBits;
private float refreshRate;
private bool vsync;
private bool fullscreen;
private int buffers;
private bool stereo;
#endregion
#region --- Constructors ---
///
/// Constructs a new DisplayMode from the given parameters.
///
/// The Width of the DisplayMode, in pixels.
/// The Height of the DisplayMode, in pixels.
/// The ColorDepth of the DisplayMode.
/// The size of the Depth Buffer, in bits.
/// The size of Stencil Buffer, in bits.
/// The size of the Auxilliary Buffer, in bits.
/// Set to true for a fullscreen DisplayMode.
/// Set to true for a DisplayMode with stereographic capabilities.
/// The number of Display Buffers. Usually one, two or three.
/// Set to true to sync the updates to the screen refresh rate.
/// The desired RefreshRate. Taken into account only for Fullscreen DisplayModes.
public DisplayMode(
int width,
int height,
ColorDepth color,
int depth,
int stencil,
int aux,
int buffers,
bool fullscreen,
bool stereo,
bool vsync,
float refresh
)
{
this.Width = width;
this.Height = height;
this.Color = color;
this.DepthBits = depth;
this.StencilBits = stencil;
this.AuxBits = aux;
this.Buffers = buffers;
this.Fullscreen = fullscreen;
this.Stereo = stereo;
this.Vsync = vsync;
this.RefreshRate = refresh;
}
///
/// Constructs a new DisplayMode with default values.
///
public DisplayMode()
: this(0, 0, new ColorDepth(0), 0, 0, 0, 0, false, false, false, 0.0f)
{
}
///
/// Creates a DisplayMode.
///
/// The Width of the DisplayMode in pixels.
/// The Height of the DisplayMode in pixels.
public DisplayMode(int width, int height)
: this(width, height, new ColorDepth(0), 0, 0, 0, 0, false, false, false, 0.0f)
{
}
/*
public DisplayMode(int width, int height, int bpp, int frequency)
: this(width, height, 0, 0, 0, 0, frequency)
{
color = new ColorDepth(bpp);
}
*/
/*
public DisplayMode(int width, int height, int r, int g, int b, int a, int frequency)
{
size = new Size(width, height);
color = new ColorDepth(r, g, b, a);
displayFrequency = frequency;
}
*/
#endregion
#region --- Public Properties ---
#region public int Height
///
/// Gets or sets the Height of the DisplayMode. Height is the vertical span measured in pixels.
///
public int Height
{
get { return height; }
set
{
if (value > 0 /* && (value < Screen[0].Height) */)
{
height = value;
}
}
}
#endregion
#region public int Width
///
/// Gets or sets the Width of the DisplayMode. Width is the horizontal span measured in pixels.
///
public int Width
{
get { return width; }
set
{
if (value > 0 /* && (value < Screen[0].Width) */)
{
width = value;
}
}
}
#endregion
#region public ColorDepth Color
public ColorDepth Color
{
get { return this.color; }
set { this.color = value; }
}
#endregion
public int DepthBits
{
get { return this.depthBits; }
set { this.depthBits = value; }
}
public int StencilBits
{
get { return this.stencilBits; }
set { this.stencilBits = value; }
}
public int AuxBits
{
get { return this.auxBits; }
set { this.auxBits = value; }
}
public bool Stereo
{
get { return this.stereo; }
set { this.stereo = value; }
}
public bool Fullscreen
{
get { return this.fullscreen; }
set { this.fullscreen = value; }
}
public bool Vsync
{
get { return this.vsync; }
set { this.vsync = value; }
}
public int Buffers
{
get { return this.buffers; }
set { this.buffers = value; }
}
public float RefreshRate
{
get { return this.refreshRate; }
set { this.refreshRate = value; }
}
#endregion
public override string ToString()
{
return string.Format(
CultureInfo.CurrentCulture,
"{0}x{1}, {2}, {3}Hz",
Width, Height,
Color,
RefreshRate
);
}
}
public class DisplayModeMatchOptions { }
}