color.h

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|