#ifndef _COLOR_H_
#define _COLOR_H_
#pragma once

//#define MAKE_ARGB(a,r,g,b) \
//    ((uint32_t)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
//#define MAKE_RGBA(r,g,b,a) MAKE_ARGB(a,r,g,b)
//#define MAKE_XRGB(r,g,b)   MAKE_ARGB(0xff,r,g,b)
//
//#define GET_A(argb) (((argb&0xff000000)>>24)&0xff)
//#define GET_R(argb) (((argb&0x00ff0000)>>16)&0xff)
//#define GET_G(argb) (((argb&0x0000ff00)>>8)&0xff)
//#define GET_B(argb) ((argb&0x000000ff)&0xff)
//#define GET_COLOR(argb) \
//	(Color({\
//		GET_A(argb),\
//		GET_R(argb),\
//		GET_G(argb),\
//		GET_B(argb)\
//	}))
//
//namespace BasicColor
//{
//	enum EBasicColor
//	{
//		eWhite = MAKE_XRGB(255, 255, 255),
//		eBlack = MAKE_XRGB(0, 0, 0),
//		eRed = MAKE_XRGB(255, 0, 0),
//		eGreen = MAKE_XRGB(0, 255, 0),
//		eBlue = MAKE_XRGB(0, 0, 255),
//		eYellow = MAKE_XRGB(255, 255, 0),
//		eCyan = MAKE_XRGB(0, 255, 255),
//		eMagenta = MAKE_XRGB(255, 0, 255)
//	};
//};

struct Color
{
	union
	{
		struct
		{
			uint8_t a;
			uint8_t r;
			uint8_t g;
			uint8_t b;
		};
		uint32_t argb;
	};
};

#endif
