doxygen: prevent GPL license block from being parsed as doxygen comment.
[blender.git] / source / blender / imbuf / intern / dds / Color.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * Contributors: Amorilia (amorilia@gamebox.net)
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 /*
26  * This file is based on a similar file from the NVIDIA texture tools
27  * (http://nvidia-texture-tools.googlecode.com/)
28  *
29  * Original license from NVIDIA follows.
30  */
31
32 // This code is in the public domain -- castanyo@yahoo.es
33
34 #ifndef _DDS_COLOR_H
35 #define _DDS_COLOR_H
36
37 /// 32 bit color stored as BGRA.
38 class Color32
39 {
40 public:
41         Color32() { }
42         Color32(const Color32 & c) : u(c.u) { }
43         Color32(unsigned char R, unsigned char G, unsigned char B) { setRGBA(R, G, B, 0xFF); }
44         Color32(unsigned char R, unsigned char G, unsigned char B, unsigned char A) { setRGBA( R, G, B, A); }
45         //Color32(unsigned char c[4]) { setRGBA(c[0], c[1], c[2], c[3]); }
46         //Color32(float R, float G, float B) { setRGBA(uint(R*255), uint(G*255), uint(B*255), 0xFF); }
47         //Color32(float R, float G, float B, float A) { setRGBA(uint(R*255), uint(G*255), uint(B*255), uint(A*255)); }
48         Color32(unsigned int U) : u(U) { }
49
50         void setRGBA(unsigned char R, unsigned char G, unsigned char B, unsigned char A)
51         {
52                 r = R;
53                 g = G;
54                 b = B;
55                 a = A;
56         }
57
58         void setBGRA(unsigned char B, unsigned char G, unsigned char R, unsigned char A = 0xFF)
59         {
60                 r = R;
61                 g = G;
62                 b = B;
63                 a = A;
64         }
65
66         operator unsigned int () const {
67                 return u;
68         }
69         
70         union {
71                 struct {
72                         unsigned char b, g, r, a;
73                 };
74                 unsigned int u;
75         };
76 };
77
78 /// 16 bit 565 BGR color.
79 class Color16
80 {
81 public:
82         Color16() { }
83         Color16(const Color16 & c) : u(c.u) { }
84         explicit Color16(unsigned short U) : u(U) { }
85         
86         union {
87                 struct {
88                         unsigned short b : 5;
89                         unsigned short g : 6;
90                         unsigned short r : 5;
91                 };
92                 unsigned short u;
93         };
94 };
95
96 #endif // _DDS_COLOR_H