hgecolor.cpp
资源名称:hge181.rar [点击查看]
上传用户:jnfxsk
上传日期:2022-06-16
资源大小:3675k
文件大小:2k
源码类别:
游戏引擎
开发平台:
Visual C++
- /*
- ** Haaf's Game Engine 1.7
- ** Copyright (C) 2003-2007, Relish Games
- ** hge.relishgames.com
- **
- ** hgeColor*** helper classes implementation
- */
- #include "....includehgecolor.h"
- #include <math.h>
- void hgeColorHSV::SetHWColor(DWORD col)
- {
- float r, g, b;
- float minv, maxv, delta;
- float del_R, del_G, del_B;
- a = (col>>24) / 255.0f;
- r = ((col>>16) & 0xFF) / 255.0f;
- g = ((col>>8) & 0xFF) / 255.0f;
- b = (col & 0xFF) / 255.0f;
- minv = min(min(r, g), b);
- maxv = max(max(r, g), b);
- delta = maxv - minv;
- v = maxv;
- if (delta == 0)
- {
- h = 0;
- s = 0;
- }
- else
- {
- s = delta / maxv;
- del_R = (((maxv - r) / 6) + (delta / 2)) / delta;
- del_G = (((maxv - g) / 6) + (delta / 2)) / delta;
- del_B = (((maxv - b) / 6) + (delta / 2)) / delta;
- if (r == maxv) {h = del_B - del_G;}
- else if (g == maxv) {h = (1.0f / 3.0f) + del_R - del_B;}
- else if (b == maxv) {h = (2.0f / 3.0f) + del_G - del_R;}
- if (h < 0) h += 1;
- if (h > 1) h -= 1;
- }
- }
- DWORD hgeColorHSV::GetHWColor() const
- {
- float r, g, b;
- float xh, i, p1, p2, p3;
- if (s == 0)
- {
- r = v;
- g = v;
- b = v;
- }
- else
- {
- xh = h * 6;
- if(xh == 6) xh=0;
- i = floorf(xh);
- p1 = v * (1 - s);
- p2 = v * (1 - s * (xh - i));
- p3 = v * (1 - s * (1 - (xh - i)));
- if (i == 0) {r = v; g = p3; b = p1;}
- else if (i == 1) {r = p2; g = v; b = p1;}
- else if (i == 2) {r = p1; g = v; b = p3;}
- else if (i == 3) {r = p1; g = p2; b = v; }
- else if (i == 4) {r = p3; g = p1; b = v; }
- else {r = v; g = p1; b = p2;}
- }
- return (DWORD(a*255.0f)<<24) + (DWORD(r*255.0f)<<16) + (DWORD(g*255.0f)<<8) + DWORD(b*255.0f);
- }