Sync to trunk head (r42241)
[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 /*
85 * @implemented
86 */
87 BOOL
88 WINAPI
89 DestroyCaret(VOID)
90 {
91 return (BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_DESTROY_CARET);
92 }
93
94
95 /*
96 * @implemented
97 */
98 BOOL
99 WINAPI
100 SetCaretBlinkTime(UINT uMSeconds)
101 {
102 return NtUserSetCaretBlinkTime(uMSeconds);
103 }
104
105
106 /*
107 * @implemented
108 */
109 BOOL
110 WINAPI
111 SetCaretPos(int X,
112 int Y)
113 {
114 return NtUserSetCaretPos(X, Y);
115 }
116
117 /* EOF */