summaryrefslogtreecommitdiffhomepage
path: root/dev/Modules/FB/FB.h
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2024-10-28 07:01:58 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2024-10-28 07:01:58 +0100
commite0024d9ea688ee91a77abc0e28c5ea24b13ca67d (patch)
treea4e29bd919cbeccf2689e81a5d52bfc02f2a8b77 /dev/Modules/FB/FB.h
parent36a3600ff7fc65a63b7386b7a680dbe8e647bd8f (diff)
IMP: Refactor whole source code to make it even.
- That is because previously the source was both in lowercase and lettercase. Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Modules/FB/FB.h')
-rw-r--r--dev/Modules/FB/FB.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/dev/Modules/FB/FB.h b/dev/Modules/FB/FB.h
new file mode 100644
index 00000000..bfe85a8b
--- /dev/null
+++ b/dev/Modules/FB/FB.h
@@ -0,0 +1,154 @@
+/* -------------------------------------------
+
+ Copyright ZKA Web Services Co.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <NewKit/Defines.h>
+
+#define CGInit() Kernel::SizeT kCGCursor = 0
+
+#define CGColor(R, G, B) RGB(R, G, B)
+
+#define cCGClearClr CGColor(0x0, 0x0, 0x0)
+
+#define CGFini() kCGCursor = 0
+
+/// @brief Performs OR drawing on the framebuffer.
+#define CGDrawBitMapInRegionA(_BitMp, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \
+ { \
+ for (Kernel::SizeT u = _BaseY; u < (_Width + _BaseY); ++u) \
+ { \
+ *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) |= (_BitMp)[kCGCursor]; \
+ \
+ ++kCGCursor; \
+ } \
+ }
+
+/// @brief Draws a resource.
+#define CGDrawBitMapInRegion(_BitMp, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \
+ { \
+ for (Kernel::SizeT u = _BaseY; u < (_Width + _BaseY); ++u) \
+ { \
+ *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = (_BitMp)[kCGCursor]; \
+ \
+ ++kCGCursor; \
+ } \
+ }
+
+#define CGDrawBitMapInRegionToRgn(_Rgn, _BitMp, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT i = _BaseX; i < (_Height + _BaseX); ++i) \
+ { \
+ for (Kernel::SizeT u = _BaseY; u < (_Width + _BaseY); ++u) \
+ { \
+ *(((Kernel::UInt32*)(_Rgn + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = (_BitMp)[kCGCursor]; \
+ \
+ ++kCGCursor; \
+ } \
+ }
+
+/// @brief Cleans a resource.
+#define CGClearRegion(_Height, _Width, _BaseX, _BaseY) \
+ \
+ for (Kernel::SizeT i = _BaseX; i < _Height + _BaseX; ++i) \
+ { \
+ for (Kernel::SizeT u = _BaseY; u < _Width + _BaseY; ++u) \
+ { \
+ *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = cCGClearClr; \
+ } \
+ }
+
+/// @brief Draws inside a zone.
+#define CGDrawInRegion(_Clr, _Height, _Width, _BaseX, _BaseY) \
+ \
+ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = _BaseY; y_base < (_Height + _BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) = _Clr; \
+ } \
+ }
+
+/// @brief Draws inside a zone.
+#define CGDrawInRegionToRgn(_Rgn, _Clr, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = _BaseY; y_base < (_Height + _BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(_Rgn + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) = _Clr[kCGCursor]; \
+ ++kCGCursor; \
+ } \
+ }
+
+#define CGDrawInRegionToVideoRgn(_VideoRgn, _Clr, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = _BaseY; y_base < (_Height + _BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(_VideoRgn + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) = _Clr; \
+ ++kCGCursor; \
+ } \
+ }
+
+#define CGDrawInRegionToVideoRgnA(_VideoRgn, _Clr, _Height, _Width, _BaseX, _BaseY) \
+ kCGCursor = 0; \
+ \
+ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = _BaseY; y_base < (_Height + _BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(_VideoRgn + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) |= _Clr; \
+ ++kCGCursor; \
+ } \
+ }
+
+#define CGDrawInRegionA(_Clr, _Height, _Width, _BaseX, _BaseY) \
+ \
+ for (Kernel::SizeT x_base = _BaseX; x_base < (_Width + _BaseX); ++x_base) \
+ { \
+ for (Kernel::SizeT y_base = _BaseY; y_base < (_Height + _BaseY); ++y_base) \
+ { \
+ *(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ x_base + \
+ 4 * y_base))) |= _Clr; \
+ } \
+ }