- Go away STDCALL, time has come for WINAPI and NTAPI
[reactos.git] / reactos / dll / win32 / user32 / windows / caret.c
1 /*
2 * ReactOS kernel
3 * Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19 /* $Id$
20 *
21 * PROJECT: ReactOS user32.dll
22 * FILE: lib/user32/windows/caret.c
23 * PURPOSE: Caret
24 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
25 * UPDATE HISTORY:
26 * 09-05-2001 CSH Created
27 */
28
29 /* INCLUDES ******************************************************************/
30
31 #include <user32.h>
32
33 #include <wine/debug.h>
34 /* FUNCTIONS *****************************************************************/
35
36 void
37 DrawCaret(HWND hWnd,
38 PTHRDCARETINFO CaretInfo)
39 {
40 HDC hDC, hComp;
41
42 hDC = GetDC(hWnd);
43 if(hDC)
44 {
45 if(CaretInfo->Bitmap && GetBitmapDimensionEx(CaretInfo->Bitmap, &CaretInfo->Size))
46 {
47 hComp = CreateCompatibleDC(hDC);
48 if(hComp)
49 {
50 SelectObject(hComp, CaretInfo->Bitmap);
51 BitBlt(hDC,
52 CaretInfo->Pos.x,
53 CaretInfo->Pos.y,
54 CaretInfo->Size.cx,
55 CaretInfo->Size.cy,
56 hComp,
57 0,
58 0,
59 SRCINVERT);
60 DeleteDC(hComp);
61 }
62 else
63 PatBlt(hDC,
64 CaretInfo->Pos.x,
65 CaretInfo->Pos.y,
66 CaretInfo->Size.cx,
67 CaretInfo->Size.cy,
68 DSTINVERT);
69 }
70 else
71 {
72 PatBlt(hDC,
73 CaretInfo->Pos.x,
74 CaretInfo->Pos.y,
75 CaretInfo->Size.cx,
76 CaretInfo->Size.cy,
77 DSTINVERT);
78 }
79 ReleaseDC(hWnd, hDC);
80 }
81 }
82
83 /*
84 * @implemented
85 */
86 BOOL
87 WINAPI
88 CreateCaret(HWND hWnd,
89 HBITMAP hBitmap,
90 int nWidth,
91 int nHeight)
92 {
93 return (BOOL)NtUserCreateCaret(hWnd, hBitmap, nWidth, nHeight);
94 }
95
96
97 /*
98 * @implemented
99 */
100 BOOL
101 WINAPI
102 DestroyCaret(VOID)
103 {
104 return (BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_DESTROY_CARET);
105 }
106
107
108 /*
109 * @implemented
110 */
111 UINT
112 WINAPI
113 GetCaretBlinkTime(VOID)
114 {
115 return NtUserGetCaretBlinkTime();
116 }
117
118
119 /*
120 * @implemented
121 */
122 BOOL
123 WINAPI
124 GetCaretPos(LPPOINT lpPoint)
125 {
126 return (BOOL)NtUserGetCaretPos(lpPoint);
127 }
128
129
130 /*
131 * @implemented
132 */
133 BOOL
134 WINAPI
135 SetCaretBlinkTime(UINT uMSeconds)
136 {
137 return NtUserSetCaretBlinkTime(uMSeconds);
138 }
139
140
141 /*
142 * @implemented
143 */
144 BOOL
145 WINAPI
146 SetCaretPos(int X,
147 int Y)
148 {
149 return NtUserSetCaretPos(X, Y);
150 }
151
152 /* EOF */