#include #include #include "engine.h" #include "mcolor.h" Color mogltk::ColorP::Min(0, 0, 0, 0), mogltk::ColorP::Max = WHITE; mogltk::ColorP::ColorP(const Color & ac) : c(ac) { } mogltk::ColorP::ColorP(Uint8 ar, Uint8 ag, Uint8 ab, Uint8 aa) : c(ar, ag, ab, aa) { } void mogltk::ColorP::Bind() { glColor4d((double) MIN(MAX(c.R, Min.R), Max.R) / 255, (double) MIN(MAX(c.G, Min.G), Max.G) / 255, (double) MIN(MAX(c.B, Min.B), Max.B) / 255, (double) MIN(MAX(c.A, Min.A), Max.A) / 255); } Uint32 mogltk::ColorP::toSDL(SDL_PixelFormat * f) { if (!f) f = mogltk::engine::base_o->getsurface()->format; return SDL_MapRGBA(f, MIN(MAX(c.R, Min.R), Max.R), MIN(MAX(c.G, Min.G), Max.G), MIN(MAX(c.B, Min.B), Max.B), MIN(MAX(c.A, Min.A), Max.A)); } void mogltk::ColorP::fromSDL(Uint32 p, SDL_PixelFormat * f) { if (!f) f = mogltk::engine::base_o->getsurface()->format; SDL_GetRGBA(p, f, &c.R, &c.G, &c.B, &c.A); } void mogltk::ColorP::Norm() { c.R = MIN(MAX(c.R, Min.R), Max.R); c.G = MIN(MAX(c.R, Min.G), Max.G); c.B = MIN(MAX(c.R, Min.B), Max.B); c.A = MIN(MAX(c.R, Min.A), Max.A); } bool mogltk::ColorP::operator==(const ColorP & nc) { return c == nc.c; } Color * mogltk::ColorP::operator->() { return &c; }