Use dpi ref in misc drawing functions

This commit is contained in:
Gymnasiast 2023-04-03 23:29:06 +02:00 committed by duncanspumpkin
parent bb83a80eab
commit 91f4c1e752
19 changed files with 52 additions and 54 deletions

View File

@ -554,7 +554,7 @@ namespace OpenRCT2::Ui::Windows
{ {
DrawPixelInfo widgetDpi; DrawPixelInfo widgetDpi;
if (ClipDrawPixelInfo( if (ClipDrawPixelInfo(
&widgetDpi, &dpi, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width(), widgetDpi, dpi, { windowPos.x + widget.left, windowPos.y + widget.top }, widget.width(),
widget.height())) widget.height()))
{ {
auto ctx = onDraw.context(); auto ctx = onDraw.context();

View File

@ -181,7 +181,7 @@ namespace OpenRCT2::Scripting
void clip(int32_t x, int32_t y, int32_t width, int32_t height) void clip(int32_t x, int32_t y, int32_t width, int32_t height)
{ {
DrawPixelInfo newDpi; DrawPixelInfo newDpi;
ClipDrawPixelInfo(&newDpi, &_dpi, { x, y }, width, height); ClipDrawPixelInfo(newDpi, _dpi, { x, y }, width, height);
_dpi = newDpi; _dpi = newDpi;
} }

View File

@ -396,7 +396,7 @@ public:
screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 }; screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 };
const auto clipWidth = bkWidget.width() - 1; const auto clipWidth = bkWidget.width() - 1;
const auto clipHeight = bkWidget.height() - 1; const auto clipHeight = bkWidget.height() - 1;
if (ClipDrawPixelInfo(&clipDPI, &dpi, screenPos, clipWidth, clipHeight)) if (ClipDrawPixelInfo(clipDPI, dpi, screenPos, clipWidth, clipHeight))
{ {
object->DrawPreview(clipDPI, clipWidth, clipHeight); object->DrawPreview(clipDPI, clipWidth, clipHeight);
} }

View File

@ -1057,7 +1057,7 @@ public:
auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 };
_width = previewWidget.width() - 1; _width = previewWidget.width() - 1;
int32_t _height = previewWidget.height() - 1; int32_t _height = previewWidget.height() - 1;
if (ClipDrawPixelInfo(&clipDPI, &dpi, screenPos, _width, _height)) if (ClipDrawPixelInfo(clipDPI, dpi, screenPos, _width, _height))
{ {
_loadedObject->DrawPreview(clipDPI, _width, _height); _loadedObject->DrawPreview(clipDPI, _width, _height);
} }

View File

@ -580,7 +580,7 @@ static void WindowGameBottomToolbarDrawNewsItem(DrawPixelInfo& dpi, WindowBase*
break; break;
DrawPixelInfo cliped_dpi; DrawPixelInfo cliped_dpi;
if (!ClipDrawPixelInfo(&cliped_dpi, &dpi, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) if (!ClipDrawPixelInfo(cliped_dpi, dpi, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22))
{ {
break; break;
} }

View File

@ -527,7 +527,7 @@ private:
widgHeight++; widgHeight++;
DrawPixelInfo clipDpi; DrawPixelInfo clipDpi;
if (!ClipDrawPixelInfo(&clipDpi, &dpi, screenCoords, widgWidth, widgHeight)) if (!ClipDrawPixelInfo(clipDpi, dpi, screenCoords, widgWidth, widgHeight))
{ {
return; return;
} }
@ -783,7 +783,7 @@ private:
int32_t top = marqueeWidget.top + windowPos.y; int32_t top = marqueeWidget.top + windowPos.y;
int32_t marqHeight = marqueeWidget.height(); int32_t marqHeight = marqueeWidget.height();
DrawPixelInfo dpiMarquee; DrawPixelInfo dpiMarquee;
if (!ClipDrawPixelInfo(&dpiMarquee, &dpi, { left, top }, marqWidth, marqHeight)) if (!ClipDrawPixelInfo(dpiMarquee, dpi, { left, top }, marqWidth, marqHeight))
{ {
return; return;
} }

View File

@ -401,7 +401,7 @@ static void WindowMultiplayerInformationPaint(WindowBase* w, DrawPixelInfo& dpi)
WindowMultiplayerDrawTabImages(w, dpi); WindowMultiplayerDrawTabImages(w, dpi);
DrawPixelInfo clippedDPI; DrawPixelInfo clippedDPI;
if (ClipDrawPixelInfo(&clippedDPI, &dpi, w->windowPos, w->width, w->height)) if (ClipDrawPixelInfo(clippedDPI, dpi, w->windowPos, w->width, w->height))
{ {
auto screenCoords = ScreenCoordsXY{ 3, 50 }; auto screenCoords = ScreenCoordsXY{ 3, 50 };
int32_t width = w->width - 6; int32_t width = w->width - 6;

View File

@ -232,7 +232,7 @@ public:
case News::ItemType::PeepOnRide: case News::ItemType::PeepOnRide:
{ {
DrawPixelInfo cliped_dpi; DrawPixelInfo cliped_dpi;
if (!ClipDrawPixelInfo(&cliped_dpi, &dpi, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22)) if (!ClipDrawPixelInfo(cliped_dpi, dpi, screenCoords + ScreenCoordsXY{ 1, 1 }, 22, 22))
{ {
break; break;
} }

View File

@ -937,7 +937,7 @@ static void WindowRideDrawTabVehicle(DrawPixelInfo& dpi, WindowBase* w)
screenCoords += w->windowPos; screenCoords += w->windowPos;
DrawPixelInfo clipDPI; DrawPixelInfo clipDPI;
if (!ClipDrawPixelInfo(&clipDPI, &dpi, screenCoords, width, height)) if (!ClipDrawPixelInfo(clipDPI, dpi, screenCoords, width, height))
{ {
return; return;
} }
@ -4962,7 +4962,7 @@ static void WindowRideColourPaint(WindowBase* w, DrawPixelInfo& dpi)
if (entrancePreviewWidget.type != WindowWidgetType::Empty) if (entrancePreviewWidget.type != WindowWidgetType::Empty)
{ {
if (ClipDrawPixelInfo( if (ClipDrawPixelInfo(
&clippedDpi, &dpi, clippedDpi, dpi,
w->windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 }, w->windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 },
entrancePreviewWidget.width(), entrancePreviewWidget.height())) entrancePreviewWidget.width(), entrancePreviewWidget.height()))
{ {

View File

@ -1517,7 +1517,7 @@ public:
auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 }; auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 };
widgetWidth = widget->width() - 1; widgetWidth = widget->width() - 1;
widgetHeight = widget->height() - 1; widgetHeight = widget->height() - 1;
if (ClipDrawPixelInfo(&clipdpi, &dpi, screenCoords, widgetWidth, widgetHeight)) if (ClipDrawPixelInfo(clipdpi, dpi, screenCoords, widgetWidth, widgetHeight))
{ {
DrawTrackPiece(clipdpi, rideIndex, trackType, trackDirection, liftHillAndInvertedState, widgetWidth, widgetHeight); DrawTrackPiece(clipdpi, rideIndex, trackType, trackDirection, liftHillAndInvertedState, widgetWidth, widgetHeight);
} }

View File

@ -1618,7 +1618,7 @@ private:
DrawPixelInfo clipdpi; DrawPixelInfo clipdpi;
if (ClipDrawPixelInfo( if (ClipDrawPixelInfo(
&clipdpi, &dpi, topLeft + ScreenCoordsXY{ 1, 1 }, SCENERY_BUTTON_WIDTH - 2, SCENERY_BUTTON_HEIGHT - 2)) clipdpi, dpi, topLeft + ScreenCoordsXY{ 1, 1 }, SCENERY_BUTTON_WIDTH - 2, SCENERY_BUTTON_HEIGHT - 2))
{ {
DrawSceneryItem(clipdpi, currentSceneryGlobal); DrawSceneryItem(clipdpi, currentSceneryGlobal);
} }

View File

@ -553,7 +553,7 @@ private:
widgetHeight++; widgetHeight++;
DrawPixelInfo clip_dpi; DrawPixelInfo clip_dpi;
if (!ClipDrawPixelInfo(&clip_dpi, &dpi, screenCoords, widgetWidth, widgetHeight)) if (!ClipDrawPixelInfo(clip_dpi, dpi, screenCoords, widgetWidth, widgetHeight))
{ {
return; return;
} }

View File

@ -608,7 +608,7 @@ private:
const auto& widget = widgets[widgetIndex]; const auto& widget = widgets[widgetIndex];
DrawPixelInfo clippedDpi; DrawPixelInfo clippedDpi;
if (ClipDrawPixelInfo( if (ClipDrawPixelInfo(
&clippedDpi, &dpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 }, clippedDpi, dpi, windowPos + ScreenCoordsXY{ widget.left + 1, widget.top + 1 },
widget.right - widget.left - 1, widget.bottom - widget.top - 1)) widget.right - widget.left - 1, widget.bottom - widget.top - 1))
{ {
auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0); auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0);

View File

@ -92,10 +92,10 @@ public:
GfxFilterRect(dpi, { { left + 2, top + 0 }, { right - 2, top + 0 } }, FilterPaletteID::PaletteDarken3); GfxFilterRect(dpi, { { left + 2, top + 0 }, { right - 2, top + 0 } }, FilterPaletteID::PaletteDarken3);
// Corners // Corners
GfxFilterPixel(&dpi, { left + 1, top + 1 }, FilterPaletteID::PaletteDarken3); GfxFilterPixel(dpi, { left + 1, top + 1 }, FilterPaletteID::PaletteDarken3);
GfxFilterPixel(&dpi, { right - 1, top + 1 }, FilterPaletteID::PaletteDarken3); GfxFilterPixel(dpi, { right - 1, top + 1 }, FilterPaletteID::PaletteDarken3);
GfxFilterPixel(&dpi, { left + 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); GfxFilterPixel(dpi, { left + 1, bottom - 1 }, FilterPaletteID::PaletteDarken3);
GfxFilterPixel(&dpi, { right - 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); GfxFilterPixel(dpi, { right - 1, bottom - 1 }, FilterPaletteID::PaletteDarken3);
// Text // Text
left = windowPos.x + ((width + 1) / 2) - 1; left = windowPos.x + ((width + 1) / 2) - 1;

View File

@ -292,7 +292,7 @@ public:
// Draw mini tile preview // Draw mini tile preview
DrawPixelInfo clippedDpi; DrawPixelInfo clippedDpi;
if (ClipDrawPixelInfo(&clippedDpi, &dpi, this->windowPos + ScreenCoordsXY{ 4, 18 }, 168, 78)) if (ClipDrawPixelInfo(clippedDpi, dpi, this->windowPos + ScreenCoordsXY{ 4, 18 }, 168, 78))
{ {
G1Element g1temp = {}; G1Element g1temp = {};
g1temp.offset = _miniPreview.data(); g1temp.offset = _miniPreview.data();

View File

@ -733,9 +733,9 @@ void MaskInit()
} }
} }
void GfxFilterPixel(DrawPixelInfo* dpi, const ScreenCoordsXY& coords, FilterPaletteID palette) void GfxFilterPixel(DrawPixelInfo& dpi, const ScreenCoordsXY& coords, FilterPaletteID palette)
{ {
GfxFilterRect(*dpi, { coords, coords }, palette); GfxFilterRect(dpi, { coords, coords }, palette);
} }
/** /**
@ -825,49 +825,49 @@ void GfxInvalidateScreen()
* height (dx) * height (dx)
* drawpixelinfo (edi) * drawpixelinfo (edi)
*/ */
bool ClipDrawPixelInfo(DrawPixelInfo* dst, DrawPixelInfo* src, const ScreenCoordsXY& coords, int32_t width, int32_t height) bool ClipDrawPixelInfo(DrawPixelInfo& dst, DrawPixelInfo& src, const ScreenCoordsXY& coords, int32_t width, int32_t height)
{ {
int32_t right = coords.x + width; int32_t right = coords.x + width;
int32_t bottom = coords.y + height; int32_t bottom = coords.y + height;
*dst = *src; dst = src;
dst->zoom_level = ZoomLevel{ 0 }; dst.zoom_level = ZoomLevel{ 0 };
if (coords.x > dst->x) if (coords.x > dst.x)
{ {
uint16_t clippedFromLeft = coords.x - dst->x; uint16_t clippedFromLeft = coords.x - dst.x;
dst->width -= clippedFromLeft; dst.width -= clippedFromLeft;
dst->x = coords.x; dst.x = coords.x;
dst->pitch += clippedFromLeft; dst.pitch += clippedFromLeft;
dst->bits += clippedFromLeft; dst.bits += clippedFromLeft;
} }
int32_t stickOutWidth = dst->x + dst->width - right; int32_t stickOutWidth = dst.x + dst.width - right;
if (stickOutWidth > 0) if (stickOutWidth > 0)
{ {
dst->width -= stickOutWidth; dst.width -= stickOutWidth;
dst->pitch += stickOutWidth; dst.pitch += stickOutWidth;
} }
if (coords.y > dst->y) if (coords.y > dst.y)
{ {
uint16_t clippedFromTop = coords.y - dst->y; uint16_t clippedFromTop = coords.y - dst.y;
dst->height -= clippedFromTop; dst.height -= clippedFromTop;
dst->y = coords.y; dst.y = coords.y;
uint32_t bitsPlus = (dst->pitch + dst->width) * clippedFromTop; uint32_t bitsPlus = (dst.pitch + dst.width) * clippedFromTop;
dst->bits += bitsPlus; dst.bits += bitsPlus;
} }
int32_t bp = dst->y + dst->height - bottom; int32_t bp = dst.y + dst.height - bottom;
if (bp > 0) if (bp > 0)
{ {
dst->height -= bp; dst.height -= bp;
} }
if (dst->width > 0 && dst->height > 0) if (dst.width > 0 && dst.height > 0)
{ {
dst->x -= coords.x; dst.x -= coords.x;
dst->y -= coords.y; dst.y -= coords.y;
return true; return true;
} }
@ -891,11 +891,11 @@ void GfxInvalidatePickedUpPeep()
} }
} }
void GfxDrawPickedUpPeep(DrawPixelInfo* dpi) void GfxDrawPickedUpPeep(DrawPixelInfo& dpi)
{ {
if (gPickupPeepImage.HasValue()) if (gPickupPeepImage.HasValue())
{ {
GfxDrawSprite(*dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }); GfxDrawSprite(dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY });
} }
} }

View File

@ -502,7 +502,7 @@ extern int32_t gPickupPeepY;
extern bool gTinyFontAntiAliased; extern bool gTinyFontAntiAliased;
bool ClipDrawPixelInfo(DrawPixelInfo* dst, DrawPixelInfo* src, const ScreenCoordsXY& coords, int32_t width, int32_t height); bool ClipDrawPixelInfo(DrawPixelInfo& dst, DrawPixelInfo& src, const ScreenCoordsXY& coords, int32_t width, int32_t height);
void GfxSetDirtyBlocks(const ScreenRect& rect); void GfxSetDirtyBlocks(const ScreenRect& rect);
void GfxInvalidateScreen(); void GfxInvalidateScreen();
@ -512,9 +512,9 @@ void LoadPalette();
// other // other
void GfxClear(DrawPixelInfo* dpi, uint8_t paletteIndex); void GfxClear(DrawPixelInfo* dpi, uint8_t paletteIndex);
void GfxFilterPixel(DrawPixelInfo* dpi, const ScreenCoordsXY& coords, FilterPaletteID palette); void GfxFilterPixel(DrawPixelInfo& dpi, const ScreenCoordsXY& coords, FilterPaletteID palette);
void GfxInvalidatePickedUpPeep(); void GfxInvalidatePickedUpPeep();
void GfxDrawPickedUpPeep(DrawPixelInfo* dpi); void GfxDrawPickedUpPeep(DrawPixelInfo& dpi);
// line // line
void GfxDrawLine(DrawPixelInfo& dpi, const ScreenLine& line, int32_t colour); void GfxDrawLine(DrawPixelInfo& dpi, const ScreenLine& line, int32_t colour);

View File

@ -1440,9 +1440,7 @@ ImageId ScrollingTextSetup(
assert(scrollingMode < MAX_SCROLLING_TEXT_MODES); assert(scrollingMode < MAX_SCROLLING_TEXT_MODES);
DrawPixelInfo* dpi = &session.DPI; if (session.DPI.zoom_level > ZoomLevel{ 0 })
if (dpi->zoom_level > ZoomLevel{ 0 })
return ImageId(SPR_SCROLLING_TEXT_DEFAULT); return ImageId(SPR_SCROLLING_TEXT_DEFAULT);
_drawSCrollNextIndex++; _drawSCrollNextIndex++;

View File

@ -57,7 +57,7 @@ void Painter::Paint(IDrawingEngine& de)
DrawOpenRCT2(*dpi, { 0, _uiContext->GetHeight() - 20 }); DrawOpenRCT2(*dpi, { 0, _uiContext->GetHeight() - 20 });
} }
GfxDrawPickedUpPeep(dpi); GfxDrawPickedUpPeep(*dpi);
GfxInvalidatePickedUpPeep(); GfxInvalidatePickedUpPeep();
de.PaintWeather(); de.PaintWeather();