hgecolor.h
上传用户:maxiaolivb
上传日期:2022-06-07
资源大小:915k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /*
  2. ** Haaf's Game Engine 1.5
  3. ** Copyright (C) 2003-2004, Relish Games
  4. ** hge.relishgames.com
  5. **
  6. ** hgeColor helper class
  7. */
  8. #ifndef HGECOLOR_H
  9. #define HGECOLOR_H
  10. #include "hge.h"
  11. inline void ColorClamp(float &x) { if(x<0.0f) x=0.0f; if(x>1.0f) x=1.0f; }
  12. class hgeColor
  13. {
  14. public:
  15. float r,g,b,a;
  16. hgeColor(float _r, float _g, float _b, float _a) { r=_r; g=_g; b=_b; a=_a; }
  17. hgeColor(DWORD col) { SetHWColor(col); }
  18. hgeColor() { r=g=b=a=0; }
  19. hgeColor operator- (const hgeColor &c) { return hgeColor(r-c.r, g-c.g, b-c.b, a-c.a); }
  20. hgeColor operator+ (const hgeColor &c) { return hgeColor(r+c.r, g+c.g, b+c.b, a+c.a); }
  21. hgeColor operator* (float scalar) { return hgeColor(r*scalar, g*scalar, b*scalar, a*scalar); }
  22. hgeColor& operator-= (const hgeColor &c) { r-=c.r; g-=c.g; b-=c.b; a-=c.a; return *this; }
  23. hgeColor& operator+= (const hgeColor &c) { r+=c.r; g+=c.g; b+=c.b; a+=c.a; return *this; }
  24. hgeColor& operator*= (float scalar) { r*=scalar; g*=scalar; b*=scalar; a*=scalar; return *this; }
  25. bool operator== (const hgeColor &c) { return (r==c.r && g==c.g && b==c.b && a==c.a); }
  26. bool operator!= (const hgeColor &c) { return (r!=c.r || g!=c.g || b!=c.b || a!=c.a); }
  27. void Clamp() { ColorClamp(r); ColorClamp(g); ColorClamp(b); ColorClamp(a); }
  28. void SetHWColor(DWORD col) { a=(col>>24)/255.0f; r=((col>>16) & 0xFF)/255.0f; g=((col>>8) & 0xFF)/255.0f; b=(col & 0xFF)/255.0f; }
  29. DWORD GetHWColor() const { return (DWORD(a*255.0f)<<24) + (DWORD(r*255.0f)<<16) + (DWORD(g*255.0f)<<8) + DWORD(b*255.0f); }
  30. };
  31. inline hgeColor operator* (const hgeColor &c, float s) { return hgeColor(s*c.r, s*c.g, s*c.b, s*c.a); }
  32. inline hgeColor operator* (float s, const hgeColor &c) { return hgeColor(s*c.r, s*c.g, s*c.b, s*c.a); }
  33. #endif