set most of trunk svn property eol-style:native
[reactos.git] / reactos / include / reactos / win32k / ntgdibad.h
1 #ifndef WIN32K_NTGDI_BAD_INCLUDED
2 #define WIN32K_NTGDI_BAD_INCLUDED
3
4 /*
5 *
6 * If you want to help, please read this:
7 *
8 * This file contains NtGdi APIs which are specific to ROS, including
9 * a short comment describing the solution on how to use the actual NtGdi
10 * call documented in ntgdi.h. Here are the main cases and information on
11 * how to remove them from this header.
12 *
13 * - Simple rename. This deals with an API simply having a different name,
14 * with absolutely no other changes needed.
15 * - Rename and new parameters. This deals with a case similar to the one
16 * above, except that new parameters have now
17 * been added. This is also usually extremly
18 * simple to fix. Either pass the right params
19 * or pass null/0 values that you ignore.
20 * - Rename and new structure. This is similar to the above, except that the
21 * information is now passed in a differently
22 * named and organized structure. Ask Alex for
23 * the structure you need and he will add it to
24 * ntgdityp.h
25 * - Rename and different semantics. Similar to the previous examples, except
26 * that parameters have usually been removed
27 * or need to be converted in user-mode in
28 * one form of another.
29 * - Does not exist: user-mode. This means that the API can be fully done in
30 * user mode. In 80% of cases, our API was already
31 * returning NOT_IMPLEMENTED in kernel-mode, so
32 * the work to be done is minimal. A good example
33 * are the ICM and Metafile APIs, which can simply
34 * be removed and added into gdi32.
35 * - Does not exist: GDI Shared Objects. This is by far the hardest case. This
36 * class cannot be fixed until ReactOS
37 * has a working Shared GDI Object table
38 * and a DC_ATTR structure in which the
39 * attributes, selection and deletion of
40 * objects can be quickly done from user-
41 * mode without requiring a kernel mode
42 * call.
43 */
44 /* Should be using ENUMFONTDATAW */
45 typedef struct tagFONTFAMILYINFO
46 {
47 ENUMLOGFONTEXW EnumLogFontEx;
48 NEWTEXTMETRICEXW NewTextMetricEx;
49 DWORD FontType;
50 } FONTFAMILYINFO, *PFONTFAMILYINFO;
51
52 /* Should be using NtGdiHfontCreate with an ENUMLOGFONT */
53 HFONT
54 NTAPI
55 NtGdiCreateFontIndirect(CONST LPLOGFONTW lf);
56
57 /* Should be using NtGdiHfontCreate with an ENUMLOGFONT */
58 HFONT
59 NTAPI
60 NtGdiCreateFont(
61 int Height,
62 int Width,
63 int Escapement,
64 int Orientation,
65 int Weight,
66 DWORD Italic,
67 DWORD Underline,
68 DWORD StrikeOut,
69 DWORD CharSet,
70 DWORD OutputPrecision,
71 DWORD ClipPrecision,
72 DWORD Quality,
73 DWORD PitchAndFamily,
74 LPCWSTR Face
75 );
76
77 /* Should be using NtGdiEnumFontChunk */
78 INT
79 NTAPI
80 NtGdiGetFontFamilyInfo(
81 HDC Dc,
82 LPLOGFONTW LogFont,
83 PFONTFAMILYINFO Info,
84 DWORD Size
85 );
86
87 /* Should be using NtGdiEnumFontChunk */
88 BOOL
89 NTAPI
90 NtGdiTranslateCharsetInfo(
91 PDWORD Src,
92 LPCHARSETINFO CSI,
93 DWORD Flags
94 );
95
96 /* The gdi32 call does all the work in user-mode, save for NtGdiMakeFontDir */
97 BOOL
98 NTAPI
99 NtGdiCreateScalableFontResource(
100 DWORD Hidden,
101 LPCWSTR FontRes,
102 LPCWSTR FontFile,
103 LPCWSTR CurrentPath
104 );
105
106 /* The gdi32 call Should Use NtGdiGetRandomRgn and nothing else */
107 HRGN
108 NTAPI
109 NtGdiGetClipRgn(HDC hDC);
110
111 /* The gdi32 call Should Use NtGdiGetTextExtent */
112 BOOL
113 NTAPI
114 NtGdiGetTextExtentPoint32(
115 HDC hDC,
116 LPCWSTR String,
117 int Count,
118 LPSIZE
119 );
120
121 BOOL
122 STDCALL
123 NtGdiGetCharWidth32(
124 HDC hDC,
125 UINT FirstChar,
126 UINT LastChar,
127 LPINT Buffer
128 );
129
130 /* Use NtGdiOpenDCW */
131 HDC
132 NTAPI
133 NtGdiCreateDC(
134 PUNICODE_STRING Driver,
135 PUNICODE_STRING Device,
136 PUNICODE_STRING Output,
137 CONST PDEVMODEW InitData
138 );
139
140 HDC
141 NTAPI
142 NtGdiCreateIC(
143 PUNICODE_STRING Driver,
144 PUNICODE_STRING Device,
145 PUNICODE_STRING Output,
146 CONST PDEVMODEW DevMode
147 );
148
149 /* Use NtGdiAddFontResourceW */
150 int
151 STDCALL
152 NtGdiAddFontResource(PUNICODE_STRING Filename,
153 DWORD fl);
154
155 /* Use NtGdiDoPalette with GdiPalAnimate */
156 BOOL
157 STDCALL
158 NtGdiAnimatePalette (
159 HPALETTE hpal,
160 UINT StartIndex,
161 UINT Entries,
162 CONST PPALETTEENTRY ppe
163 );
164
165 /* Use NtGdiArcInternal with GdiTypeArc */
166 BOOL
167 STDCALL
168 NtGdiArc(HDC hDC,
169 int LeftRect,
170 int TopRect,
171 int RightRect,
172 int BottomRect,
173 int XStartArc,
174 int YStartArc,
175 int XEndArc,
176 int YEndArc);
177
178 /* Use NtGdiArcInternal with GdiTypeArcTo */
179 BOOL
180 STDCALL
181 NtGdiArcTo(HDC hDC,
182 int LeftRect,
183 int TopRect,
184 int RightRect,
185 int BottomRect,
186 int XRadial1,
187 int YRadial1,
188 int XRadial2,
189 int YRadial2);
190
191 /* Use NtGdiArcInternal with GdiTypeChord */
192 BOOL
193 STDCALL
194 NtGdiChord(HDC hDC,
195 int LeftRect,
196 int TopRect,
197 int RightRect,
198 int BottomRect,
199 int XRadial1,
200 int YRadial1,
201 int XRadial2,
202 int YRadial2);
203
204 /* Metafiles are user mode */
205 HENHMETAFILE
206 STDCALL
207 NtGdiCloseEnhMetaFile (
208 HDC hDC
209 );
210
211 /* Metafiles are user mode */
212 HMETAFILE
213 STDCALL
214 NtGdiCloseMetaFile (
215 HDC hDC
216 );
217
218 /* Does not exist */
219 BOOL
220 STDCALL
221 NtGdiColorMatchToTarget(HDC hDC,
222 HDC hDCTarget,
223 DWORD Action);
224
225 /* Metafiles are user mode */
226 HENHMETAFILE
227 STDCALL
228 NtGdiCopyEnhMetaFile (
229 HENHMETAFILE Src,
230 LPCWSTR File
231 );
232
233 /* Metafiles are user mode */
234 HMETAFILE
235 STDCALL
236 NtGdiCopyMetaFile (
237 HMETAFILE Src,
238 LPCWSTR File
239 );
240
241 /* Use NtGdiCreateBitmap and expand the pbm-> */
242 HBITMAP
243 STDCALL
244 NtGdiCreateBitmapIndirect (
245 CONST BITMAP * BM
246 );
247
248 /* Use NtGdiCreateDIBitmapInternal */
249 HBITMAP
250 STDCALL
251 NtGdiCreateDIBitmap (
252 HDC hDC,
253 CONST BITMAPINFOHEADER * bmih,
254 DWORD Init,
255 CONST VOID * bInit,
256 CONST BITMAPINFO * bmi,
257 UINT Usage
258 );
259
260 /* Use NtGdiCreateCompatibleBitmap */
261 HBITMAP
262 STDCALL
263 NtGdiCreateDiscardableBitmap (
264 HDC hDC,
265 INT Width,
266 INT Height
267 );
268
269 /* Use NtGdiCreateEllipticRgn and expand the lprect-> */
270 HRGN
271 STDCALL
272 NtGdiCreateEllipticRgnIndirect(CONST PRECT rc);
273
274 /* Metafiles are user mode */
275 HDC
276 STDCALL
277 NtGdiCreateEnhMetaFile (
278 HDC hDCRef,
279 LPCWSTR File,
280 CONST LPRECT Rect,
281 LPCWSTR Description
282 );
283
284 /* Metafiles are user mode */
285 HDC
286 STDCALL
287 NtGdiCreateMetaFile (
288 LPCWSTR File
289 );
290
291 /* Use NtGdiCreatePaletteInternal with palNumEntries at the end. */
292 HPALETTE
293 STDCALL
294 NtGdiCreatePalette (
295 CONST PLOGPALETTE lgpl
296 );
297
298 /* Use NtGdiCreatePen with -> as parameters. */
299 HPEN STDCALL
300 NtGdiCreatePenIndirect(
301 CONST PLOGPEN LogBrush);
302
303 /* Use NtGdiPolyPolyDraw with PolyPolyRgn. */
304 HRGN
305 STDCALL
306 NtGdiCreatePolygonRgn(CONST PPOINT pt,
307 INT Count,
308 INT PolyFillMode);
309
310 /* Use NtGdiPolyPolyDraw with PolyPolyRgn. */
311 HRGN
312 STDCALL
313 NtGdiCreatePolyPolygonRgn(CONST PPOINT pt,
314 CONST PINT PolyCounts,
315 INT Count,
316 INT PolyFillMode);
317
318 /* Use NtGdiCreateRectRgn with expanded paraemters. */
319 HRGN
320 STDCALL
321 NtGdiCreateRectRgnIndirect(CONST PRECT rc);
322
323 /* Use NtGdiTransformPoints with GdiDpToLp. */
324 BOOL
325 STDCALL
326 NtGdiDPtoLP (
327 HDC hDC,
328 LPPOINT Points,
329 int Count
330 );
331
332 /* Meta are user-mode. */
333 BOOL
334 STDCALL
335 NtGdiDeleteEnhMetaFile (
336 HENHMETAFILE emf
337 );
338
339 /* Meta are user-mode. */
340 BOOL
341 STDCALL
342 NtGdiDeleteMetaFile (
343 HMETAFILE mf
344 );
345
346 /* Should be done in user-mode. */
347 BOOL STDCALL NtGdiDeleteObject(HGDIOBJ hObject);
348
349 /* Meta are user-mode. */
350 BOOL
351 STDCALL
352 NtGdiEnumEnhMetaFile (
353 HDC hDC,
354 HENHMETAFILE emf,
355 ENHMFENUMPROC EnhMetaFunc,
356 LPVOID Data,
357 CONST LPRECT Rect
358 );
359
360 /* Should be done in user-mode. */
361 int
362 STDCALL
363 NtGdiEnumFonts(HDC hDC,
364 LPCWSTR FaceName,
365 FONTENUMPROCW FontFunc,
366 LPARAM lParam);
367
368 /* Should be done in user-mode. */
369 INT
370 STDCALL
371 NtGdiEnumICMProfiles(HDC hDC,
372 LPWSTR lpstrBuffer,
373 UINT cch );
374
375 /* Meta are user-mode. */
376 BOOL
377 STDCALL
378 NtGdiEnumMetaFile (
379 HDC hDC,
380 HMETAFILE mf,
381 MFENUMPROC MetaFunc,
382 LPARAM lParam
383 );
384
385 /* Should be done in user-mode. */
386 INT
387 STDCALL
388 NtGdiEscape(HDC hDC,
389 INT Escape,
390 INT InSize,
391 LPCSTR InData,
392 LPVOID OutData);
393
394 /* Use NtGdiExtTextOutW with 0, 0 at the end. */
395 BOOL
396 STDCALL
397 NtGdiExtTextOut(HDC hdc,
398 int X,
399 int Y,
400 UINT fuOptions,
401 CONST RECT *lprc,
402 LPCWSTR lpString,
403 UINT cbCount,
404 CONST INT *lpDx);
405
406 /* Use NtGdiExtFloodFill with FLOODFILLBORDER. */
407 BOOL
408 STDCALL
409 NtGdiFloodFill (
410 HDC hDC,
411 INT XStart,
412 INT YStart,
413 COLORREF Fill
414 );
415
416 /* Should be done in user-mode. */
417 BOOL
418 STDCALL
419 NtGdiGdiComment (
420 HDC hDC,
421 UINT Size,
422 CONST LPBYTE Data
423 );
424
425 /* Should be NtGdiFlush. */
426 BOOL STDCALL NtGdiGdiFlush (VOID);
427
428 /* Should be done in user-mode. */
429 DWORD STDCALL NtGdiGdiGetBatchLimit (VOID);
430
431 /* Should be done in user-mode. */
432 DWORD STDCALL NtGdiGdiSetBatchLimit (DWORD Limit);
433
434 /* Use NtGdiGetDCDword with GdiGetArcDirection. */
435 INT
436 STDCALL
437 NtGdiGetArcDirection ( HDC hDC );
438
439 /* Should be done in user-mode. */
440 BOOL
441 STDCALL
442 NtGdiGetAspectRatioFilterEx(HDC hDC,
443 LPSIZE AspectRatio);
444
445 /* Should be done in user-mode using shared GDI Objects. */
446 BOOL
447 STDCALL
448 NtGdiGetBitmapDimensionEx (
449 HBITMAP hBitmap,
450 LPSIZE Dimension
451 );
452
453 /* Should be done in user-mode using shared GDI Objects. */
454 COLORREF STDCALL NtGdiGetBkColor(HDC hDC);
455
456 /* Should be done in user-mode using shared GDI Objects. */
457 INT STDCALL NtGdiGetBkMode(HDC hDC);
458
459 /* Should be done in user-mode using shared GDI Objects. */
460 BOOL STDCALL NtGdiGetBrushOrgEx(HDC hDC, LPPOINT brushOrg);
461
462 /* Use NtGdiGetCharABCWidthsW */
463 BOOL
464 STDCALL
465 NtGdiGetCharABCWidths(HDC hDC,
466 UINT FirstChar,
467 UINT LastChar,
468 LPABC abc);
469
470 /* Should be done in user mode. */
471 BOOL
472 STDCALL
473 NtGdiGetCharABCWidthsFloat(HDC hDC,
474 UINT FirstChar,
475 UINT LastChar,
476 LPABCFLOAT abcF);
477
478 /* Should be done in user mode. */
479 DWORD
480 STDCALL
481 NtGdiGetCharacterPlacement(HDC hDC,
482 LPCWSTR String,
483 int Count,
484 int MaxExtent,
485 LPGCP_RESULTSW Results,
486 DWORD Flags);
487
488 /* Should be done in user mode. */
489 BOOL
490 STDCALL
491 NtGdiGetCharWidthFloat(HDC hDC,
492 UINT FirstChar,
493 UINT LastChar,
494 PFLOAT Buffer);
495
496 /* Use NtGdiGetAppClipBox. */
497 int
498 STDCALL
499 NtGdiGetClipBox (
500 HDC hDC,
501 LPRECT rc
502 );
503
504 /* Use NtGdiGetColorSpaceforBitmap. */
505 HCOLORSPACE
506 STDCALL
507 NtGdiGetColorSpace(HDC hDC);
508
509 /* Should be done in user-mode and/or NtGdiGetDCObject. */
510 HGDIOBJ STDCALL NtGdiGetCurrentObject(HDC hDC, UINT ObjectType);
511
512 /* Should be done in user mode. */
513 BOOL STDCALL NtGdiGetCurrentPositionEx(HDC hDC, LPPOINT currentPosition);
514
515 /* Use NtGdiGetDCPoint with GdiGetDCOrg. */
516 BOOL STDCALL NtGdiGetDCOrgEx(HDC hDC, LPPOINT Point);
517
518 /* Use NtGdiDoPalette with GdiPalGetColorTable. */
519 UINT
520 STDCALL
521 NtGdiGetDIBColorTable (
522 HDC hDC,
523 UINT StartIndex,
524 UINT Entries,
525 RGBQUAD * Colors
526 );
527
528 /* Use NtGdiGetDIBitsInternal. */
529 INT
530 STDCALL
531 NtGdiGetDIBits (
532 HDC hDC,
533 HBITMAP hBitmap,
534 UINT StartScan,
535 UINT ScanLines,
536 LPVOID Bits,
537 LPBITMAPINFO bi,
538 UINT Usage
539 );
540
541
542 /* Meta are user-mode. */
543 HENHMETAFILE
544 STDCALL
545 NtGdiGetEnhMetaFile (
546 LPCWSTR MetaFile
547 );
548
549 /* Meta are user-mode. */
550 UINT
551 STDCALL
552 NtGdiGetEnhMetaFileBits (
553 HENHMETAFILE hemf,
554 UINT BufSize,
555 LPBYTE Buffer
556 );
557
558 /* Meta are user-mode. */
559 UINT
560 STDCALL
561 NtGdiGetEnhMetaFileDescription (
562 HENHMETAFILE hemf,
563 UINT BufSize,
564 LPWSTR Description
565 );
566
567 /* Meta are user-mode. */
568 UINT
569 STDCALL
570 NtGdiGetEnhMetaFileHeader (
571 HENHMETAFILE hemf,
572 UINT BufSize,
573 LPENHMETAHEADER emh
574 );
575
576 /* Meta are user-mode. */
577 UINT
578 STDCALL
579 NtGdiGetEnhMetaFilePaletteEntries (
580 HENHMETAFILE hemf,
581 UINT Entries,
582 LPPALETTEENTRY pe
583 );
584
585 /* Meta are user-mode. */
586 UINT
587 STDCALL
588 NtGdiGetEnhMetaFilePixelFormat(HENHMETAFILE hEMF,
589 DWORD BufSize,
590 CONST PPIXELFORMATDESCRIPTOR pfd);
591
592 /* Should be done in user-mode. */
593 DWORD
594 STDCALL
595 NtGdiGetFontLanguageInfo(HDC hDC);
596
597 /* Should be done in user-mode. */
598 int
599 STDCALL
600 NtGdiGetGraphicsMode ( HDC hDC );
601
602 /* Should be done in user-mode. */
603 BOOL
604 STDCALL
605 NtGdiGetICMProfile(HDC hDC,
606 LPDWORD NameSize,
607 LPWSTR Filename);
608
609 /* Should be done in user-mode. */
610 BOOL
611 STDCALL
612 NtGdiGetLogColorSpace(HCOLORSPACE hColorSpace,
613 LPLOGCOLORSPACEW Buffer,
614 DWORD Size);
615
616 /* Should be done in user-mode using shared GDI Objects. */
617 INT STDCALL NtGdiGetMapMode(HDC hDC);
618
619 /* Meta files are user-mode. */
620 HMETAFILE
621 STDCALL
622 NtGdiGetMetaFile (
623 LPCWSTR MetaFile
624 );
625
626 /* Meta files are user-mode. */
627 UINT
628 STDCALL
629 NtGdiGetMetaFileBitsEx (
630 HMETAFILE hmf,
631 UINT Size,
632 LPVOID Data
633 );
634
635 /* Meta files are user-mode. */
636 int
637 STDCALL
638 NtGdiGetMetaRgn (
639 HDC hDC,
640 HRGN hrgn
641 );
642
643 /* Should be done in user-mode using shared GDI Objects. */
644 INT STDCALL NtGdiGetObject(HGDIOBJ hGDIObj,
645 INT BufSize,
646 LPVOID Object);
647
648 /* Should be done in user-mode using shared GDI Objects. */
649 DWORD STDCALL NtGdiGetObjectType(HGDIOBJ hGDIObj);
650
651 /* Use NtGdiGetOutlineTextMetricsInternalW. */
652 UINT
653 STDCALL
654 NtGdiGetOutlineTextMetrics(HDC hDC,
655 UINT Data,
656 LPOUTLINETEXTMETRICW otm);
657
658 /* Use NtGdiDoPalette with GdiPalGetEntries. */
659 UINT
660 STDCALL
661 NtGdiGetPaletteEntries (
662 HPALETTE hpal,
663 UINT StartIndex,
664 UINT Entries,
665 LPPALETTEENTRY pe
666 );
667
668 /* Should be done in user-mode using shared GDI Objects. */
669 INT
670 STDCALL
671 NtGdiGetPixelFormat(HDC hDC);
672
673 /* Should be done in user-mode using shared GDI Objects. */
674 INT STDCALL NtGdiGetPolyFillMode(HDC hDC);
675
676 /* Should be done in user-mode using shared GDI Objects. */
677 INT STDCALL NtGdiGetROP2(HDC hDC);
678
679 /* Should be done in user-mode using shared GDI Objects. */
680 INT STDCALL NtGdiGetRelAbs(HDC hDC);
681
682 /* Should be done in user-mode using shared GDI Objects. */
683 INT
684 STDCALL
685 NtGdiGetSetTextCharExtra( HDC hDC, INT CharExtra, BOOL Set);
686
687 /* Should be done in user-mode using shared GDI Objects. */
688 INT STDCALL NtGdiGetStretchBltMode(HDC hDC);
689
690 /* Use NtGdiDoPalette with GdiPalSetSystemEntries. */
691 UINT
692 STDCALL
693 NtGdiGetSystemPaletteEntries (
694 HDC hDC,
695 UINT StartIndex,
696 UINT Entries,
697 LPPALETTEENTRY pe
698 );
699
700 /* Should be done in user-mode using shared GDI Objects. */
701 UINT STDCALL NtGdiGetTextAlign(HDC hDC);
702
703 /* Should be done in user-mode using shared GDI Objects. */
704 UINT
705 STDCALL
706 NtGdiGetTextCharset(HDC hDC);
707
708 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
709 COLORREF STDCALL NtGdiGetTextColor(HDC hDC);
710
711 /* Rename to NtGdiGetTextExtentExW. Add 0 at the end. */
712 BOOL
713 STDCALL
714 NtGdiGetTextExtentExPoint(HDC hDC,
715 LPCWSTR String,
716 int Count,
717 int MaxExtent,
718 LPINT Fit,
719 LPINT Dx,
720 LPSIZE Size);
721
722 /* Rename to NtGdiGetTextFaceW, add FALSE at the end. */
723 int
724 STDCALL
725 NtGdiGetTextFace(HDC hDC,
726 int Count,
727 LPWSTR FaceName);
728
729 /* Use NtGdiGetTextMetricsW with 0 at the end */
730 BOOL
731 STDCALL
732 NtGdiGetTextMetrics(HDC hDC,
733 LPTEXTMETRICW tm);
734
735 /* Use NtGdiGetDCPoint with GdiGetViewPortExt */
736 BOOL STDCALL NtGdiGetViewportExtEx(HDC hDC, LPSIZE viewportExt);
737
738 /* Needs to be done in user-mode. */
739 BOOL STDCALL NtGdiGetViewportOrgEx(HDC hDC, LPPOINT viewportOrg);
740
741 /* Metafiles are user-mode. */
742 UINT
743 STDCALL
744 NtGdiGetWinMetaFileBits (
745 HENHMETAFILE hemf,
746 UINT BufSize,
747 LPBYTE Buffer,
748 INT MapMode,
749 HDC Ref
750 );
751
752 /* Needs to be done in user-mode. */
753 BOOL STDCALL NtGdiGetWindowExtEx(HDC hDC, LPSIZE windowExt);
754
755 /* Needs to be done in user-mode. */
756 BOOL STDCALL NtGdiGetWindowOrgEx(HDC hDC, LPPOINT windowOrg);
757
758 /* Use NtGdiGetTransform with GdiWorldSpaceToPageSpace */
759 BOOL
760 STDCALL
761 NtGdiGetWorldTransform (
762 HDC hDC,
763 LPXFORM Xform
764 );
765
766 /* Use NtGdiTransformPoints with GdiDpToLp */
767 BOOL
768 STDCALL
769 NtGdiLPtoDP (
770 HDC hDC,
771 LPPOINT Points,
772 int Count
773 );
774
775 /* Needs to be done in user-mode. */
776 BOOL
777 STDCALL
778 NtGdiMoveToEx(HDC hDC,
779 int X,
780 int Y,
781 LPPOINT Point);
782
783 /* Needs to be done in user-mode. */
784 BOOL
785 STDCALL
786 NtGdiOffsetViewportOrgEx (
787 HDC hDC,
788 int XOffset,
789 int YOffset,
790 LPPOINT Point
791 );
792
793 /* Needs to be done in user-mode. */
794 BOOL
795 STDCALL
796 NtGdiOffsetWindowOrgEx (
797 HDC hDC,
798 int XOffset,
799 int YOffset,
800 LPPOINT Point
801 );
802
803 /* Use NtGdiFillRgn. Add 0 at the end. */
804 BOOL
805 STDCALL
806 NtGdiPaintRgn(HDC hDC,
807 HRGN hRgn);
808
809 /* Use NtGdiArcInternal with GdiTypePie. */
810 BOOL
811 STDCALL
812 NtGdiPie(HDC hDC,
813 int LeftRect,
814 int TopRect,
815 int RightRect,
816 int BottomRect,
817 int XRadial1,
818 int YRadial1,
819 int XRadial2,
820 int YRadial2);
821
822 /* Metafiles are user-mode. */
823 BOOL
824 STDCALL
825 NtGdiPlayEnhMetaFile (
826 HDC hDC,
827 HENHMETAFILE hemf,
828 CONST PRECT Rect
829 );
830
831 /* Metafiles are user-mode. */
832 BOOL
833 STDCALL
834 NtGdiPlayEnhMetaFileRecord (
835 HDC hDC,
836 LPHANDLETABLE Handletable,
837 CONST ENHMETARECORD * EnhMetaRecord,
838 UINT Handles
839 );
840
841 /* Metafiles are user-mode. */
842 BOOL
843 STDCALL
844 NtGdiPlayMetaFile (
845 HDC hDC,
846 HMETAFILE hmf
847 );
848
849 /* Metafiles are user-mode. */
850 BOOL
851 STDCALL
852 NtGdiPlayMetaFileRecord (
853 HDC hDC,
854 LPHANDLETABLE Handletable,
855 LPMETARECORD MetaRecord,
856 UINT Handles
857 );
858
859 /* Use NtGdiPolyPolyDraw with GdiPolyBezier. */
860 BOOL
861 STDCALL
862 NtGdiPolyBezier(HDC hDC,
863 CONST LPPOINT pt,
864 DWORD Count);
865
866 /* Use NtGdiPolyPolyDraw with GdiPolyBezierTo. */
867 BOOL
868 STDCALL
869 NtGdiPolyBezierTo(HDC hDC,
870 CONST LPPOINT pt,
871 DWORD Count);
872
873 /* Use NtGdiPolyPolyDraw with GdiPolyPolyLine. */
874 BOOL
875 STDCALL
876 NtGdiPolyline(HDC hDC,
877 CONST LPPOINT pt,
878 int Count);
879
880 /* Use NtGdiPolyPolyDraw with GdiPolyLineTo. */
881 BOOL
882 STDCALL
883 NtGdiPolylineTo(HDC hDC,
884 CONST LPPOINT pt,
885 DWORD Count);
886
887 /* Use NtGdiPolyPolyDraw with GdiPolyPolyLine. */
888 BOOL
889 STDCALL
890 NtGdiPolyPolyline(HDC hDC,
891 CONST LPPOINT pt,
892 CONST LPDWORD PolyPoints,
893 DWORD Count);
894
895 /* Use NtGdiPolyTextOutW with 0 at the end. */
896 BOOL
897 STDCALL
898 NtGdiPolyTextOut(HDC hDC,
899 CONST LPPOLYTEXTW txt,
900 int Count);
901
902 /* Use NtGdiPolyPolyDraw with GdiPolyPolygon. */
903 BOOL
904 STDCALL
905 NtGdiPolygon(HDC hDC,
906 CONST PPOINT Points,
907 int Count);
908
909 /* Use NtGdiPolyPolyDraw with GdiPolyPolygon. */
910 BOOL
911 STDCALL
912 NtGdiPolyPolygon(HDC hDC,
913 CONST LPPOINT Points,
914 CONST LPINT PolyCounts,
915 int Count);
916
917 /* Call UserRealizePalette. */
918 UINT
919 STDCALL
920 NtGdiRealizePalette (
921 HDC hDC
922 );
923
924 /* Should be done in user-mode. */
925 BOOL
926 STDCALL
927 NtGdiRemoveFontResource(LPCWSTR FileName);
928
929 /* Use NtGdiExtSelectClipRgn with RGN_COPY. */
930 int
931 STDCALL
932 NtGdiSelectClipRgn (
933 HDC hDC,
934 HRGN hrgn
935 );
936
937 /* Should be done in user-mode. */
938 HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
939
940 /* Use NtUserSelectPalette. */
941 HPALETTE
942 STDCALL
943 NtGdiSelectPalette (
944 HDC hDC,
945 HPALETTE hpal,
946 BOOL ForceBackground
947 );
948
949 /* Should be done in user-mode. */
950 INT
951 STDCALL
952 NtGdiSetAbortProc(HDC hDC,
953 ABORTPROC AbortProc);
954
955 /* Use NtGdiGetAndSetDCDword with GdiGetSetArcDirection. */
956 int
957 STDCALL
958 NtGdiSetArcDirection(HDC hDC,
959 int ArcDirection);
960
961 /* Use NtGdiSetBitmapDimension. */
962 BOOL
963 STDCALL
964 NtGdiSetBitmapDimensionEx (
965 HBITMAP hBitmap,
966 INT Width,
967 INT Height,
968 LPSIZE Size
969 );
970
971 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
972 COLORREF STDCALL NtGdiSetBkColor (HDC hDC, COLORREF Color);
973
974 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
975 INT STDCALL NtGdiSetBkMode(HDC hDC, INT backgroundMode);
976
977 /* Use NtGdiSetBrushOrg. */
978 BOOL STDCALL
979 NtGdiSetBrushOrgEx(
980 HDC hDC,
981 INT XOrg,
982 INT YOrg,
983 LPPOINT Point);
984
985 /* Use NtGdiDoPalette with GdiPalSetColorTable, TRUE. */
986 UINT
987 STDCALL
988 NtGdiSetDIBColorTable (
989 HDC hDC,
990 UINT StartIndex,
991 UINT Entries,
992 CONST RGBQUAD * Colors
993 );
994
995 /* Use SetDIBitsToDevice in gdi32. */
996 INT
997 STDCALL
998 NtGdiSetDIBits (
999 HDC hDC,
1000 HBITMAP hBitmap,
1001 UINT StartScan,
1002 UINT ScanLines,
1003 CONST VOID * Bits,
1004 CONST BITMAPINFO * bmi,
1005 UINT ColorUse
1006 );
1007
1008 /* Use NtGdiSetDIBitsToDeviceInternal. */
1009 INT
1010 STDCALL
1011 NtGdiSetDIBitsToDevice (
1012 HDC hDC,
1013 INT XDest,
1014 INT YDest,
1015 DWORD Width,
1016 DWORD Height,
1017 INT XSrc,
1018 INT YSrc,
1019 UINT StartScan,
1020 UINT ScanLines,
1021 CONST VOID * Bits,
1022 CONST BITMAPINFO * bmi,
1023 UINT ColorUse
1024 );
1025
1026 /* Metafiles are user-mode. */
1027 HENHMETAFILE
1028 STDCALL
1029 NtGdiSetEnhMetaFileBits (
1030 UINT BufSize,
1031 CONST PBYTE Data
1032 );
1033
1034 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1035 int
1036 STDCALL
1037 NtGdiSetGraphicsMode (
1038 HDC hDC,
1039 int Mode
1040 );
1041
1042 /* Use NtGdiSetIcmMode. */
1043 INT
1044 STDCALL
1045 NtGdiSetICMMode(HDC hDC,
1046 INT EnableICM);
1047
1048 /* Should be done in user-mode. */
1049 BOOL
1050 STDCALL
1051 NtGdiSetICMProfile(HDC hDC,
1052 LPWSTR Filename);
1053
1054 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1055 int
1056 STDCALL
1057 NtGdiSetMapMode (
1058 HDC hDC,
1059 int MapMode
1060 );
1061
1062 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1063 DWORD
1064 STDCALL
1065 NtGdiSetMapperFlags(HDC hDC,
1066 DWORD Flag);
1067
1068 /* Metafiles are user-mode. */
1069 HMETAFILE
1070 STDCALL
1071 NtGdiSetMetaFileBitsEx (
1072 UINT Size,
1073 CONST PBYTE Data
1074 );
1075
1076 /* Use NtGdiDoPalette with GdiPalSetEntries, TRUE. */
1077 UINT
1078 STDCALL
1079 NtGdiSetPaletteEntries (
1080 HPALETTE hpal,
1081 UINT Start,
1082 UINT Entries,
1083 CONST LPPALETTEENTRY pe
1084 );
1085
1086 /* Use NtGdiSetPixel(hdc, x, y, color) != CLR_INVALID; */
1087 BOOL
1088 STDCALL
1089 NtGdiSetPixelV (
1090 HDC hDC,
1091 INT X,
1092 INT Y,
1093 COLORREF Color
1094 );
1095
1096 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1097 INT STDCALL NtGdiSetPolyFillMode(HDC hDC, INT polyFillMode);
1098
1099 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1100 INT STDCALL NtGdiSetROP2(HDC hDC, INT ROPmode);
1101
1102 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1103 INT STDCALL NtGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
1104
1105 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1106 UINT
1107 STDCALL
1108 NtGdiSetTextAlign(HDC hDC,
1109 UINT Mode);
1110
1111 /* Needs to be done in user-mode, using shared GDI Object Attributes. */
1112 COLORREF STDCALL NtGdiSetTextColor(HDC hDC, COLORREF color);
1113
1114 /* Needs to be done in user-mode. */
1115 BOOL
1116 STDCALL
1117 NtGdiSetWindowExtEx (
1118 HDC hDC,
1119 int XExtent,
1120 int YExtent,
1121 LPSIZE Size
1122 );
1123
1124 /* Needs to be done in user-mode. */
1125 BOOL
1126 STDCALL
1127 NtGdiSetViewportOrgEx (
1128 HDC hDC,
1129 int X,
1130 int Y,
1131 LPPOINT Point
1132 );
1133
1134 /* Needs to be done in user-mode. */
1135 BOOL
1136 STDCALL
1137 NtGdiSetViewportExtEx (
1138 HDC hDC,
1139 int XExtent,
1140 int YExtent,
1141 LPSIZE Size
1142 );
1143
1144 /* Needs to be done in user-mode. */
1145 BOOL
1146 STDCALL
1147 NtGdiSetWindowOrgEx (
1148 HDC hDC,
1149 int X,
1150 int Y,
1151 LPPOINT Point
1152 );
1153
1154 /* Use NtGdiModifyWorldTransform with MWT_MAX + 1; */
1155 BOOL
1156 STDCALL
1157 NtGdiSetWorldTransform (
1158 HDC hDC,
1159 CONST LPXFORM Xform
1160 );
1161
1162 /* Use NtGdiStretchDIBitsInternal. */
1163 INT
1164 STDCALL
1165 NtGdiStretchDIBits (
1166 HDC hDC,
1167 INT XDest,
1168 INT YDest,
1169 INT DestWidth,
1170 INT DestHeight,
1171 INT XSrc,
1172 INT YSrc,
1173 INT SrcWidth,
1174 INT SrcHeight,
1175 CONST VOID * Bits,
1176 CONST BITMAPINFO * BitsInfo,
1177 UINT Usage,
1178 DWORD ROP
1179 );
1180
1181 /* Use NtGdiExtTextOutW with 0, 0 at the end. */
1182 BOOL
1183 STDCALL
1184 NtGdiTextOut(HDC hDC,
1185 int XStart,
1186 int YStart,
1187 LPCWSTR String,
1188 int Count);
1189
1190 /* Needs to be done in user-mode. */
1191 BOOL
1192 STDCALL
1193 NtGdiUpdateICMRegKey(DWORD Reserved,
1194 LPWSTR CMID,
1195 LPWSTR Filename,
1196 UINT Command);
1197
1198 /* These shouldn't even be called NtGdi */
1199 HDC STDCALL NtGdiGetDCState(HDC hDC);
1200 WORD STDCALL NtGdiSetHookFlags(HDC hDC, WORD Flags);
1201 INT
1202 STDCALL
1203 NtGdiSelectVisRgn(HDC hdc,
1204 HRGN hrgn);
1205 VOID STDCALL NtGdiSetDCState ( HDC hDC, HDC hDCSave );
1206
1207 /* All this Should be in user-mode, not NtUser calls. Especially not in GDI! */
1208 DWORD
1209 NTAPI
1210 NtUserCallTwoParam(
1211 DWORD Param1,
1212 DWORD Param2,
1213 DWORD Routine);
1214
1215 #define TWOPARAM_ROUTINE_SETDCPENCOLOR 0x45
1216 #define TWOPARAM_ROUTINE_SETDCBRUSHCOLOR 0x46
1217 #define TWOPARAM_ROUTINE_GETDCCOLOR 0x47
1218
1219 #define NtUserGetDCBrushColor(hbr) \
1220 (COLORREF)NtUserCallTwoParam((DWORD)(hbr), OBJ_BRUSH, TWOPARAM_ROUTINE_GETDCCOLOR)
1221
1222 #define NtUserGetDCPenColor(hbr) \
1223 (COLORREF)NtUserCallTwoParam((DWORD)(hbr), OBJ_PEN, TWOPARAM_ROUTINE_GETDCCOLOR)
1224
1225 #define NtUserSetDCBrushColor(hbr, crColor) \
1226 (COLORREF)NtUserCallTwoParam((DWORD)(hbr), (DWORD)crColor, TWOPARAM_ROUTINE_SETDCBRUSHCOLOR)
1227
1228 #define NtUserSetDCPenColor(hbr, crColor) \
1229 (COLORREF)NtUserCallTwoParam((DWORD)(hbr), (DWORD)crColor, TWOPARAM_ROUTINE_SETDCPENCOLOR)
1230
1231 #endif /* WIN32K_NTGDI_BAD_INCLUDED */