CPaletteRGBA.h 775 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. namespace Gfx
  3. {
  4. #pragma pack(1)
  5. typedef ui8 ColorRGB[3]; // 24bit RGB color
  6. union ColorRGBA // 32bit RGBA color
  7. {
  8. ui32 color32;
  9. ui8 arr[4];
  10. struct {
  11. ui8 R,G,B,A;
  12. } comp;
  13. inline ColorRGBA() {};
  14. inline ColorRGBA(ui32 c) : color32(c) {};
  15. };
  16. #pragma pack()
  17. class CPaletteRGBA
  18. {
  19. friend class CPalettedAnimation;
  20. ui32 texHandle; // OpenGL texture handle
  21. bool shared;
  22. ColorRGBA buffer[256];
  23. ~CPaletteRGBA();
  24. public:
  25. CPaletteRGBA(const ColorRGBA palBuff[]); // 32bit RGBA source
  26. CPaletteRGBA(const ColorRGB palBuff[], int alphaMode, bool shr=false); // 24-bit RGB source
  27. void Unlink();
  28. inline ui32 getTexHandle() { return texHandle; };
  29. void loadToVideoRAM();
  30. void unloadFromVideoRAM();
  31. };
  32. }