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|・型宣言は、ファイルの上の方の Color_Typedef で行っています。
 137|***************************************************************************/
 138|int  Color_WinRGB_getR( Color_WinRGB color );
 139|int  Color_WinRGB_getG( Color_WinRGB color );
 140|int  Color_WinRGB_getB( Color_WinRGB color );
 141|void  Color_WinRGB_setR( Color_WinRGB color, int r );
 142|void  Color_WinRGB_setG( Color_WinRGB color, int g );
 143|void  Color_WinRGB_setB( Color_WinRGB color, int b );
 144| 
 145|/**************************************************************************
 146|  11. <<< [Color_YUV] YUV(YCbCr) カラー 24bpp >>> 
 147|【補足】
 148|・int 型 (0x00VVUUYY) ただし、U,V は 0〜255で(-128〜127 に対応)
 149|・型宣言は、ファイルの上の方の Color_Typedef で行っています。
 150|***************************************************************************/
 151|void  Color_YUV_init( Color_YUV*, int y, int u, int v );
 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_init] 設定する >>>
 367|【補足】
 368|・void  Color_YUV_init( Color_YUV*, int y, int u, int v );
 369|************************************************************************/
 370|#define  Color_YUV_init( m, y, u, v ) \
 371|  *(m) = ( (y) | ((u) << 8) | ((v) << 16) )
 372|
 373|
 374|/***********************************************************************
 375| 30. <<< [Color_YUV_getY] Y(明るさ) を得る >>>
 376|【補足】
 377|・int  Color_YUV_getY( Color_YUV color );
 378|************************************************************************/
 379|#define  Color_YUV_getY( color )  ((color) & 0xFF)
 380|
 381|
 382|/***********************************************************************
 383| 31. <<< [Color_YUV_getU] U(色合い) を得る >>>
 384|【補足】
 385|・int  Color_YUV_getU( Color_YUV color );
 386|************************************************************************/
 387|#define  Color_YUV_getU( color )  (( ((int)(color)>>8) & 0xFF) - 0x80 )
 388|
 389|
 390|/***********************************************************************
 391| 32. <<< [Color_YUV_getV] V(淡度) を得る >>>
 392|【補足】
 393|・int  Color_YUV_getV( Color_YUV color );
 394|************************************************************************/
 395|#define  Color_YUV_getV( color )  ( ((int)(color)>>16) - 0x80 )
 396|
 397|
 398|/***********************************************************************
 399| 33. <<< [Color_YUV_getR] RGB カラーの Red を得る(浮動小数版) >>>
 400|【補足】
 401|・double  Color_YUV_getR( Color_YUV color );
 402|・返り値は必要に応じて int 型にキャストします。
 403|************************************************************************/
 404|#ifndef  FOR_NSTD
 405|#define  Color_YUV_getR( color )  \
 406|  (           Color_YUV_getY(color) \
 407|   + 1.4020 * Color_YUV_getV(color) )
 408|#endif
 409|
 410|
 411|/***********************************************************************
 412| 34. <<< [Color_YUV_getG] RGB カラーの Green を得る(浮動小数版) >>>
 413|【補足】
 414|・double  Color_YUV_getG( Color_YUV color );
 415|・返り値は必要に応じて int 型にキャストします。
 416|************************************************************************/
 417|#ifndef  FOR_NSTD
 418|#define  Color_YUV_getG( color )  \
 419|  (           Color_YUV_getY(color) \
 420|   - 0.3441 * Color_YUV_getU(color) \
 421|   - 0.7139 * Color_YUV_getV(color) )
 422|#endif
 423|
 424|
 425|/***********************************************************************
 426| 35. <<< [Color_YUV_getB] RGB カラーの Blue を得る(浮動小数版) >>>
 427|【補足】
 428|・double  Color_YUV_getB( Color_YUV color );
 429|・返り値は必要に応じて int 型にキャストします。
 430|************************************************************************/
 431|#ifndef  FOR_NSTD
 432|#define  Color_YUV_getB( color )  \
 433|  (          Color_YUV_getY(color) \
 434|  + 1.7718 * Color_YUV_getU(color) \
 435|  - 0.0012 * Color_YUV_getV(color) )
 436|#endif
 437|
 438|int  Color_YUV_getR2( Color_YUV color );
 439|int  Color_YUV_getG2( Color_YUV color );
 440|int  Color_YUV_getB2( Color_YUV color );
 441|
 442|
 443|/***********************************************************************
 444| 36. <<< [Color_YUV_getRGB2] YUV カラーから RGB カラーに変換(固定小数版) >>>
 445|【補足】
 446|・Color_RGB24  Color_YUV_getRGB2( Color_YUV color );
 447|************************************************************************/
 448|#ifndef  FOR_NSTD
 449|#define  Color_YUV_getRGB2( color ) \
 450|  ( (Color_YUV_getR2( color ) << 16 ) \
 451|  + (Color_YUV_getG2( color ) << 8 )  \
 452|  +  Color_YUV_getB2( color ) )
 453|#endif
 454|
 455|
 456| 
 457|/*------------------------------------------------------------------------*/
 458|/* 37. <<< RGB カラー 16bpp >>> */ 
 459|/*------------------------------------------------------------------------*/
 460|
 461|/***********************************************************************
 462| 38. <<< [Color_RGB16_init] 16bpp カラーを得る >>>
 463|************************************************************************/
 464|#ifdef NDEBUG
 465|#define  Color_RGB16_init( r, g, b ) \
 466|  ( ((r) << 11) | ((g) << 5) | (b) )
 467|#endif
 468|
 469|
 470|/***********************************************************************
 471| 39. <<< [Color_RGB16_getR] Red を得る(0〜31)>>>
 472|************************************************************************/
 473|#ifdef NDEBUG
 474|#define  Color_RGB16_getR( color ) \
 475|  ( (color) >> 11 )
 476|#endif
 477|
 478|
 479|/***********************************************************************
 480| 40. <<< [Color_RGB16_getR8] 8bit の Red を得る(0〜256)>>>
 481|************************************************************************/
 482|#define  Color_RGB16_getR8( color ) \
 483| (  ( ((color) & 0xF800) >> 8 ) | \
 484|    ( ((color) & 0xE000) >> 13)  )
 485|
 486|
 487|/***********************************************************************
 488| 41. <<< [Color_RGB16_getG] Green を得る(0〜63)>>>
 489|************************************************************************/
 490|#define  Color_RGB16_getG( color ) \
 491|  ( ((color) >> 5 ) & 0x3F )
 492|
 493|
 494|/***********************************************************************
 495| 42. <<< [Color_RGB16_getG8] 8bit の Green を得る(0〜256)>>>
 496|************************************************************************/
 497|#define  Color_RGB16_getG8( color ) \
 498| (  ( ((color) & 0x07E0) >> 3 ) | \
 499|    ( ((color) & 0x0600) >> 9 )  )
 500|
 501|
 502|/***********************************************************************
 503| 43. <<< [Color_RGB16_getB] Blue を得る(0〜31)>>>
 504|************************************************************************/
 505|#define  Color_RGB16_getB( color ) \
 506|  ( (color) & 0x1F )
 507|
 508|
 509|/***********************************************************************
 510| 44. <<< [Color_RGB16_getB8] 8bit の Blue を得る(0〜256)>>>
 511|************************************************************************/
 512|#define  Color_RGB16_getB8( color ) \
 513| (  ( ((color) & 0x001F) << 3 ) | \
 514|    ( ((color) & 0x001C) >> 2 )  )
 515|
 516|
 517|/***********************************************************************
 518| 45. <<< [Color_RGB16_getRGB8] 16bpp色を 8bpp色に変換する >>>
 519|【機能】
 520|・16bpp(R5,G6,B5) を 8bpp(R3,G3,B2)に変換します。
 521|************************************************************************/
 522|#define  Color_RGB16_getRGB8( color ) \
 523| (  ( ((color) & 0xE000) >> 8 ) | \
 524|    ( ((color) & 0x0700) >> 6 ) | \
 525|    ( ((color) & 0x0018) >> 3 )  )
 526|
 527|
 528|/***********************************************************************
 529| 46. <<< [Color_RGB16_getRGB24] 16bpp色を 24bpp色に変換する >>>
 530|【機能】
 531|・16bpp(R5,G6,B5) を 24bpp(R8,G8,B8)に変換します。
 532|************************************************************************/
 533|#define  Color_RGB16_getRGB24( color ) \
 534| (  ( ((color) & 0xF800) << 8 ) | ( ((color) & 0xE000) << 3 ) | \
 535|    ( ((color) & 0x07E0) << 5 ) | ( ((color) & 0x0600) >> 1 ) | \
 536|    ( ((color) & 0x001F) << 3 ) | ( ((color) & 0x001F) >> 2 ) )
 537|
 538|
 539|/***********************************************************************
 540| 47. <<< [Color_RGB16_getRGB15] 16bpp色を 15bpp色に変換する >>>
 541|【機能】
 542|・16bpp(R5,G6,B5) を 15bpp(R5,G5,B5)に変換します。
 543|************************************************************************/
 544|#define  Color_RGB16_getRGB15( color ) \
 545| (  ( ((color) & 0xFFC0) >> 1 ) | ((color) & 0x001F)  )
 546|
 547|
 548|
 549| 
 550|/*------------------------------------------------------------------------*/
 551|/* 48. <<< RGB カラー 8bpp >>> */ 
 552|/*------------------------------------------------------------------------*/
 553|
 554|/***********************************************************************
 555| 49. <<< [Color_RGB8_getRGB24] 8bpp色を 24bpp色に変換する >>>
 556|【機能】
 557|・8bpp(R3,G3,B2) を 24bpp(R8,G8,B8)に変換します。
 558|************************************************************************/
 559|#define  Color_RGB8_getRGB24( color ) \
 560| (  ( ((color) & 0xE0) << 16 ) | ( ((color) & 0xE0) << 13 ) | ( ((color) & 0x00C0) << 10 ) | \
 561|    ( ((color) & 0x1C) << 11 ) | ( ((color) & 0x1C) <<  8 ) | ( ((color) & 0x0018) <<  5 ) | \
 562|    ( ((color) & 0x03) <<  6 ) | ( ((color) & 0x03) <<  4 ) | \
 563|    ( ((color) & 0x03) <<  2 ) | ( ((color) & 0x03)       ) )
 564|
 565|
 566|/***********************************************************************
 567| 50. <<< [Color_RGB8_getRGB18] 8bpp色を 18bpp色に変換する >>>
 568|【機能】
 569|・8bpp(R3,G3,B2) を 18bpp(R6,G6,B6)に変換します。
 570|************************************************************************/
 571|#define  Color_RGB8_getRGB18( color ) \
 572| (  ( ((color) & 0xE0) << 10 ) | ( ((color) & 0xE0) <<  7 ) | \
 573|    ( ((color) & 0x1C) <<  7 ) | ( ((color) & 0x1C) <<  4 ) | \
 574|    ( ((color) & 0x03) <<  4 ) | ( ((color) & 0x03) <<  2 ) | \
 575|    ( ((color) & 0x03) ) )
 576|
 577| 
 578|/*------------------------------------------------------------------------*/
 579|/* 51. <<< RGB カラー 3bpp >>> */ 
 580|/*------------------------------------------------------------------------*/
 581|
 582|/***********************************************************************
 583| 52. <<< [Color_RGB3_getRGB16] 3bpp色を 16bpp色に変換する >>>
 584|【機能】
 585|・3bpp(R1,G1,B1) を 16bpp(R5,G6,B5)に変換します。
 586|************************************************************************/
 587|#define  Color_RGB3_getRGB16( color ) \
 588| (  ( ((color) & 4) ? 0xF800 : 0 ) | \
 589|    ( ((color) & 2) ? 0x07E0 : 0 ) | \
 590|    ( ((color) & 1) ? 0x001F : 0 ) )
 591|
 592|
 593|/***********************************************************************
 594| 53. <<< [Color_RGB3_getRGB24] 3bpp色を 24bpp色に変換する >>>
 595|【機能】
 596|・3bpp(R1,G1,B1) を 24bpp(R8,G8,B8)に変換します。
 597|************************************************************************/
 598|#define  Color_RGB3_getRGB24( color ) \
 599| (  ( ((color) & 4) ? 0xFF0000 : 0 ) | \
 600|    ( ((color) & 2) ? 0x00FF00 : 0 ) | \
 601|    ( ((color) & 1) ? 0x0000FF : 0 ) )
 602|
 603| 
 604|#endif 
 605| 
 606|