C 图像处理 颜色相关宏定义
很多年前整理的,像素处理的宏定义,包括r8g8b8到r5g6b5之间的相互转化,浮点数像素与整数值之间的相互转化,像素值的插值、取反等处理。具体没什么好说的,宏定义的代码还是很容易看的。这套东西对搞图像处理的来说非常有意义。
/**************************************************************** File name : WhyColorDefines.h
Author : 叶飞影
Version : 2.0
Create Date : 2010/08/05
Description : 颜色相关宏定义 *****************************************************************/ #ifndef __WhyColorDefines_H__
#define __WhyColorDefines_H__ // INCLUDES ----------------------------------------------------------------------------- #include "WhyDefines.h" // -------------------------------------------------------------------------------------- enum YePixelType
{
YE_PT_INVALID = ,
YE_PT_GRAY_8 = ,
YE_PT_A8R8G8B8 = ,
YE_PT_R8G8B8 = ,
YE_PT_A1R5G5B5 = ,
YE_PT_R5G6B5 = ,
YE_PT_A4R4G4B4 = ,
}; // -------------------------------------------------------------------------------------- #define YD_INT_TO_BYTE(x) ( (x) < 0 ? 0 : (((x) > 255) ? 255 : (x)) )
#define YD_REAL_TO_BYTE(x) ( (x) < 0 ? 0 : (((x) > 1.0f) ? 255 : (Ybyte)((x) * 255)) )
#define YD_BYTE_TO_REAL(x) ( (x) * 0.00392156862745f); // x / 255 // -------------------------------------------------------------------------------------- /*****A8R8G8B8*****/ // 通过R,G,B生成一整数表示颜色
#define YD_RGB(r,g,b) \
( (Ycolor) ( (Ybyte)(b) | \
( (Ycolor(Ybyte(g))) << ) | \
( (Ycolor(Ybyte(r))) << ) | \
0xff000000 ) \
) // 通过R,G,B,A生成一整数表示颜色
#define YD_ARGB(a,r,g,b) \
( (Ycolor) ( (Ybyte)(b) | \
( (Ycolor(Ybyte(g))) << ) | \
( (Ycolor(Ybyte(r))) << ) | \
( (Ycolor(Ybyte(a))) << ) ) \
) // 交换R分量与B分量
#define YD_SWITCH_R_B(color) \
{ \
Ycolor a = YD_GET_A(color); \
Ycolor r = YD_GET_R(color); \
Ycolor g = YD_GET_G(color); \
Ycolor b = YD_GET_B(color); \
color = YD_ARGB(a,b,g,r); \
} // 修改A分量
#define YD_COLOR_ALPHA(color, alpha) \
{ \
Yuint a = YD_GET_A(color); \
a = (Yuint)(a*alpha); \
color &= 0x00ffffff; \
color |= (a << ); \
} #define YD_GET_A(color) ( ((color) & 0xff000000) >> 24L )
#define YD_GET_R(color) ( ((color) & 0x00ff0000) >> 16L )
#define YD_GET_G(color) ( ((color) & 0x0000ff00) >> 8L )
#define YD_GET_B(color) ( ((color) & 0x000000ff) ) #define YD_GET_ARGB(color, a, r, g, b) \
{ \
a = YD_GET_A(color); \
r = YD_GET_R(color); \
g = YD_GET_G(color); \
b = YD_GET_B(color); \
} // 颜色各分量的平均值
#define YD_ARGB_AVERAGE(color1, color2, colorDest) \
{ \
Ycolor a1, r1, g1, b1; \
Ycolor a2, r2, g2, b2; \
Ycolor ad, rd, gd, bd; \
YD_GET_ARGB(color1, a1, r1, g1, b1); \
YD_GET_ARGB(color2, a2, r2, g2, b2); \
ad = (a1 + a2) / ; \
rd = (r1 + r2) / ; \
gd = (g1 + g2) / ; \
bd = (b1 + b2) / ; \
colorDest = YD_ARGB(ad, rd, gd, bd); \
} // 颜色各分量的线性插值
#define YD_ARGB_LERP(color1, color2, colorDest, radio) \
{ \
Ycolor a1, r1, g1, b1; \
Ycolor a2, r2, g2, b2; \
Ycolor ad, rd, gd, bd; \
YD_GET_ARGB(color1, a1, r1, g1, b1); \
YD_GET_ARGB(color2, a2, r2, g2, b2); \
ad = (Ycolor)YD_LERP(a1, a2, radio); \
rd = (Ycolor)YD_LERP(r1, r2, radio); \
gd = (Ycolor)YD_LERP(g1, g2, radio); \
bd = (Ycolor)YD_LERP(b1, b2, radio); \
colorDest = YD_ARGB(ad, rd, gd, bd); \
} #define YD_GET_RGB(color, r, g, b) \
{ \
r = YD_GET_R(color); \
g = YD_GET_G(color); \
b = YD_GET_B(color); \
} #define YD_RGB_AVERAGE(color1, color2, colorDest) \
{ \
Ycolor r1, g1, b1; \
Ycolor r2, g2, b2; \
Ycolor rd, gd, bd; \
YD_GET_RGB(color1, r1, g1, b1); \
YD_GET_RGB(color2, r2, g2, b2); \
rd = (r1 + r2) / ; \
gd = (g1 + g2) / ; \
bd = (b1 + b2) / ; \
colorDest = YD_RGB(rd, gd, bd); \
} // 颜色各分量的线性插值
#define YD_RGB_LERP(color1, color2, colorDest, radio) \
{ \
Yuint32 r1, g1, b1; \
Yuint32 r2, g2, b2; \
Yuint32 rd, gd, bd; \
YD_GET_RGB(color1, r1, g1, b1); \
YD_GET_RGB(color2, r2, g2, b2); \
rd = (Yuint32)YD_LERP(r1, r2, radio); \
gd = (Yuint32)YD_LERP(g1, g2, radio); \
bd = (Yuint32)YD_LERP(b1, b2, radio); \
colorDest = YD_RGB(ad, rd, gd, bd); \
} // 颜色缩放
#define YD_COLOR_SCALE(colorDest, color, scale) \
{ \
Yuint32 a, r, g, b; \
Yuint32 ad, rd, gd, bd; \
YD_GET_ARGB(color, a, r, g, b); \
rd = (Yuint32)(r*scale); \
gd = (Yuint32)(g*scale); \
bd = (Yuint32)(b*scale); \
ad = (Yuint32)(a*scale); \
colorDest = YD_ARGB(ad, rd, gd, bd); \
} #define YD_COLOR_RGB_SCALE(colorDest, color, scale) \
{ \
Yuint32 a, r, g, b; \
Yuint32 rd, gd, bd; \
YD_GET_ARGB(color, a, r, g, b); \
rd = (Yuint32)(r*scale); \
gd = (Yuint32)(g*scale); \
bd = (Yuint32)(b*scale); \
colorDest = YD_ARGB(a, rd, gd, bd); \
} #define YD_COLOR_ALPHA_SCALE(colorDest, color, scale) \
{ \
Yuint32 a, r, g, b; \
Yuint32 ad; \
YD_GET_ARGB(color, a, r, g, b); \
ad = (Yuint32)(a*scale); \
colorDest = YD_ARGB(ad, r, g, b); \
} // 颜色置反
#define YD_COLOR_INVERSE(colorDest, color) \
{ \
Yuint32 a, r, g, b; \
Yuint32 ad, rd, gd, bd; \
YD_GET_ARGB(color, a, r, g, b); \
rd = - r; \
gd = - g; \
bd = - b; \
ad = - a; \
colorDest = YD_ARGB(ad, rd, gd, bd); \
} #define YD_COLOR_RGB_INVERSE(colorDest, color) \
{ \
Yuint32 a, r, g, b; \
Yuint32 rd, gd, bd; \
YD_GET_ARGB(color, a, r, g, b); \
rd = - r; \
gd = - g; \
bd = - b; \
colorDest = YD_ARGB(a, rd, gd, bd); \
} #define YD_COLOR_ALPHA_INVERSE(colorDest, color) \
{ \
Yuint32 a, r, g, b; \
Yuint32 ad; \
YD_GET_ARGB(color, a, r, g, b); \
ad = - a; \
colorDest = YD_ARGB(ad, r, g, b); \
} // -------------------------------------------------------------------------------------- /*****R5G6B5*****/ #define YD_R5G6B5(r,g,b) \
( (YWord) ( ( (Ybyte(b) >> 3L) ) | \
( (YWord(Ybyte(g)) >> 2L) << 5L ) | \
( (YWord(Ybyte(r)) >> 3L) << 11L ) \
) #define YD_GET_565_R(color) ( ((color) & 0x0000f800) >> 8L )
#define YD_GET_565_G(color) ( ((color) & 0x000007E0) >> 3L )
#define YD_GET_565_B(color) ( ((color) & 0x0000001f) << 3L ) #define YD_GET_565_RGB(color, r, g, b) \
{ \
r = YD_GET_565_R(color); \
g = YD_GET_565_G(color); \
b = YD_GET_565_B(color); \
} // -------------------------------------------------------------------------------------- /*****A1R5G5B5*****/ #define YD_R5G5B5(r,g,b) \
( (YWord) ( ( (Ybyte(b) >> 3L) ) | \
( (YWord(Ybyte(g)) >> 3L) << 5L ) | \
( (YWord(Ybyte(r)) >> 3L) << 10L ) \
) #define YD_A1R5G5B5(a,r,g,b) \
( (YWord) ( ( (Ybyte(b) >> 3L) ) | \
( (YWord(Ybyte(g)) >> 3L) << 5L ) | \
( (YWord(Ybyte(r)) >> 3L) << 10L ) | \
( (YWord((a) & 1L) << 15L) ) \
) #define YD_GET_1555_A(color) ( ((color) & 0x00008000) ? 255 : 0 )
#define YD_GET_1555_R(color) ( ((color) & 0x00007B00) >> 7L )
#define YD_GET_1555_G(color) ( ((color) & 0x000003E0) >> 2L )
#define YD_GET_1555_B(color) ( ((color) & 0x0000001f) << 3L ) #define YD_GET_1555_RGB(color, a, r, g, b) \
{ \
a = YD_GET_1555_A(color); \
r = YD_GET_1555_R(color); \
g = YD_GET_1555_G(color); \
b = YD_GET_1555_B(color); \
} // -------------------------------------------------------------------------------------- /*****A4R4G4B4*****/ #define YD_R4G4B4(r,g,b) \
( (YWord) ( ( (Ybyte(b) >> 4L) ) | \
( (YWord(Ybyte(g)) >> 4L) << 4L ) | \
( (YWord(Ybyte(r)) >> 4L) << 8L ) ) \
) #define YD_A4R4G4B4(a,r,g,b) \
( (YWord) ( ( (Ybyte(b) >> 4L) ) | \
( (YWord(Ybyte(g)) >> 4L) << 4L ) | \
( (YWord(Ybyte(r)) >> 4L) << 8L ) | \
( (YWord(Ybyte(a)) >> 4L) << 12L ) ) \
) #define YD_GET_4444_A(color) ( ((color) & 0x0000f000) >> 8L )
#define YD_GET_4444_R(color) ( ((color) & 0x00000f00) >> 4L )
#define YD_GET_4444_G(color) ( ((color) & 0x000000f0) )
#define YD_GET_4444_B(color) ( ((color) & 0x0000000f) << 4L ) #define YD_GET_4444_RGB(color, a, r, g, b) \
{ \
a = YD_GET_4444_A(color); \
r = YD_GET_4444_R(color); \
g = YD_GET_4444_G(color); \
b = YD_GET_4444_B(color); \
} // -------------------------------------------------------------------------------------- union YColorARGB
{
struct
{
Ybyte b;
Ybyte g;
Ybyte r;
Ybyte a;
}; Ycolor dwColor;
}; struct YColorRGB
{
Ybyte b;
Ybyte g;
Ybyte r;
}; struct YsFloatColor
{
Yreal fAlpha;
Yreal fRed;
Yreal fGreen;
Yreal fBlue;
}; #define YD_R5G6B5_TO_R8G8B8(src565, dest888) \
{ \
Ycolor r, g, b; \
YD_GET_565_RGB(src565, r, g, b); \
dest888 = YD_RGB(r, g, b); \
} #define YD_R8G8B8_TO_R5G6B5(src888, dest565) \
{ \
Ycolor r, g, b; \
YD_GET_RGB(src888, r, g, b); \
dest565 = YD_R5G6B5(r, g, b); \
} #define YD_A1R5G5B5_TO_A8R8G8B8(src1555, dest8888) \
{ \
Ycolor a, r, g, b; \
YD_GET_1555_RGB(src1555, a, r, g, b); \
dest8888 = YD_ARGB(a, r, g, b); \
} #define YD_A8R8G8B8_TO_A1R5G5B5(src8888, dest1555) \
{ \
Ycolor a, r, g, b; \
YD_GET_ARGB(src8888, a, r, g, b); \
dest1555 = YD_A1R5G5B5(a, r, g, b); \
} #define YD_A4R4G4B4_TO_A8R8G8B8(src4444, dest8888) \
{ \
Ycolor a, r, g, b; \
YD_GET_4444_RGB(src4444, a, r, g, b); \
dest8888 = YD_ARGB(a, r, g, b); \
} #define YD_A8R8G8B8_TO_A4R4G4B4(src8888, dest4444) \
{ \
Ycolor a, r, g, b; \
YD_GET_ARGB(src8888, a, r, g, b); \
dest4444 = YD_A4R4G4B4(a, r, g, b); \
} #define YD_R8G8B8_TO_A8R8G8B8(src888, dest8888) \
{ \
dest8888 = YD_ARGB(, src888.r, src888.g, src888.b); \
} #define YD_A8R8G8B8_TO_R8G8B8(src8888, dest888) \
{ \
YD_GET_RGB(src8888, dest888.r, dest888.g, dest888.b); \
} #define YD_FLOATCOLOR_TO_A8R8G8B8(srcFloatColor, dest8888) \
{ \
Ybyte a = YD_REAL_TO_BYTE(srcFloatColor.fAlpha); \
Ybyte r = YD_REAL_TO_BYTE(srcFloatColor.fRed); \
Ybyte g = YD_REAL_TO_BYTE(srcFloatColor.fGreen); \
Ybyte b = YD_REAL_TO_BYTE(srcFloatColor.fBlue); \
dest8888 = YD_ARGB(a, r, g, b); \
} #define YD_A8R8G8B8_TO_FLOATCOLOR(src8888, destFloatColor) \
{ \
Ycolor a, r, g, b; \
YD_GET_ARGB(src8888, a, r, g, b); \
srcFloatColor.fAlpha = YD_BYTE_TO_REAL(a); \
srcFloatColor.fRed = YD_BYTE_TO_REAL(r); \
srcFloatColor.fGreen = YD_BYTE_TO_REAL(g); \
srcFloatColor.fBlue = YD_BYTE_TO_REAL(b); \
} // -------------------------------------------------------------------------------------- #define YD_COLOR_LIGHT_PINK YD_RGB(255, 182, 193) // 浅粉红
#define YD_COLOR_PINK YD_RGB(255, 192, 203) // 粉红
#define YD_COLOR_CRIMSON_RED YD_RGB(220, 20, 60) // 猩红 (深红)
#define YD_COLOR_LAVENDER_BLUSH YD_RGB(255, 240, 245) // 淡紫红
#define YD_COLOR_PALE_VIOLET_RED YD_RGB(219, 112, 147) // 弱紫罗兰红
#define YD_COLOR_HOT_PINK YD_RGB(255, 105, 180) // 热情的粉红
#define YD_COLOR_DEEP_PINK YD_RGB(255, 20, 147) // 深粉红
#define YD_COLOR_MEDIUM_VIOLET_RED YD_RGB(199, 21, 133) // 中紫罗兰红
#define YD_COLOR_ORCHID YD_RGB(218, 112, 214) // 兰花紫
#define YD_COLOR_THISTLE YD_RGB(216, 191, 216) // 蓟
#define YD_COLOR_PLUM YD_RGB(221, 160, 221) // 李子紫
#define YD_COLOR_VIOLET YD_RGB(238, 130, 238) // 紫罗兰
#define YD_COLOR_MAGENTA YD_RGB(255, 0, 255) // 洋红 (品红 玫瑰红)
#define YD_COLOR_FUCHSIA YD_RGB(255, 0, 255) // 灯笼海棠(紫红色)
#define YD_COLOR_DARK_MAGENTA YD_RGB(139, 0, 139) // 深洋红
#define YD_COLOR_PURPLE YD_RGB(128, 0, 128) // 紫色
#define YD_COLOR_MEDIUM_ORCHID YD_RGB(186, 85, 211) // 中兰花紫
#define YD_COLOR_DARK_VIOLET YD_RGB(148, 0, 211) // 暗紫罗兰
#define YD_COLOR_DARK_ORCHID YD_RGB(153, 50, 204) // 暗兰花紫
#define YD_COLOR_INDIGO YD_RGB( 75, 0, 130) // 靛青 (紫兰色)
#define YD_COLOR_BLUE_VIOLET YD_RGB(138, 43, 226) // 蓝紫罗兰
#define YD_COLOR_MEDIUM_PURPLE YD_RGB(147, 112, 219) // 中紫色
#define YD_COLOR_MEDIUM_SLATE_BLUE YD_RGB(123, 104, 238) // 中板岩蓝
#define YD_COLOR_SLATE_BLUE YD_RGB(106, 90, 205) // 板岩蓝
#define YD_COLOR_DARK_SLATE_BLUE YD_RGB( 72, 61, 139) // 暗板岩蓝
#define YD_COLOR_LAVENDER YD_RGB(230, 230, 250) // 熏衣草淡紫
#define YD_COLOR_GHOST_WHITE YD_RGB(248, 248, 255) // 幽灵白
#define YD_COLOR_BLUE YD_RGB( 0, 0, 255) // 纯蓝
#define YD_COLOR_MEDIUM_BLUE YD_RGB( 0, 0, 205) // 中蓝色
#define YD_COLOR_MIDNIGHT_BLUE YD_RGB( 25, 25, 112) // 午夜蓝
#define YD_COLOR_DARK_BLUE YD_RGB( 0, 0, 139) // 暗蓝色
#define YD_COLOR_NAVY_BLUE YD_RGB( 0, 0, 128) // 海军蓝
#define YD_COLOR_ROYAL_BLUE YD_RGB( 65, 105, 225) // 皇家蓝 (宝蓝)
#define YD_COLOR_CORN_FLOWER_BLUE YD_RGB(100, 149, 237) // 矢车菊蓝
#define YD_COLOR_LIGHT_STEEL_BLUE YD_RGB(176, 196, 222) // 亮钢蓝
#define YD_COLOR_LIGHT_SLATE_GRAY YD_RGB(119, 136, 153) // 亮石板灰
#define YD_COLOR_SLATE_GRAY YD_RGB(112, 128, 144) // 石板灰
#define YD_COLOR_DODGER_BLUE YD_RGB( 30, 144, 255) // 道奇蓝
#define YD_COLOR_ALICE_BLUE YD_RGB(240, 248, 255) // 爱丽丝蓝
#define YD_COLOR_STEEL_BLUE YD_RGB( 70, 130, 180) // 钢蓝 (铁青)
#define YD_COLOR_LIGHT_SKY_BLUE YD_RGB(135, 206, 250) // 亮天蓝色
#define YD_COLOR_SKY_BLUE YD_RGB(135, 206, 235) // 天蓝色
#define YD_COLOR_DEEP_SKY_BLUE YD_RGB( 0, 191, 255) // 深天蓝
#define YD_COLOR_LIGHT_BLUE YD_RGB(173, 216, 230) // 亮蓝
#define YD_COLOR_POWDER_BLUE YD_RGB(176, 224, 230) // 火药青
#define YD_COLOR_CADET_BLUE YD_RGB( 95, 158, 160) // 军服蓝
#define YD_COLOR_AZURE YD_RGB(240, 255, 255) // 蔚蓝色
#define YD_COLOR_LIGHT_CYAN YD_RGB(224, 255, 255) // 淡青色
#define YD_COLOR_PALE_TURQUOISE YD_RGB(175, 238, 238) // 弱绿宝石
#define YD_COLOR_CYAN YD_RGB( 0, 255, 255) // 青色
#define YD_COLOR_AQUA YD_RGB( 0, 255, 255) // 水色
#define YD_COLOR_DARK_TURQUOISE YD_RGB( 0, 206, 209) // 暗绿宝石
#define YD_COLOR_DARK_SLATE_GRAY YD_RGB( 47, 79, 79) // 暗石板灰
#define YD_COLOR_DARK_CYAN YD_RGB( 0, 139, 139) // 暗青色
#define YD_COLOR_TEAL YD_RGB( 0, 128, 128) // 水鸭色
#define YD_COLOR_MEDIUM_TURQUOISE YD_RGB( 72, 209, 204) // 中绿宝石
#define YD_COLOR_LIGHT_SEA_GREEN YD_RGB( 32, 178, 170) // 浅海洋绿
#define YD_COLOR_TURQUOISE YD_RGB( 64, 224, 208) // 绿宝石
#define YD_COLOR_AQUAMARINE YD_RGB(127, 255, 212) // 宝石碧绿
#define YD_COLOR_MEDIUM_AQUAMARINE YD_RGB(102, 205, 170) // 中宝石碧绿
#define YD_COLOR_MEDIUM_SPRINGGREEN YD_RGB( 0, 250, 154) // 中春绿色
#define YD_COLOR_MINT_CREAM YD_RGB(245, 255, 250) // 薄荷奶油
#define YD_COLOR_SPRING_GREEN YD_RGB( 0, 255, 127) // 春绿色
#define YD_COLOR_MEDIUM_SEA_GREEN YD_RGB( 60, 179, 113) // 中海洋绿
#define YD_COLOR_SEA_GREEN YD_RGB( 46, 139, 87) // 海洋绿
#define YD_COLOR_HONEYDEW YD_RGB(240, 255, 240) // 蜜瓜色
#define YD_COLOR_LIGHT_GREEN YD_RGB(144, 238, 144) // 淡绿色
#define YD_COLOR_PALE_GREEN YD_RGB(152, 251, 152) // 弱绿色
#define YD_COLOR_DARK_SEA_GREEN YD_RGB(143, 188, 143) // 暗海洋绿
#define YD_COLOR_LIME_GREEN YD_RGB( 50, 205, 50) // 闪光深绿
#define YD_COLOR_LIME YD_RGB( 0, 255, 0) // 闪光绿
#define YD_COLOR_FOREST_GREEN YD_RGB( 34, 139, 34) // 森林绿
#define YD_COLOR_GREEN YD_RGB( 0, 128, 0) // 纯绿
#define YD_COLOR_DARK_GREEN YD_RGB( 0, 100, 0) // 暗绿色
#define YD_COLOR_CHARTREUSE YD_RGB(127, 255, 0) // 查特酒绿 (黄绿色)
#define YD_COLOR_LAWN_GREEN YD_RGB(124, 252, 0) // 草坪绿
#define YD_COLOR_GREEN_YELLOW YD_RGB(173, 255, 47) // 绿黄色
#define YD_COLOR_DARK_OLIVE_GREEN YD_RGB( 85, 107, 47) // 暗橄榄绿
#define YD_COLOR_YELLOW_GREEN YD_RGB(154, 205, 50) // 黄绿色
#define YD_COLOR_OLIVE_DRAB YD_RGB(107, 142, 35) // 橄榄褐色
#define YD_COLOR_BEIGE YD_RGB(245, 245, 220) // 米色(灰棕色)
#define YD_COLOR_LIGHT_GOLDENROD_YELLOW YD_RGB(250, 250, 210) // 亮菊黄
#define YD_COLOR_IVORY YD_RGB(255, 255, 240) // 象牙
#define YD_COLOR_LIGHT_YELLOW YD_RGB(255, 255, 224) // 浅黄色
#define YD_COLOR_YELLOW YD_RGB(255, 255, 0) // 纯黄
#define YD_COLOR_OLIVE YD_RGB(128, 128, 0) // 橄榄
#define YD_COLOR_DARK_KHAKI YD_RGB(189, 183, 107) // 深卡叽布
#define YD_COLOR_LEMON_CHIFFON YD_RGB(255, 250, 205) // 柠檬绸
#define YD_COLOR_PALE_GOLDENROD YD_RGB(238, 232, 170) // 灰菊黄
#define YD_COLOR_KHAKI YD_RGB(240, 230, 140) // 卡叽布
#define YD_COLOR_GOLD YD_RGB(255, 215, 0) // 金色
#define YD_COLOR_CORNSILK YD_RGB(255, 248, 220) // 玉米丝色
#define YD_COLOR_GOLDENROD YD_RGB(218, 165, 32) // 金菊黄
#define YD_COLOR_DARK_GOLDENROD YD_RGB(184, 134, 11) // 暗金菊黄
#define YD_COLOR_FLORAL_WHITE YD_RGB(255, 250, 240) // 花的白色
#define YD_COLOR_OLD_LACE YD_RGB(253, 245, 230) // 旧蕾丝
#define YD_COLOR_WHEAT YD_RGB(245, 222, 179) // 小麦色
#define YD_COLOR_MOCCASIN YD_RGB(255, 228, 181) // 鹿皮靴
#define YD_COLOR_ORANGE YD_RGB(255, 165, 0) // 橙色
#define YD_COLOR_PAPAYA_WHIP YD_RGB(255, 239, 213) // 番木瓜
#define YD_COLOR_BLANCHED_ALMOND YD_RGB(255, 235, 205) // 发白的杏仁色
#define YD_COLOR_NAVAJO_WHITE YD_RGB(255, 222, 173) // 土著白
#define YD_COLOR_ANTIQUE_WHITE YD_RGB(250, 235, 215) // 古董白
#define YD_COLOR_TAN YD_RGB(210, 180, 140) // 茶色
#define YD_COLOR_BURLY_WOOD YD_RGB(222, 184, 135) // 硬木色
#define YD_COLOR_BISQUE YD_RGB(255, 228, 196) // 陶坯黄
#define YD_COLOR_DARK_ORANGE YD_RGB(255, 140, 0) // 深橙色
#define YD_COLOR_LINEN YD_RGB(250, 240, 230) // 亚麻布
#define YD_COLOR_PERU YD_RGB(205, 133, 63) // 秘鲁
#define YD_COLOR_PEACH_PUFF YD_RGB(255, 218, 185) // 桃肉色
#define YD_COLOR_SANDY_BROWN YD_RGB(244, 164, 96) // 沙棕色
#define YD_COLOR_CHOCOLATE YD_RGB(210, 105, 30) // 巧克力
#define YD_COLOR_SADDLE_BROWN YD_RGB(139, 69, 19) // 马鞍棕色
#define YD_COLOR_SEASHELL YD_RGB(255, 245, 238) // 海贝壳
#define YD_COLOR_SIENNA YD_RGB(160, 82, 45) // 黄土赭色
#define YD_COLOR_LIGHT_SALMON YD_RGB(255, 160, 122) // 浅鲑鱼肉色
#define YD_COLOR_CORAL YD_RGB(255, 127, 80) // 珊瑚
#define YD_COLOR_ORANGE_RED YD_RGB(255, 69, 0) // 橙红色
#define YD_COLOR_DARK_SALMON YD_RGB(233, 150, 122) // 深鲜肉(鲑鱼)色
#define YD_COLOR_TOMATO YD_RGB(255, 99, 71) // 番茄红
#define YD_COLOR_MISTY_ROSE YD_RGB(255, 228, 225) // 薄雾玫瑰
#define YD_COLOR_SALMON YD_RGB(250, 128, 114) // 鲜肉(鲑鱼)色
#define YD_COLOR_SNOW YD_RGB(255, 250, 250) // 雪
#define YD_COLOR_LIGHT_CORAL YD_RGB(240, 128, 128) // 淡珊瑚色
#define YD_COLOR_ROSY_BROWN YD_RGB(188, 143, 143) // 玫瑰棕色
#define YD_COLOR_INDIAN_RED YD_RGB(205, 92, 92) // 印度红
#define YD_COLOR_RED YD_RGB(255, 0, 0) // 纯红
#define YD_COLOR_BROWN YD_RGB(165, 42, 42) // 棕色
#define YD_COLOR_FIRE_BRICK YD_RGB(178, 34, 34) // 耐火砖
#define YD_COLOR_DARK_RED YD_RGB(139, 0, 0) // 深红色
#define YD_COLOR_MAROON YD_RGB(128, 0, 0) // 栗色
#define YD_COLOR_WHITE YD_RGB(255, 255, 255) // 纯白
#define YD_COLOR_WHITE_SMOKE YD_RGB(245, 245, 245) // 白烟
#define YD_COLOR_GAINSBORO YD_RGB(220, 220, 220) // 庚斯博罗灰色
#define YD_COLOR_LIGHT_GREY YD_RGB(211, 211, 211) // 浅灰色
#define YD_COLOR_SILVER YD_RGB(192, 192, 192) // 银灰色
#define YD_COLOR_DARK_GRAY YD_RGB(169, 169, 169) // 深灰色
#define YD_COLOR_GRAY YD_RGB(186, 183, 186) // 灰色(*)
#define YD_COLOR_DIM_GRAY YD_RGB(105, 105, 105) // 暗淡的灰色
#define YD_COLOR_BLACK YD_RGB( 0, 0, 0) // 纯黑 // -------------------------------------------------------------------------------------- #endif
C 图像处理 颜色相关宏定义的更多相关文章
- process调用protothread机制的相关宏定义——用HelloWorld进程诠释
一.HelloWorld例子 #include "contiki.h" #include <stdio.h> /* For printf() */ /*-------- ...
- Unity3D 多平台_预编译相关宏定义
http://www.cnblogs.com/zhaoqingqing/p/3510332.html API地址:http://docs.unity3d.com/Documentation/Manua ...
- IOS 颜色的宏定义
#define RGB(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] self.vie ...
- UI控件相关宏定义
1.显示设置 1.1 view圆角和边框 /** 设置view圆角和边框 */ #define kViewBorderRadius(View, Radius, Width, Color)\ \ [Vi ...
- C语言宏定义相关
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义......1,防止一个头文件被重复包含#ifndef COMDEF_H# ...
- JDStatusBarNotification和一些宏定义
// // AddTopicViewController.m // vMeet2 // // Created by 张源海 on 16/6/30. // Copyright © 2016年 h ...
- iOS----------常见宏定义
在我们日常的项目中,合理的使用宏定义,会大大减少我们的代码量,以及代码的可读性,为方便读者使用,总结如下: pragma mark - Application相关 ///=============== ...
- iOS开发常见的宏定义(实用)
iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性:将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便 ...
- moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
随机推荐
- 【原创】Linux常用脚本
#1.启用停用VIP sudo /etc/ha.d/resource.d/IPaddr 10.10.10.10 start sudo /etc/ha.d/resource.d/IPaddr 10.10 ...
- 【基础知识】.Net基础加强 第四天
一. 显示实现接口 1. 显示实现接口的目的:为了解决法方法重名的问题. 2. 显示实现接口必须是私有的,不能用public 3. (复习)类中成员不写访问修饰符默认是private:类如果不写访问修 ...
- [leetcode sort]75. Sort Colors
Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...
- mysql数据库外键删除更新规则
1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行. 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL.如果使用该选项,必须保证子表列没有指定NOT NULL. ...
- luoguP4466 [国际集训队]和与积 莫比乌斯反演
自然想到枚举\(gcd(a, b)\),不妨设其为\(d\),并且\(a = di, b = dj(a > b)\) 那么\(\frac{ab}{a + b} = \frac{dij}{i + ...
- 80X86指令总结
一.数据传送指令 指令名称 汇编语句格式 功能 影响标志位 传送move data mov opd, ops (ops) → opd:分为主存储器.通用寄存器.段寄存器,不可同时使用主存储器,类型要匹 ...
- 让screen帮助你协同工作
Screen是系统管理员手中的一件利器,下面我把它介绍给你,相信你会和我一样,认可这个非常棒的软件 一,什么情况下会用到screen? 比如说,我们在运行一个非常费时间的程序,注意:可能我们是在通 ...
- bzoj2243 染色
Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如 ...
- Codeforces Round #357 (Div. 2) E. Runaway to a Shadow 计算几何
E. Runaway to a Shadow 题目连接: http://www.codeforces.com/contest/681/problem/E Description Dima is liv ...
- 记一次centos7.2下用crontab执行定时任务的过程(初级)
实验目的:每分钟往某个文件写数据(crontab最小单位是分钟),具体shell命令我是放在一个文件里的.先创建两个空文件:/tmp/a.txt(目标文件)和/tmp/a.sh(脚本文件). 命令如下 ...