6 #ifndef _INC_cColorRef_H
7 #define _INC_cColorRef_H
12 #include "../GrayLibBase.h"
19 #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((COLORREF)(BYTE)(b))<<16)))
20 #define CLR_INVALID 0xFFFFFFFF
23 #ifndef D3DCOLOR_DEFINED
25 #define D3DCOLOR_DEFINED
28 #define D3DCOLOR_ARGB(a,r,g,b) ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
29 #define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
77 #ifdef USE_LITTLE_ENDIAN
215 return GetARGB(COLOR_ALPHA_OPAQUE, r,
g, b);
222 #ifdef USE_LITTLE_ENDIAN
294 : r(_r),
g(_g), b(_b)
299 return !::memcmp(
this, &color2,
sizeof(color2)) ;
303 return ::memcmp(
this, &color2,
sizeof(color2)) ;
388 m_color = (
COLOR555_t)((((cVal >> 3) & 0x1f) << 10) | (((cVal >> (8 + 3)) & 0x1f) << 5) | ((cVal >> (16 + 3)) & 0x1f));
443 m_color = (
COLOR565_t)((((cVal >> 3) & 0x1f) << 11) | (((cVal >> (8 + 2)) & 0x3f) << 5) | ((cVal >> (16 + 3)) & 0x1f));
465 #define ColorRefDEF(n,r,g,b) COLORREF_##n = RGB(r,g,b),
477 #define ColorRefDEF(n,r,g,b) D3DCOLOR_##n = D3DCOLOR_XRGB(r,g,b),
519 Conv_BGR888_RGB888(pbSrc, pbDst);
526 Conv_XRGB8888_RGB888(pbSrc, pbDst);
527 pbDst[3] = COLOR_ALPHA_OPAQUE;
532 Conv_BGR888_RGB888(pbSrc, pbDst);
533 pbDst[3] = COLOR_ALPHA_OPAQUE;
538 Conv_XRGB8888_RGB888(pbSrc, pbDst);
539 const bool isKey = (pbSrc[0] == m_cAlphaRef.
b) && (pbSrc[1] == m_cAlphaRef.
g) && (pbSrc[2] == m_cAlphaRef.
r);
540 pbDst[3] = isKey ? COLOR_ALPHA_TRANSPARENT : COLOR_ALPHA_OPAQUE;
544 Conv_XRGB8888_RGB888(pbSrc, pbDst);
545 const bool isKey = (pbSrc[0] == m_cAlphaRef.
r) && (pbSrc[1] == m_cAlphaRef.
g) && (pbSrc[2] == m_cAlphaRef.
b);
546 pbDst[3] = isKey ? COLOR_ALPHA_TRANSPARENT : COLOR_ALPHA_OPAQUE;
551 Conv_BGR888_RGB888(pbSrc, pbDst);
552 const bool isKey = (pbSrc[0] == m_cAlphaRef.
r) && (pbSrc[1] == m_cAlphaRef.
g) && (pbSrc[2] == m_cAlphaRef.
b);
553 pbDst[3] = isKey ? COLOR_ALPHA_TRANSPARENT : COLOR_ALPHA_OPAQUE;
558 Conv_BGR888_RGB888(pbSrc, pbDst);
559 const bool isKey = (pbSrc[0] == m_cAlphaRef.
b) && (pbSrc[1] == m_cAlphaRef.
g) && (pbSrc[2] == m_cAlphaRef.
r);
560 pbDst[3] = isKey ? COLOR_ALPHA_TRANSPARENT : COLOR_ALPHA_OPAQUE;
595 pbDst[0] = ((c >> 8) & 0xf8) | ((c >> 13) & 0x07);
596 pbDst[1] = ((c >> 3) & 0xfc) | ((c >> 9) & 0x03);
597 pbDst[2] = ((c << 3) & 0xf8) | ((c >> 2) & 0x07);
601 pbDst[0] = ((c << 3) & 0xf8) | ((c >> 2) & 0x07);
602 pbDst[1] = ((c >> 3) & 0xfc) | ((c >> 9) & 0x03);
603 pbDst[2] = ((c >> 8) & 0xf8) | ((c >> 13) & 0x07);
608 pbDst[0] = ((c >> 7) & 0xf8) | ((c >> 12) & 0x07);
609 pbDst[1] = ((c >> 2) & 0xf8) | ((c >> 7) & 0x07);
610 pbDst[2] = ((c << 3) & 0xf8) | ((c >> 2) & 0x07);
614 pbDst[0] = ((c << 3) & 0xf8) | ((c >> 2) & 0x07);
615 pbDst[1] = ((c >> 2) & 0xf8) | ((c >> 7) & 0x07);
616 pbDst[2] = ((c >> 7) & 0xf8) | ((c >> 12) & 0x07);
622 return ((c >> 1) & 0x7fe0) | (c & 0x1f) | wAlpha;
#define CATTR_PACKED
Definition: GrayCore.h:87
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define IS_INDEX_GOOD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:35
Using X files without the sources and the makefile How to use you just create a debug directory e g
Definition: Readme.txt:21
DWORD D3DCOLOR
Stuff normally defined in windows.h or DirectX headers.
Definition: cColorRef.h:24
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define DEBUG_CHECK(exp)
Definition: cDebugAssert.h:90
UINT32 COLORREF
ABGR (high to low bits)
Definition: cVariantData.h:21
Definition: cColorRef.h:339
cColor555(COLOR_ELEM_t _r, COLOR_ELEM_t _g, COLOR_ELEM_t _b, bool bOpaque=true) noexcept
Definition: cColorRef.h:356
COLORREF get_ColorRef() const noexcept
Definition: cColorRef.h:390
COLOR_ELEM_t get_G() const noexcept
Definition: cColorRef.h:371
D3DCOLOR get_ColorDX() const noexcept
Definition: cColorRef.h:395
COLOR_ELEM_t get_B() const noexcept
Definition: cColorRef.h:376
static COLOR555_t Make(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b, bool bOpaque) noexcept
Definition: cColorRef.h:347
cColor555(COLOR555_t c=0) noexcept
Definition: cColorRef.h:352
void put_ColorRef(COLORREF cVal) noexcept
Definition: cColorRef.h:386
static const COLOR555_t k_ALPHA_MASK
Definition: cColorRef.h:343
COLOR_ELEM_t get_A() const noexcept
Definition: cColorRef.h:381
COLOR_ELEM_t get_R() const noexcept
Definition: cColorRef.h:366
COLOR555_t m_color
Definition: cColorRef.h:344
Definition: cColorRef.h:403
static COLOR565_t Make(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:410
void put_ColorRef(COLORREF cVal) noexcept
Definition: cColorRef.h:441
COLOR565_t m_color
Definition: cColorRef.h:407
COLORREF get_ColorRef() const noexcept
Definition: cColorRef.h:445
COLOR_ELEM_t get_R() const noexcept
Definition: cColorRef.h:428
D3DCOLOR get_ColorDX() const noexcept
Definition: cColorRef.h:450
cColor565(COLOR565_t c=0) noexcept
Definition: cColorRef.h:415
cColor565(COLOR_ELEM_t _r, COLOR_ELEM_t _g, COLOR_ELEM_t _b) noexcept
Definition: cColorRef.h:419
COLOR_ELEM_t get_B() const noexcept
Definition: cColorRef.h:436
COLOR_ELEM_t get_G() const noexcept
Definition: cColorRef.h:432
Definition: cColorRef.h:276
cColor888() noexcept
Definition: cColorRef.h:285
COLORREF get_ColorRef() const noexcept
Definition: cColorRef.h:326
cColor888(COLORREF color) noexcept
Definition: cColorRef.h:289
COLOR_ELEM_t get_G() const noexcept
Definition: cColorRef.h:317
cColor888(COLOR_ELEM_t _r, COLOR_ELEM_t _g, COLOR_ELEM_t _b) noexcept
Definition: cColorRef.h:293
COLOR_ELEM_t get_R() const noexcept
Definition: cColorRef.h:313
COLOR_ELEM_t GetElem(ITERATE_t i) const noexcept
Definition: cColorRef.h:306
D3DCOLOR get_ColorDX() const noexcept
Definition: cColorRef.h:331
COLOR_ELEM_t g
memory is GDI order. [0] = red
Definition: cColorRef.h:282
COLOR_ELEM_t b
Definition: cColorRef.h:283
COLOR_ELEM_t get_B() const noexcept
Definition: cColorRef.h:321
COLOR_ELEM_t r
Definition: cColorRef.h:281
Definition: cColorRef.h:483
static void Conv_BGR888_XRGB8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:529
static void Conv_RGB1555_BGR888(COLOR565_t c, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:606
static void Conv_ABGR8888_ARGB8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:516
cColor555 m_cAlpha555
if 16 bit pixel source. alpha if XRGB1555
Definition: cColorRef.h:489
static void Conv_XRGB8888_RGB888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:500
static void Conv_RGB565_BGR888(COLOR565_t c, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:593
static void Conv_BGR888_RGB888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:507
static COLOR555_t Conv_BGR888_RGB1555(const COLOR_ELEM_t *pbSrc, bool bOpaque) noexcept
Definition: cColorRef.h:576
void Conv_BGR888_ARGB8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:549
static void Conv_RGB565_RGB888(COLOR565_t c, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:599
static COLOR555_t Conv_RGB565_RGB1555(COLOR565_t c, bool bOpaque) noexcept
Definition: cColorRef.h:619
static void Conv_BGR888_XBGR8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:523
static COLOR565_t Conv_RGB888_RGB565(const COLOR_ELEM_t *pbSrc) noexcept
Definition: cColorRef.h:569
static COLOR565_t Conv_BGR888_RGB565(const COLOR_ELEM_t *pbSrc) noexcept
Definition: cColorRef.h:563
static void Conv_RGB1555_RGB888(COLOR565_t c, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:612
cColor565 m_cAlpha565
if 16 bit pixel source. alpha if RGB565
Definition: cColorRef.h:490
void Conv_RGB888_ARGB8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:536
void Conv_BGR888_ABGR8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:542
void Conv_RGB888_ABGR8888(const COLOR_ELEM_t *pbSrc, COLOR_ELEM_t *pbDst) noexcept
Definition: cColorRef.h:555
static COLOR555_t Conv_RGB888_RGB1555(const COLOR_ELEM_t *pbSrc, bool bOpaque) noexcept
Definition: cColorRef.h:584
cColorConv() noexcept
Definition: cColorRef.h:493
cColor888 m_cAlphaRef
if >= 24 bit pixel source. use this color as alpha.
Definition: cColorRef.h:488
Definition: cColorRef.h:147
COLOR16_t get_Grey16() const noexcept
Definition: cColorRef.h:259
static COLOR_ELEM_t GetR(D3DCOLOR color) noexcept
Definition: cColorRef.h:184
COLOR_ELEM_t get_A() const noexcept
Definition: cColorRef.h:241
static D3DCOLOR GetXRGB(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:212
cColorDX(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:163
static COLOR_ELEM_t GetA(D3DCOLOR color) noexcept
Definition: cColorRef.h:179
cColorDX(D3DCOLOR color=0) noexcept
Definition: cColorRef.h:159
static const D3DCOLOR k_ALPHA_MASK
Definition: cColorRef.h:172
COLOR_ELEM_t get_G() const noexcept
Definition: cColorRef.h:233
D3DCOLOR get_ColorDX() const noexcept
Definition: cColorRef.h:268
D3DCOLOR m_color
32 bit color. D3DCOLOR = [0]=blue,[1]=green,[2]=red,[3] = maybe alpha or ignored.
Definition: cColorRef.h:156
COLOR_ELEM_t GetElem(ITERATE_t i) const
Definition: cColorRef.h:218
static COLOR_ELEM_t GetB(D3DCOLOR color) noexcept
Definition: cColorRef.h:194
COLOR_ELEM_t get_R() const noexcept
Definition: cColorRef.h:229
static const int k_ALPHA_SHIFT
Definition: cColorRef.h:173
static COLOR_ELEM_t GetG(D3DCOLOR color) noexcept
Definition: cColorRef.h:189
static D3DCOLOR GetAC(COLOR_ELEM_t alpha, D3DCOLOR color) noexcept
Definition: cColorRef.h:200
COLORREF get_ColorRef() const noexcept
Definition: cColorRef.h:263
COLOR_ELEM_t get_B() const noexcept
Definition: cColorRef.h:237
static D3DCOLOR GetARGB(COLOR_ELEM_t a, COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:205
void put_A(COLOR_ELEM_t a) noexcept
Definition: cColorRef.h:246
cColorDX(COLOR_ELEM_t a, COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:167
void put_RGB(D3DCOLOR c) noexcept
Definition: cColorRef.h:252
Definition: cColorRef.h:44
cColorRef(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:61
static COLORREF GetRGB(COLOR_ELEM_t r, COLOR_ELEM_t g, COLOR_ELEM_t b) noexcept
Definition: cColorRef.h:83
COLORREF m_color
32 bit color. GDI format. [0]=red,[1]=green,[2]=blue,[3] = maybe alpha or ignored.
Definition: cColorRef.h:54
COLOR_ELEM_t get_B() const noexcept
Definition: cColorRef.h:125
COLORREF get_ColorRef() const noexcept
Definition: cColorRef.h:135
COLOR16_t get_Grey16() const noexcept
Definition: cColorRef.h:130
COLOR_ELEM_t get_R() const noexcept
Definition: cColorRef.h:117
bool isValidColor() const noexcept
Definition: cColorRef.h:66
static COLOR_ELEM_t GetG(COLORREF color) noexcept
Definition: cColorRef.h:93
static D3DCOLOR ToD3D(COLORREF color) noexcept
Definition: cColorRef.h:104
static COLOR_ELEM_t GetB(COLORREF color) noexcept
Definition: cColorRef.h:98
COLOR_ELEM_t get_G() const noexcept
Definition: cColorRef.h:121
static COLORREF FromD3D(D3DCOLOR color) noexcept
Definition: cColorRef.h:108
COLOR_ELEM_t GetElem(ITERATE_t i) const noexcept
Definition: cColorRef.h:72
D3DCOLOR get_ColorDX() const noexcept
Definition: cColorRef.h:139
static COLOR_ELEM_t GetR(COLORREF color) noexcept
Definition: cColorRef.h:88
cColorRef(COLORREF color=0) noexcept
Definition: cColorRef.h:57
WORD COLOR16_t
A 16 bit greyscale color.
Definition: cColorRef.h:39
WORD COLOR555_t
A 16 bit X555 type color pixel. R=high bits, B=low value bits. 1 alpha bit.
Definition: cColorRef.h:41
D3DCOLOR_TYPE_
Definition: cColorRef.h:471
BYTE COLOR_ELEM_t
A single 8 bit color element. alpha, red, green, or blue intensity as 0-255.
Definition: cColorRef.h:34
COLORREF_TYPE_
Definition: cColorRef.h:460
WORD COLOR565_t
A 16 bit 565 type color pixel. R=high bits, B=low value bits.
Definition: cColorRef.h:40
int ITERATE_t
like size_t but signed
Definition: Index.h:28
bool operator!=(const cTimeDouble &dt1, const cTimeDouble &dt2)
Definition: cTimeDouble.h:254
bool operator==(const cTimeDouble &dt1, const cTimeDouble &dt2)
Definition: cTimeDouble.h:250