[Scummvm-git-logs] scummvm master -> 8da04bb1bb0261dea4a8f3d6497f028d949cad5f
bluegr
noreply at scummvm.org
Sat Jun 14 18:47:06 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
496f8a4513 WINTERMUTE: Rename renderer fill to clear
8da04bb1bb WINTERMUTE: Replace drawLine() with fillRect() for drawing indicators
Commit: 496f8a45134ee369e941830a68b0165abf7fc6ea
https://github.com/scummvm/scummvm/commit/496f8a45134ee369e941830a68b0165abf7fc6ea
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2025-06-14T20:47:02+02:00
Commit Message:
WINTERMUTE: Rename renderer fill to clear
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/base/base_game.cpp
engines/wintermute/base/gfx/base_renderer.cpp
engines/wintermute/base/gfx/base_renderer.h
engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
engines/wintermute/base/gfx/osystem/base_render_osystem.h
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index d5eebe4b2d6..a83296c5dd7 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -2064,8 +2064,8 @@ bool AdGame::displayContent(bool doUpdate, bool displayAll) {
initLoop();
}
- // fill black
- _renderer->fill(0, 0, 0);
+ // clear screen
+ _renderer->clear();
if (!_editorMode) {
_renderer->setScreenViewport();
}
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 38f46a972ff..0f5e2505a66 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -4296,8 +4296,8 @@ bool BaseGame::displayContent(bool doUpdate, bool displayAll) {
//////////////////////////////////////////////////////////////////////////
bool BaseGame::displayContentSimple() {
- // fill black
- _renderer->fill(0, 0, 0);
+ // clear screen
+ _renderer->clear();
_renderer->displayIndicator();
return STATUS_OK;
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index c5b8d62d6b9..39e7ec5b579 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -368,7 +368,7 @@ bool BaseRenderer::displayIndicator() {
#ifdef ENABLE_FOXTAIL
if (BaseEngine::instance().isFoxTail()) {
_hasDrawnSaveLoadImage = false;
- fill(0, 0, 0);
+ clear();
displaySaveloadLines();
displaySaveloadImage();
forcedFlip();
diff --git a/engines/wintermute/base/gfx/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index ecafde7d4ad..93c924e72c1 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -97,13 +97,9 @@ public:
virtual bool windowedBlt();
/**
- * Fill a portion of the screen with a specified color
- *
- * @param r the red component to fill with.
- * @param g the green component to fill with.
- * @param b the blue component to fill with.
+ * Clear the screen
*/
- virtual bool fill(byte r, byte g, byte b, Common::Rect *rect = nullptr) = 0;
+ virtual bool clear() = 0;
virtual void onWindowChange();
virtual bool initRenderer(int width, int height, bool windowed);
/**
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 3263ed31a41..df6bf4c8af5 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -159,11 +159,11 @@ bool BaseRenderOpenGL3D::flip() {
return true;
}
-bool BaseRenderOpenGL3D::fill(byte r, byte g, byte b, Common::Rect *rect) {
+bool BaseRenderOpenGL3D::clear() {
if(!_gameRef->_editorMode) {
glViewport(0, _height, _width, _height);
}
- glClearColor(r / 255.0f, g / 255.0f, b / 255.0f, 1.0f);
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
return true;
}
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
index 645b46abc7b..a505c6f517f 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
@@ -102,7 +102,7 @@ public:
void fadeToColor(byte r, byte g, byte b, byte a) override;
bool flip() override;
- bool fill(byte r, byte g, byte b, Common::Rect *rect = nullptr) override;
+ bool clear() override;
bool setViewport(int left, int top, int right, int bottom) override;
bool drawLine(int x1, int y1, int x2, int y2, uint32 color) override;
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
index 12f1602028f..83b6ed2b496 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -237,11 +237,11 @@ bool BaseRenderOpenGL3DShader::flip() {
return true;
}
-bool BaseRenderOpenGL3DShader::fill(byte r, byte g, byte b, Common::Rect *rect) {
+bool BaseRenderOpenGL3DShader::clear() {
if(!_gameRef->_editorMode) {
glViewport(0, _height, _width, _height);
}
- glClearColor(r / 255.0f, g / 255.0f, b / 255.0f, 1.0f);
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
return true;
}
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
index 2dc1141989f..6f4207fc153 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
@@ -103,7 +103,7 @@ public:
BaseImage *takeScreenshot(int newWidth = 0, int newHeight = 0) override;
void fadeToColor(byte r, byte g, byte b, byte a) override;
bool flip() override;
- bool fill(byte r, byte g, byte b, Common::Rect *rect = nullptr) override;
+ bool clear() override;
bool setViewport(int left, int top, int right, int bottom) override;
bool drawLine(int x1, int y1, int x2, int y2, uint32 color) override;
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 7cdc7c6d0e4..8ebace1774e 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -213,16 +213,12 @@ void BaseRenderOSystem::setWindowed(bool windowed) {
}
//////////////////////////////////////////////////////////////////////////
-bool BaseRenderOSystem::fill(byte r, byte g, byte b, Common::Rect *rect) {
- _clearColor = _renderSurface->format.ARGBToColor(0xFF, r, g, b);
+bool BaseRenderOSystem::clear() {
if (!_disableDirtyRects) {
return STATUS_OK;
}
- if (!rect) {
- rect = &_renderRect;
- }
// TODO: This doesn't work with dirty rects
- _renderSurface->fillRect(*rect, _clearColor);
+ _renderSurface->fillRect(_renderRect, _clearColor);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
index debb4764f1b..f9a85585291 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
@@ -71,7 +71,7 @@ public:
bool flip() override;
bool indicatorFlip() override;
bool forcedFlip() override;
- bool fill(byte r, byte g, byte b, Common::Rect *rect = nullptr) override;
+ bool clear() override;
Graphics::PixelFormat getPixelFormat() const override;
void fade(uint16 alpha) override;
void fadeToColor(byte r, byte g, byte b, byte a) override;
Commit: 8da04bb1bb0261dea4a8f3d6497f028d949cad5f
https://github.com/scummvm/scummvm/commit/8da04bb1bb0261dea4a8f3d6497f028d949cad5f
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2025-06-14T20:47:02+02:00
Commit Message:
WINTERMUTE: Replace drawLine() with fillRect() for drawing indicators
Changed paths:
engines/wintermute/base/gfx/base_renderer.cpp
engines/wintermute/base/gfx/base_renderer.h
engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
engines/wintermute/base/gfx/osystem/base_render_osystem.h
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index 39e7ec5b579..3e71866edf0 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -269,27 +269,10 @@ bool BaseRenderer::setup3D(Camera3D *camera, bool force) {
#endif
//////////////////////////////////////////////////////////////////////////
-bool BaseRenderer::setupLines() {
+bool BaseRenderer::fillRect(int x, int y, int w, int h, uint32 color) {
return STATUS_FAILED;
}
-//////////////////////////////////////////////////////////////////////////
-bool BaseRenderer::drawLine(int x1, int y1, int x2, int y2, uint32 color) {
- return STATUS_FAILED;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool BaseRenderer::drawRect(int x1, int y1, int x2, int y2, uint32 color, int width) {
- for (int i = 0; i < width; i++) {
- drawLine(x1 + i, y1 + i, x2 - i, y1 + i, color); // up
- drawLine(x1 + i, y2 - i, x2 - i + 1, y2 - i, color); // down
-
- drawLine(x1 + i, y1 + i, x1 + i, y2 - i, color); // left
- drawLine(x2 - i, y1 + i, x2 - i, y2 - i + 1, color); // right
- }
- return STATUS_OK;
-}
-
//////////////////////////////////////////////////////////////////////////
bool BaseRenderer::setViewport(int left, int top, int right, int bottom) {
return STATUS_FAILED;
@@ -369,7 +352,7 @@ bool BaseRenderer::displayIndicator() {
if (BaseEngine::instance().isFoxTail()) {
_hasDrawnSaveLoadImage = false;
clear();
- displaySaveloadLines();
+ displaySaveloadRect();
displaySaveloadImage();
forcedFlip();
return STATUS_OK;
@@ -377,7 +360,7 @@ bool BaseRenderer::displayIndicator() {
#endif
displaySaveloadImage();
- displaySaveloadLines();
+ displaySaveloadRect();
indicatorFlip();
return STATUS_OK;
}
@@ -400,17 +383,12 @@ bool BaseRenderer::displaySaveloadImage() {
}
//////////////////////////////////////////////////////////////////////////
-bool BaseRenderer::displaySaveloadLines() {
+bool BaseRenderer::displaySaveloadRect() {
if ((!_indicatorDisplay && _indicatorWidth <= 0) || _indicatorHeight <= 0) {
return STATUS_OK;
}
- setupLines();
int curWidth = (int)(_indicatorWidth * (float)((float)_indicatorProgress / 100.0f));
- for (int i = 0; i < _indicatorHeight; i++) {
- drawLine(_indicatorX, _indicatorY + i, _indicatorX + curWidth, _indicatorY + i, _indicatorColor);
- }
-
- setup2D();
+ fillRect(_indicatorX, _indicatorY, curWidth, _indicatorHeight, _indicatorColor);
_indicatorWidthDrawn = curWidth;
return STATUS_OK;
}
diff --git a/engines/wintermute/base/gfx/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index 93c924e72c1..ef9f96b38fe 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -87,8 +87,7 @@ public:
*/
virtual void fadeToColor(byte r, byte g, byte b, byte a) = 0;
- virtual bool drawLine(int x1, int y1, int x2, int y2, uint32 color); // Unused outside indicator-display
- virtual bool drawRect(int x1, int y1, int x2, int y2, uint32 color, int width = 1); // Unused outside indicator-display
+ virtual bool fillRect(int x, int y, int w, int h, uint32 color); // Unused outside indicator-display
BaseRenderer(BaseGame *inGame = nullptr);
~BaseRenderer() override;
virtual bool setProjection() {
@@ -120,7 +119,6 @@ public:
#ifdef ENABLE_WME3D
virtual bool setup3D(Camera3D *camera = nullptr, bool force = false);
#endif
- virtual bool setupLines();
/**
* Get the name of the current renderer
@@ -226,7 +224,7 @@ protected:
private:
Common::Array<BaseActiveRect *> _rectList;
bool displaySaveloadImage();
- bool displaySaveloadLines();
+ bool displaySaveloadRect();
};
BaseRenderer *makeOSystemRenderer(BaseGame *inGame); // Implemented in BRenderSDL.cpp
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index df6bf4c8af5..648be37845e 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -580,6 +580,16 @@ bool BaseRenderOpenGL3D::drawLine(int x1, int y1, int x2, int y2, uint32 color)
return true;
}
+bool BaseRenderOpenGL3D::fillRect(int x, int y, int w, int h, uint32 color) {
+ // TODO: Use a simplified method for drawing rectangles with OpenGL
+ setupLines();
+ for (int i = 0; i < h; i++) {
+ drawLine(x, y + i, x + w, y + i, color);
+ }
+ setup2D();
+ return true;
+}
+
void BaseRenderOpenGL3D::fadeToColor(byte r, byte g, byte b, byte a) {
float left, right, bottom, top;
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
index a505c6f517f..fceea0c52a9 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.h
@@ -105,7 +105,7 @@ public:
bool clear() override;
bool setViewport(int left, int top, int right, int bottom) override;
- bool drawLine(int x1, int y1, int x2, int y2, uint32 color) override;
+ bool fillRect(int x, int y, int w, int h, uint32 color) override;
DXMatrix *buildMatrix(DXMatrix* out, const DXVector2 *centre, const DXVector2 *scaling, float angle);
void transformVertices(struct SpriteVertex *vertices, const DXVector2 *centre, const DXVector2 *scaling, float angle);
@@ -119,7 +119,6 @@ public:
bool initRenderer(int width, int height, bool windowed) override;
bool setup2D(bool force = false) override;
bool setup3D(Camera3D *camera, bool force = false) override;
- bool setupLines() override;
Common::String getName() const override {
return "OpenGL 3D renderer";
@@ -161,6 +160,9 @@ public:
void setPostfilter(PostFilter postFilter) override { _postFilterMode = postFilter; };
private:
+ bool setupLines();
+ bool drawLine(int x1, int y1, int x2, int y2, uint32 color);
+
void displaySimpleShadow(BaseObject *object) override;
SimpleShadowVertex _simpleShadow[4];
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
index 83b6ed2b496..807769a8d60 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -675,6 +675,16 @@ bool BaseRenderOpenGL3DShader::drawLine(int x1, int y1, int x2, int y2, uint32 c
return true;
}
+bool BaseRenderOpenGL3DShader::fillRect(int x, int y, int w, int h, uint32 color) {
+ // TODO: Use a simplified method for drawing rectangles with OpenGL
+ setupLines();
+ for (int i = 0; i < h; i++) {
+ drawLine(x, y + i, x + w, y + i, color);
+ }
+ setup2D();
+ return true;
+}
+
void BaseRenderOpenGL3DShader::fadeToColor(byte r, byte g, byte b, byte a) {
float left, right, bottom, top;
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
index 6f4207fc153..d883d32b5ca 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
@@ -106,7 +106,7 @@ public:
bool clear() override;
bool setViewport(int left, int top, int right, int bottom) override;
- bool drawLine(int x1, int y1, int x2, int y2, uint32 color) override;
+ bool fillRect(int x, int y, int w, int h, uint32 color) override;
DXMatrix *buildMatrix(DXMatrix* out, const DXVector2 *centre, const DXVector2 *scaling, float angle);
void transformVertices(struct SpriteVertex *vertices, const DXVector2 *centre, const DXVector2 *scaling, float angle);
@@ -120,7 +120,6 @@ public:
bool initRenderer(int width, int height, bool windowed) override;
bool setup2D(bool force = false) override;
bool setup3D(Camera3D *camera, bool force = false) override;
- bool setupLines() override;
Common::String getName() const override {
return "OpenGL 3D renderer";
@@ -164,6 +163,9 @@ public:
OpenGL::Shader *_shadowMaskShader;
private:
+ bool setupLines();
+ bool drawLine(int x1, int y1, int x2, int y2, uint32 color);
+
void displaySimpleShadow(BaseObject *object) override;
SimpleShadowVertex _simpleShadow[4];
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index 8ebace1774e..7faca688d27 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -453,11 +453,11 @@ void BaseRenderOSystem::drawFromSurface(RenderTicket *ticket, Common::Rect *dstR
}
//////////////////////////////////////////////////////////////////////////
-bool BaseRenderOSystem::drawLine(int x1, int y1, int x2, int y2, uint32 color) {
+bool BaseRenderOSystem::fillRect(int x, int y, int w, int h, uint32 color) {
// This function isn't used outside of indicator-displaying, and thus quite unused in
// BaseRenderOSystem when dirty-rects are enabled.
if (!_disableDirtyRects && !_indicatorDisplay) {
- error("BaseRenderOSystem::DrawLine - doesn't work for dirty rects yet");
+ error("BaseRenderOSystem::fillRect - doesn't work for dirty rects yet");
}
byte r = RGBCOLGetR(color);
@@ -467,17 +467,11 @@ bool BaseRenderOSystem::drawLine(int x1, int y1, int x2, int y2, uint32 color) {
//SDL_SetRenderDrawBlendMode(_renderer, SDL_BLENDMODE_BLEND);
- Point32 point1, point2;
- point1.x = x1;
- point1.y = y1;
- pointToScreen(&point1);
-
- point2.x = x2;
- point2.y = y2;
- pointToScreen(&point2);
+ Common::Rect fillRect(x, y, x + w, y + w);
+ modTargetRect(&fillRect);
uint32 colorVal = _renderSurface->format.ARGBToColor(a, r, g, b);
- _renderSurface->drawLine(point1.x, point1.y, point2.x, point2.y, colorVal);
+ _renderSurface->fillRect(fillRect, colorVal);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.h b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
index f9a85585291..6713524e383 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.h
@@ -76,7 +76,7 @@ public:
void fade(uint16 alpha) override;
void fadeToColor(byte r, byte g, byte b, byte a) override;
- bool drawLine(int x1, int y1, int x2, int y2, uint32 color) override;
+ bool fillRect(int x, int y, int w, int h, uint32 color) override;
BaseImage *takeScreenshot(int newWidth = 0, int newHeight = 0) override;
void onWindowChange() override;
More information about the Scummvm-git-logs
mailing list