aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base
diff options
context:
space:
mode:
authorEugene Sandulenko2016-12-26 16:14:27 +0100
committerGitHub2016-12-26 16:14:27 +0100
commitbdb3808d11ed6658999e383f23007305580b814c (patch)
tree4a9771249084ff0e53da367ce70d1333d712a8d3 /engines/wintermute/base
parentf3e0c4d093f52d1728b65c078df88c2f482ec956 (diff)
parentb7bd1991933526a6637e4ea0fd3f1305d0f6627a (diff)
downloadscummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.tar.gz
scummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.tar.bz2
scummvm-rg350-bdb3808d11ed6658999e383f23007305580b814c.zip
Merge pull request #734 from tobiatesan/enable_bilinear
WINTERMUTE: Enable bilinear filtering in Wintermute
Diffstat (limited to 'engines/wintermute/base')
-rw-r--r--engines/wintermute/base/base_game.cpp6
-rw-r--r--engines/wintermute/base/base_game.h3
-rw-r--r--engines/wintermute/base/gfx/osystem/render_ticket.cpp15
3 files changed, 21 insertions, 3 deletions
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index ef3cc2d84f..24779b9793 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -361,6 +361,12 @@ bool BaseGame::initConfManSettings() {
_debugShowFPS = false;
}
+ if (ConfMan.hasKey("bilinear_filtering")) {
+ _bilinearFiltering = ConfMan.getBool("bilinear_filtering");
+ } else {
+ _bilinearFiltering = false;
+ }
+
if (ConfMan.hasKey("disable_smartcache")) {
_smartCache = ConfMan.getBool("disable_smartcache");
} else {
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 6aacc1feab..46484cc5ca 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -101,7 +101,7 @@ public:
virtual bool displayDebugInfo();
void setShowFPS(bool enabled) { _debugShowFPS = enabled; }
-
+ bool getBilinearFiltering() { return _bilinearFiltering; }
bool getSuspendedRendering() const { return _suspendedRendering; }
TTextEncoding _textEncoding;
@@ -279,6 +279,7 @@ protected:
VideoTheoraPlayer *_theoraPlayer;
private:
bool _debugShowFPS;
+ bool _bilinearFiltering;
void *_debugLogFile;
void DEBUG_DebugDisable();
void DEBUG_DebugEnable(const char *filename = nullptr);
diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
index afe884300a..78d445ac8c 100644
--- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp
+++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp
@@ -27,6 +27,7 @@
*/
+#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/gfx/osystem/render_ticket.h"
#include "engines/wintermute/base/gfx/osystem/base_surface_osystem.h"
#include "graphics/transform_tools.h"
@@ -59,7 +60,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s
// TransformTools.)
if (_transform._angle != Graphics::kDefaultAngle) {
Graphics::TransparentSurface src(*_surface, false);
- Graphics::Surface *temp = src.rotoscale(transform);
+ Graphics::Surface *temp;
+ if (owner->_gameRef->getBilinearFiltering()) {
+ temp = src.rotoscale<Graphics::FILTER_BILINEAR>(transform);
+ } else {
+ temp = src.rotoscale<Graphics::FILTER_NEAREST>(transform);
+ }
_surface->free();
delete _surface;
_surface = temp;
@@ -67,7 +73,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s
dstRect->height() != srcRect->height()) &&
_transform._numTimesX * _transform._numTimesY == 1) {
Graphics::TransparentSurface src(*_surface, false);
- Graphics::Surface *temp = src.scale(dstRect->width(), dstRect->height());
+ Graphics::Surface *temp;
+ if (owner->_gameRef->getBilinearFiltering()) {
+ temp = src.scale<Graphics::FILTER_BILINEAR>(dstRect->width(), dstRect->height());
+ } else {
+ temp = src.scale<Graphics::FILTER_NEAREST>(dstRect->width(), dstRect->height());
+ }
_surface->free();
delete _surface;
_surface = temp;