Changeset - r24956:bccfa3f44149
[Not reviewed]
master
0 2 0
Michael Lutz - 4 years ago 2021-02-27 11:52:19
michi@icosahedron.de
Fix #8750: [OpenGL] Line drawing did not set proper RGB/mask colours.
2 files changed with 19 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/blitter/40bpp_anim.cpp
Show inline comments
 
@@ -14,6 +14,7 @@
 
#include "../settings_type.h"
 
#include "../video/video_driver.hpp"
 
#include "40bpp_anim.hpp"
 
#include "common.hpp"
 

	
 
#include "../table/sprites.h"
 

	
 
@@ -64,6 +65,23 @@ void Blitter_40bppAnim::DrawRect(void *v
 
	} while (--height);
 
}
 

	
 
void Blitter_40bppAnim::DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash)
 
{
 
	if (_screen_disable_anim) {
 
		/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
 
		Blitter_32bppOptimized::DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width, dash);
 
		return;
 
	}
 

	
 
	assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
 
	uint8 *anim = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
 

	
 
	this->DrawLineGeneric(x, y, x2, y2, screen_width, screen_height, width, dash, [=](int x, int y) {
 
		*((Colour *)video + x + y * _screen.pitch) = _black_colour;
 
		*(anim + x + y * _screen.pitch) = colour;
 
	});
 
}
 

	
 
/**
 
 * Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
 
 *
src/blitter/40bpp_anim.hpp
Show inline comments
 
@@ -23,6 +23,7 @@ public:
 
	// void *MoveTo(void *video, int x, int y) override;
 
	void SetPixel(void *video, int x, int y, uint8 colour) override;
 
	void DrawRect(void *video, int width, int height, uint8 colour) override;
 
	void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash) override;
 
	void CopyFromBuffer(void *video, const void *src, int width, int height) override;
 
	void CopyToBuffer(const void *video, void *dst, int width, int height) override;
 
	void CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch) override;
0 comments (0 inline, 0 general)