diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp index 59f0497c3e..1c5cdb8bb8 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -104,7 +104,7 @@ public: void Clear(uint8_t paletteIndex) override; void FillRect(uint32_t colour, int32_t x, int32_t y, int32_t w, int32_t h) override; void FilterRect(FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; - void DrawLine(uint32_t colour, int32_t x1, int32_t y1, int32_t x2, int32_t y2) override; + void DrawLine(uint32_t colour, const ScreenLine& line) override; void DrawSprite(uint32_t image, int32_t x, int32_t y, uint32_t tertiaryColour) override; void DrawSpriteRawMasked(int32_t x, int32_t y, uint32_t maskImage, uint32_t colourImage) override; void DrawSpriteSolid(uint32_t image, int32_t x, int32_t y, uint8_t colour) override; @@ -165,7 +165,7 @@ public: int32_t pixelX = xPixelOffset % dpi->width; int32_t pixelY = (xPixelOffset / dpi->width) % dpi->height; - _drawingContext->DrawLine(patternPixel, pixelX, pixelY, pixelX + 1, pixelY + 1); + _drawingContext->DrawLine(patternPixel, { { pixelX, pixelY }, { pixelX + 1, pixelY + 1 } }); } } @@ -598,17 +598,12 @@ void OpenGLDrawingContext::FilterRect(FilterPaletteID palette, int32_t left, int command.depth = _drawCount++; } -void OpenGLDrawingContext::DrawLine(uint32_t colour, int32_t x1, int32_t y1, int32_t x2, int32_t y2) +void OpenGLDrawingContext::DrawLine(uint32_t colour, const ScreenLine& line) { - x1 += _offsetX; - y1 += _offsetY; - x2 += _offsetX; - y2 += _offsetY; - DrawLineCommand& command = _commandBuffers.lines.allocate(); command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom }; - command.bounds = { x1, y1, x2, y2 }; + command.bounds = { line.GetX1() + _offsetX, line.GetY1() + _offsetY, line.GetX2() + _offsetX, line.GetY2() + _offsetY }; command.colour = colour & 0xFF; command.depth = _drawCount++; } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 3704522920..ad445c7eb3 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -688,7 +688,7 @@ void gfx_draw_pickedup_peep(rct_drawpixelinfo* dpi); // line void gfx_draw_line(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colour); -void gfx_draw_line_software(rct_drawpixelinfo* dpi, int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t colour); +void gfx_draw_line_software(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colour); void gfx_draw_dashed_line( rct_drawpixelinfo* dpi, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const int32_t color); diff --git a/src/openrct2/drawing/IDrawingContext.h b/src/openrct2/drawing/IDrawingContext.h index 12fa7a2ea9..2fe2aef713 100644 --- a/src/openrct2/drawing/IDrawingContext.h +++ b/src/openrct2/drawing/IDrawingContext.h @@ -27,7 +27,7 @@ namespace OpenRCT2::Drawing virtual void Clear(uint8_t paletteIndex) abstract; virtual void FillRect(uint32_t colour, int32_t left, int32_t top, int32_t right, int32_t bottom) abstract; virtual void FilterRect(FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) abstract; - virtual void DrawLine(uint32_t colour, int32_t x1, int32_t y1, int32_t x2, int32_t y2) abstract; + virtual void DrawLine(uint32_t colour, const ScreenLine& line) abstract; virtual void DrawSprite(uint32_t image, int32_t x, int32_t y, uint32_t tertiaryColour) abstract; virtual void DrawSpriteRawMasked(int32_t x, int32_t y, uint32_t maskImage, uint32_t colourImage) abstract; virtual void DrawSpriteSolid(uint32_t image, int32_t x, int32_t y, uint8_t colour) abstract; diff --git a/src/openrct2/drawing/Line.cpp b/src/openrct2/drawing/Line.cpp index 1f929f34ca..b6082d8250 100644 --- a/src/openrct2/drawing/Line.cpp +++ b/src/openrct2/drawing/Line.cpp @@ -72,8 +72,13 @@ static void gfx_draw_line_on_buffer(rct_drawpixelinfo* dpi, char colour, int32_t * y2 (dx) * colour (ebp) */ -void gfx_draw_line_software(rct_drawpixelinfo* dpi, int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t colour) + +void gfx_draw_line_software(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colour) { + int32_t x1 = line.GetX1(); + int32_t x2 = line.GetX2(); + int32_t y1 = line.GetY1(); + int32_t y2 = line.GetY2(); // Check to make sure the line is within the drawing area if ((x1 < dpi->x) && (x2 < dpi->x)) { diff --git a/src/openrct2/drawing/NewDrawing.cpp b/src/openrct2/drawing/NewDrawing.cpp index 08258379ec..7b1b3de45f 100644 --- a/src/openrct2/drawing/NewDrawing.cpp +++ b/src/openrct2/drawing/NewDrawing.cpp @@ -208,7 +208,7 @@ void gfx_draw_line(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colou if (drawingEngine != nullptr) { IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi); - dc->DrawLine(colour, line.GetX1(), line.GetY1(), line.GetX2(), line.GetY2()); + dc->DrawLine(colour, line); } } @@ -240,7 +240,7 @@ void gfx_draw_dashed_line( { x = screenLine.GetX1() + dxPrecise * i * 2 / precisionFactor; y = screenLine.GetY1() + dyPrecise * i * 2 / precisionFactor; - dc->DrawLine(color, x, y, x + dxPrecise / precisionFactor, y + dyPrecise / precisionFactor); + dc->DrawLine(color, { { x, y }, { x + dxPrecise / precisionFactor, y + dyPrecise / precisionFactor } }); } } } diff --git a/src/openrct2/drawing/X8DrawingEngine.cpp b/src/openrct2/drawing/X8DrawingEngine.cpp index da80744be6..528e236892 100644 --- a/src/openrct2/drawing/X8DrawingEngine.cpp +++ b/src/openrct2/drawing/X8DrawingEngine.cpp @@ -721,9 +721,9 @@ void X8DrawingContext::FilterRect(FilterPaletteID palette, int32_t left, int32_t } } -void X8DrawingContext::DrawLine(uint32_t colour, int32_t x1, int32_t y1, int32_t x2, int32_t y2) +void X8DrawingContext::DrawLine(uint32_t colour, const ScreenLine& line) { - gfx_draw_line_software(_dpi, x1, y1, x2, y2, colour); + gfx_draw_line_software(_dpi, line, colour); } void X8DrawingContext::DrawSprite(uint32_t image, int32_t x, int32_t y, uint32_t tertiaryColour) diff --git a/src/openrct2/drawing/X8DrawingEngine.h b/src/openrct2/drawing/X8DrawingEngine.h index a0622f5e27..e462871162 100644 --- a/src/openrct2/drawing/X8DrawingEngine.h +++ b/src/openrct2/drawing/X8DrawingEngine.h @@ -145,7 +145,7 @@ namespace OpenRCT2 void Clear(uint8_t paletteIndex) override; void FillRect(uint32_t colour, int32_t x, int32_t y, int32_t w, int32_t h) override; void FilterRect(FilterPaletteID palette, int32_t left, int32_t top, int32_t right, int32_t bottom) override; - void DrawLine(uint32_t colour, int32_t x1, int32_t y1, int32_t x2, int32_t y2) override; + void DrawLine(uint32_t colour, const ScreenLine& line) override; void DrawSprite(uint32_t image, int32_t x, int32_t y, uint32_t tertiaryColour) override; void DrawSpriteRawMasked(int32_t x, int32_t y, uint32_t maskImage, uint32_t colourImage) override; void DrawSpriteSolid(uint32_t image, int32_t x, int32_t y, uint8_t colour) override;