Added top level ignore list
[reactos.git] / reactos / subsys / win32k / objects / gdiobj.c
1 /*
2 * GDIOBJ.C - GDI object manipulation routines
3 *
4 * $Id: gdiobj.c,v 1.4 1999/11/17 20:54:05 rex Exp $
5 *
6 */
7
8 #undef WIN32_LEAN_AND_MEAN
9 #include <windows.h>
10 #include <ddk/ntddk.h>
11 #include <win32k/gdiobj.h>
12
13 PGDIOBJ GDIOBJ_AllocObject(WORD Size, WORD Magic)
14 {
15 PGDIOBJHDR NewObj;
16
17 NewObj = ExAllocatePool(PagedPool, Size + sizeof (GDIOBJHDR));
18 if (NewObj == NULL)
19 {
20 return NULL;
21 }
22
23 RtlZeroMemory(NewObj, Size + sizeof (GDIOBJHDR));
24 NewObj->wMagic = Magic;
25 #if 0
26 KeInitializeSpinlock(&NewObj->Lock);
27 #endif
28
29 return (PGDIOBJ)(((PCHAR) NewObj) + sizeof (GDIOBJHDR));
30 }
31
32 HGDIOBJ GDIOBJ_PtrToHandle (PGDIOBJ Obj, WORD Magic)
33 {
34 PGDIOBJHDR objHeader;
35
36 objHeader = (PGDIOBJHDR) (((PCHAR)Obj) - sizeof (GDIOBJHDR));
37 if (objHeader->wMagic != Magic)
38 {
39 return 0;
40 }
41
42 return (HGDIOBJ) objHeader;
43 }
44
45 PGDIOBJ GDIOBJ_HandleToPtr (HGDIOBJ Obj, WORD Magic)
46 {
47 PGDIOBJHDR objHeader;
48
49 objHeader = (PGDIOBJHDR) Obj;
50
51 /* FIXME: Lock object for duration */
52
53 if (objHeader->wMagic != Magic)
54 {
55 return 0;
56 }
57
58 return (PGDIOBJ) (((PCHAR)Obj) + sizeof (GDIOBJHDR));
59 }
60
61 BOOL GDIOBJ_LockObject (HGDIOBJ Obj)
62 {
63 /* FIXME: write this */
64 return TRUE;
65 }
66
67 BOOL GDIOBJ_UnlockObject (HGDIOBJ Obj)
68 {
69 /* FIXME: write this */
70 return TRUE;
71 }
72
73 HGDIOBJ GDIOBJ_GetNextObject (HGDIOBJ Obj, WORD Magic)
74 {
75 PGDIOBJHDR objHeader;
76
77 objHeader = (PGDIOBJHDR) ((PCHAR) Obj - sizeof (GDIOBJHDR));
78 if (objHeader->wMagic != Magic)
79 {
80 return 0;
81 }
82
83 return objHeader->hNext;
84 }
85
86 HGDIOBJ GDIOBJ_SetNextObject (HGDIOBJ Obj, WORD Magic, HGDIOBJ NextObj)
87 {
88 PGDIOBJHDR objHeader;
89 HGDIOBJ oldNext;
90
91 /* FIXME: should we lock/unlock the object here? */
92 objHeader = (PGDIOBJHDR) ((PCHAR) Obj - sizeof (GDIOBJHDR));
93 if (objHeader->wMagic != Magic)
94 {
95 return 0;
96 }
97 oldNext = objHeader->hNext;
98 objHeader->hNext = NextObj;
99
100 return oldNext;
101 }
102
103
104