diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2012-07-26 22:26:19 +0200 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2012-07-26 22:26:19 +0200 |
commit | 4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2 (patch) | |
tree | 04cd5a00e080407ed243042e2dd7efe4ba94d4f8 /src/graphics/common/color.cpp | |
parent | 045f17a274c0cd41aebd34d5759f7fe791b680e4 (diff) | |
download | colobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.tar.gz colobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.tar.bz2 colobot-4ddcd9f810fa588ccf90442f7b4e5ddf385e85f2.zip |
Change of paths in src/graphics
- moved abstract core to src/graphics/core
- moved proper graphics engine to src/graphics/engine
Diffstat (limited to 'src/graphics/common/color.cpp')
-rw-r--r-- | src/graphics/common/color.cpp | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/src/graphics/common/color.cpp b/src/graphics/common/color.cpp deleted file mode 100644 index c1b7337..0000000 --- a/src/graphics/common/color.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// * This file is part of the COLOBOT source code -// * Copyright (C) 2012, Polish Portal of Colobot (PPC) -// * -// * 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 3 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, see http://www.gnu.org/licenses/. - -// color.cpp - -#include "graphics/common/color.h" - -#include "math/func.h" - - -Gfx::ColorHSV Gfx::RGB2HSV(Gfx::Color color) -{ - Gfx::ColorHSV result; - - float min = Math::Min(color.r, color.g, color.b); - float max = Math::Max(color.r, color.g, color.b); - - result.v = max; // intensity - - if ( max == 0.0f ) - { - result.s = 0.0f; // saturation - result.h = 0.0f; // undefined color! - } - else - { - float delta = max-min; - result.s = delta/max; // saturation - - if ( color.r == max ) // between yellow & magenta - { - result.h = (color.g-color.b)/delta; - } - else if ( color.g == max ) // between cyan & yellow - { - result.h = 2.0f+(color.b-color.r)/delta; - } - else // between magenta & cyan - { - result.h = 4.0f+(color.r-color.g)/delta; - } - - result.h *= 60.0f; // in degrees - if ( result.h < 0.0f ) result.h += 360.0f; - result.h /= 360.0f; // 0..1 - } - - return result; -} - -Gfx::Color Gfx::HSV2RGB(Gfx::ColorHSV color) -{ - Gfx::Color result; - - color.h = Math::Norm(color.h)*360.0f; - color.s = Math::Norm(color.s); - color.v = Math::Norm(color.v); - - if ( color.s == 0.0f ) // zero saturation? - { - result.r = color.v; - result.g = color.v; - result.b = color.v; // gray - } - else - { - if ( color.h == 360.0f ) color.h = 0.0f; - color.h /= 60.0f; - int i = (int)color.h; // integer part (0 .. 5) - float f = color.h-i; // fractional part - - float v = color.v; - float p = color.v*(1.0f-color.s); - float q = color.v*(1.0f-(color.s*f)); - float t = color.v*(1.0f-(color.s*(1.0f-f))); - - switch (i) - { - case 0: result.r=v; result.g=t; result.b=p; break; - case 1: result.r=q; result.g=v; result.b=p; break; - case 2: result.r=p; result.g=v; result.b=t; break; - case 3: result.r=p; result.g=q; result.b=v; break; - case 4: result.r=t; result.g=p; result.b=v; break; - case 5: result.r=v; result.g=p; result.b=q; break; - } - } - - return result; -} - |