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|