Initial commit - from Precise source
[freerdp-ubuntu-pcb-backport.git] / libfreerdp-gdi / pen.c
1 /**
2  * FreeRDP: A Remote Desktop Protocol Client
3  * GDI Pen Functions
4  *
5  * Copyright 2010-2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 /* GDI Pen Functions: http://msdn.microsoft.com/en-us/library/dd162790 */
21
22 #include <stdio.h>
23 #include <string.h>
24 #include <stdlib.h>
25
26 #include <freerdp/api.h>
27 #include <freerdp/freerdp.h>
28 #include <freerdp/gdi/gdi.h>
29
30 #include <freerdp/gdi/pen.h>
31
32 /**
33  * Create a new pen.\n
34  * @msdn{dd183509}
35  * @param fnPenStyle pen style
36  * @param nWidth pen width
37  * @param crColor pen color
38  * @return new pen
39  */
40
41 HGDI_PEN gdi_CreatePen(int fnPenStyle, int nWidth, int crColor)
42 {
43         HGDI_PEN hPen = (HGDI_PEN) malloc(sizeof(GDI_PEN));
44         hPen->objectType = GDIOBJECT_PEN;
45         hPen->style = fnPenStyle;
46         hPen->color = crColor;
47         hPen->width = nWidth;
48         return hPen;
49 }
50
51 INLINE uint8 gdi_GetPenColor_8bpp(HGDI_PEN pen)
52 {
53         /* TODO: implement conversion using palette */
54         return 0xFF;
55 }
56
57 INLINE uint16 gdi_GetPenColor_16bpp(HGDI_PEN pen)
58 {
59         uint16 p;
60         int r, g, b;
61         GetRGB32(r, g, b, pen->color);
62         RGB_888_565(r, g, b);
63         p = RGB16(r, g, b);
64         return p;
65 }
66
67 INLINE uint32 gdi_GetPenColor_32bpp(HGDI_PEN pen)
68 {
69         return pen->color;
70 }