- Implement ProtocolResetComplete
[reactos.git] / 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 DrawCaret(HWND hWnd, PTHRDCARETINFO CaretInfo)
37 {
38 HDC hDC, hComp;
39
40 hDC = GetDC(hWnd);
41 if(hDC)
42 {
43 if(CaretInfo->Bitmap && GetBitmapDimensionEx(CaretInfo->Bitmap, &CaretInfo->Size))
44 {
45 hComp = CreateCompatibleDC(hDC);
46 if(hComp)
47 {
48 SelectObject(hComp, CaretInfo->Bitmap);
49 BitBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, hComp, 0, 0, SRCINVERT);
50 DeleteDC(hComp);
51 }
52 else
53 PatBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, DSTINVERT);
54 }
55 else
56 {
57 PatBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, DSTINVERT);
58 }
59 ReleaseDC(hWnd, hDC);
60 }
61 }
62
63 /*
64 * @implemented
65 */
66 BOOL STDCALL
67 CreateCaret(HWND hWnd,
68 HBITMAP hBitmap,
69 int nWidth,
70 int nHeight)
71 {
72 return (BOOL)NtUserCreateCaret(hWnd, hBitmap, nWidth, nHeight);
73 }
74
75
76 /*
77 * @implemented
78 */
79 BOOL STDCALL
80 DestroyCaret(VOID)
81 {
82 return (BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_DESTROY_CARET);
83 }
84
85
86 /*
87 * @implemented
88 */
89 UINT STDCALL
90 GetCaretBlinkTime(VOID)
91 {
92 return NtUserGetCaretBlinkTime();
93 }
94
95
96 /*
97 * @implemented
98 */
99 BOOL STDCALL
100 GetCaretPos(LPPOINT lpPoint)
101 {
102 return (BOOL)NtUserGetCaretPos(lpPoint);
103 }
104
105
106 /*
107 * @implemented
108 */
109 BOOL STDCALL
110 SetCaretBlinkTime(UINT uMSeconds)
111 {
112 return NtUserSetCaretBlinkTime(uMSeconds);
113 }
114
115
116 /*
117 * @implemented
118 */
119 BOOL STDCALL
120 SetCaretPos(int X,
121 int Y)
122 {
123 return NtUserSetCaretPos(X, Y);
124 }
125
126
127 /* EOF */