2 #undef WIN32_LEAN_AND_MEAN
5 #include <win32k/fillshap.h>
7 #include <win32k/pen.h>
8 #include <include/object.h>
11 #include <win32k/debug1.h>
65 W32kPolyPolygon(HDC hDC,
67 CONST LPINT PolyCounts,
75 W32kRectangle(HDC hDC,
81 DC *dc = DC_HandleToPtr(hDC);
82 SURFOBJ *SurfObj = (SURFOBJ*)AccessUserObject((ULONG)dc->Surface);
92 RectBounds = GDIOBJ_LockObj(dc->w.hGCClipRgn, GO_REGION_MAGIC);
93 //ei not yet implemented ASSERT(RectBounds);
95 if(PATH_IsPathOpen(dc->w.path)) {
96 ret = PATH_Rectangle(hDC, LeftRect, TopRect, RightRect, BottomRect);
98 // Draw the rectangle with the current pen
99 pen = (PENOBJ*) GDIOBJ_LockObj(dc->w.hPen, GO_PEN_MAGIC);
101 BrushObj = (PBRUSHOBJ)PenToBrushObj(dc, pen);
102 GDIOBJ_UnlockObj( dc->w.hPen, GO_PEN_MAGIC );
104 LeftRect += dc->w.DCOrgX;
105 RightRect += dc->w.DCOrgX;
106 TopRect += dc->w.DCOrgY;
107 BottomRect += dc->w.DCOrgY;
109 ret = EngLineTo(SurfObj,
112 LeftRect, TopRect, RightRect, TopRect,
113 RectBounds, // Bounding rectangle
114 dc->w.ROPmode); // MIX
116 ret = EngLineTo(SurfObj,
119 RightRect, TopRect, RightRect, BottomRect,
120 RectBounds, // Bounding rectangle
121 dc->w.ROPmode); // MIX
123 ret = EngLineTo(SurfObj,
126 LeftRect, BottomRect, RightRect, BottomRect,
127 RectBounds, // Bounding rectangle
128 dc->w.ROPmode); // MIX
130 ret = EngLineTo(SurfObj,
133 LeftRect, TopRect, LeftRect, BottomRect,
134 RectBounds, // Bounding rectangle
135 dc->w.ROPmode); // MIX */
137 // FIXME: BrushObj is obtained above; decide which one is correct
138 BrushObj = (BRUSHOBJ*) GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC);
142 if (BrushObj->logbrush.lbStyle != BS_NULL)
144 DestRect.left = LeftRect + 1;
145 DestRect.right = RightRect - 1;
146 DestRect.top = TopRect + 1;
147 DestRect.bottom = BottomRect - 1;
148 ret = EngBitBlt(SurfObj,
161 GDIOBJ_UnlockObj( dc->w.hBrush, GO_PEN_MAGIC );
164 // FIXME: Move current position in DC?
165 GDIOBJ_UnlockObj(dc->w.hGCClipRgn, GO_REGION_MAGIC);
166 DC_ReleasePtr( hDC );
172 W32kRoundRect(HDC hDC,