summaryrefslogtreecommitdiff
path: root/src/gui/palette.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/palette.cpp')
-rw-r--r--src/gui/palette.cpp199
1 files changed, 0 insertions, 199 deletions
diff --git a/src/gui/palette.cpp b/src/gui/palette.cpp
deleted file mode 100644
index 7fcf153fe..000000000
--- a/src/gui/palette.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008 Douglas Boffey <dougaboffey@netscape.net>
- * Copyright (C) 2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/palette.h"
-
-#include "utils/foreach.h"
-#include "utils/timer.h"
-
-#ifndef USE_SDL2
-#include <cmath>
-#endif // USE_SDL2
-
-#include "debug.h"
-
-const Color Palette::BLACK = Color(0, 0, 0);
-Palette::Palettes Palette::mInstances;
-
-const Color Palette::RAINBOW_COLORS[7] =
-{
- Color(255, 0, 0),
- Color(255, 153, 0),
- Color(255, 255, 0),
- Color(0, 153, 0),
- Color(0, 204, 204),
- Color(51, 0, 153),
- Color(153, 0, 153)
-};
-
-const int Palette::RAINBOW_COLOR_COUNT = 7;
-
-Palette::Palette(const int size) :
- mRainbowTime(tick_time),
- mColors(Colors(size)),
- mCharColors(),
- mGradVector()
-{
- mInstances.insert(this);
-}
-
-Palette::~Palette()
-{
- mInstances.erase(this);
-}
-
-const Color& Palette::getCharColor(const signed char c, bool &valid) const
-{
- const CharColors::const_iterator it = mCharColors.find(c);
- if (it != mCharColors.end())
- {
- valid = true;
- return mColors[(*it).second].color;
- }
-
- valid = false;
- return BLACK;
-}
-
-void Palette::advanceGradients()
-{
- FOR_EACH (Palettes::const_iterator, it, mInstances)
- (*it)->advanceGradient();
-}
-
-void Palette::advanceGradient()
-{
- const int time = get_elapsed_time(mRainbowTime);
- if (time > 5)
- {
- // For slower systems, advance can be greater than one (advance > 1
- // skips advance-1 steps). Should make gradient look the same
- // independent of the framerate.
- const int advance = time / 5;
-
- for (size_t i = 0, sz = mGradVector.size(); i < sz; i++)
- {
- ColorElem *const elem A_NONNULLPOINTER = mGradVector[i];
- if (elem == nullptr)
- continue;
-
- int delay = elem->delay;
- const GradientTypeT &grad = elem->grad;
-
- if (grad == GradientType::PULSE)
- delay = delay / 20;
-
- const int numOfColors = (elem->grad == GradientType::SPECTRUM ? 6 :
- grad == GradientType::PULSE ? 127 :
- RAINBOW_COLOR_COUNT);
-
- elem->gradientIndex = (elem->gradientIndex + advance)
- % (delay * numOfColors);
-
- const int gradIndex = elem->gradientIndex;
- const int pos = delay != 0 ? (gradIndex % delay) : gradIndex;
- int colIndex;
- if (delay != 0)
- colIndex = gradIndex / delay;
- else
- colIndex = gradIndex;
-
- Color &color = elem->color;
- int colVal;
-
- if (grad == GradientType::PULSE)
- {
- colVal = CAST_S32(255.0 *
- sin(M_PI * colIndex / numOfColors));
-
- const Color &col = elem->testColor;
-
- color.r = ((colVal * col.r) / 255) % (col.r + 1);
- color.g = ((colVal * col.g) / 255) % (col.g + 1);
- color.b = ((colVal * col.b) / 255) % (col.b + 1);
- }
- else if (grad == GradientType::SPECTRUM)
- {
- if ((colIndex % 2) != 0)
- { // falling curve
- if (delay != 0)
- {
- colVal = CAST_S32(255.0 *
- (cos(M_PI * pos / delay) + 1) / 2);
- }
- else
- {
- colVal = CAST_S32(255.0 *
- (cos(M_PI * pos) + 1) / 2);
- }
- }
- else
- { // ascending curve
- if (delay != 0)
- {
- colVal = CAST_S32(255.0 * (cos(M_PI *
- (delay - pos) / delay) + 1) / 2);
- }
- else
- {
- colVal = CAST_S32(255.0 * (cos(M_PI *
- (delay - pos)) + 1) / 2);
- }
- }
-
- color.r = (colIndex == 0 || colIndex == 5) ? 255 :
- (colIndex == 1 || colIndex == 4) ? colVal : 0;
- color.g = (colIndex == 1 || colIndex == 2) ? 255 :
- (colIndex == 0 || colIndex == 3) ? colVal : 0;
- color.b = (colIndex == 3 || colIndex == 4) ? 255 :
- (colIndex == 2 || colIndex == 5) ? colVal : 0;
- }
- else if (elem->grad == GradientType::RAINBOW)
- {
- const Color &startCol = RAINBOW_COLORS[colIndex];
- const Color &destCol
- = RAINBOW_COLORS[(colIndex + 1) % numOfColors];
- double startColVal;
- double destColVal;
-
- if (delay != 0)
- startColVal = (cos(M_PI * pos / delay) + 1) / 2;
- else
- startColVal = 0;
-
- destColVal = 1 - startColVal;
-
- color.r = CAST_S32(startColVal
- * startCol.r + destColVal * destCol.r);
-
- color.g = CAST_S32(startColVal
- * startCol.g + destColVal * destCol.g);
-
- color.b = CAST_S32(startColVal
- * startCol.b + destColVal * destCol.b);
- }
- }
-
- mRainbowTime = tick_time;
- }
-}