diff options
author | Paul Gilbert | 2016-10-02 15:39:45 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-10-02 15:39:45 -0400 |
commit | dd2ee74cc099e1cf7b6a179886581188b5dfbca3 (patch) | |
tree | abeeb76f6170cc3b597e1463edaecc3f62426a49 /engines/titanic/support/transparency_surface.cpp | |
parent | 3d25e260f783586c9a1a53dfa5bd0216d5277360 (diff) | |
download | scummvm-rg350-dd2ee74cc099e1cf7b6a179886581188b5dfbca3.tar.gz scummvm-rg350-dd2ee74cc099e1cf7b6a179886581188b5dfbca3.tar.bz2 scummvm-rg350-dd2ee74cc099e1cf7b6a179886581188b5dfbca3.zip |
TITANIC: Change mouse cursor to use transparency
Diffstat (limited to 'engines/titanic/support/transparency_surface.cpp')
-rw-r--r-- | engines/titanic/support/transparency_surface.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/engines/titanic/support/transparency_surface.cpp b/engines/titanic/support/transparency_surface.cpp new file mode 100644 index 0000000000..d956c77a58 --- /dev/null +++ b/engines/titanic/support/transparency_surface.cpp @@ -0,0 +1,79 @@ +/* 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 "titanic/support/transparency_surface.h" +#include "common/algorithm.h" +#include "common/textconsole.h" + +namespace Titanic { + +CTransparencySurface::CTransparencySurface(const Graphics::Surface *surface, + TransparencyMode transMode) : _surface(surface) { + _pitch = 0; + _runLength = 0; + _flag = false; + _flag1 = false; + _flag2 = true; + + switch (transMode) { + case TRANS_MASK0: + case TRANS_ALPHA0: + _flag2 = false; + _flag1 = true; + break; + case TRANS_MASK255: + case TRANS_ALPHA255: + _flag2 = true; + _flag1 = false; + break; + case TRANS_DEFAULT: + error("TRANS_DEFAULT not supported in transparency surface"); + default: + break; + } +} + +int CTransparencySurface::moveX() { + if (++_pos.x >= _surface->w) { + _pos.x = 0; + ++_pos.y; + } + + return 1; +} + +uint CTransparencySurface::getPixel() const { + const byte *pixelP = (const byte *)_surface->getBasePtr(_pos.x, _pos.y); + return _flag1 ? 0xFF - *pixelP : *pixelP; +} + +bool CTransparencySurface::isPixelTransparent1() const { + const byte *pixelP = (const byte *)_surface->getBasePtr(_pos.x, _pos.y); + return _flag1 ? *pixelP == 0xF0 : *pixelP == 0x10; +} + +bool CTransparencySurface::isPixelTransparent2() const { + const byte *pixelP = (const byte *)_surface->getBasePtr(_pos.x, _pos.y); + return _flag2 ? *pixelP == 0xF0 : *pixelP == 0x10; +} + +} // End of namespace Titanic |