C:\home\SVGCats_src\src\color.h
1|/************************************************************************** 2| 1. <<< 色 (Color) >>> 3|**************************************************************************/ 4| 5|#ifndef __COLOR_H 6|#define __COLOR_H 7| 8| 9|/************************************************************************** 10| 2. <<< モジュールプロパティ >>> 11|**************************************************************************/ 12|/*---------------------------------------------------------------------- 13|[Module Property] 14|name = Color 15|title = 色(RGB,YUV) 16|category = グラフィック 17|src = 18|depend = 19|priority = 20|accord = 21|----------------------------------------------------------------------*/ 22| 23| 24|/************************************************************************** 25| 3. <<< 優先ヘッダ >>> 26|**************************************************************************/ 27|/* 4. <<< [Color_Typedef] >>> */ 28|#ifndef USES_PRIORITY_HEADER 29|/*[START_OF_PRIORITY_HEADER]*/ 30| 31|#ifndef USES_COLOR 32|#define USES_COLOR 33|typedef unsigned int Color; 34|typedef struct _Color_Tester Color_Tester; 35|typedef unsigned int Color_RGB24; /* 32bit int */ 36|typedef unsigned long Color_WinRGB; /* 32bit unsigned long */ 37|typedef unsigned int Color_YUV; /* 32bit int */ 38|typedef unsigned int Color_RGB16; 39|typedef unsigned int Color_RGB8; 40|typedef unsigned int Color_RGB3; 41|#endif 42| 43|/*[END_OF_PRIORITY_HEADER]*/ 44|#endif /* USES_PRIORITY_HEADER */ 45| 46| 47| 48|/*------------------------------------------------------------------------*/ 49|/* 5. <<< Interface Area ----------------------------------------------- >>> */ 50|/*------------------------------------------------------------------------*/ 51| 52| 53| 54|/************************************************************************** 55| 6. <<< [Color] カラー >>> 56|【補足】 57|・汎用的に使うため、データのフォーマットは決まっていません。 58| つまり、Color_RGB24 型でも、パレット番号でも構いません。 59|・32bit int 型です。 60|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 61|***************************************************************************/ 62| 63| 64|/************************************************************************** 65| 7. <<< カラーコード定数 >>> 66|【補足】 67|・実際の値は、それぞれのカラー型(Color_RGB16など)を参照。 68|***************************************************************************/ 69|Color Color_Black( int type, int bpp ); 70|Color Color_Blue( int type, int bpp ); 71|Color Color_Green( int type, int bpp ); 72|Color Color_Red( int type, int bpp ); 73|Color Color_Cyan( int type, int bpp ); 74|Color Color_Mazenta( int type, int bpp ); 75|Color Color_Yellow( int type, int bpp ); 76|Color Color_White( int type, int bpp ); 77|Color Color_Gray( int type, int bpp ); 78| 79|enum { Color_RGBType, Color_YUVType }; 80| 81| 82|/************************************************************************** 83| 8. <<< [Color_Tester] カラーテスター >>> 84|【役割】 85|・様々な色でテストを行うために、始めは基本色を出力し、だんだん 86| 中間色を出力していきます。 87|***************************************************************************/ 88|struct _Color_Tester { 89| int count; 90| int bpp; 91|}; 92| 93|void Color_Tester_init( Color_Tester*, int bpp ); 94|Color Color_Tester_getNextColor( Color_Tester* ); 95| 96| 97|/************************************************************************** 98| 9. <<< [Color_RGB24] RGB カラー 24bpp(フルカラー) >>> 99|【補足】 100|・int 型 (0x00RRGGBB) 101|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 102|***************************************************************************/ 103|Color_RGB24 Color_RGB24_init( int r, int g, int b ); 104|int Color_RGB24_getR( Color_RGB24 color ); 105|int Color_RGB24_getG( Color_RGB24 color ); 106|int Color_RGB24_getB( Color_RGB24 color ); 107|double Color_RGB24_getY( Color_RGB24 color ); 108|double Color_RGB24_getU( Color_RGB24 color ); 109|double Color_RGB24_getV( Color_RGB24 color ); 110|Color_YUV Color_RGB24_getYUV( Color_RGB24 color ); 111|Color_YUV Color_RGB24_getYUV2( Color_RGB24 color ); 112|#ifdef USES_BRESEN 113| void Color_RGB24_makeShadPalet( Color_RGB24* palet, 114| Color_RGB24 start, Color_RGB24 end, int palet_n ); 115|#endif 116| 117|Color_RGB16 Color_RGB24_getRGB16( Color_RGB24 color ); 118|Color_RGB8 Color_RGB24_getRGB8( Color_RGB24 color ); 119| 120|#define Color_RGB24_Black 0x000000 121|#define Color_RGB24_Blue 0x0000FF 122|#define Color_RGB24_Green 0x00FF00 123|#define Color_RGB24_Red 0xFF0000 124|#define Color_RGB24_Cyan 0x00FFFF 125|#define Color_RGB24_Mazenta 0xFF00FF 126|#define Color_RGB24_Yellow 0xFFFF00 127|#define Color_RGB24_White 0xFFFFFF 128|#define Color_RGB24_Gray 0xC0C0C0 129| 130| 131|/************************************************************************** 132| 10. <<< [Color_WinRGB] Windows RGB カラー (フルカラー) >>> 133|【補足】 134|・int 型 (0xXXBBGGRR) 135|・Windows の COLORREF と互換があります。 136|・各色成分から色を作成するときは、Windows の RGB マクロを使ってください。 137|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 138|***************************************************************************/ 139|int Color_WinRGB_getR( Color_WinRGB color ); 140|int Color_WinRGB_getG( Color_WinRGB color ); 141|int Color_WinRGB_getB( Color_WinRGB color ); 142|void Color_WinRGB_setR( Color_WinRGB color, int r ); 143|void Color_WinRGB_setG( Color_WinRGB color, int g ); 144|void Color_WinRGB_setB( Color_WinRGB color, int b ); 145| 146|/************************************************************************** 147| 11. <<< [Color_YUV] YUV(YCbCr) カラー 24bpp >>> 148|【補足】 149|・int 型 (0x00VVUUYY) ただし、U,V は 0〜255で(-128〜127 に対応) 150|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 151|***************************************************************************/ 152|int Color_YUV_getY( Color_YUV color ); 153|int Color_YUV_getU( Color_YUV color ); 154|int Color_YUV_getV( Color_YUV color ); 155|double Color_YUV_getB( Color_YUV color ); 156|double Color_YUV_getG( Color_YUV color ); 157|double Color_YUV_getR( Color_YUV color ); 158|Color_RGB24 Color_YUV_getRGB24( Color_YUV color ); 159|Color_RGB24 Color_YUV_getRGB2( Color_YUV color ); 160| 161| 162| 163|/************************************************************************** 164| 12. <<< [Color_RGB16] RGB カラー 16bpp >>> 165|【補足】 166|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 167|***************************************************************************/ 168|Color_RGB16 Color_RGB16_init( int r, int g, int b ); 169|int Color_RGB16_getR( Color_RGB16 ); 170|int Color_RGB16_getR8( Color_RGB16 ); 171|int Color_RGB16_getG( Color_RGB16 ); 172|int Color_RGB16_getG8( Color_RGB16 ); 173|int Color_RGB16_getB( Color_RGB16 ); 174|int Color_RGB16_getB8( Color_RGB16 ); 175|int Color_RGB16_getRGB8( Color_RGB16 ); 176|int Color_RGB16_getRGB15( Color_RGB16 ); 177|int Color_RGB16_getRGB24( Color_RGB16 ); 178| 179|#define Color_RGB16_Black 0x0000 180|#define Color_RGB16_Blue 0x001F 181|#define Color_RGB16_Green 0x07E0 182|#define Color_RGB16_Red 0xF800 183|#define Color_RGB16_Cyan 0x07FF 184|#define Color_RGB16_Mazenta 0xF81F 185|#define Color_RGB16_Yellow 0xFFE0 186|#define Color_RGB16_White 0xFFFF 187|#define Color_RGB16_Gray 0xC618 188| 189| 190| 191|/************************************************************************** 192| 13. <<< [Color_RGB8] RGB カラー 8bpp >>> 193|【補足】 194|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 195|***************************************************************************/ 196|int Color_RGB8_getRGB24( Color_RGB8 ); 197|int Color_RGB8_getRGB18( Color_RGB8 ); 198| 199|#define Color_RGB8_Black 0x00 200|#define Color_RGB8_Blue 0x03 201|#define Color_RGB8_Green 0x1C 202|#define Color_RGB8_Red 0xE0 203|#define Color_RGB8_Cyan 0x1F 204|#define Color_RGB8_Mazenta 0xE3 205|#define Color_RGB8_Yellow 0xFC 206|#define Color_RGB8_White 0xFF 207|#define Color_RGB8_Gray 0xD9 208| 209| 210| 211|/************************************************************************** 212| 14. <<< [Color_RGB3] RGB カラー 3bpp >>> 213|【補足】 214|・型宣言は、ファイルの上の方の Color_Typedef で行っています。 215|***************************************************************************/ 216|Color_RGB16 Color_RGB3_getRGB16( Color_RGB3 ); 217|Color_RGB24 Color_RGB3_getRGB24( Color_RGB3 ); 218|Color Color_getBpp3to8( Color c3 ); 219| 220| 221|/*------------------------------------------------------------------------*/ 222|/* 15. <<< Mapping Area ------------------------------------------------- >>> */ 223|/*------------------------------------------------------------------------*/ 224| 225| 226| 227|/*------------------------------------------------------------------------*/ 228|/* 16. <<< RGB カラー 24bpp >>> */ 229|/*------------------------------------------------------------------------*/ 230| 231|/*********************************************************************** 232| 17. <<< [Color_RGB24_init_m] 24bpp カラーを得る(マクロ版)>>> 233|************************************************************************/ 234|#ifdef NDEBUG 235| #define Color_RGB24_init Color_RGB24_init_m 236|#endif 237|#define Color_RGB24_init_m( r, g, b ) \ 238| ( ((r) << 16) | ((g) << 8) | (b) ) 239| 240| 241|/*********************************************************************** 242| 18. <<< [Color_RGB24_getR] Red 成分を得る(0〜255)>>> 243|************************************************************************/ 244|#define Color_RGB24_getR( color ) ((int)((color)>>16)) 245| 246| 247|/*********************************************************************** 248| 19. <<< [Color_RGB24_getG] Green 成分を得る(0〜255)>>> 249|************************************************************************/ 250|#define Color_RGB24_getG( color ) ((int)(((color)>>8) & 0xFF)) 251| 252| 253|/*********************************************************************** 254| 20. <<< [Color_RGB24_getB] Blue 成分を得る(0〜255)>>> 255|************************************************************************/ 256|#define Color_RGB24_getB( color ) ((int)((color) & 0xFF)) 257| 258| 259|/*********************************************************************** 260| 21. <<< [Color_RGB24_getY] YUV カラーの Y 成分を得る(0〜255)(浮動小数版)>>> 261|【補足】 262|・double Color_RGB24_getY( Color_RGB24 color ); 263|・返り値は必要に応じて int 型にキャストしてください。 264|************************************************************************/ 265|#ifndef FOR_NSTD 266|#define Color_RGB24_getY( color ) \ 267| ( 0.2990 * Color_RGB24_getR(color) \ 268| + 0.5870 * Color_RGB24_getG(color) \ 269| + 0.1140 * Color_RGB24_getB(color) ) 270|#endif 271| 272| 273|/*********************************************************************** 274| 22. <<< [Color_RGB24_getU] YUV カラーの U(Cb) 成分を得る(-128〜127)(浮動小数版)>>> 275|【補足】 276|・double Color_RGB24_getU( Color_RGB24 color ); 277|・返り値は必要に応じて int 型にキャストしてください。 278|************************************************************************/ 279|#ifndef FOR_NSTD 280|#define Color_RGB24_getU( color ) \ 281| ( -0.1684 * Color_RGB24_getR(color) \ 282| - 0.3316 * Color_RGB24_getG(color) \ 283| + 0.5000 * Color_RGB24_getB(color) ) 284|#endif 285| 286| 287|/*********************************************************************** 288| 23. <<< [Color_RGB24_getV] YUV カラーの V(Cr) 成分を得る(-128〜127)(浮動小数版)>>> 289|【補足】 290|・double Color_RGB24_getV( Color_RGB24 color ); 291|・返り値は必要に応じて int 型にキャストしてください。 292|************************************************************************/ 293|#ifndef FOR_NSTD 294|#define Color_RGB24_getV( color ) \ 295| ( 0.5000 * Color_RGB24_getR(color) \ 296| - 0.4187 * Color_RGB24_getG(color) \ 297| - 0.0813 * Color_RGB24_getB(color) ) 298|#endif 299| 300|int Color_RGB24_getY2( Color_RGB24 color ); 301|int Color_RGB24_getU2( Color_RGB24 color ); 302|int Color_RGB24_getV2( Color_RGB24 color ); 303| 304| 305|/*********************************************************************** 306| 24. <<< [Color_RGB24_getYUV2] RGB カラーから YUV カラーに変換(固定小数版)>>> 307|【補足】 308|・Color_YUV Color_RGB24_getYUV2( Color_RGB24 color ); 309|************************************************************************/ 310|#define Color_RGB24_getYUV2( color ) \ 311| ( ((int)Color_RGB24_getV2( color ) + 0x80 << 16 ) + \ 312| ((int)Color_RGB24_getU2( color ) + 0x80 << 8 ) + \ 313| (int)Color_RGB24_getY2( color ) ) 314| 315| 316|/*********************************************************************** 317| 25. <<< [Color_RGB24_getRGB16] 24bpp色を 16bpp色に変換する >>> 318|【機能】 319|・24bpp(R8,G8,B8) を 16bpp(R5,G6,B5) に変換します。 320|************************************************************************/ 321|#define Color_RGB24_getRGB16( color ) \ 322| ( ( ((color) & 0xF80000) >> 8 ) | \ 323| ( ((color) & 0x00FC00) >> 5 ) | \ 324| ( ((color) & 0x0000F8) >> 3 ) ) 325| 326| 327|/*********************************************************************** 328| 26. <<< [Color_RGB24_getRGB8] 24bpp色を 8bpp色に変換する >>> 329|【機能】 330|・24bpp(R8,G8,B8) を 16bpp(R5,G6,B5) に変換します。 331|***********************************************************************/ 332|#define Color_RGB24_getRGB16( color ) \ 333| ( ( ((color) & 0xF80000) >> 8 ) | \ 334| ( ((color) & 0x00FC00) >> 5 ) | \ 335| ( ((color) & 0x0000F8) >> 3 ) ) 336| 337| 338| 339| 340|/*------------------------------------------------------------------------*/ 341|/* 27. <<< Windows RGB カラー >>> */ 342|/*------------------------------------------------------------------------*/ 343| 344|#define Color_WinRGB_getR( color ) ( ( (color) & 0x000000FF ) ) 345|#define Color_WinRGB_getG( color ) ( ( (color) & 0x0000FF00 ) >> 8 ) 346|#define Color_WinRGB_getB( color ) ( ( (color) & 0x00FF0000 ) >> 16 ) 347|#define Color_WinRGB_getX( color ) ( ( (color) & 0xFF000000 ) >> 24 ) 348| 349|#define Color_WinRGB_setR( color, r ) \ 350| color = ( (color) & 0xFFFFFF00 ) | (r) 351| 352|#define Color_WinRGB_setG( color, g ) \ 353| color = ( (color) & 0xFFFF00FF ) | ( (g) << 8 ) 354| 355|#define Color_WinRGB_setB( color, b ) \ 356| color = ( (color) & 0xFF00FFFF ) | ( (b) << 16 ) 357| 358|#define Color_WinRGB_setX( color, x ) \ 359| color = ( (color) & 0x00FFFFFF ) | ( (x) << 24 ) 360| 361|/*------------------------------------------------------------------------*/ 362|/* 28. <<< YUV カラー 24bpp >>> */ 363|/*------------------------------------------------------------------------*/ 364| 365|/*********************************************************************** 366| 29. <<< [Color_YUV_getY] Y(明るさ) を得る >>> 367|【補足】 368|・int Color_YUV_getY( Color_YUV color ); 369|************************************************************************/ 370|#define Color_YUV_getY( color ) ((color) & 0xFF) 371| 372| 373|/*********************************************************************** 374| 30. <<< [Color_YUV_getU] U(色合い) を得る >>> 375|【補足】 376|・int Color_YUV_getU( Color_YUV color ); 377|************************************************************************/ 378|#define Color_YUV_getU( color ) ((((color)>>8) & 0xFF) - 0x80 ) 379| 380| 381|/*********************************************************************** 382| 31. <<< [Color_YUV_getV] V(淡度) を得る >>> 383|【補足】 384|・int Color_YUV_getV( Color_YUV color ); 385|************************************************************************/ 386|#define Color_YUV_getV( color ) (((color)>>16) - 0x80 ) 387| 388| 389|/*********************************************************************** 390| 32. <<< [Color_YUV_getR] RGB カラーの Red を得る(浮動小数版) >>> 391|【補足】 392|・double Color_YUV_getR( Color_YUV color ); 393|・返り値は必要に応じて int 型にキャストします。 394|************************************************************************/ 395|#ifndef FOR_NSTD 396|#define Color_YUV_getR( color ) \ 397| ( Color_YUV_getY(color) \ 398| + 1.4020 * Color_YUV_getV(color) ) 399|#endif 400| 401| 402|/*********************************************************************** 403| 33. <<< [Color_YUV_getG] RGB カラーの Green を得る(浮動小数版) >>> 404|【補足】 405|・double Color_YUV_getG( Color_YUV color ); 406|・返り値は必要に応じて int 型にキャストします。 407|************************************************************************/ 408|#ifndef FOR_NSTD 409|#define Color_YUV_getG( color ) \ 410| ( Color_YUV_getY(color) \ 411| - 0.3441 * Color_YUV_getU(color) \ 412| - 0.7139 * Color_YUV_getV(color) ) 413|#endif 414| 415| 416|/*********************************************************************** 417| 34. <<< [Color_YUV_getB] RGB カラーの Blue を得る(浮動小数版) >>> 418|【補足】 419|・double Color_YUV_getB( Color_YUV color ); 420|・返り値は必要に応じて int 型にキャストします。 421|************************************************************************/ 422|#ifndef FOR_NSTD 423|#define Color_YUV_getB( color ) \ 424| ( Color_YUV_getY(color) \ 425| + 1.7718 * Color_YUV_getU(color) \ 426| - 0.0012 * Color_YUV_getV(color) ) 427|#endif 428| 429|int Color_YUV_getR2( Color_YUV color ); 430|int Color_YUV_getG2( Color_YUV color ); 431|int Color_YUV_getB2( Color_YUV color ); 432| 433| 434|/*********************************************************************** 435| 35. <<< [Color_YUV_getRGB2] YUV カラーから RGB カラーに変換(固定小数版) >>> 436|【補足】 437|・Color_RGB24 Color_YUV_getRGB2( Color_YUV color ); 438|************************************************************************/ 439|#ifndef FOR_NSTD 440|#define Color_YUV_getRGB2( color ) \ 441| ( (Color_YUV_getR2( color ) << 16 ) \ 442| + (Color_YUV_getG2( color ) << 8 ) \ 443| + Color_YUV_getB2( color ) ) 444|#endif 445| 446| 447| 448|/*------------------------------------------------------------------------*/ 449|/* 36. <<< RGB カラー 16bpp >>> */ 450|/*------------------------------------------------------------------------*/ 451| 452|/*********************************************************************** 453| 37. <<< [Color_RGB16_init] 16bpp カラーを得る >>> 454|************************************************************************/ 455|#ifdef NDEBUG 456|#define Color_RGB16_init( r, g, b ) \ 457| ( ((r) << 11) | ((g) << 5) | (b) ) 458|#endif 459| 460| 461|/*********************************************************************** 462| 38. <<< [Color_RGB16_getR] Red を得る(0〜31)>>> 463|************************************************************************/ 464|#ifdef NDEBUG 465|#define Color_RGB16_getR( color ) \ 466| ( (color) >> 11 ) 467|#endif 468| 469| 470|/*********************************************************************** 471| 39. <<< [Color_RGB16_getR8] 8bit の Red を得る(0〜256)>>> 472|************************************************************************/ 473|#define Color_RGB16_getR8( color ) \ 474| ( ( ((color) & 0xF800) >> 8 ) | \ 475| ( ((color) & 0xE000) >> 13) ) 476| 477| 478|/*********************************************************************** 479| 40. <<< [Color_RGB16_getG] Green を得る(0〜63)>>> 480|************************************************************************/ 481|#define Color_RGB16_getG( color ) \ 482| ( ((color) >> 5 ) & 0x3F ) 483| 484| 485|/*********************************************************************** 486| 41. <<< [Color_RGB16_getG8] 8bit の Green を得る(0〜256)>>> 487|************************************************************************/ 488|#define Color_RGB16_getG8( color ) \ 489| ( ( ((color) & 0x07E0) >> 3 ) | \ 490| ( ((color) & 0x0600) >> 9 ) ) 491| 492| 493|/*********************************************************************** 494| 42. <<< [Color_RGB16_getB] Blue を得る(0〜31)>>> 495|************************************************************************/ 496|#define Color_RGB16_getB( color ) \ 497| ( (color) & 0x1F ) 498| 499| 500|/*********************************************************************** 501| 43. <<< [Color_RGB16_getB8] 8bit の Blue を得る(0〜256)>>> 502|************************************************************************/ 503|#define Color_RGB16_getB8( color ) \ 504| ( ( ((color) & 0x001F) << 3 ) | \ 505| ( ((color) & 0x001C) >> 2 ) ) 506| 507| 508|/*********************************************************************** 509| 44. <<< [Color_RGB16_getRGB8] 16bpp色を 8bpp色に変換する >>> 510|【機能】 511|・16bpp(R5,G6,B5) を 8bpp(R3,G3,B2)に変換します。 512|************************************************************************/ 513|#define Color_RGB16_getRGB8( color ) \ 514| ( ( ((color) & 0xE000) >> 8 ) | \ 515| ( ((color) & 0x0700) >> 6 ) | \ 516| ( ((color) & 0x0018) >> 3 ) ) 517| 518| 519|/*********************************************************************** 520| 45. <<< [Color_RGB16_getRGB24] 16bpp色を 24bpp色に変換する >>> 521|【機能】 522|・16bpp(R5,G6,B5) を 24bpp(R8,G8,B8)に変換します。 523|************************************************************************/ 524|#define Color_RGB16_getRGB24( color ) \ 525| ( ( ((color) & 0xF800) << 8 ) | ( ((color) & 0xE000) << 3 ) | \ 526| ( ((color) & 0x07E0) << 5 ) | ( ((color) & 0x0600) >> 1 ) | \ 527| ( ((color) & 0x001F) << 3 ) | ( ((color) & 0x001F) >> 2 ) ) 528| 529| 530|/*********************************************************************** 531| 46. <<< [Color_RGB16_getRGB15] 16bpp色を 15bpp色に変換する >>> 532|【機能】 533|・16bpp(R5,G6,B5) を 15bpp(R5,G5,B5)に変換します。 534|************************************************************************/ 535|#define Color_RGB16_getRGB15( color ) \ 536| ( ( ((color) & 0xFFC0) >> 1 ) | ((color) & 0x001F) ) 537| 538| 539| 540| 541|/*------------------------------------------------------------------------*/ 542|/* 47. <<< RGB カラー 8bpp >>> */ 543|/*------------------------------------------------------------------------*/ 544| 545|/*********************************************************************** 546| 48. <<< [Color_RGB8_getRGB24] 8bpp色を 24bpp色に変換する >>> 547|【機能】 548|・8bpp(R3,G3,B2) を 24bpp(R8,G8,B8)に変換します。 549|************************************************************************/ 550|#define Color_RGB8_getRGB24( color ) \ 551| ( ( ((color) & 0xE0) << 16 ) | ( ((color) & 0xE0) << 13 ) | ( ((color) & 0x00C0) << 10 ) | \ 552| ( ((color) & 0x1C) << 11 ) | ( ((color) & 0x1C) << 8 ) | ( ((color) & 0x0018) << 5 ) | \ 553| ( ((color) & 0x03) << 6 ) | ( ((color) & 0x03) << 4 ) | \ 554| ( ((color) & 0x03) << 2 ) | ( ((color) & 0x03) ) ) 555| 556| 557|/*********************************************************************** 558| 49. <<< [Color_RGB8_getRGB18] 8bpp色を 18bpp色に変換する >>> 559|【機能】 560|・8bpp(R3,G3,B2) を 18bpp(R6,G6,B6)に変換します。 561|************************************************************************/ 562|#define Color_RGB8_getRGB18( color ) \ 563| ( ( ((color) & 0xE0) << 10 ) | ( ((color) & 0xE0) << 7 ) | \ 564| ( ((color) & 0x1C) << 7 ) | ( ((color) & 0x1C) << 4 ) | \ 565| ( ((color) & 0x03) << 4 ) | ( ((color) & 0x03) << 2 ) | \ 566| ( ((color) & 0x03) ) ) 567| 568| 569|/*------------------------------------------------------------------------*/ 570|/* 50. <<< RGB カラー 3bpp >>> */ 571|/*------------------------------------------------------------------------*/ 572| 573|/*********************************************************************** 574| 51. <<< [Color_RGB3_getRGB16] 3bpp色を 16bpp色に変換する >>> 575|【機能】 576|・3bpp(R1,G1,B1) を 16bpp(R5,G6,B5)に変換します。 577|************************************************************************/ 578|#define Color_RGB3_getRGB16( color ) \ 579| ( ( ((color) & 4) ? 0xF800 : 0 ) | \ 580| ( ((color) & 2) ? 0x07E0 : 0 ) | \ 581| ( ((color) & 1) ? 0x001F : 0 ) ) 582| 583| 584|/*********************************************************************** 585| 52. <<< [Color_RGB3_getRGB24] 3bpp色を 24bpp色に変換する >>> 586|【機能】 587|・3bpp(R1,G1,B1) を 24bpp(R8,G8,B8)に変換します。 588|************************************************************************/ 589|#define Color_RGB3_getRGB24( color ) \ 590| ( ( ((color) & 4) ? 0xFF0000 : 0 ) | \ 591| ( ((color) & 2) ? 0x00FF00 : 0 ) | \ 592| ( ((color) & 1) ? 0x0000FF : 0 ) ) 593| 594| 595|#endif 596| 597|