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

View File

@ -30,9 +30,9 @@ namespace GraphicalUserInterface
struct MouseData
{
int64_t X;
int64_t Y;
int64_t Z;
size_t X;
size_t Y;
size_t Z;
bool Left;
bool Right;
bool Middle;
@ -40,8 +40,8 @@ namespace GraphicalUserInterface
struct ScreenBitmap
{
int64_t Width;
int64_t Height;
size_t Width;
size_t Height;
size_t Size;
size_t Pitch;
uint64_t BitsPerPixel;
@ -50,19 +50,25 @@ namespace GraphicalUserInterface
struct Rect
{
size_t Left;
size_t Top;
int64_t Left;
int64_t Top;
size_t Width;
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)
{
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
{
int64_t X;
int64_t Y;
size_t X;
size_t Y;
bool Left;
bool Right;
bool Middle;
@ -104,8 +110,8 @@ namespace GraphicalUserInterface
struct
{
int64_t X;
int64_t Y;
size_t X;
size_t Y;
bool Left;
bool Right;
bool Middle;
@ -113,8 +119,8 @@ namespace GraphicalUserInterface
struct
{
int64_t X;
int64_t Y;
size_t X;
size_t Y;
bool Left;
bool Right;
bool Middle;
@ -178,7 +184,7 @@ namespace GraphicalUserInterface
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,
ScreenBitmap *SourceBitmap,
int64_t Top,