//#define COSMOSDEBUG using Cosmos.HAL; using sys = System; namespace Cosmos.System.Graphics { /// /// FullScreenCanvas class. Used to set and get full screen canvas. /// public static class FullScreenCanvas { /// /// SVGA 2 device. /// private static PCIDevice SVGAIIDevice = PCI.GetDevice(VendorID.VMWare, DeviceID.SVGAIIAdapter); /// /// Check if SVGA 2 Exists. /// /// bool value. public static bool SVGAIIExist() { if (SVGAIIDevice == null) { return false; } return SVGAIIDevice.DeviceExists; } /// /// Video driver. /// private static Canvas MyVideoDriver = null; /// /// Get video driver. /// /// Canvas value. /// Thrown if default graphics mode is not suppoted. private static Canvas GetVideoDriver() { if (SVGAIIExist()) { return new SVGAIIScreen(); } else { return new VBEScreen(); } } /// /// Get video driver. /// /// Mode. /// Canvas value. /// Thrown if graphics mode is not suppoted. private static Canvas GetVideoDriver(Mode mode) { if (SVGAIIExist()) { return new SVGAIIScreen(mode); } else { return new VBEScreen(mode); } } /// /// Get full screen canvas. /// /// Canvas value. /// Thrown if default graphics mode is not suppoted. public static Canvas GetFullScreenCanvas() { Global.mDebugger.SendInternal($"GetFullScreenCanvas() with default mode"); if (MyVideoDriver == null) { Global.mDebugger.SendInternal($"MyVideoDriver is null creating new object"); return MyVideoDriver = GetVideoDriver(); } else { Global.mDebugger.SendInternal($"MyVideoDriver is NOT null using the old one changing mode to DefaulMode"); MyVideoDriver.Mode = MyVideoDriver.DefaultGraphicMode; return MyVideoDriver; } } /// /// Get full screen canvas. /// /// Mode. /// Canvas value. /// Thrown if graphics mode is not suppoted. public static Canvas GetFullScreenCanvas(Mode mode) { Global.mDebugger.SendInternal($"GetFullScreenCanvas() with mode" + mode); if (MyVideoDriver == null) { return MyVideoDriver = GetVideoDriver(mode); } else { MyVideoDriver.Mode = mode; return MyVideoDriver; } } } }