Cosmos/source2/Users/Orvid/TestBed/Form1.cs
blah38621_cp 92dcac4a51 Made a few improvements to the speed of the ILScanner, including caching the resolved plugs.
Added the possibility for an optimization step in the IL2CPU MSBuild task. Currently commented out, but should work fine with a few modifications to the optimizer.
Moved classes that are dependent on Cosmos from the Orvid.Graphics, into the Orvid.Graphics.Cosmos assembly. 
Re-factored the font mechanism, added partially working .fnt Font support. 
Added a Rectangle class, and a Vec2d class, which is the same as Vec2, except with doubles for the X and Y values.
Made a small aesthetic improvement to the output of the File2ByteArray Converter.
2011-09-03 21:05:46 +00:00

327 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using Drawing = System.Drawing;
using System.Text;
using Forms = System.Windows.Forms;
using Orvid.Graphics;
using OForms;
using OForms.Controls;
using OForms.Windows;
namespace TestBed
{
public partial class Form1 : Forms.Form
{
private const int DesktopWidth = 320;
private const int DesktopHeight = 200;
List<ObjectEvents> Objects = new List<ObjectEvents>();
Image i = new Image(DesktopWidth, DesktopHeight);
WindowManager windowManager = new WindowManager(new Vec2(DesktopWidth, DesktopHeight));
//Orvid.Graphics.FontSupport.Font fnt;
Window w1;
public Form1()
{
InitializeComponent();
//System.IO.StreamReader sr = new System.IO.StreamReader("Vera-10.bdf");
//Orvid.Graphics.FontSupport.FontManager.Instance.LoadFont(1, sr.BaseStream);
//System.IO.StreamReader sr = new System.IO.StreamReader("MS-Sans-Serif_24.FNT");
//fnt = Orvid.Graphics.FontSupport.FontManager.Instance.LoadFont(2, sr.BaseStream);
}
void bt_Click(Vec2 loc, MouseButtons buttons)
{
//if (w1.CurrentState == OForms.Windows.WindowState.Normal)
//{
// windowManager.MaximizeWindow(w1);
//}
//else
//{
// windowManager.RestoreWindow(w1);
//}
Window w = new Window(new Vec2(130, 30), new Vec2(120, 80), "Test Window 3");
w.ClearColor = Colors.Blue;
windowManager.AddWindow(w);
}
#region Mouse Functions
/// <summary>
/// This image contains everything that is behind the mouse.
/// </summary>
private Image behindMouseImage = new Image(5, 5); // This means max mouse size is 4x4
private Image MouseImage;
public uint MouseX = 0;
public uint MouseY = 0;
private void DrawCursor()
{
#region SaveBehindMouse
behindMouseImage.SetPixel(0, 0, i.GetPixel(MouseX, MouseY));
behindMouseImage.SetPixel(1, 0, i.GetPixel(MouseX + 1, MouseY));
behindMouseImage.SetPixel(2, 0, i.GetPixel(MouseX + 2, MouseY));
behindMouseImage.SetPixel(0, 1, i.GetPixel(MouseX, MouseY + 1));
behindMouseImage.SetPixel(0, 2, i.GetPixel(MouseX, MouseY + 2));
behindMouseImage.SetPixel(1, 1, i.GetPixel(MouseX + 1, MouseY + 1));
behindMouseImage.SetPixel(2, 2, i.GetPixel(MouseX + 2, MouseY + 2));
behindMouseImage.SetPixel(3, 3, i.GetPixel(MouseX + 3, MouseY + 3));
behindMouseImage.SetPixel(4, 4, i.GetPixel(MouseX + 4, MouseY + 4));
#region Old Block Mouse
//behindMouseImage.SetPixel(0, 0, i.GetPixel(MouseX, MouseY));
//behindMouseImage.SetPixel(1, 0, i.GetPixel(MouseX + 1, MouseY));
//behindMouseImage.SetPixel(2, 0, i.GetPixel(MouseX + 2, MouseY));
//behindMouseImage.SetPixel(3, 0, i.GetPixel(MouseX + 3, MouseY));
//behindMouseImage.SetPixel(4, 0, i.GetPixel(MouseX + 4, MouseY));
//behindMouseImage.SetPixel(0, 1, i.GetPixel(MouseX, MouseY + 1));
//behindMouseImage.SetPixel(1, 1, i.GetPixel(MouseX + 1, MouseY + 1));
//behindMouseImage.SetPixel(2, 1, i.GetPixel(MouseX + 2, MouseY + 1));
//behindMouseImage.SetPixel(3, 1, i.GetPixel(MouseX + 3, MouseY + 1));
//behindMouseImage.SetPixel(4, 1, i.GetPixel(MouseX + 4, MouseY + 1));
//behindMouseImage.SetPixel(0, 2, i.GetPixel(MouseX, MouseY + 2));
//behindMouseImage.SetPixel(1, 2, i.GetPixel(MouseX + 1, MouseY + 2));
//behindMouseImage.SetPixel(2, 2, i.GetPixel(MouseX + 2, MouseY + 2));
//behindMouseImage.SetPixel(3, 2, i.GetPixel(MouseX + 3, MouseY + 2));
//behindMouseImage.SetPixel(4, 2, i.GetPixel(MouseX + 4, MouseY + 2));
//behindMouseImage.SetPixel(0, 3, i.GetPixel(MouseX, MouseY + 3));
//behindMouseImage.SetPixel(1, 3, i.GetPixel(MouseX + 1, MouseY + 3));
//behindMouseImage.SetPixel(2, 3, i.GetPixel(MouseX + 2, MouseY + 3));
//behindMouseImage.SetPixel(3, 3, i.GetPixel(MouseX + 3, MouseY + 3));
//behindMouseImage.SetPixel(4, 3, i.GetPixel(MouseX + 4, MouseY + 3));
//behindMouseImage.SetPixel(0, 4, i.GetPixel(MouseX, MouseY + 4));
//behindMouseImage.SetPixel(1, 4, i.GetPixel(MouseX + 1, MouseY + 4));
//behindMouseImage.SetPixel(2, 4, i.GetPixel(MouseX + 2, MouseY + 4));
//behindMouseImage.SetPixel(3, 4, i.GetPixel(MouseX + 3, MouseY + 4));
//behindMouseImage.SetPixel(4, 4, i.GetPixel(MouseX + 4, MouseY + 4));
#endregion
#endregion
#region Draw Mouse
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, MouseImage);
#endregion
}
private void SetMouseDown()
{
MouseImage.SetPixel(0, 0, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(1, 0, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(2, 0, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(0, 1, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(0, 2, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(1, 1, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(2, 2, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(3, 3, new Pixel(128, 128, 128, 255));
MouseImage.SetPixel(4, 4, new Pixel(128, 128, 128, 255));
}
private void SetMouseUp()
{
MouseImage.SetPixel(0, 0, Colors.Black);
MouseImage.SetPixel(1, 0, Colors.Black);
MouseImage.SetPixel(2, 0, Colors.Black);
MouseImage.SetPixel(0, 1, Colors.Black);
MouseImage.SetPixel(0, 2, Colors.Black);
MouseImage.SetPixel(1, 1, Colors.Black);
MouseImage.SetPixel(2, 2, Colors.Black);
MouseImage.SetPixel(3, 3, Colors.Black);
MouseImage.SetPixel(4, 4, Colors.Black);
}
private void InitializeMouse()
{
MouseImage = new Image(5, 5);
// Now we need to setup the mouse
MouseImage.SetPixel(0, 0, Colors.Black);
MouseImage.SetPixel(1, 0, Colors.Black);
MouseImage.SetPixel(2, 0, Colors.Black);
MouseImage.SetPixel(0, 1, Colors.Black);
MouseImage.SetPixel(0, 2, Colors.Black);
MouseImage.SetPixel(1, 1, Colors.Black);
MouseImage.SetPixel(2, 2, Colors.Black);
MouseImage.SetPixel(3, 3, Colors.Black);
MouseImage.SetPixel(4, 4, Colors.Black);
// Old mouse
//MouseImage.SetPixel(0, 0, Colors.Black);
//MouseImage.SetPixel(1, 0, Colors.Black);
//MouseImage.SetPixel(2, 0, Colors.Black);
//MouseImage.SetPixel(3, 0, Colors.Black);
//MouseImage.SetPixel(0, 1, Colors.Black);
//MouseImage.SetPixel(1, 1, Colors.White);
//MouseImage.SetPixel(2, 1, Colors.White);
//MouseImage.SetPixel(3, 1, Colors.Black);
//MouseImage.SetPixel(0, 2, Colors.Black);
//MouseImage.SetPixel(1, 2, Colors.White);
//MouseImage.SetPixel(2, 2, Colors.White);
//MouseImage.SetPixel(3, 2, Colors.Black);
//MouseImage.SetPixel(0, 3, Colors.Black);
//MouseImage.SetPixel(1, 3, Colors.Black);
//MouseImage.SetPixel(2, 3, Colors.Black);
//MouseImage.SetPixel(3, 3, Colors.Black);
}
#endregion
private void Form1_Load(object sender, EventArgs e)
{
w1 = new Window(new Vec2(30, 30), new Vec2(120, 80), "Test Window 1");
w1.ClearColor = Colors.Green;
Button bt = new Button(new Vec2(10, 10), new Vec2(30, 10));
bt.Click += new MouseEvent(bt_Click);
bt.Parent = w1;
w1.Controls.Add(bt);
Window w2 = new Window(new Vec2(80, 30), new Vec2(120, 80), "Test Window 2");
w2.ClearColor = Colors.Red;
Window w3 = new Window(new Vec2(130, 30), new Vec2(120, 80), "Test Window 3");
w3.ClearColor = Colors.Blue;
windowManager.AddWindow(w1);
windowManager.AddWindow(w2);
windowManager.AddWindow(w3);
windowManager.BringWindowToFront(w1);
InitializeMouse();
Forms.Cursor.Hide();
i.Clear(Colors.White);
//i.DrawString(new Vec2(30, 30), "T", fnt, 20, Orvid.Graphics.FontSupport.FontStyle.Normal, Colors.Black);
// Draw exit button.
ExitButton b = new ExitButton(new Vec2(DesktopWidth - 21, 1), new Vec2(20, 20), i, this);
Objects.Add(b.evnts);
DrawCursor();
pictureBox1.Image = (System.Drawing.Bitmap)i;
pictureBox1.Refresh();
// Now we need to restore what was behind the mouse.
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, behindMouseImage);
}
private void pictureBox1_Click(object sender, EventArgs e)
{
foreach (ObjectEvents o in Objects)
{
if (o.Bounds.IsInBounds(new Vec2((int)MouseX, (int)MouseY)))
{
o.MouseClick(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
}
windowManager.HandleMouseClick(new Vec2((int)MouseX, (int)MouseY), OForms.MouseButtons.Left, i);
DrawCursor();
pictureBox1.Image = (System.Drawing.Bitmap)i;
pictureBox1.Refresh();
// Now we need to restore what was behind the mouse.
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, behindMouseImage);
}
private void pictureBox1_MouseMove(object sender, Forms.MouseEventArgs e)
{
MouseX = (uint)e.X;
MouseY = (uint)e.Y;
if (MouseX >= i.Width - 5)
{
MouseX = (uint)(i.Width - 6);
}
if (MouseY >= i.Height - 5)
{
MouseY = (uint)(i.Height - 6);
}
windowManager.HandleMouseMove(new Vec2((int)MouseX, (int)MouseY), Utils.GetButtons(e.Button), i);
foreach (ObjectEvents c in Objects)
{
if (!c.IsIn)
{
if (c.Bounds.IsInBounds(new Vec2(e.X, e.Y)))
{
c.IsIn = true;
if (c.IsMouseDown)
{
c.MouseDown(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
else
{
c.MouseEnter(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
}
}
else
{
if (!c.Bounds.IsInBounds(new Vec2(e.X, e.Y)))
{
c.IsIn = false;
c.MouseLeave(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
}
}
DrawCursor();
pictureBox1.Image = (System.Drawing.Bitmap)i;
pictureBox1.Refresh();
// Now we need to restore what was behind the mouse.
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, behindMouseImage);
}
private void pictureBox1_MouseDown(object sender, Forms.MouseEventArgs e)
{
windowManager.HandleMouseDown(new Vec2(e.X, e.Y), Utils.GetButtons(e.Button), i);
foreach (ObjectEvents c in Objects)
{
if (c.Bounds.IsInBounds(new Vec2(e.X, e.Y)))
{
c.IsMouseDown = true;
c.MouseDown(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
}
SetMouseDown();
DrawCursor();
pictureBox1.Image = (System.Drawing.Bitmap)i;
pictureBox1.Refresh();
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, behindMouseImage);
}
private void pictureBox1_MouseUp(object sender, Forms.MouseEventArgs e)
{
windowManager.HandleMouseUp(new Vec2(e.X, e.Y), Utils.GetButtons(e.Button), i);
foreach (ObjectEvents c in Objects)
{
if (c.IsMouseDown)
{
c.IsMouseDown = false;
c.MouseUp(sender, new Forms.MouseEventArgs(Forms.MouseButtons.Left, 1, (int)MouseX, (int)MouseY, 0));
}
}
SetMouseUp();
DrawCursor();
pictureBox1.Image = (System.Drawing.Bitmap)i;
pictureBox1.Refresh();
Vec2 v = new Vec2((int)MouseX, (int)MouseY);
i.DrawImage(v, behindMouseImage);
}
}
}