Fix GUI windows

This commit is contained in:
Alex 2023-05-20 01:27:09 +03:00
parent a4eefb4a21
commit b9f175f19d
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
3 changed files with 42 additions and 36 deletions

View File

@ -23,7 +23,7 @@ namespace GraphicalUserInterface
{ {
Ofast inline void InlineSetPixel(ScreenBitmap *Bitmap, int64_t X, int64_t Y, uint32_t Color) Ofast inline void InlineSetPixel(ScreenBitmap *Bitmap, int64_t X, int64_t Y, uint32_t Color)
{ {
if (unlikely(X < 0 || Y < 0 || X >= Bitmap->Width || Y >= Bitmap->Height)) if (unlikely(X < 0 || Y < 0 || X >= (int64_t)Bitmap->Width || Y >= (int64_t)Bitmap->Height))
return; return;
uint32_t *Pixel = (uint32_t *)((uintptr_t)Bitmap->Data + (Y * Bitmap->Width + X) * (Bitmap->BitsPerPixel / 8)); uint32_t *Pixel = (uint32_t *)((uintptr_t)Bitmap->Data + (Y * Bitmap->Width + X) * (Bitmap->BitsPerPixel / 8));
@ -31,7 +31,7 @@ namespace GraphicalUserInterface
// Bitmap->Data[Y * Bitmap->Width + X] = Color; // Bitmap->Data[Y * Bitmap->Width + X] = Color;
} }
void SetPixel(ScreenBitmap *Bitmap, int64_t X, int64_t Y, uint32_t Color) void SetPixel(ScreenBitmap *Bitmap, size_t X, size_t Y, uint32_t Color)
{ {
if (unlikely(!Bitmap)) if (unlikely(!Bitmap))
return; return;
@ -50,7 +50,7 @@ namespace GraphicalUserInterface
if (unlikely(!Bitmap->Data)) if (unlikely(!Bitmap->Data))
return 0; return 0;
if (unlikely(X < 0 || Y < 0 || X >= Bitmap->Width || Y >= Bitmap->Height)) if (unlikely(X < 0 || Y < 0 || X >= (int64_t)Bitmap->Width || Y >= (int64_t)Bitmap->Height))
return 0; return 0;
uint32_t *Pixel = (uint32_t *)((uintptr_t)Bitmap->Data + (Y * Bitmap->Width + X) * (Bitmap->BitsPerPixel / 8)); uint32_t *Pixel = (uint32_t *)((uintptr_t)Bitmap->Data + (Y * Bitmap->Width + X) * (Bitmap->BitsPerPixel / 8));

View File

@ -279,10 +279,10 @@ namespace GraphicalUserInterface
MinimizeButtonPos.Left = TopBarPos.Left + TopBarPos.Width - 60; MinimizeButtonPos.Left = TopBarPos.Left + TopBarPos.Width - 60;
if (unlikely(MouseArray[0].X >= (int64_t)(MinimizeButtonPos.Left) && if (unlikely(MouseArray[0].X >= (size_t)MinimizeButtonPos.Left &&
MouseArray[0].X <= (int64_t)(CloseButtonPos.Left + CloseButtonPos.Width) && MouseArray[0].X <= (size_t)CloseButtonPos.Left + CloseButtonPos.Width &&
MouseArray[0].Y >= (int64_t)(CloseButtonPos.Top) && MouseArray[0].Y >= (size_t)CloseButtonPos.Top &&
MouseArray[0].Y <= (int64_t)(CloseButtonPos.Top + CloseButtonPos.Height))) MouseArray[0].Y <= (size_t)CloseButtonPos.Top + CloseButtonPos.Height))
{ {
OverlayBufferRepaint = true; OverlayBufferRepaint = true;
} }
@ -311,10 +311,10 @@ namespace GraphicalUserInterface
PutRect(this->OverlayBuffer, TopBarPos, 0x282828); PutRect(this->OverlayBuffer, TopBarPos, 0x282828);
// Title bar buttons (close, minimize, maximize) on the right // Title bar buttons (close, minimize, maximize) on the right
if (MouseArray[0].X >= (int64_t)(CloseButtonPos.Left) && if (MouseArray[0].X >= (size_t)CloseButtonPos.Left &&
MouseArray[0].X <= (int64_t)(CloseButtonPos.Left + CloseButtonPos.Width) && MouseArray[0].X <= (size_t)CloseButtonPos.Left + CloseButtonPos.Width &&
MouseArray[0].Y >= (int64_t)(CloseButtonPos.Top) && MouseArray[0].Y >= (size_t)CloseButtonPos.Top &&
MouseArray[0].Y <= (int64_t)(CloseButtonPos.Top + CloseButtonPos.Height)) MouseArray[0].Y <= (size_t)CloseButtonPos.Top + CloseButtonPos.Height)
{ {
PutRect(this->OverlayBuffer, CloseButtonPos, MouseArray[0].Left ? 0xFF5500 : 0xFF0000); PutRect(this->OverlayBuffer, CloseButtonPos, MouseArray[0].Left ? 0xFF5500 : 0xFF0000);
RepaintNeeded = true; RepaintNeeded = true;
@ -324,10 +324,10 @@ namespace GraphicalUserInterface
PutRect(this->OverlayBuffer, MaximizeButtonPos, 0x282828); PutRect(this->OverlayBuffer, MaximizeButtonPos, 0x282828);
} }
if (MouseArray[0].X >= (int64_t)(MaximizeButtonPos.Left) && if (MouseArray[0].X >= (size_t)MaximizeButtonPos.Left &&
MouseArray[0].X <= (int64_t)(MaximizeButtonPos.Left + MaximizeButtonPos.Width) && MouseArray[0].X <= (size_t)MaximizeButtonPos.Left + MaximizeButtonPos.Width &&
MouseArray[0].Y >= (int64_t)(MaximizeButtonPos.Top) && MouseArray[0].Y >= (size_t)MaximizeButtonPos.Top &&
MouseArray[0].Y <= (int64_t)(MaximizeButtonPos.Top + MaximizeButtonPos.Height)) MouseArray[0].Y <= (size_t)MaximizeButtonPos.Top + MaximizeButtonPos.Height)
{ {
PutRect(this->OverlayBuffer, MaximizeButtonPos, MouseArray[0].Left ? 0x454545 : 0x404040); PutRect(this->OverlayBuffer, MaximizeButtonPos, MouseArray[0].Left ? 0x454545 : 0x404040);
RepaintNeeded = true; RepaintNeeded = true;
@ -337,10 +337,10 @@ namespace GraphicalUserInterface
PutRect(this->OverlayBuffer, MaximizeButtonPos, 0x282828); PutRect(this->OverlayBuffer, MaximizeButtonPos, 0x282828);
} }
if (MouseArray[0].X >= (int64_t)(MinimizeButtonPos.Left) && if (MouseArray[0].X >= (size_t)MinimizeButtonPos.Left &&
MouseArray[0].X <= (int64_t)(MinimizeButtonPos.Left + MinimizeButtonPos.Width) && MouseArray[0].X <= (size_t)MinimizeButtonPos.Left + MinimizeButtonPos.Width &&
MouseArray[0].Y >= (int64_t)(MinimizeButtonPos.Top) && MouseArray[0].Y >= (size_t)MinimizeButtonPos.Top &&
MouseArray[0].Y <= (int64_t)(MinimizeButtonPos.Top + MinimizeButtonPos.Height)) MouseArray[0].Y <= (size_t)MinimizeButtonPos.Top + MinimizeButtonPos.Height)
{ {
PutRect(this->OverlayBuffer, MinimizeButtonPos, MouseArray[0].Left ? 0x454545 : 0x404040); PutRect(this->OverlayBuffer, MinimizeButtonPos, MouseArray[0].Left ? 0x454545 : 0x404040);
RepaintNeeded = true; RepaintNeeded = true;

View File

@ -30,9 +30,9 @@ namespace GraphicalUserInterface
struct MouseData struct MouseData
{ {
int64_t X; size_t X;
int64_t Y; size_t Y;
int64_t Z; size_t Z;
bool Left; bool Left;
bool Right; bool Right;
bool Middle; bool Middle;
@ -40,8 +40,8 @@ namespace GraphicalUserInterface
struct ScreenBitmap struct ScreenBitmap
{ {
int64_t Width; size_t Width;
int64_t Height; size_t Height;
size_t Size; size_t Size;
size_t Pitch; size_t Pitch;
uint64_t BitsPerPixel; uint64_t BitsPerPixel;
@ -50,19 +50,25 @@ namespace GraphicalUserInterface
struct Rect struct Rect
{ {
size_t Left; int64_t Left;
size_t Top; int64_t Top;
size_t Width; size_t Width;
size_t Height; size_t Height;
bool Contains(size_t X, size_t Y) bool Contains(int64_t X, int64_t Y)
{ {
return (X >= Left && X <= Left + Width && Y >= Top && Y <= Top + Height); return (X >= Left &&
X <= Left + (int64_t)Width &&
Y >= Top &&
Y <= Top + (int64_t)Height);
} }
bool Contains(Rect rect) bool Contains(Rect rect)
{ {
return (rect.Left >= Left && rect.Left + rect.Width <= Left + Width && rect.Top >= Top && rect.Top + rect.Height <= Top + Height); return (rect.Left >= Left &&
rect.Left + rect.Width <= Left + Width &&
rect.Top >= Top &&
rect.Top + rect.Height <= Top + Height);
} }
}; };
@ -95,8 +101,8 @@ namespace GraphicalUserInterface
struct struct
{ {
int64_t X; size_t X;
int64_t Y; size_t Y;
bool Left; bool Left;
bool Right; bool Right;
bool Middle; bool Middle;
@ -104,8 +110,8 @@ namespace GraphicalUserInterface
struct struct
{ {
int64_t X; size_t X;
int64_t Y; size_t Y;
bool Left; bool Left;
bool Right; bool Right;
bool Middle; bool Middle;
@ -113,8 +119,8 @@ namespace GraphicalUserInterface
struct struct
{ {
int64_t X; size_t X;
int64_t Y; size_t Y;
bool Left; bool Left;
bool Right; bool Right;
bool Middle; bool Middle;
@ -178,7 +184,7 @@ namespace GraphicalUserInterface
virtual void OnPaintChildrenAll(Event *e) {} virtual void OnPaintChildrenAll(Event *e) {}
*/ */
void SetPixel(ScreenBitmap *Bitmap, int64_t X, int64_t Y, uint32_t Color); void SetPixel(ScreenBitmap *Bitmap, size_t X, size_t Y, uint32_t Color);
void DrawOverBitmap(ScreenBitmap *DestinationBitmap, void DrawOverBitmap(ScreenBitmap *DestinationBitmap,
ScreenBitmap *SourceBitmap, ScreenBitmap *SourceBitmap,
int64_t Top, int64_t Top,