Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /* |
2 | *Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. | |
3 | * | |
4 | *Permission is hereby granted, free of charge, to any person obtaining | |
5 | * a copy of this software and associated documentation files (the | |
6 | *"Software"), to deal in the Software without restriction, including | |
7 | *without limitation the rights to use, copy, modify, merge, publish, | |
8 | *distribute, sublicense, and/or sell copies of the Software, and to | |
9 | *permit persons to whom the Software is furnished to do so, subject to | |
10 | *the following conditions: | |
11 | * | |
12 | *The above copyright notice and this permission notice shall be | |
13 | *included in all copies or substantial portions of the Software. | |
14 | * | |
15 | *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
16 | *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
17 | *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
18 | *NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR | |
19 | *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF | |
20 | *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
21 | *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
22 | * | |
23 | *Except as contained in this notice, the name of Harold L Hunt II | |
24 | *shall not be used in advertising or otherwise to promote the sale, use | |
25 | *or other dealings in this Software without prior written authorization | |
26 | *from Harold L Hunt II. | |
27 | * | |
28 | * Authors: Harold L Hunt II | |
29 | */ | |
30 | ||
31 | #ifdef HAVE_XWIN_CONFIG_H | |
32 | #include <xwin-config.h> | |
33 | #endif | |
34 | #include "win.h" | |
35 | ||
36 | #ifdef XWIN_NATIVEGDI | |
37 | /* See Porting Layer Definition - p. 33 */ | |
38 | /* | |
39 | * Called by clients, returns the best size for a cursor, tile, or | |
40 | * stipple, specified by class (sometimes called kind) | |
41 | */ | |
42 | ||
43 | void | |
44 | winQueryBestSizeNativeGDI(int class, unsigned short *pWidth, | |
45 | unsigned short *pHeight, ScreenPtr pScreen) | |
46 | { | |
47 | ErrorF("winQueryBestSizeNativeGDI\n"); | |
48 | } | |
49 | #endif | |
50 | ||
51 | /* | |
52 | * Count the number of one bits in a color mask. | |
53 | */ | |
54 | ||
55 | CARD8 | |
56 | winCountBits(DWORD dw) | |
57 | { | |
58 | DWORD dwBits = 0; | |
59 | ||
60 | while (dw) { | |
61 | dwBits += (dw & 1); | |
62 | dw >>= 1; | |
63 | } | |
64 | ||
65 | return dwBits; | |
66 | } | |
67 | ||
68 | /* | |
69 | * Modify the screen pixmap to point to the new framebuffer address | |
70 | */ | |
71 | ||
72 | Bool | |
73 | winUpdateFBPointer(ScreenPtr pScreen, void *pbits) | |
74 | { | |
75 | winScreenPriv(pScreen); | |
76 | winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; | |
77 | ||
78 | /* Location of shadow framebuffer has changed */ | |
79 | pScreenInfo->pfb = pbits; | |
80 | ||
81 | /* Update the screen pixmap */ | |
82 | if (!(*pScreen->ModifyPixmapHeader) (pScreen->devPrivate, | |
83 | pScreen->width, | |
84 | pScreen->height, | |
85 | pScreen->rootDepth, | |
86 | BitsPerPixel(pScreen->rootDepth), | |
87 | PixmapBytePad(pScreenInfo->dwStride, | |
88 | pScreenInfo->dwBPP), | |
89 | pScreenInfo->pfb)) { | |
90 | FatalError("winUpdateFramebufferPointer - Failed modifying " | |
91 | "screen pixmap\n"); | |
92 | } | |
93 | ||
94 | return TRUE; | |
95 | } | |
96 | ||
97 | #ifdef XWIN_NATIVEGDI | |
98 | /* | |
99 | * Paint the window background with the specified color | |
100 | */ | |
101 | ||
102 | BOOL | |
103 | winPaintBackground(HWND hwnd, COLORREF colorref) | |
104 | { | |
105 | HDC hdc; | |
106 | HBRUSH hbrush; | |
107 | RECT rect; | |
108 | ||
109 | /* Create an hdc */ | |
110 | hdc = GetDC(hwnd); | |
111 | if (hdc == NULL) { | |
112 | printf("gdiWindowProc - GetDC failed\n"); | |
113 | exit(1); | |
114 | } | |
115 | ||
116 | /* Create and select blue brush */ | |
117 | hbrush = CreateSolidBrush(colorref); | |
118 | if (hbrush == NULL) { | |
119 | printf("gdiWindowProc - CreateSolidBrush failed\n"); | |
120 | exit(1); | |
121 | } | |
122 | ||
123 | /* Get window extents */ | |
124 | if (GetClientRect(hwnd, &rect) == FALSE) { | |
125 | printf("gdiWindowProc - GetClientRect failed\n"); | |
126 | exit(1); | |
127 | } | |
128 | ||
129 | /* Fill window with blue brush */ | |
130 | if (FillRect(hdc, &rect, hbrush) == 0) { | |
131 | printf("gdiWindowProc - FillRect failed\n"); | |
132 | exit(1); | |
133 | } | |
134 | ||
135 | /* Delete blue brush */ | |
136 | DeleteObject(hbrush); | |
137 | ||
138 | /* Release the hdc */ | |
139 | ReleaseDC(hwnd, hdc); | |
140 | ||
141 | return TRUE; | |
142 | } | |
143 | #endif |