diff --git a/base/plugins.cpp b/base/plugins.cpp index 839f9c30fe6..46289644ce2 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -165,6 +165,7 @@ public: LINK_PLUGIN(NORMAL) LINK_PLUGIN(HQ) LINK_PLUGIN(SAI) + LINK_PLUGIN(DOTMATRIX) return pl; } diff --git a/graphics/module.mk b/graphics/module.mk index ac10a33c647..9c7f8df11a1 100644 --- a/graphics/module.mk +++ b/graphics/module.mk @@ -86,6 +86,7 @@ endif ifdef USE_SCALERS MODULE_OBJS += \ scaler/2xsai.o \ + scaler/dotmatrix.o \ scaler/sai.o \ scaler/aspect.o \ scaler/downscaler.o \ diff --git a/graphics/scaler/dotmatrix.cpp b/graphics/scaler/dotmatrix.cpp new file mode 100644 index 00000000000..9430a790d70 --- /dev/null +++ b/graphics/scaler/dotmatrix.cpp @@ -0,0 +1,62 @@ +/* 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/dotmatrix.h" +#include "graphics/scaler.h" + +void DotMatrixPlugin::initialize(Graphics::PixelFormat format) { + // TODO: initialize dotmatrix array +} + +void DotMatrixPlugin::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: + DotMatrix(srcPtr, srcPitch, dstPtr, dstPitch, width, height); + break; + } +} + +uint DotMatrixPlugin::increaseFactor() { + if (_factor < 2) + ++_factor; + return _factor; +} + +uint DotMatrixPlugin::decreaseFactor() { + if (_factor > 1) + --_factor; + return _factor; +} + +const char *DotMatrixPlugin::getName() const { + return "DotMatrix"; +} + + +REGISTER_PLUGIN_STATIC(DOTMATRIX, PLUGIN_TYPE_SCALER, DotMatrixPlugin); diff --git a/graphics/scaler/dotmatrix.h b/graphics/scaler/dotmatrix.h new file mode 100644 index 00000000000..2785972967b --- /dev/null +++ b/graphics/scaler/dotmatrix.h @@ -0,0 +1,42 @@ +/* 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_DOTMATRIX_H +#define GRAPHICS_SCALER_DOTMATRIX_H + +#include "graphics/scalerplugin.h" + +class DotMatrixPlugin : public ScalerPluginObject { +public: + DotMatrixPlugin() { _factor = 1;} + virtual void initialize(Graphics::PixelFormat format); + virtual void scale(const uint8 *srcPtr, uint32 srcPitch, + uint8 *dstPtr, uint32 dstPitch, int width, int height, int x, int y); + virtual uint increaseFactor(); + virtual uint decreaseFactor(); + virtual uint getFactor() const { return _factor; } + virtual bool canDrawCursor() const { return true; } + virtual uint extraPixels() const { return 0; } + virtual const char *getName() const; +}; + + +#endif