~paulliu/ubuntu/quantal/freerdp/fixext

« back to all changes in this revision

Viewing changes to libfreerdpgdi/gdi_color.h

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2012-01-31 10:02:14 UTC
  • mto: This revision was merged to the branch mainline in revision 11.
  • Revision ID: package-import@ubuntu.com-20120131100214-zvig71djj2sqgq22
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- c-basic-offset: 8 -*-
2
 
   FreeRDP: A Remote Desktop Protocol client.
3
 
   GDI Color Conversion Routines
4
 
 
5
 
   Copyright (C) Marc-Andre Moreau <marcandre.moreau@gmail.com> 2010
6
 
 
7
 
   This program is free software; you can redistribute it and/or modify
8
 
   it under the terms of the GNU General Public License as published by
9
 
   the Free Software Foundation; either version 2 of the License, or
10
 
   (at your option) any later version.
11
 
 
12
 
   This program is distributed in the hope that it will be useful,
13
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
   GNU General Public License for more details.
16
 
 
17
 
   You should have received a copy of the GNU General Public License
18
 
   along with this program; if not, write to the Free Software
19
 
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
 
*/
21
 
 
22
 
#ifndef __GDI_COLOR_H
23
 
#define __GDI_COLOR_H
24
 
 
25
 
#include "libfreerdpgdi.h"
26
 
 
27
 
/* COLORREF (RGB 24) */
28
 
 
29
 
#define RGB(_r, _g, _b)  \
30
 
        (0xFF << 24) | (_r << 16) | (_g << 8) | _b;
31
 
 
32
 
#define PixelRGB(_pixel)  \
33
 
        (_pixel.red << 16) | (_pixel.green << 8) | _pixel.blue
34
 
 
35
 
#define GetRGB(_r, _g, _b, _p) \
36
 
        _r = (_p & 0xFF0000) >> 16; \
37
 
        _g = (_p & 0xFF00) >> 8; \
38
 
        _b = (_p & 0xFF); \
39
 
 
40
 
/* RGB 15 (RGB_555) */
41
 
 
42
 
#define RGB15(_r, _g, _b)  \
43
 
        (_r << 10) | (_g << 5) | _b;
44
 
 
45
 
#define GetRGB15(_r, _g, _b, _p) \
46
 
        _r = (_p & 0x7C00) >> 10; \
47
 
        _g = (_p & 0x3E0) >> 5; \
48
 
        _b = (_p & 0x1F);
49
 
 
50
 
/* BGR 15 (BGR_555) */
51
 
 
52
 
#define BGR15(_r, _g, _b)  \
53
 
        (_b << 10) | (_g << 5) | _r;
54
 
 
55
 
#define GetBGR15(_r, _g, _b, _p) \
56
 
        _b = ((_p << 3) & 0xF8) | ((_p >> 2) & 0x7); \
57
 
        _g = ((_p >> 2) & 0xF8) | ((_p >> 8) & 0x7); \
58
 
        _r = ((_p >> 7) & 0xF8) | ((_p >> 12) & 0x7);
59
 
 
60
 
/* RGB 16 (RGB_565) */
61
 
 
62
 
#define RGB16(_r, _g, _b)  \
63
 
        (_r << 11) | (_g << 5) | _b;
64
 
 
65
 
#define GetRGB16(_r, _g, _b, _p) \
66
 
        _r = (_p & 0xF800) >> 11; \
67
 
        _g = (_p & 0x7E0) >> 5; \
68
 
        _b = (_p & 0x1F);
69
 
 
70
 
/* BGR 16 (BGR_565) */
71
 
 
72
 
#define BGR16(_r, _g, _b)  \
73
 
        (_b << 11) | (_g << 5) | _r;
74
 
 
75
 
#define GetBGR16(_r, _g, _b, _p) \
76
 
        _b = ((_p << 3) & 0xF8) | ((_p >> 2) & 0x7); \
77
 
        _g = ((_p >> 3) & 0xFC) | ((_p >> 9) & 0x3); \
78
 
        _r = ((_p >> 8) & 0xF8) | ((_p >> 13) & 0x7);
79
 
 
80
 
/* RGB 24 (RGB_888) */
81
 
 
82
 
#define RGB24(_r, _g, _b)  \
83
 
        (_r << 16) | (_g << 8) | _b;
84
 
 
85
 
#define GetRGB24(_r, _g, _b, _p) \
86
 
        _r = (_p & 0xFF0000) >> 16; \
87
 
        _g = (_p & 0xFF00) >> 8; \
88
 
        _b = (_p & 0xFF);
89
 
 
90
 
/* BGR 24 (BGR_888) */
91
 
 
92
 
#define BGR24(_r, _g, _b)  \
93
 
        (_b << 16) | (_g << 8) | _r;
94
 
 
95
 
#define GetBGR24(_r, _g, _b, _p) \
96
 
        _b = (_p & 0xFF0000) >> 16; \
97
 
        _g = (_p & 0xFF00) >> 8; \
98
 
        _r = (_p & 0xFF);
99
 
 
100
 
/* RGB 32 (ARGB_8888), alpha ignored */
101
 
 
102
 
#define RGB32(_r, _g, _b)  \
103
 
        (0xFF << 24) | (_r << 16) | (_g << 8) | _b;
104
 
 
105
 
#define GetRGB32(_r, _g, _b, _p) \
106
 
        _r = (_p & 0xFF0000) >> 16; \
107
 
        _g = (_p & 0xFF00) >> 8; \
108
 
        _b = (_p & 0xFF);
109
 
 
110
 
/* ARGB 32 (ARGB_8888) */
111
 
 
112
 
#define ARGB32(_a,_r, _g, _b)  \
113
 
        (_a << 24) | (_r << 16) | (_g << 8) | _b;
114
 
 
115
 
#define GetARGB32(_a, _r, _g, _b, _p) \
116
 
        _a = (_p & 0xFF000000) >> 24; \
117
 
        _r = (_p & 0xFF0000) >> 16; \
118
 
        _g = (_p & 0xFF00) >> 8; \
119
 
        _b = (_p & 0xFF);
120
 
 
121
 
/* BGR 32 (ABGR_8888), alpha ignored */
122
 
 
123
 
#define BGR32(_r, _g, _b)  \
124
 
        (_b << 16) | (_g << 8) | _r;
125
 
 
126
 
#define GetBGR32(_r, _g, _b, _p) \
127
 
        _b = (_p & 0xFF0000) >> 16; \
128
 
        _g = (_p & 0xFF00) >> 8; \
129
 
        _r = (_p & 0xFF);
130
 
 
131
 
/* BGR 32 (ABGR_8888) */
132
 
 
133
 
#define ABGR32(_a, _r, _g, _b)  \
134
 
        (_a << 24) | (_b << 16) | (_g << 8) | _r;
135
 
 
136
 
#define GetABGR32(_a, _r, _g, _b, _p) \
137
 
        _a = (_p & 0xFF000000) >> 24; \
138
 
        _b = (_p & 0xFF0000) >> 16; \
139
 
        _g = (_p & 0xFF00) >> 8; \
140
 
        _r = (_p & 0xFF);
141
 
 
142
 
void gdi_color_convert(PIXEL *pixel, int color, int bpp, HPALETTE palette);
143
 
char* gdi_image_convert(char* srcData, int width, int height, int srcBpp, int dstBpp, HPALETTE palette);
144
 
char* gdi_glyph_convert(int width, int height, char* data);
145
 
 
146
 
#endif /* __GDI_COLOR_H */