summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Boot/BootKit/Vendor/Qr.hxx4
-rw-r--r--Boot/Sources/HEL/AMD64/BootMain.cxx36
-rw-r--r--Kernel/Builtins/GX/GX (renamed from Kernel/Builtins/Toolbox/Toolbox.hxx)42
-rw-r--r--Kernel/Builtins/GX/Lerp (renamed from Kernel/Builtins/Toolbox/Lerp.hxx)8
-rw-r--r--Kernel/Builtins/GX/Rsrc/Cursor.rsrc (renamed from Kernel/Builtins/Toolbox/Rsrc/Cursor.rsrc)9
-rw-r--r--Kernel/Builtins/ReadMe.txt2
-rw-r--r--Kernel/FirmwareKit/EFI/API.hxx8
-rw-r--r--Kernel/HALKit/AMD64/HalKernelMain.cxx2
-rw-r--r--Kernel/HALKit/AMD64/HalKernelMouse.cxx6
-rw-r--r--Kernel/Sources/AppMain.cxx2
10 files changed, 78 insertions, 41 deletions
diff --git a/Boot/BootKit/Vendor/Qr.hxx b/Boot/BootKit/Vendor/Qr.hxx
index 3bafc09f..7e1e85ed 100644
--- a/Boot/BootKit/Vendor/Qr.hxx
+++ b/Boot/BootKit/Vendor/Qr.hxx
@@ -9,7 +9,7 @@
#include <BootKit/Vendor/Shared/bit.h>
#include <BootKit/Vendor/QrPrelude.hxx>
-#include <Builtins/Toolbox/Toolbox.hxx>
+#include <Builtins/GX/GX>
#include <BootKit/Vendor/Support.hxx>
#include <CompilerKit/Detail.hxx>
@@ -371,7 +371,7 @@ namespace qr
{
for (int x = 0; x < (this->side_size()); ++x)
{
- ToolboxDrawZone(
+ GXDraw(
(this->module(x, y) ? RGB(00, 00, 00) : RGB(FF, FF, FF)),
1, 1,
x + whereX, y + whereY);
diff --git a/Boot/Sources/HEL/AMD64/BootMain.cxx b/Boot/Sources/HEL/AMD64/BootMain.cxx
index 9df4cd0b..3050a8eb 100644
--- a/Boot/Sources/HEL/AMD64/BootMain.cxx
+++ b/Boot/Sources/HEL/AMD64/BootMain.cxx
@@ -6,7 +6,7 @@
#include <BootKit/BootKit.hxx>
#include <BootKit/Rsrc/NewBoot.rsrc>
-#include <Builtins/Toolbox/Toolbox.hxx>
+#include <Builtins/GX/GX>
#include <FirmwareKit/EFI.hxx>
#include <FirmwareKit/EFI/API.hxx>
#include <FirmwareKit/Handover.hxx>
@@ -22,6 +22,14 @@
#define kMachineModel "NeWS HD"
#endif // !kMachineModel
+#ifndef cExpectedWidth
+#define cExpectedWidth 436
+#endif
+
+#ifndef cExpectedHeight
+#define cExpectedHeight 644
+#endif
+
/** Graphics related. */
STATIC EfiGraphicsOutputProtocol* kGop = nullptr;
@@ -34,7 +42,7 @@ EXTERN_C Void hal_init_platform(HEL::HandoverInformationHeader* HIH);
@brief Finds and stores the GOP.
*/
-STATIC Void CheckAndFindFramebuffer() noexcept
+STATIC Void InitVideoFB() noexcept
{
kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID);
kGop = nullptr;
@@ -43,6 +51,18 @@ STATIC Void CheckAndFindFramebuffer() noexcept
BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr*)&kGop);
+ for (size_t i = 0; i < kGop->Mode->MaxMode; ++i)
+ {
+ EfiGraphicsOutputProtocolModeInformation* infoPtr = nullptr;
+
+ if (infoPtr->HorizontalResolution == cExpectedWidth &&
+ infoPtr->VerticalResolution == cExpectedHeight)
+ {
+ kGop->SetMode(kGop, i);
+ break;
+ }
+ }
+
kStride = 4;
}
@@ -62,7 +82,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
EfiSystemTable* SystemTable)
{
InitEFI(SystemTable); ///! Init the EFI library.
- CheckAndFindFramebuffer(); ///! Init the GOP.
+ InitVideoFB(); ///! Init the GOP.
BTextWriter writer;
@@ -123,18 +143,18 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
kHandoverHeader = handoverHdrPtr;
- ToolboxInitRsrc();
+ GXInit();
- ToolboxDrawZone(RGB(9d, 9d, 9d), handoverHdrPtr->f_GOP.f_Height,
+ GXDraw(RGB(9d, 9d, 9d), handoverHdrPtr->f_GOP.f_Height,
handoverHdrPtr->f_GOP.f_Width, 0, 0);
- ToolboxClearRsrc();
+ GXFini();
- ToolboxDrawRsrc(NewBoot, NEWBOOT_HEIGHT, NEWBOOT_WIDTH,
+ GXDrawImg(NewBoot, NEWBOOT_HEIGHT, NEWBOOT_WIDTH,
(handoverHdrPtr->f_GOP.f_Width - NEWBOOT_WIDTH) / 2,
(handoverHdrPtr->f_GOP.f_Height - NEWBOOT_HEIGHT) / 2);
- ToolboxClearRsrc();
+ GXFini();
BS->GetMemoryMap(SizePtr, Descriptor, MapKey, SzDesc, RevDesc);
diff --git a/Kernel/Builtins/Toolbox/Toolbox.hxx b/Kernel/Builtins/GX/GX
index e65da9d2..61e3a6fe 100644
--- a/Kernel/Builtins/Toolbox/Toolbox.hxx
+++ b/Kernel/Builtins/GX/GX
@@ -15,15 +15,15 @@ EXTERN_C NewOS::Boolean _hal_left_button_pressed();
EXTERN_C NewOS::Boolean _hal_middle_button_pressed();
EXTERN_C NewOS::Boolean _hal_right_button_pressed();
-#define ToolboxInitRsrc() NewOS::SizeT __ToolboxCursor = 0
+#define GXInit() NewOS::SizeT __GXCursor = 0
-#define kClearClr RGB(00, 00, 00)
+#define gxClearClr RGB(00, 00, 00)
-#define ToolboxClearRsrc() __ToolboxCursor = 0
+#define GXFini() __GXCursor = 0
/// @brief Performs OR drawing on the framebuffer.
-#define ToolboxDrawOrRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __ToolboxCursor = 0; \
+#define GXDrawAlphaImg(ImgPtr, _Height, _Width, BaseX, BaseY) \
+ __GXCursor = 0; \
\
for (NewOS::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
{ \
@@ -32,15 +32,15 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed();
*(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \
4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
i + \
- 4 * u))) |= ImgPtr[__ToolboxCursor]; \
+ 4 * u))) |= ImgPtr[__GXCursor]; \
\
- ++__ToolboxCursor; \
+ ++__GXCursor; \
} \
}
/// @brief Draws a resource.
-#define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __ToolboxCursor = 0; \
+#define GXDrawImg(ImgPtr, _Height, _Width, BaseX, BaseY) \
+ __GXCursor = 0; \
\
for (NewOS::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
{ \
@@ -49,14 +49,14 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed();
*(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \
4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
i + \
- 4 * u))) = ImgPtr[__ToolboxCursor]; \
+ 4 * u))) = ImgPtr[__GXCursor]; \
\
- ++__ToolboxCursor; \
+ ++__GXCursor; \
} \
}
/// @brief Cleans a resource.
-#define ToolboxClearZone(_Height, _Width, BaseX, BaseY) \
+#define GXClear(_Height, _Width, BaseX, BaseY) \
\
for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) \
{ \
@@ -65,12 +65,12 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed();
*(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \
4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
i + \
- 4 * u))) = kClearClr; \
+ 4 * u))) = gxClearClr; \
} \
}
/// @brief Draws inside a zone.
-#define ToolboxDrawZone(_Clr, _Height, _Width, BaseX, BaseY) \
+#define GXDraw(_Clr, _Height, _Width, BaseX, BaseY) \
\
for (NewOS::SizeT i = BaseX; i < (_Width + BaseX); ++i) \
{ \
@@ -82,3 +82,17 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed();
4 * u))) = _Clr; \
} \
}
+
+
+#ifdef __CG_USE_GX__
+/// @brief This function creates a new framebuffer for GX.
+/// @return
+inline cairo_surface_t* GXCreateFramebufferCairo()
+{
+ cairo_format_t format = CAIRO_FORMAT_ARGB32;
+
+ NewOS::Int32 stride = cairo_format_stride_for_width(format, kHandoverHeader->f_GOP.f_Width);
+
+ return cairo_image_surface_create_for_data((unsigned char *)kHandoverHeader->f_GOP.f_The, format, kHandoverHeader->f_GOP.f_Width, kHandoverHeader->f_GOP.f_Height, stride);
+}
+#endif \ No newline at end of file
diff --git a/Kernel/Builtins/Toolbox/Lerp.hxx b/Kernel/Builtins/GX/Lerp
index f987457f..08066c82 100644
--- a/Kernel/Builtins/Toolbox/Lerp.hxx
+++ b/Kernel/Builtins/GX/Lerp
@@ -9,12 +9,14 @@
/// @file Lerp.hxx
/// @brief Linear interpolation implementation.
+typedef float GXReal;
+
/// @brief Linear interpolation equation solver.
/// @param from where?
/// @param to to?
/// @param at which state we're at **to**.
-inline int Lerp(int from, int to, float percent) noexcept
+inline GXReal GXLerp(GXReal to, GXReal from, GXReal stat)
{
- int difference = to - from;
- return from + (difference * percent);
+ register GXReal difference = to - from;
+ return from + (difference * stat);
}
diff --git a/Kernel/Builtins/Toolbox/Rsrc/Cursor.rsrc b/Kernel/Builtins/GX/Rsrc/Cursor.rsrc
index 7943b805..2283cb32 100644
--- a/Kernel/Builtins/Toolbox/Rsrc/Cursor.rsrc
+++ b/Kernel/Builtins/GX/Rsrc/Cursor.rsrc
@@ -1,8 +1,9 @@
-#define CURSOR_HEIGHT 57
-#define CURSOR_WIDTH 53
+#define cCurHeight (57)
+#define cCurWidth (53)
-// array size is 9063
-static const unsigned int Cursor[] = {
+#define cCurLength (3021)
+
+static const unsigned int Cursor[cCurLength] = {
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,
diff --git a/Kernel/Builtins/ReadMe.txt b/Kernel/Builtins/ReadMe.txt
index b090b2e5..b0a5a327 100644
--- a/Kernel/Builtins/ReadMe.txt
+++ b/Kernel/Builtins/ReadMe.txt
@@ -14,6 +14,6 @@ Maintainers/Authors
ACPIFactoryInterface: Amlal EL Mahrouss.
AHCI: Amlal EL Mahrouss.
-Toolbox: Amlal EL Mahrouss.
+GX: Amlal EL Mahrouss.
PS2: Amlal EL Mahrouss
ATA: Amlal EL Mahrouss \ No newline at end of file
diff --git a/Kernel/FirmwareKit/EFI/API.hxx b/Kernel/FirmwareKit/EFI/API.hxx
index 8e8183d6..362886b2 100644
--- a/Kernel/FirmwareKit/EFI/API.hxx
+++ b/Kernel/FirmwareKit/EFI/API.hxx
@@ -21,7 +21,7 @@ class BTextWriter;
#include <BootKit/BootKit.hxx>
#include <BootKit/Rsrc/NewBootFatal.rsrc>
#include <BootKit/Vendor/Qr.hxx>
-#include <Builtins/Toolbox/Toolbox.hxx>
+#include <Builtins/GX/GX>
#endif // ifdef __NEWBOOT__
inline EfiSystemTable* ST = nullptr;
@@ -89,13 +89,13 @@ Bascially frees everything we have in the EFI side.
#endif // ifdef __DEBUG__
#ifdef __NEWBOOT__
- ToolboxInitRsrc();
+ GXInit();
- ToolboxDrawRsrc(NewBootFatal, NEWBOOTFATAL_HEIGHT, NEWBOOTFATAL_WIDTH,
+ GXDrawImg(NewBootFatal, NEWBOOTFATAL_HEIGHT, NEWBOOTFATAL_WIDTH,
(kHandoverHeader->f_GOP.f_Width - NEWBOOTFATAL_WIDTH) / 2,
(kHandoverHeader->f_GOP.f_Height - NEWBOOTFATAL_HEIGHT) / 2);
- ToolboxClearRsrc();
+ GXFini();
/// Show the QR code now.
diff --git a/Kernel/HALKit/AMD64/HalKernelMain.cxx b/Kernel/HALKit/AMD64/HalKernelMain.cxx
index 3136bf76..bd415168 100644
--- a/Kernel/HALKit/AMD64/HalKernelMain.cxx
+++ b/Kernel/HALKit/AMD64/HalKernelMain.cxx
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.hpp>
-#include <Builtins/Toolbox/Toolbox.hxx>
+#include <Builtins/GX/GX>
#include <FirmwareKit/Handover.hxx>
#include <KernelKit/FileManager.hpp>
#include <KernelKit/Framebuffer.hpp>
diff --git a/Kernel/HALKit/AMD64/HalKernelMouse.cxx b/Kernel/HALKit/AMD64/HalKernelMouse.cxx
index 1e1ddd5b..68d387c7 100644
--- a/Kernel/HALKit/AMD64/HalKernelMouse.cxx
+++ b/Kernel/HALKit/AMD64/HalKernelMouse.cxx
@@ -5,8 +5,8 @@
------------------------------------------- */
#include <Builtins/PS2/PS2MouseInterface.hxx>
-#include <Builtins/Toolbox/Toolbox.hxx>
-#include <Builtins/Toolbox/Rsrc/Cursor.rsrc>
+#include <Builtins/GX/GX>
+#include <Builtins/GX/Rsrc/Cursor.rsrc>
#include <KernelKit/Framebuffer.hpp>
#include <NewKit/Defines.hpp>
@@ -23,7 +23,7 @@ STATIC NewOS::PS2MouseInterface kMousePS2;
STATIC NewOS::Char kMousePacket[4] = {};
STATIC NewOS::Boolean kMousePacketReady = false;
-STATIC ToolboxInitRsrc();
+STATIC GXInit();
#define kPS2Leftbutton 0b00000001
#define kPS2Middlebutton 0b00000010
diff --git a/Kernel/Sources/AppMain.cxx b/Kernel/Sources/AppMain.cxx
index 41619673..b06d8460 100644
--- a/Kernel/Sources/AppMain.cxx
+++ b/Kernel/Sources/AppMain.cxx
@@ -8,7 +8,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.hpp>
-#include <Builtins/Toolbox/Toolbox.hxx>
+#include <Builtins/GX/GX>
#include <CompilerKit/Detail.hxx>
#include <FirmwareKit/Handover.hxx>
#include <KernelKit/FileManager.hpp>