user32/tests: Use skip.
[wine] / dlls / gdiplus / gdiplus.c
1 /*
2  * Copyright (C) 2007 Google (Evan Stade)
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include <stdarg.h>
20
21 #include "windef.h"
22 #include "winbase.h"
23 #include "winerror.h"
24 #include "wine/debug.h"
25 #include "gdiplus.h"
26
27 WINE_DEFAULT_DEBUG_CHANNEL(gdiplus);
28
29 /*****************************************************
30  *      DllMain
31  */
32 BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved)
33 {
34     TRACE("(%p, %d, %p)\n", hinst, reason, reserved);
35
36     switch(reason)
37     {
38     case DLL_WINE_PREATTACH:
39         return FALSE;  /* prefer native version */
40
41     case DLL_PROCESS_ATTACH:
42         DisableThreadLibraryCalls( hinst );
43         break;
44     }
45     return TRUE;
46 }
47
48 /*****************************************************
49  *      GdiplusStartup [GDIPLUS.@]
50  */
51 Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input,
52                              struct GdiplusStartupOutput *output)
53 {
54     if(!token)
55         return InvalidParameter;
56
57     if(input->GdiplusVersion != 1) {
58         return UnsupportedGdiplusVersion;
59     } else if ((input->DebugEventCallback) ||
60         (input->SuppressBackgroundThread) || (input->SuppressExternalCodecs)){
61         FIXME("Unimplemented for non-default GdiplusStartupInput\n");
62         return NotImplemented;
63     } else if(output) {
64         FIXME("Unimplemented for non-null GdiplusStartupOutput\n");
65         return NotImplemented;
66     }
67
68     return Ok;
69 }
70
71 /*****************************************************
72  *      GdiplusShutdown [GDIPLUS.@]
73  */
74 void WINAPI GdiplusShutdown(ULONG_PTR token)
75 {
76     /* FIXME: no object tracking */
77 }
78
79 /*****************************************************
80  *      GdipAlloc [GDIPLUS.@]
81  */
82 void* WINGDIPAPI GdipAlloc(SIZE_T size)
83 {
84     return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
85 }
86
87 /*****************************************************
88  *      GdipFree [GDIPLUS.@]
89  */
90 void WINGDIPAPI GdipFree(void* ptr)
91 {
92     HeapFree(GetProcessHeap(), 0, ptr);
93 }
94
95 COLORREF ARGB2COLORREF(ARGB color)
96 {
97     /*
98     Packing of these color structures:
99     COLORREF:   00bbggrr
100     ARGB:       aarrggbb
101     FIXME:doesn't handle alpha channel
102     */
103     return (COLORREF)
104         ((color & 0x0000ff) << 16) +
105          (color & 0x00ff00) +
106         ((color & 0xff0000) >> 16);
107 }