2 #undef WIN32_LEAN_AND_MEAN
5 #include <win32k/fillshap.h>
7 #include <win32k/pen.h>
8 #include <include/object.h>
9 #include <include/inteng.h>
12 #include <win32k/debug1.h>
66 W32kPolyPolygon(HDC hDC
,
68 CONST LPINT PolyCounts
,
76 W32kRectangle(HDC hDC
,
82 DC
*dc
= DC_HandleToPtr(hDC
);
83 SURFOBJ
*SurfObj
= (SURFOBJ
*)AccessUserObject((ULONG
)dc
->Surface
);
93 RectBounds
= GDIOBJ_LockObj(dc
->w
.hGCClipRgn
, GO_REGION_MAGIC
);
94 //ei not yet implemented ASSERT(RectBounds);
96 if(PATH_IsPathOpen(dc
->w
.path
)) {
97 ret
= PATH_Rectangle(hDC
, LeftRect
, TopRect
, RightRect
, BottomRect
);
99 // Draw the rectangle with the current pen
100 pen
= (PENOBJ
*) GDIOBJ_LockObj(dc
->w
.hPen
, GO_PEN_MAGIC
);
102 BrushObj
= (PBRUSHOBJ
)PenToBrushObj(dc
, pen
);
103 GDIOBJ_UnlockObj( dc
->w
.hPen
, GO_PEN_MAGIC
);
105 LeftRect
+= dc
->w
.DCOrgX
;
106 RightRect
+= dc
->w
.DCOrgX
;
107 TopRect
+= dc
->w
.DCOrgY
;
108 BottomRect
+= dc
->w
.DCOrgY
;
110 ret
= IntEngLineTo(SurfObj
,
113 LeftRect
, TopRect
, RightRect
, TopRect
,
114 RectBounds
, // Bounding rectangle
115 dc
->w
.ROPmode
); // MIX
117 ret
= IntEngLineTo(SurfObj
,
120 RightRect
, TopRect
, RightRect
, BottomRect
,
121 RectBounds
, // Bounding rectangle
122 dc
->w
.ROPmode
); // MIX
124 ret
= IntEngLineTo(SurfObj
,
127 LeftRect
, BottomRect
, RightRect
, BottomRect
,
128 RectBounds
, // Bounding rectangle
129 dc
->w
.ROPmode
); // MIX
131 ret
= IntEngLineTo(SurfObj
,
134 LeftRect
, TopRect
, LeftRect
, BottomRect
,
135 RectBounds
, // Bounding rectangle
136 dc
->w
.ROPmode
); // MIX */
138 // FIXME: BrushObj is obtained above; decide which one is correct
139 BrushObj
= (BRUSHOBJ
*) GDIOBJ_LockObj(dc
->w
.hBrush
, GO_BRUSH_MAGIC
);
143 if (BrushObj
->logbrush
.lbStyle
!= BS_NULL
)
145 DestRect
.left
= LeftRect
+ 1;
146 DestRect
.right
= RightRect
- 1;
147 DestRect
.top
= TopRect
+ 1;
148 DestRect
.bottom
= BottomRect
- 1;
149 ret
= EngBitBlt(SurfObj
,
162 GDIOBJ_UnlockObj( dc
->w
.hBrush
, GO_BRUSH_MAGIC
);
165 // FIXME: Move current position in DC?
166 GDIOBJ_UnlockObj(dc
->w
.hGCClipRgn
, GO_REGION_MAGIC
);
167 DC_ReleasePtr( hDC
);
173 W32kRoundRect(HDC hDC
,