From 91f4c1e752bf0487db90f9407f1136070266f898 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 3 Apr 2023 23:29:06 +0200 Subject: [PATCH] Use dpi ref in misc drawing functions --- src/openrct2-ui/scripting/CustomWindow.cpp | 2 +- .../scripting/ScGraphicsContext.hpp | 2 +- .../windows/EditorInventionsList.cpp | 2 +- .../windows/EditorObjectSelection.cpp | 2 +- src/openrct2-ui/windows/GameBottomToolbar.cpp | 2 +- src/openrct2-ui/windows/Guest.cpp | 4 +- src/openrct2-ui/windows/Multiplayer.cpp | 2 +- src/openrct2-ui/windows/News.cpp | 2 +- src/openrct2-ui/windows/Ride.cpp | 4 +- src/openrct2-ui/windows/RideConstruction.cpp | 2 +- src/openrct2-ui/windows/Scenery.cpp | 2 +- src/openrct2-ui/windows/Staff.cpp | 2 +- src/openrct2-ui/windows/StaffList.cpp | 2 +- src/openrct2-ui/windows/Tooltip.cpp | 8 +-- src/openrct2-ui/windows/TrackDesignPlace.cpp | 2 +- src/openrct2/drawing/Drawing.cpp | 54 +++++++++---------- src/openrct2/drawing/Drawing.h | 6 +-- src/openrct2/drawing/ScrollingText.cpp | 4 +- src/openrct2/paint/Painter.cpp | 2 +- 19 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/openrct2-ui/scripting/CustomWindow.cpp b/src/openrct2-ui/scripting/CustomWindow.cpp index b0d9d74b58..dacc2fe7c3 100644 --- a/src/openrct2-ui/scripting/CustomWindow.cpp +++ b/src/openrct2-ui/scripting/CustomWindow.cpp @@ -554,7 +554,7 @@ namespace OpenRCT2::Ui::Windows { DrawPixelInfo widgetDpi; 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())) { auto ctx = onDraw.context(); diff --git a/src/openrct2-ui/scripting/ScGraphicsContext.hpp b/src/openrct2-ui/scripting/ScGraphicsContext.hpp index d9157ea273..1a0068ab71 100644 --- a/src/openrct2-ui/scripting/ScGraphicsContext.hpp +++ b/src/openrct2-ui/scripting/ScGraphicsContext.hpp @@ -181,7 +181,7 @@ namespace OpenRCT2::Scripting void clip(int32_t x, int32_t y, int32_t width, int32_t height) { DrawPixelInfo newDpi; - ClipDrawPixelInfo(&newDpi, &_dpi, { x, y }, width, height); + ClipDrawPixelInfo(newDpi, _dpi, { x, y }, width, height); _dpi = newDpi; } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index ae5d93b7b9..9b0810ba4b 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -396,7 +396,7 @@ public: screenPos = windowPos + ScreenCoordsXY{ bkWidget.left + 1, bkWidget.top + 1 }; const auto clipWidth = bkWidget.width() - 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); } diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 8fc17644b8..98aec1a6d2 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1057,7 +1057,7 @@ public: auto screenPos = windowPos + ScreenCoordsXY{ previewWidget.left + 1, previewWidget.top + 1 }; _width = previewWidget.width() - 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); } diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 17c34e11a4..dba2277d97 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -580,7 +580,7 @@ static void WindowGameBottomToolbarDrawNewsItem(DrawPixelInfo& dpi, WindowBase* break; 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; } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index db9d8719b9..8876064635 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -527,7 +527,7 @@ private: widgHeight++; DrawPixelInfo clipDpi; - if (!ClipDrawPixelInfo(&clipDpi, &dpi, screenCoords, widgWidth, widgHeight)) + if (!ClipDrawPixelInfo(clipDpi, dpi, screenCoords, widgWidth, widgHeight)) { return; } @@ -783,7 +783,7 @@ private: int32_t top = marqueeWidget.top + windowPos.y; int32_t marqHeight = marqueeWidget.height(); DrawPixelInfo dpiMarquee; - if (!ClipDrawPixelInfo(&dpiMarquee, &dpi, { left, top }, marqWidth, marqHeight)) + if (!ClipDrawPixelInfo(dpiMarquee, dpi, { left, top }, marqWidth, marqHeight)) { return; } diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index fc84341b94..b4eda4b377 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -401,7 +401,7 @@ static void WindowMultiplayerInformationPaint(WindowBase* w, DrawPixelInfo& dpi) WindowMultiplayerDrawTabImages(w, dpi); 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 }; int32_t width = w->width - 6; diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 7cc916916e..99bc5b691b 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -232,7 +232,7 @@ public: case News::ItemType::PeepOnRide: { 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; } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 7f51396100..259adf2282 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -937,7 +937,7 @@ static void WindowRideDrawTabVehicle(DrawPixelInfo& dpi, WindowBase* w) screenCoords += w->windowPos; DrawPixelInfo clipDPI; - if (!ClipDrawPixelInfo(&clipDPI, &dpi, screenCoords, width, height)) + if (!ClipDrawPixelInfo(clipDPI, dpi, screenCoords, width, height)) { return; } @@ -4962,7 +4962,7 @@ static void WindowRideColourPaint(WindowBase* w, DrawPixelInfo& dpi) if (entrancePreviewWidget.type != WindowWidgetType::Empty) { if (ClipDrawPixelInfo( - &clippedDpi, &dpi, + clippedDpi, dpi, w->windowPos + ScreenCoordsXY{ entrancePreviewWidget.left + 1, entrancePreviewWidget.top + 1 }, entrancePreviewWidget.width(), entrancePreviewWidget.height())) { diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 913e16f289..14838a87cd 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -1517,7 +1517,7 @@ public: auto screenCoords = ScreenCoordsXY{ windowPos.x + widget->left + 1, windowPos.y + widget->top + 1 }; widgetWidth = widget->width() - 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); } diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 0c99f78eff..eb2b994df1 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1618,7 +1618,7 @@ private: DrawPixelInfo clipdpi; 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); } diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 47e73fa9a3..652313e13c 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -553,7 +553,7 @@ private: widgetHeight++; DrawPixelInfo clip_dpi; - if (!ClipDrawPixelInfo(&clip_dpi, &dpi, screenCoords, widgetWidth, widgetHeight)) + if (!ClipDrawPixelInfo(clip_dpi, dpi, screenCoords, widgetWidth, widgetHeight)) { return; } diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index a42b71314c..ed0fcafac4 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -608,7 +608,7 @@ private: const auto& widget = widgets[widgetIndex]; DrawPixelInfo clippedDpi; 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)) { auto imageId = (_selectedTab == 3 ? (_tabAnimationIndex & ~3) : 0); diff --git a/src/openrct2-ui/windows/Tooltip.cpp b/src/openrct2-ui/windows/Tooltip.cpp index eef7819c79..bd7ca113a4 100644 --- a/src/openrct2-ui/windows/Tooltip.cpp +++ b/src/openrct2-ui/windows/Tooltip.cpp @@ -92,10 +92,10 @@ public: GfxFilterRect(dpi, { { left + 2, top + 0 }, { right - 2, top + 0 } }, FilterPaletteID::PaletteDarken3); // Corners - GfxFilterPixel(&dpi, { left + 1, top + 1 }, FilterPaletteID::PaletteDarken3); - GfxFilterPixel(&dpi, { right - 1, top + 1 }, FilterPaletteID::PaletteDarken3); - GfxFilterPixel(&dpi, { left + 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); - GfxFilterPixel(&dpi, { right - 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); + GfxFilterPixel(dpi, { left + 1, top + 1 }, FilterPaletteID::PaletteDarken3); + GfxFilterPixel(dpi, { right - 1, top + 1 }, FilterPaletteID::PaletteDarken3); + GfxFilterPixel(dpi, { left + 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); + GfxFilterPixel(dpi, { right - 1, bottom - 1 }, FilterPaletteID::PaletteDarken3); // Text left = windowPos.x + ((width + 1) / 2) - 1; diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 02e7738b44..f64d472a7d 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -292,7 +292,7 @@ public: // Draw mini tile preview 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 = {}; g1temp.offset = _miniPreview.data(); diff --git a/src/openrct2/drawing/Drawing.cpp b/src/openrct2/drawing/Drawing.cpp index 07f9cd93ee..dbdbe752a8 100644 --- a/src/openrct2/drawing/Drawing.cpp +++ b/src/openrct2/drawing/Drawing.cpp @@ -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) * 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 bottom = coords.y + height; - *dst = *src; - dst->zoom_level = ZoomLevel{ 0 }; + dst = src; + dst.zoom_level = ZoomLevel{ 0 }; - if (coords.x > dst->x) + if (coords.x > dst.x) { - uint16_t clippedFromLeft = coords.x - dst->x; - dst->width -= clippedFromLeft; - dst->x = coords.x; - dst->pitch += clippedFromLeft; - dst->bits += clippedFromLeft; + uint16_t clippedFromLeft = coords.x - dst.x; + dst.width -= clippedFromLeft; + dst.x = coords.x; + dst.pitch += clippedFromLeft; + dst.bits += clippedFromLeft; } - int32_t stickOutWidth = dst->x + dst->width - right; + int32_t stickOutWidth = dst.x + dst.width - right; if (stickOutWidth > 0) { - dst->width -= stickOutWidth; - dst->pitch += stickOutWidth; + dst.width -= stickOutWidth; + dst.pitch += stickOutWidth; } - if (coords.y > dst->y) + if (coords.y > dst.y) { - uint16_t clippedFromTop = coords.y - dst->y; - dst->height -= clippedFromTop; - dst->y = coords.y; - uint32_t bitsPlus = (dst->pitch + dst->width) * clippedFromTop; - dst->bits += bitsPlus; + uint16_t clippedFromTop = coords.y - dst.y; + dst.height -= clippedFromTop; + dst.y = coords.y; + uint32_t bitsPlus = (dst.pitch + dst.width) * clippedFromTop; + dst.bits += bitsPlus; } - int32_t bp = dst->y + dst->height - bottom; + int32_t bp = dst.y + dst.height - bottom; 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->y -= coords.y; + dst.x -= coords.x; + dst.y -= coords.y; return true; } @@ -891,11 +891,11 @@ void GfxInvalidatePickedUpPeep() } } -void GfxDrawPickedUpPeep(DrawPixelInfo* dpi) +void GfxDrawPickedUpPeep(DrawPixelInfo& dpi) { if (gPickupPeepImage.HasValue()) { - GfxDrawSprite(*dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }); + GfxDrawSprite(dpi, gPickupPeepImage, { gPickupPeepX, gPickupPeepY }); } } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index d26fcb179a..4959e8e592 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -502,7 +502,7 @@ extern int32_t gPickupPeepY; 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 GfxInvalidateScreen(); @@ -512,9 +512,9 @@ void LoadPalette(); // other 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 GfxDrawPickedUpPeep(DrawPixelInfo* dpi); +void GfxDrawPickedUpPeep(DrawPixelInfo& dpi); // line void GfxDrawLine(DrawPixelInfo& dpi, const ScreenLine& line, int32_t colour); diff --git a/src/openrct2/drawing/ScrollingText.cpp b/src/openrct2/drawing/ScrollingText.cpp index 011fa51d67..45b32a2105 100644 --- a/src/openrct2/drawing/ScrollingText.cpp +++ b/src/openrct2/drawing/ScrollingText.cpp @@ -1440,9 +1440,7 @@ ImageId ScrollingTextSetup( assert(scrollingMode < MAX_SCROLLING_TEXT_MODES); - DrawPixelInfo* dpi = &session.DPI; - - if (dpi->zoom_level > ZoomLevel{ 0 }) + if (session.DPI.zoom_level > ZoomLevel{ 0 }) return ImageId(SPR_SCROLLING_TEXT_DEFAULT); _drawSCrollNextIndex++; diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 9867dae9ca..7d770c5bd1 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -57,7 +57,7 @@ void Painter::Paint(IDrawingEngine& de) DrawOpenRCT2(*dpi, { 0, _uiContext->GetHeight() - 20 }); } - GfxDrawPickedUpPeep(dpi); + GfxDrawPickedUpPeep(*dpi); GfxInvalidatePickedUpPeep(); de.PaintWeather();