mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- use a full ClearScreen when drawing fullscreen images.
This removes the FillBorder function which was only used to clear the border around those images - but due to imprecisions can leave garbage behind.
This commit is contained in:
parent
d1cbabff66
commit
9c7bc99201
4 changed files with 2 additions and 52 deletions
|
@ -1162,55 +1162,6 @@ void VirtualToRealCoordsInt(F2DDrawer *drawer, int &x, int &y, int &w, int &h,
|
||||||
h = int(dy + dh + 0.5) - y;
|
h = int(dy + dh + 0.5) - y;
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
void FillBorder (F2DDrawer *drawer, FGameTexture *img)
|
|
||||||
{
|
|
||||||
auto Width = drawer->GetWidth();
|
|
||||||
auto Height = drawer->GetHeight();
|
|
||||||
float myratio = ActiveRatio (Width, Height);
|
|
||||||
|
|
||||||
if (myratio >= 1.3f && myratio <= 1.4f)
|
|
||||||
{ // This is a 4:3 display, so no border to show
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int bordtop, bordbottom, bordleft, bordright, bord;
|
|
||||||
if (AspectTallerThanWide(myratio))
|
|
||||||
{ // Screen is taller than it is wide
|
|
||||||
bordleft = bordright = 0;
|
|
||||||
bord = Height - Height * AspectMultiplier(myratio) / 48;
|
|
||||||
bordtop = bord / 2;
|
|
||||||
bordbottom = bord - bordtop;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // Screen is wider than it is tall
|
|
||||||
bordtop = bordbottom = 0;
|
|
||||||
bord = Width - Width * AspectMultiplier(myratio) / 48;
|
|
||||||
bordleft = bord / 2;
|
|
||||||
bordright = bord - bordleft;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (img != NULL)
|
|
||||||
{
|
|
||||||
int filltype = (ui_screenborder_classic_scaling) ? -1 : 0;
|
|
||||||
drawer->AddFlatFill(0, 0, Width, bordtop, img, filltype); // Top
|
|
||||||
drawer->AddFlatFill(0, bordtop, bordleft, Height - bordbottom, img, filltype); // Left
|
|
||||||
drawer->AddFlatFill(Width - bordright, bordtop, Width, Height - bordbottom, img, filltype); // Right
|
|
||||||
drawer->AddFlatFill(0, Height - bordbottom, Width, Height, img, filltype); // Bottom
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ClearRect(drawer, 0, 0, Width, bordtop, GPalette.BlackIndex, 0); // Top
|
|
||||||
ClearRect(drawer, 0, bordtop, bordleft, Height - bordbottom, GPalette.BlackIndex, 0); // Left
|
|
||||||
ClearRect(drawer, Width - bordright, bordtop, Width, Height - bordbottom, GPalette.BlackIndex, 0); // Right
|
|
||||||
ClearRect(drawer, 0, Height - bordbottom, Width, Height, GPalette.BlackIndex, 0); // Bottom
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// Draw a line
|
// Draw a line
|
||||||
|
|
|
@ -219,7 +219,6 @@ void DrawTexture(F2DDrawer* drawer, FGameTexture* img, double x, double y, int t
|
||||||
|
|
||||||
void DoDim(F2DDrawer* drawer, PalEntry color, float amount, int x1, int y1, int w, int h, FRenderStyle* style = nullptr);
|
void DoDim(F2DDrawer* drawer, PalEntry color, float amount, int x1, int y1, int w, int h, FRenderStyle* style = nullptr);
|
||||||
void Dim(F2DDrawer* drawer, PalEntry color, float damount, int x1, int y1, int w, int h, FRenderStyle* style = nullptr);
|
void Dim(F2DDrawer* drawer, PalEntry color, float damount, int x1, int y1, int w, int h, FRenderStyle* style = nullptr);
|
||||||
void FillBorder(F2DDrawer *drawer, FGameTexture* img); // Fills the border around a 4:3 part of the screen on non-4:3 displays
|
|
||||||
|
|
||||||
void DrawBorder(F2DDrawer* drawer, FTextureID, int x1, int y1, int x2, int y2);
|
void DrawBorder(F2DDrawer* drawer, FTextureID, int x1, int y1, int x2, int y2);
|
||||||
void DrawFrame(F2DDrawer* twod, PalEntry color, int left, int top, int width, int height, int thickness);
|
void DrawFrame(F2DDrawer* twod, PalEntry color, int left, int top, int width, int height, int thickness);
|
||||||
|
|
|
@ -922,7 +922,7 @@ void DIntermissionController::Drawer ()
|
||||||
{
|
{
|
||||||
if (mScreen != NULL)
|
if (mScreen != NULL)
|
||||||
{
|
{
|
||||||
FillBorder(twod, nullptr);
|
twod->ClearScreen();
|
||||||
mScreen->Drawer();
|
mScreen->Drawer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -726,8 +726,8 @@ void WI_Drawer()
|
||||||
ScaleOverrider s(twod);
|
ScaleOverrider s(twod);
|
||||||
IFVIRTUALPTRNAME(WI_Screen, "StatusScreen", Drawer)
|
IFVIRTUALPTRNAME(WI_Screen, "StatusScreen", Drawer)
|
||||||
{
|
{
|
||||||
FillBorder(twod, nullptr);
|
|
||||||
twod->ClearClipRect();
|
twod->ClearClipRect();
|
||||||
|
twod->ClearScreen();
|
||||||
VMValue self = WI_Screen;
|
VMValue self = WI_Screen;
|
||||||
VMCall(func, &self, 1, nullptr, 0);
|
VMCall(func, &self, 1, nullptr, 0);
|
||||||
twod->ClearClipRect(); // make sure the scripts don't leave a valid clipping rect behind.
|
twod->ClearClipRect(); // make sure the scripts don't leave a valid clipping rect behind.
|
||||||
|
|
Loading…
Reference in a new issue