diff --git a/base/plugins.cpp b/base/plugins.cpp index 58446ae24eb..022cb2b04ab 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -164,6 +164,7 @@ public: // Scaler plugins LINK_PLUGIN(NORMAL) LINK_PLUGIN(HQ) + LINK_PLUGIN(SAI) return pl; } diff --git a/graphics/module.mk b/graphics/module.mk index b0659c5cb92..ac10a33c647 100644 --- a/graphics/module.mk +++ b/graphics/module.mk @@ -86,6 +86,7 @@ endif ifdef USE_SCALERS MODULE_OBJS += \ scaler/2xsai.o \ + scaler/sai.o \ scaler/aspect.o \ scaler/downscaler.o \ scaler/scale2x.o \ diff --git a/graphics/scaler/sai.cpp b/graphics/scaler/sai.cpp new file mode 100644 index 00000000000..e63fbd93953 --- /dev/null +++ b/graphics/scaler/sai.cpp @@ -0,0 +1,66 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "graphics/scaler/sai.h" +#include "graphics/scaler.h" + +void SAIPlugin::initialize(Graphics::PixelFormat format) { + _format = format; +} + +void SAIPlugin::deinitialize() { + //DestroyScalers(); +} + +void SAIPlugin::scale(const uint8 *srcPtr, uint32 srcPitch, + uint8 *dstPtr, uint32 dstPitch, int width, int height, int x, int y) { + if (!_doScale) { + Normal1x(srcPtr, srcPitch, dstPtr, dstPitch, width, height); + return; + } + switch (_factor) { + case 1: + Normal1x(srcPtr, srcPitch, dstPtr, dstPitch, width, height); + break; + case 2: + _2xSaI(srcPtr, srcPitch, dstPtr, dstPitch, width, height); + break; + } +} + +int SAIPlugin::increaseFactor() { + if (_factor < 2) + ++_factor; + return _factor; +} + +int SAIPlugin::decreaseFactor() { + if (_factor > 1) + --_factor; + return _factor; +} + +const char *SAIPlugin::getName() const { + return "SAI"; +} + + +REGISTER_PLUGIN_STATIC(SAI, PLUGIN_TYPE_SCALER, SAIPlugin); diff --git a/graphics/scaler/sai.h b/graphics/scaler/sai.h new file mode 100644 index 00000000000..5ee78bc2803 --- /dev/null +++ b/graphics/scaler/sai.h @@ -0,0 +1,45 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef GRAPHICS_SCALER_SAI_H +#define GRAPHICS_SCALER_SAI_H + +#include "graphics/scalerplugin.h" + +class SAIPlugin : public ScalerPluginObject { +public: + SAIPlugin() { _factor = 1;} + virtual void initialize(Graphics::PixelFormat format); + virtual void deinitialize(); + virtual void scale(const uint8 *srcPtr, uint32 srcPitch, + uint8 *dstPtr, uint32 dstPitch, int width, int height, int x, int y); + virtual int increaseFactor(); + virtual int decreaseFactor(); + virtual int getFactor() { return _factor; } + virtual bool canDrawCursor() { return false; } + virtual int extraPixels() { return 1; } + virtual const char *getName() const; +private: + Graphics::PixelFormat _format; +}; + + +#endif