// This code was written for the OpenTK library and has been released
// to the Public Domain.
// It is provided "as is" without express or implied warranty of any kind.

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

using OpenTK;

namespace Examples.Tests
{
    [Example("Test Resolution Changes", ExampleCategory.OpenTK, "Test", Documentation="TestResolutionChanges")]
    public class TestResolutionChanges
    {
        public static void Main()
        {
            for (int i = 0; i < 6; i++)
            {
                DisplayDevice dev = DisplayDevice.GetDisplay(DisplayIndex.First + i);
                if (dev != null)
                {
                    Print(dev.ToString());

                    dev.ChangeResolution(dev.SelectResolution(640, 480, 32, 60.0f));
                    Thread.Sleep(1000);
                    Print(dev.ToString());

                    dev.RestoreResolution();
                    Thread.Sleep(1000);
                    Print(dev.ToString());
                }
            }
        }

        static void Print(string msg)
        {
            Trace.WriteLine(msg);

            // Also display a MessageBox when running on a platform
            // with WinForms support.
            try
            {
                if (Configuration.RunningOnWindows || Configuration.RunningOnX11 || Configuration.RunningOnMacOS)
                {
                    MessageBox.Show(msg);
                }
            }
            catch
            {
            }
        }
    }
}