mirror of https://github.com/OpenRCT2/OpenRCT2.git
Use ScreenLine on gfx_draw_line_software
This commit is contained in:
parent
85c59b88be
commit
cd9873a78d
|
@ -104,7 +104,7 @@ public:
|
||||||
void Clear(uint8_t paletteIndex) override;
|
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 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 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 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 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;
|
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 pixelX = xPixelOffset % dpi->width;
|
||||||
int32_t pixelY = (xPixelOffset / dpi->width) % dpi->height;
|
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++;
|
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();
|
DrawLineCommand& command = _commandBuffers.lines.allocate();
|
||||||
|
|
||||||
command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom };
|
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.colour = colour & 0xFF;
|
||||||
command.depth = _drawCount++;
|
command.depth = _drawCount++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -688,7 +688,7 @@ void gfx_draw_pickedup_peep(rct_drawpixelinfo* dpi);
|
||||||
|
|
||||||
// line
|
// line
|
||||||
void gfx_draw_line(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colour);
|
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(
|
void gfx_draw_dashed_line(
|
||||||
rct_drawpixelinfo* dpi, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const int32_t color);
|
rct_drawpixelinfo* dpi, const ScreenLine& screenLine, const int32_t dashedLineSegmentLength, const int32_t color);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace OpenRCT2::Drawing
|
||||||
virtual void Clear(uint8_t paletteIndex) abstract;
|
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 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 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 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 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;
|
virtual void DrawSpriteSolid(uint32_t image, int32_t x, int32_t y, uint8_t colour) abstract;
|
||||||
|
|
|
@ -72,8 +72,13 @@ static void gfx_draw_line_on_buffer(rct_drawpixelinfo* dpi, char colour, int32_t
|
||||||
* y2 (dx)
|
* y2 (dx)
|
||||||
* colour (ebp)
|
* 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
|
// Check to make sure the line is within the drawing area
|
||||||
if ((x1 < dpi->x) && (x2 < dpi->x))
|
if ((x1 < dpi->x) && (x2 < dpi->x))
|
||||||
{
|
{
|
||||||
|
|
|
@ -208,7 +208,7 @@ void gfx_draw_line(rct_drawpixelinfo* dpi, const ScreenLine& line, int32_t colou
|
||||||
if (drawingEngine != nullptr)
|
if (drawingEngine != nullptr)
|
||||||
{
|
{
|
||||||
IDrawingContext* dc = drawingEngine->GetDrawingContext(dpi);
|
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;
|
x = screenLine.GetX1() + dxPrecise * i * 2 / precisionFactor;
|
||||||
y = screenLine.GetY1() + dyPrecise * 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 } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
void X8DrawingContext::DrawSprite(uint32_t image, int32_t x, int32_t y, uint32_t tertiaryColour)
|
||||||
|
|
|
@ -145,7 +145,7 @@ namespace OpenRCT2
|
||||||
void Clear(uint8_t paletteIndex) override;
|
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 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 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 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 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;
|
void DrawSpriteSolid(uint32_t image, int32_t x, int32_t y, uint8_t colour) override;
|
||||||
|
|
Loading…
Reference in New Issue