mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 20:39:01 +00:00
327 lines
13 KiB
C#
327 lines
13 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 = 640;
|
|
private const int DesktopHeight = 480;
|
|
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);
|
|
}
|
|
|
|
}
|
|
|
|
}
|