[Scummvm-git-logs] scummvm master -> f8e24e7bb06c6fecbc5e925627bf7e813907eb8c
aquadran
noreply at scummvm.org
Sun Aug 31 15:54:48 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
f8e24e7bb0 WINTERMUTE: Synced with original code
Commit: f8e24e7bb06c6fecbc5e925627bf7e813907eb8c
https://github.com/scummvm/scummvm/commit/f8e24e7bb06c6fecbc5e925627bf7e813907eb8c
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-08-31T17:54:44+02:00
Commit Message:
WINTERMUTE: Synced with original code
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/ad/ad_inventory_box.cpp
engines/wintermute/ad/ad_response_box.cpp
engines/wintermute/base/base_active_rect.cpp
engines/wintermute/base/base_frame.cpp
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_object.cpp
engines/wintermute/base/base_region.cpp
engines/wintermute/base/base_sprite.cpp
engines/wintermute/base/base_sub_frame.cpp
engines/wintermute/base/base_sub_frame.h
engines/wintermute/base/base_viewport.cpp
engines/wintermute/base/font/base_font_bitmap.cpp
engines/wintermute/base/font/base_font_truetype.cpp
engines/wintermute/base/gfx/base_renderer.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
engines/wintermute/base/gfx/xmodel.cpp
engines/wintermute/base/particles/part_emitter.cpp
engines/wintermute/base/particles/part_particle.cpp
engines/wintermute/math/rect32.h
engines/wintermute/platform_osystem.cpp
engines/wintermute/platform_osystem.h
engines/wintermute/ui/ui_tiled_image.cpp
engines/wintermute/ui/ui_window.cpp
engines/wintermute/video/video_player.cpp
engines/wintermute/video/video_theora_player.cpp
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 98354c5c4ad..567f7237d56 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -2535,7 +2535,7 @@ bool AdGame::getLayerSize(int *layerWidth, int *layerHeight, Rect32 *viewport, b
_scene->getViewportSize(&portWidth, &portHeight);
*customViewport = _sceneViewport || _scene->_viewport;
- viewport->setRect(portX, portY, portX + portWidth, portY + portHeight);
+ BasePlatform::setRect(viewport, portX, portY, portX + portWidth, portY + portHeight);
#ifdef ENABLE_WME3D
if (_scene->_scroll3DCompatibility) {
diff --git a/engines/wintermute/ad/ad_inventory_box.cpp b/engines/wintermute/ad/ad_inventory_box.cpp
index 52535e37e09..51404773fbd 100644
--- a/engines/wintermute/ad/ad_inventory_box.cpp
+++ b/engines/wintermute/ad/ad_inventory_box.cpp
@@ -47,7 +47,7 @@ IMPLEMENT_PERSISTENT(AdInventoryBox, false)
//////////////////////////////////////////////////////////////////////////
AdInventoryBox::AdInventoryBox(BaseGame *inGame) : BaseObject(inGame) {
- _itemsArea.setEmpty();
+ BasePlatform::setRectEmpty(&_itemsArea);
_scrollOffset = 0;
_spacing = 0;
_itemWidth = _itemHeight = 50;
@@ -129,7 +129,7 @@ bool AdInventoryBox::display() {
// display window
Rect32 rect = _itemsArea;
if (_window) {
- rect.offsetRect(_window->_posX, _window->_posY);
+ BasePlatform::offsetRect(&rect, _window->_posX, _window->_posY);
_window->display();
}
diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp
index 5caae533512..790f019753b 100644
--- a/engines/wintermute/ad/ad_response_box.cpp
+++ b/engines/wintermute/ad/ad_response_box.cpp
@@ -58,7 +58,7 @@ AdResponseBox::AdResponseBox(BaseGame *inGame) : BaseObject(inGame) {
_shieldWindow = new UIWindow(_gameRef);
_horizontal = false;
- _responseArea.setEmpty();
+ BasePlatform::setRectEmpty(&_responseArea);
_scrollOffset = 0;
_spacing = 0;
@@ -448,7 +448,7 @@ bool AdResponseBox::saveAsText(BaseDynamicBuffer *buffer, int indent) {
bool AdResponseBox::display() {
Rect32 rect = _responseArea;
if (_window) {
- rect.offsetRect(_window->_posX, _window->_posY);
+ BasePlatform::offsetRect(&rect, _window->_posX, _window->_posY);
//_window->display();
}
diff --git a/engines/wintermute/base/base_active_rect.cpp b/engines/wintermute/base/base_active_rect.cpp
index e6465bb9207..3c5c50bda0e 100644
--- a/engines/wintermute/base/base_active_rect.cpp
+++ b/engines/wintermute/base/base_active_rect.cpp
@@ -36,7 +36,7 @@ namespace Wintermute {
//////////////////////////////////////////////////////////////////////
BaseActiveRect::BaseActiveRect(BaseGame *inGame) : BaseClass(inGame) {
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
_owner = nullptr;
_frame = nullptr;
#ifdef ENABLE_WME3D
@@ -54,7 +54,7 @@ BaseActiveRect::BaseActiveRect(BaseGame *inGame) : BaseClass(inGame) {
BaseActiveRect::BaseActiveRect(BaseGame *inGame, BaseObject *owner, BaseSubFrame *frame, int x, int y, int width, int height, float zoomX, float zoomY, bool precise) : BaseClass(inGame) {
_owner = owner;
_frame = frame;
- _rect.setRect(x, y, x + width, y + height);
+ BasePlatform::setRect(&_rect, x, y, x + width, y + height);
_zoomX = zoomX;
_zoomY = zoomY;
_precise = precise;
@@ -71,7 +71,7 @@ BaseActiveRect::BaseActiveRect(BaseGame *inGame, BaseObject *owner, BaseSubFrame
BaseActiveRect::BaseActiveRect(BaseGame *inGame, BaseObject *owner, XModel *model, int x, int y, int width, int height, bool precise) : BaseClass(inGame) {
_owner = owner;
_xmodel = model;
- _rect.setRect(x, y, x + width, y + height);
+ BasePlatform::setRect(&_rect, x, y, x + width, y + height);
_zoomX = 100;
_zoomY = 100;
_precise = precise;
@@ -87,7 +87,7 @@ BaseActiveRect::BaseActiveRect(BaseGame *inGame, BaseObject *owner, BaseRegion *
_owner = owner;
_region = region;
BasePlatform::copyRect(&_rect, ®ion->_rect);
- _rect.offsetRect(-offsetX, -offsetY);
+ BasePlatform::offsetRect(&_rect, -offsetX, -offsetY);
_zoomX = 100;
_zoomY = 100;
_precise = true;
@@ -116,13 +116,13 @@ void BaseActiveRect::clipRect() {
Rect32 rc;
bool customViewport;
_gameRef->getCurrentViewportRect(&rc, &customViewport);
- BaseRenderer *Rend = BaseEngine::getRenderer();
+ BaseRenderer *rend = BaseEngine::getRenderer();
if (!customViewport) {
- rc.left -= Rend->_drawOffsetX;
- rc.right -= Rend->_drawOffsetX;
- rc.top -= Rend->_drawOffsetY;
- rc.bottom -= Rend->_drawOffsetY;
+ rc.left -= rend->_drawOffsetX;
+ rc.right -= rend->_drawOffsetX;
+ rc.top -= rend->_drawOffsetY;
+ rc.bottom -= rend->_drawOffsetY;
}
if (rc.left > _rect.left) {
diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp
index 0b8fece22fc..c20a8dcaef1 100644
--- a/engines/wintermute/base/base_frame.cpp
+++ b/engines/wintermute/base/base_frame.cpp
@@ -179,7 +179,7 @@ bool BaseFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
bool decoration = false;
bool mirrorX = false;
bool mirrorY = false;
- rect.setEmpty();
+ BasePlatform::setRectEmpty(&rect);
char *surface_file = nullptr;
while ((cmd = parser.getCommand(&buffer, commands, ¶ms)) > 0) {
@@ -327,7 +327,7 @@ bool BaseFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
}
}
- if (rect.isRectEmpty()) {
+ if (BasePlatform::isRectEmpty(&rect)) {
sub->setDefaultRect();
} else {
sub->setRect(rect);
@@ -354,7 +354,7 @@ bool BaseFrame::getBoundingRect(Rect32 *rect, int x, int y, float scaleX, float
if (!rect) {
return false;
}
- rect->setEmpty();
+ BasePlatform::setRectEmpty(rect);
Rect32 subRect;
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index f106e715173..c16350bddc6 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -237,7 +237,7 @@ BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _target
m_AccessGlobalPaused = false;
m_AccessShieldWin = NULL;*/
- _mouseLockRect.setEmpty();
+ BasePlatform::setRectEmpty(&_mouseLockRect);
_suppressScriptErrors = false;
_lastMiniUpdate = 0;
@@ -1291,7 +1291,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
BaseUtils::swap(&top, &bottom);
}
- _mouseLockRect.setRect(left, top, right, bottom);
+ BasePlatform::setRect(&_mouseLockRect, left, top, right, bottom);
stack->pushNULL();
return STATUS_OK;
@@ -4220,7 +4220,7 @@ bool BaseGame::getCurrentViewportRect(Rect32 *rect, bool *custom) const {
*custom = true;
}
} else {
- rect->setRect(_renderer->_drawOffsetX,
+ BasePlatform::setRect(rect, _renderer->_drawOffsetX,
_renderer->_drawOffsetY,
_renderer->getWidth() + _renderer->_drawOffsetX,
_renderer->getHeight() + _renderer->_drawOffsetY);
@@ -4686,7 +4686,7 @@ bool BaseGame::getLayerSize(int *layerWidth, int *layerHeight, Rect32 *viewport,
*layerWidth = _renderer->getWidth();
*layerHeight = _renderer->getHeight();
*customViewport = false;
- viewport->setRect(0, 0, _renderer->getWidth(), _renderer->getHeight());
+ BasePlatform::setRect(viewport, 0, 0, _renderer->getWidth(), _renderer->getHeight());
return true;
} else
return false;
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index 5368b4d76f3..cbb34e9fa81 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -73,7 +73,7 @@ BaseObject::BaseObject(BaseGame *inGame) : BaseScriptHolder(inGame) {
_iD = _gameRef->getSequence();
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
_rectSet = false;
_cursor = nullptr;
diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp
index 4dc4a63c5ab..047d0c53dee 100644
--- a/engines/wintermute/base/base_region.cpp
+++ b/engines/wintermute/base/base_region.cpp
@@ -47,7 +47,7 @@ BaseRegion::BaseRegion(BaseGame *inGame) : BaseObject(inGame) {
_lastMimicScale = -1;
_lastMimicX = _lastMimicY = INT_MIN_VALUE;
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
}
@@ -64,7 +64,7 @@ void BaseRegion::cleanup() {
}
_points.removeAll();
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
_editorSelectedPoint = -1;
}
@@ -493,7 +493,7 @@ bool BaseRegion::ptInPolygon(int32 x, int32 y) {
//////////////////////////////////////////////////////////////////////////
bool BaseRegion::getBoundingRect(Rect32 *rect) {
if (_points.getSize() == 0) {
- rect->setEmpty();
+ BasePlatform::setRectEmpty(rect);
} else {
int32 minX = INT_MAX_VALUE, minY = INT_MAX_VALUE, maxX = INT_MIN_VALUE, maxY = INT_MIN_VALUE;
@@ -504,7 +504,7 @@ bool BaseRegion::getBoundingRect(Rect32 *rect) {
maxX = MAX(maxX, _points[i]->x);
maxY = MAX(maxY, _points[i]->y);
}
- rect->setRect(minX, minY, maxX, maxY);
+ BasePlatform::setRect(rect, minX, minY, maxX, maxY);
}
return STATUS_OK;
}
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index f30e63ceb03..afce32f6d81 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -468,7 +468,7 @@ bool BaseSprite::getBoundingRect(Rect32 *rect, int x, int y, float scaleX, float
return false;
}
- rect->setEmpty();
+ BasePlatform::setRectEmpty(rect);
for (int32 i = 0; i < _frames.getSize(); i++) {
Rect32 frame;
Rect32 temp;
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index 9eeb960d67e..d0f0c378c33 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -36,6 +36,7 @@
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/scriptables/script_value.h"
#include "engines/wintermute/base/scriptables/script_stack.h"
+#include "engines/wintermute/platform_osystem.h"
namespace Wintermute {
@@ -50,7 +51,7 @@ BaseSubFrame::BaseSubFrame(BaseGame *inGame) : BaseScriptable(inGame, true) {
_transparent = 0xFFFF00FF;
_wantsDefaultRect = false;
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
_editorSelected = false;
@@ -117,7 +118,7 @@ bool BaseSubFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
int r = 255, g = 255, b = 255;
int ar = 255, ag = 255, ab = 255, alpha = 255;
bool customTrans = false;
- rect.setEmpty();
+ BasePlatform::setRectEmpty(&rect);
char *surfaceFile = nullptr;
delete _surface;
@@ -207,7 +208,7 @@ bool BaseSubFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
return STATUS_FAILED;
}
*/
- if (rect.isRectEmpty()) {
+ if (BasePlatform::isRectEmpty(&rect)) {
setDefaultRect();
} else {
setRect(rect);
@@ -216,9 +217,9 @@ bool BaseSubFrame::loadBuffer(char *buffer, int lifeTime, bool keepLoaded) {
return STATUS_OK;
}
-Rect32 BaseSubFrame::getRect() {
+Rect32 &BaseSubFrame::getRect() {
if (_wantsDefaultRect && _surface) {
- _rect.setRect(0, 0, _surface->getWidth(), _surface->getHeight());
+ BasePlatform::setRect(&_rect, 0, 0, _surface->getWidth(), _surface->getHeight());
_wantsDefaultRect = false;
}
return _rect;
@@ -286,7 +287,7 @@ bool BaseSubFrame::getBoundingRect(Rect32 *rect, int x, int y, float scaleX, flo
float ratioX = scaleX / 100.0f;
float ratioY = scaleY / 100.0f;
- rect->setRect((int)(x - _hotspotX * ratioX),
+ BasePlatform::setRect(rect, (int)(x - _hotspotX * ratioX),
(int)(y - _hotspotY * ratioY),
(int)(x - _hotspotX * ratioX + (getRect().right - getRect().left) * ratioX),
(int)(y - _hotspotY * ratioY + (getRect().bottom - getRect().top) * ratioY));
@@ -309,11 +310,11 @@ bool BaseSubFrame::saveAsText(BaseDynamicBuffer *buffer, int indent, bool comple
}
Rect32 rect;
- rect.setEmpty();
+ BasePlatform::setRectEmpty(&rect);
if (_surface) {
- rect.setRect(0, 0, _surface->getWidth(), _surface->getHeight());
+ BasePlatform::setRect(&rect, 0, 0, _surface->getWidth(), _surface->getHeight());
}
- if (!(rect == getRect())) {
+ if (!BasePlatform::equalRect(&rect, &getRect())) {
buffer->putTextIndent(indent + 2, "RECT { %d,%d,%d,%d }\n", getRect().left, getRect().top, getRect().right, getRect().bottom);
}
@@ -367,7 +368,7 @@ void BaseSubFrame::setDefaultRect() {
_wantsDefaultRect = true;
} else {
_wantsDefaultRect = false;
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
}
}
diff --git a/engines/wintermute/base/base_sub_frame.h b/engines/wintermute/base/base_sub_frame.h
index 6003e90053a..bcaf29751f8 100644
--- a/engines/wintermute/base/base_sub_frame.h
+++ b/engines/wintermute/base/base_sub_frame.h
@@ -61,7 +61,7 @@ public:
uint32 _alpha;
// These two setters and getters are rather useful, as they allow _rect to be lazily defined
// Thus we don't need to load the actual graphics before the rect is actually needed.
- Rect32 getRect();
+ Rect32 &getRect();
void setRect(Rect32 rect);
private:
bool _wantsDefaultRect;
diff --git a/engines/wintermute/base/base_viewport.cpp b/engines/wintermute/base/base_viewport.cpp
index bcb4abd17fa..6b4c0e61768 100644
--- a/engines/wintermute/base/base_viewport.cpp
+++ b/engines/wintermute/base/base_viewport.cpp
@@ -29,6 +29,7 @@
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/base/base_persistence_manager.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
+#include "engines/wintermute/platform_osystem.h"
namespace Wintermute {
@@ -36,7 +37,7 @@ IMPLEMENT_PERSISTENT(BaseViewport, false)
//////////////////////////////////////////////////////////////////////////
BaseViewport::BaseViewport(BaseGame *inGame) : BaseClass(inGame) {
- _rect.setEmpty();
+ BasePlatform::setRectEmpty(&_rect);
_mainObject = nullptr;
_offsetX = _offsetY = 0;
}
@@ -71,7 +72,7 @@ bool BaseViewport::setRect(int32 left, int32 top, int32 right, int32 bottom, boo
bottom = MIN(bottom, BaseEngine::instance().getRenderer()->getHeight());
}
- _rect.setRect(left, top, right, bottom);
+ BasePlatform::setRect(&_rect, left, top, right, bottom);
_offsetX = left;
_offsetY = top;
return STATUS_OK;
diff --git a/engines/wintermute/base/font/base_font_bitmap.cpp b/engines/wintermute/base/font/base_font_bitmap.cpp
index 1d8c5db561d..5af7fd989d4 100644
--- a/engines/wintermute/base/font/base_font_bitmap.cpp
+++ b/engines/wintermute/base/font/base_font_bitmap.cpp
@@ -37,6 +37,7 @@
#include "engines/wintermute/base/base_frame.h"
#include "engines/wintermute/base/base_sprite.h"
#include "engines/wintermute/base/base_file_manager.h"
+#include "engines/wintermute/platform_osystem.h"
namespace Wintermute {
@@ -260,7 +261,7 @@ void BaseFontBitmap::drawChar(byte c, int x, int y) {
tileWidth = _widths[c];
}
- rect.setRect(col * _tileWidth, row * _tileHeight, col * _tileWidth + tileWidth, (row + 1) * _tileHeight);
+ BasePlatform::setRect(&rect, col * _tileWidth, row * _tileHeight, col * _tileWidth + tileWidth, (row + 1) * _tileHeight);
bool handled = false;
if (_sprite) {
_sprite->getCurrentFrame();
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp
index 7e469591a06..07f662ed28c 100644
--- a/engines/wintermute/base/font/base_font_truetype.cpp
+++ b/engines/wintermute/base/font/base_font_truetype.cpp
@@ -34,6 +34,7 @@
#include "engines/wintermute/base/base_engine.h"
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/wintermute.h"
#include "graphics/fonts/ttf.h"
#include "graphics/fontman.h"
@@ -210,7 +211,7 @@ void BaseFontTT::drawText(const byte *text, int x, int y, int width, TTextAlign
// and paint it
if (surface) {
Rect32 rc;
- rc.setRect(0, 0, surface->getWidth(), surface->getHeight());
+ BasePlatform::setRect(&rc, 0, 0, surface->getWidth(), surface->getHeight());
for (int32 i = 0; i < _layers.getSize(); i++) {
uint32 color = _layers[i]->_color;
uint32 origForceAlpha = renderer->_forceAlphaColor;
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index f35f334a7fc..58220bb77b4 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -69,7 +69,7 @@ BaseRenderer::BaseRenderer(BaseGame *inGame) : BaseClass(inGame) {
_loadImageX = _loadImageY = 0;
_width = _height = _bPP = 0;
- _monitorRect.setEmpty();
+ BasePlatform::setRectEmpty(&_monitorRect);
_realWidth = _realHeight = 0;
_drawOffsetX = _drawOffsetY = 0;
@@ -367,7 +367,7 @@ bool BaseRenderer::displayIndicator() {
bool BaseRenderer::displaySaveloadImage() {
if (_saveLoadImage && !_hasDrawnSaveLoadImage) {
Rect32 rc;
- rc.setRect(0, 0, _saveLoadImage->getWidth(), _saveLoadImage->getHeight());
+ BasePlatform::setRect(&rc, 0, 0, _saveLoadImage->getWidth(), _saveLoadImage->getHeight());
if (_loadInProgress) {
_saveLoadImage->displayTrans(_loadImageX, _loadImageY, rc);
} else {
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 19be328dd6c..4516c8729fa 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/gfx/3dcamera.h"
#include "engines/wintermute/base/gfx/3dlight.h"
+#include "engines/wintermute/platform_osystem.h"
#include "graphics/opengl/system_headers.h"
@@ -926,7 +927,7 @@ void BaseRenderOpenGL3D::disableCulling() {
// implements D3D SetViewport() for 2D renderer
bool BaseRenderOpenGL3D::setViewport(int left, int top, int right, int bottom) {
- _viewportRect.setRect(left, top, right, bottom);
+ BasePlatform::setRect(&_viewportRect, left, top, right, bottom);
_viewport._x = left;
_viewport._y = top;
_viewport._width = right - left;
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 a567dfad1fb..a12c97b79cd 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -30,6 +30,7 @@
#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/gfx/3dcamera.h"
#include "engines/wintermute/base/gfx/3dlight.h"
+#include "engines/wintermute/platform_osystem.h"
#include "graphics/opengl/system_headers.h"
@@ -1011,7 +1012,7 @@ void BaseRenderOpenGL3DShader::disableCulling() {
// implements D3D SetViewport() for 2D renderer
bool BaseRenderOpenGL3DShader::setViewport(int left, int top, int right, int bottom) {
- _viewportRect.setRect(left, top, right, bottom);
+ BasePlatform::setRect(&_viewportRect, left, top, right, bottom);
_viewport._x = left;
_viewport._y = top;
_viewport._width = right - left;
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index db6c115e844..cf3112924eb 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -43,6 +43,7 @@
#include "engines/wintermute/base/gfx/xfile.h"
#include "engines/wintermute/base/gfx/xfile_loader.h"
#include "engines/wintermute/dcgf.h"
+#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/utils/path_util.h"
#include "engines/wintermute/utils/utils.h"
#include "engines/wintermute/wintermute.h"
@@ -64,7 +65,7 @@ XModel::XModel(BaseGame *inGame, BaseObject *owner) : BaseObject(inGame) {
_lastOffsetX = _lastOffsetY = 0;
_BBoxStart = _BBoxEnd = DXVector3(0.0f, 0.0f, 0.0f);
- _boundingRect.setEmpty();
+ BasePlatform::setRectEmpty(&_boundingRect);
for (int i = 0; i < X_NUM_ANIMATION_CHANNELS; i++) {
_channels[i] = nullptr;
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 752f61b9ccb..bb0d3bb31a8 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -37,6 +37,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/utils/utils.h"
+#include "engines/wintermute/platform_osystem.h"
#include "common/str.h"
#include "math/utils.h"
@@ -48,7 +49,7 @@ IMPLEMENT_PERSISTENT(PartEmitter, false)
PartEmitter::PartEmitter(BaseGame *inGame, BaseScriptHolder *owner) : BaseObject(inGame) {
_width = _height = 0;
- _border.setEmpty();
+ BasePlatform::setRectEmpty(&_border);
_borderThicknessLeft = _borderThicknessRight = _borderThicknessTop = _borderThicknessBottom = 0;
_angle1 = _angle2 = 0;
@@ -194,7 +195,7 @@ bool PartEmitter::initParticle(PartParticle *particle, uint32 currentTime, uint3
float angVelocity = BaseUtils::randomFloat(_angVelocity1, _angVelocity2);
float growthRate = BaseUtils::randomFloat(_growthRate1, _growthRate2);
- if (!_border.isRectEmpty()) {
+ if (!BasePlatform::isRectEmpty(&_border)) {
int thicknessLeft = (int)(_borderThicknessLeft - (float)_borderThicknessLeft * posZ / 100.0f);
int thicknessRight = (int)(_borderThicknessRight - (float)_borderThicknessRight * posZ / 100.0f);
int thicknessTop = (int)(_borderThicknessTop - (float)_borderThicknessTop * posZ / 100.0f);
@@ -387,7 +388,7 @@ int PartEmitter::compareZ(const void *obj1, const void *obj2) {
//////////////////////////////////////////////////////////////////////////
bool PartEmitter::setBorder(int x, int y, int width, int height) {
- _border.setRect(x, y, x + width, y + height);
+ BasePlatform::setRect(&_border, x, y, x + width, y + height);
return STATUS_OK;
}
diff --git a/engines/wintermute/base/particles/part_particle.cpp b/engines/wintermute/base/particles/part_particle.cpp
index 0e8333325a4..50192ed9550 100644
--- a/engines/wintermute/base/particles/part_particle.cpp
+++ b/engines/wintermute/base/particles/part_particle.cpp
@@ -44,7 +44,7 @@ PartParticle::PartParticle(BaseGame *inGame) : BaseClass(inGame) {
_creationTime = 0;
_lifeTime = 0;
_isDead = true;
- _border.setEmpty();
+ BasePlatform::setRectEmpty(&_border);
_state = PARTICLE_NORMAL;
_fadeStart = 0;
@@ -124,7 +124,7 @@ bool PartParticle::update(PartEmitter *emitter, uint32 currentTime, uint32 timer
}
// particle hit the border
- if (!_isDead && !_border.isRectEmpty()) {
+ if (!_isDead && !BasePlatform::isRectEmpty(&_border)) {
Point32 p;
p.x = (int32)_pos.x;
p.y = (int32)_pos.y;
diff --git a/engines/wintermute/math/rect32.h b/engines/wintermute/math/rect32.h
index 1861e83862a..6607da400e2 100644
--- a/engines/wintermute/math/rect32.h
+++ b/engines/wintermute/math/rect32.h
@@ -64,15 +64,6 @@ struct Rect32 {
Rect32() : top(0), left(0), bottom(0), right(0) {}
Rect32(int32 w, int32 h) : top(0), left(0), bottom(h), right(w) {}
Rect32(const Common::Rect &rect) : top(rect.top), left(rect.left), bottom(rect.bottom), right(rect.right) {}
- Rect32(int32 x1, int32 y1, int32 x2, int32 y2) : top(y1), left(x1), bottom(y2), right(x2) {
- assert(isValidRect());
- }
- bool operator==(const Rect32 &rhs) const {
- return equals(rhs);
- }
- bool operator!=(const Rect32 &rhs) const {
- return !equals(rhs);
- }
int32 width() const {
return right - left;
@@ -80,51 +71,6 @@ struct Rect32 {
int32 height() const {
return bottom - top;
}
-
- void setWidth(int32 aWidth) {
- right = left + aWidth;
- }
-
- void setHeight(int32 aHeight) {
- bottom = top + aHeight;
- }
-
- void setEmpty() {
- left = right = top = bottom = 0;
- }
-
- bool isRectEmpty() const {
- return (left >= right) || (top >= bottom);
- }
-
- void offsetRect(int dx, int dy) {
- left += dx;
- top += dy;
- right += dx;
- bottom += dy;
- }
-
- void setRect(int32 newLeft, int32 newTop, int32 newRight, int32 newBottom) {
- this->left = newLeft;
- this->top = newTop;
- this->right = newRight;
- this->bottom = newBottom;
- }
-
- /**
- * Check if the given rect is equal to this one.
- *
- * @param r The rectangle to check
- *
- * @return true if the given rect is equal, false otherwise
- */
- bool equals(const Rect32 &r) const {
- return (left == r.left) && (right == r.right) && (top == r.top) && (bottom == r.bottom);
- }
-
- bool isValidRect() const {
- return (left <= right && top <= bottom);
- }
};
} // End of namespace Wintermute
diff --git a/engines/wintermute/platform_osystem.cpp b/engines/wintermute/platform_osystem.cpp
index e867dad6aec..937f41f49c6 100644
--- a/engines/wintermute/platform_osystem.cpp
+++ b/engines/wintermute/platform_osystem.cpp
@@ -190,17 +190,54 @@ bool BasePlatform::setCursorPos(int x, int y) {
return true;
}
+//////////////////////////////////////////////////////////////////////////
+bool BasePlatform::setRectEmpty(Rect32 *lprc) {
+ if (lprc == nullptr) {
+ return false;
+ }
+ lprc->left = lprc->right = lprc->top = lprc->bottom = 0;
+ return true;
+}
+
+//////////////////////////////////////////////////////////////////////////
+bool BasePlatform::isRectEmpty(const Rect32 *lprc) {
+ if (lprc == nullptr) {
+ return false;
+ }
+ return ((lprc->left >= lprc->right) || (lprc->top >= lprc->bottom));
+}
+
//////////////////////////////////////////////////////////////////////////
bool BasePlatform::ptInRect(Rect32 *lprc, Point32 p) {
+ if (lprc == nullptr) {
+ return false;
+ }
return (p.x >= lprc->left) && (p.x < lprc->right) && (p.y >= lprc->top) && (p.y < lprc->bottom);
}
+//////////////////////////////////////////////////////////////////////////
+bool BasePlatform::setRect(Rect32 *lprc, int32 left, int32 top, int32 right, int32 bottom) {
+ if (lprc == nullptr) {
+ return false;
+ }
+
+ lprc->left = left;
+ lprc->right = right;
+ lprc->top = top;
+ lprc->bottom = bottom;
+ return true;
+}
+
//////////////////////////////////////////////////////////////////////////
bool BasePlatform::intersectRect(Rect32 *lprcDst, const Rect32 *lprcSrc1, const Rect32 *lprcSrc2) {
- if (lprcSrc1->isRectEmpty() || lprcSrc2->isRectEmpty() ||
- lprcSrc1->left >= lprcSrc2->right || lprcSrc2->left >= lprcSrc1->right ||
- lprcSrc1->top >= lprcSrc2->bottom || lprcSrc2->top >= lprcSrc1->bottom) {
- lprcDst->setEmpty();
+ if (lprcDst == nullptr || lprcSrc1 == nullptr || lprcSrc2 == nullptr) {
+ return false;
+ }
+
+ if (BasePlatform::isRectEmpty(lprcSrc1) || BasePlatform::isRectEmpty(lprcSrc2) ||
+ lprcSrc1->left >= lprcSrc2->right || lprcSrc2->left >= lprcSrc1->right ||
+ lprcSrc1->top >= lprcSrc2->bottom || lprcSrc2->top >= lprcSrc1->bottom) {
+ setRectEmpty(lprcDst);
return false;
}
lprcDst->left = MAX(lprcSrc1->left, lprcSrc2->left);
@@ -213,15 +250,19 @@ bool BasePlatform::intersectRect(Rect32 *lprcDst, const Rect32 *lprcSrc1, const
//////////////////////////////////////////////////////////////////////////
bool BasePlatform::unionRect(Rect32 *lprcDst, Rect32 *lprcSrc1, Rect32 *lprcSrc2) {
- if (lprcSrc1->isRectEmpty()) {
- if (lprcSrc2->isRectEmpty()) {
- lprcDst->setEmpty();
+ if (lprcDst == nullptr || lprcSrc1 == nullptr || lprcSrc2 == nullptr) {
+ return false;
+ }
+
+ if (isRectEmpty(lprcSrc1)) {
+ if (isRectEmpty(lprcSrc2)) {
+ setRectEmpty(lprcDst);
return false;
} else {
*lprcDst = *lprcSrc2;
}
} else {
- if (lprcSrc2->isRectEmpty()) {
+ if (isRectEmpty(lprcSrc2)) {
*lprcDst = *lprcSrc1;
} else {
lprcDst->left = MIN(lprcSrc1->left, lprcSrc2->left);
@@ -244,6 +285,27 @@ bool BasePlatform::copyRect(Rect32 *lprcDst, Rect32 *lprcSrc) {
return true;
}
+//////////////////////////////////////////////////////////////////////////
+bool BasePlatform::equalRect(Rect32 *lprc1, Rect32 *lprc2) {
+ if (lprc1 == nullptr || lprc2 == nullptr) {
+ return false;
+ }
+
+ return ((lprc1->left == lprc2->left) && (lprc1->right == lprc2->right) &&
+ (lprc1->top == lprc2->top) && (lprc1->bottom == lprc2->bottom));
+}
+
+//////////////////////////////////////////////////////////////////////////
+bool BasePlatform::offsetRect(Rect32 *lprc, int32 x, int32 y) {
+ if (!lprc)
+ return false;
+ lprc->left += x;
+ lprc->right += x;
+ lprc->top += y;
+ lprc->bottom += y;
+ return true;
+}
+
//////////////////////////////////////////////////////////////////////////
AnsiString BasePlatform::getPlatformName() {
// TODO: Should conform to the WME-spec.
diff --git a/engines/wintermute/platform_osystem.h b/engines/wintermute/platform_osystem.h
index 487358a496d..84536ac1441 100644
--- a/engines/wintermute/platform_osystem.h
+++ b/engines/wintermute/platform_osystem.h
@@ -48,11 +48,15 @@ public:
static bool getCursorPos(Point32 *lpPoint);
static bool setCursorPos(int x, int y);
+ static bool setRectEmpty(Rect32 *lprc);
+ static bool isRectEmpty(const Rect32 *lprc);
static bool ptInRect(Rect32 *lprc, Point32 p);
- static bool setRect(Rect32 *lprc, int left, int top, int right, int bottom);
+ static bool setRect(Rect32 *lprc, int32 left, int32 top, int32 right, int32 bottom);
static bool intersectRect(Rect32 *lprcDst, const Rect32 *lprcSrc1, const Rect32 *lprcSrc2);
static bool unionRect(Rect32 *lprcDst, Rect32 *lprcSrc1, Rect32 *lprcSrc2);
static bool copyRect(Rect32 *lprcDst, Rect32 *lprcSrc);
+ static bool equalRect(Rect32 *lprc1, Rect32 *lprc2);
+ static bool offsetRect(Rect32 *lprc, int32 x, int32 y);
// string functions
static char *wintermute_strlwr(char *string);
diff --git a/engines/wintermute/ui/ui_tiled_image.cpp b/engines/wintermute/ui/ui_tiled_image.cpp
index f4e5bc5547f..c3abf822f24 100644
--- a/engines/wintermute/ui/ui_tiled_image.cpp
+++ b/engines/wintermute/ui/ui_tiled_image.cpp
@@ -43,15 +43,15 @@ IMPLEMENT_PERSISTENT(UITiledImage, false)
UITiledImage::UITiledImage(BaseGame *inGame) : BaseObject(inGame) {
_image = nullptr;
- _upLeft.setEmpty();
- _upMiddle.setEmpty();
- _upRight.setEmpty();
- _middleLeft.setEmpty();
- _middleMiddle.setEmpty();
- _middleRight.setEmpty();
- _downLeft.setEmpty();
- _downMiddle.setEmpty();
- _downRight.setEmpty();
+ BasePlatform::setRectEmpty(&_upLeft);
+ BasePlatform::setRectEmpty(&_upMiddle);
+ BasePlatform::setRectEmpty(&_upRight);
+ BasePlatform::setRectEmpty(&_middleLeft);
+ BasePlatform::setRectEmpty(&_middleMiddle);
+ BasePlatform::setRectEmpty(&_middleRight);
+ BasePlatform::setRectEmpty(&_downLeft);
+ BasePlatform::setRectEmpty(&_downMiddle);
+ BasePlatform::setRectEmpty(&_downRight);
}
@@ -269,19 +269,19 @@ bool UITiledImage::loadBuffer(char *buffer, bool complete) {
if (vTiles && hTiles) {
// up row
- _upLeft.setRect(0, 0, h1, v1);
- _upMiddle.setRect(h1, 0, h1 + h2, v1);
- _upRight.setRect(h1 + h2, 0, h1 + h2 + h3, v1);
+ BasePlatform::setRect(&_upLeft, 0, 0, h1, v1);
+ BasePlatform::setRect(&_upMiddle, h1, 0, h1 + h2, v1);
+ BasePlatform::setRect(&_upRight, h1 + h2, 0, h1 + h2 + h3, v1);
// middle row
- _middleLeft.setRect(0, v1, h1, v1 + v2);
- _middleMiddle.setRect(h1, v1, h1 + h2, v1 + v2);
- _middleRight.setRect(h1 + h2, v1, h1 + h2 + h3, v1 + v2);
+ BasePlatform::setRect(&_middleLeft, 0, v1, h1, v1 + v2);
+ BasePlatform::setRect(&_middleMiddle, h1, v1, h1 + h2, v1 + v2);
+ BasePlatform::setRect(&_middleRight, h1 + h2, v1, h1 + h2 + h3, v1 + v2);
// down row
- _downLeft.setRect(0, v1 + v2, h1, v1 + v2 + v3);
- _downMiddle.setRect(h1, v1 + v2, h1 + h2, v1 + v2 + v3);
- _downRight.setRect(h1 + h2, v1 + v2, h1 + h2 + h3, v1 + v2 + v3);
+ BasePlatform::setRect(&_downLeft, 0, v1 + v2, h1, v1 + v2 + v3);
+ BasePlatform::setRect(&_downMiddle, h1, v1 + v2, h1 + h2, v1 + v2 + v3);
+ BasePlatform::setRect(&_downRight, h1 + h2, v1 + v2, h1 + h2 + h3, v1 + v2 + v3);
}
// default
@@ -289,34 +289,34 @@ bool UITiledImage::loadBuffer(char *buffer, bool complete) {
int width = _image->_surface->getWidth() / 3;
int height = _image->_surface->getHeight() / 3;
- if (_upLeft.isRectEmpty()) {
- _upLeft.setRect(0, 0, width, height);
+ if (BasePlatform::isRectEmpty(&_upLeft)) {
+ BasePlatform::setRect(&_upLeft, 0, 0, width, height);
}
- if (_upMiddle.isRectEmpty()) {
- _upMiddle.setRect(width, 0, 2 * width, height);
+ if (BasePlatform::isRectEmpty(&_upMiddle)) {
+ BasePlatform::setRect(&_upMiddle, width, 0, 2 * width, height);
}
- if (_upRight.isRectEmpty()) {
- _upRight.setRect(2 * width, 0, 3 * width, height);
+ if (BasePlatform::isRectEmpty(&_upRight)) {
+ BasePlatform::setRect(&_upRight, 2 * width, 0, 3 * width, height);
}
- if (_middleLeft.isRectEmpty()) {
- _middleLeft.setRect(0, height, width, 2 * height);
+ if (BasePlatform::isRectEmpty(&_middleLeft)) {
+ BasePlatform::setRect(&_middleLeft, 0, height, width, 2 * height);
}
- if (_middleMiddle.isRectEmpty()) {
- _middleMiddle.setRect(width, height, 2 * width, 2 * height);
+ if (BasePlatform::isRectEmpty(&_middleMiddle)) {
+ BasePlatform::setRect(&_middleMiddle, width, height, 2 * width, 2 * height);
}
- if (_middleRight.isRectEmpty()) {
- _middleRight.setRect(2 * width, height, 3 * width, 2 * height);
+ if (BasePlatform::isRectEmpty(&_middleRight)) {
+ BasePlatform::setRect(&_middleRight, 2 * width, height, 3 * width, 2 * height);
}
- if (_downLeft.isRectEmpty()) {
- _downLeft.setRect(0, 2 * height, width, 3 * height);
+ if (BasePlatform::isRectEmpty(&_downLeft)) {
+ BasePlatform::setRect(&_downLeft, 0, 2 * height, width, 3 * height);
}
- if (_downMiddle.isRectEmpty()) {
- _downMiddle.setRect(width, 2 * height, 2 * width, 3 * height);
+ if (BasePlatform::isRectEmpty(&_downMiddle)) {
+ BasePlatform::setRect(&_downMiddle, width, 2 * height, 2 * width, 3 * height);
}
- if (_downRight.isRectEmpty()) {
- _downRight.setRect(2 * width, 2 * height, 3 * width, 3 * height);
+ if (BasePlatform::isRectEmpty(&_downRight)) {
+ BasePlatform::setRect(&_downRight, 2 * width, 2 * height, 3 * width, 3 * height);
}
}
diff --git a/engines/wintermute/ui/ui_window.cpp b/engines/wintermute/ui/ui_window.cpp
index 0888be060e2..0679d8d74b6 100644
--- a/engines/wintermute/ui/ui_window.cpp
+++ b/engines/wintermute/ui/ui_window.cpp
@@ -54,8 +54,8 @@ IMPLEMENT_PERSISTENT(UIWindow, false)
//////////////////////////////////////////////////////////////////////////
UIWindow::UIWindow(BaseGame *inGame) : UIObject(inGame) {
- _titleRect.setEmpty();
- _dragRect.setEmpty();
+ BasePlatform::setRectEmpty(&_titleRect);
+ BasePlatform::setRectEmpty(&_dragRect);
_titleAlign = TAL_LEFT;
_transparent = false;
@@ -210,7 +210,7 @@ bool UIWindow::display(int offsetX, int offsetY) {
image->draw(_posX + offsetX, _posY + offsetY, _transparent ? nullptr : this);
}
- if (!_titleRect.isRectEmpty() && font && _text) {
+ if (!BasePlatform::isRectEmpty(&_titleRect) && font && _text) {
font->drawText((byte *)_text, _posX + offsetX + _titleRect.left, _posY + offsetY + _titleRect.top, _titleRect.right - _titleRect.left, _titleAlign, _titleRect.bottom - _titleRect.top);
}
@@ -603,7 +603,7 @@ bool UIWindow::loadBuffer(char *buffer, bool complete) {
// HACK: Increase window title height by 1 for "5 Lethal Demons" game
// For some reason getFontHeight() is off-by-one comparing to height set in TITLE_RECT,
// Which made text being bigger then title rect and drawing was skipped.
- if (BaseEngine::instance().getGameId() == "5ld" && !_titleRect.isRectEmpty() && _text) {
+ if (BaseEngine::instance().getGameId() == "5ld" && !BasePlatform::isRectEmpty(&_titleRect) && _text) {
_titleRect.bottom ++;
}
@@ -678,11 +678,11 @@ bool UIWindow::saveAsText(BaseDynamicBuffer *buffer, int indent) {
error("UIWindow::SaveAsText - Unhandled enum-value NUM_TEXT_ALIGN");
}
- if (!_titleRect.isRectEmpty()) {
+ if (!BasePlatform::isRectEmpty(&_titleRect)) {
buffer->putTextIndent(indent + 2, "TITLE_RECT { %d, %d, %d, %d }\n", _titleRect.left, _titleRect.top, _titleRect.right, _titleRect.bottom);
}
- if (!_dragRect.isRectEmpty()) {
+ if (!BasePlatform::isRectEmpty(&_dragRect)) {
buffer->putTextIndent(indent + 2, "DRAG_RECT { %d, %d, %d, %d }\n", _dragRect.left, _dragRect.top, _dragRect.right, _dragRect.bottom);
}
@@ -1229,13 +1229,13 @@ bool UIWindow::handleMouse(TMouseEvent event, TMouseButton button) {
bool res = UIObject::handleMouse(event, button);
// handle window dragging
- if (!_dragRect.isRectEmpty()) {
+ if (!BasePlatform::isRectEmpty(&_dragRect)) {
// start drag
if (event == MOUSE_CLICK && button == MOUSE_BUTTON_LEFT) {
Rect32 dragRect = _dragRect;
int offsetX, offsetY;
getTotalOffset(&offsetX, &offsetY);
- dragRect.offsetRect(_posX + offsetX, _posY + offsetY);
+ BasePlatform::offsetRect(&dragRect, _posX + offsetX, _posY + offsetY);
if (BasePlatform::ptInRect(&dragRect, _gameRef->_mousePos)) {
_dragFrom.x = _gameRef->_mousePos.x;
diff --git a/engines/wintermute/video/video_player.cpp b/engines/wintermute/video/video_player.cpp
index 1f74bd22804..be9a5f621dc 100644
--- a/engines/wintermute/video/video_player.cpp
+++ b/engines/wintermute/video/video_player.cpp
@@ -32,6 +32,7 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/gfx/base_surface.h"
+#include "engines/wintermute/platform_osystem.h"
namespace Wintermute {
@@ -165,7 +166,7 @@ bool VideoPlayer::display() {
bool res;
if (_texture && _videoFrameReady) {
- rc.setRect(0, 0, _texture->getWidth(), _texture->getHeight());
+ BasePlatform::setRect(&rc, 0, 0, _texture->getWidth(), _texture->getHeight());
if (_playZoom == 100.0f) {
res = _texture->display(_playPosX, _playPosY, rc);
} else {
diff --git a/engines/wintermute/video/video_theora_player.cpp b/engines/wintermute/video/video_theora_player.cpp
index 15ca235c32d..73692a52733 100644
--- a/engines/wintermute/video/video_theora_player.cpp
+++ b/engines/wintermute/video/video_theora_player.cpp
@@ -33,8 +33,9 @@
#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/sound/base_sound_manager.h"
-#include "video/theora_decoder.h"
+#include "engines/wintermute/platform_osystem.h"
#include "engines/wintermute/wintermute.h"
+#include "video/theora_decoder.h"
#include "common/system.h"
namespace Wintermute {
@@ -360,7 +361,7 @@ bool VideoTheoraPlayer::display(uint32 alpha) {
bool res;
if (_texture && _videoFrameReady) {
- rc.setRect(0, 0, _texture->getWidth(), _texture->getHeight());
+ BasePlatform::setRect(&rc, 0, 0, _texture->getWidth(), _texture->getHeight());
if (_playZoom == 100.0f) {
res = _texture->displayTrans(_posX, _posY, rc, alpha);
} else {
More information about the Scummvm-git-logs
mailing list