Avoid infinite loop in CreateRoundRectRgn().
This commit is contained in:
parent
cbeb644a94
commit
bbdb9dbba6
|
@ -698,11 +698,6 @@ HRGN WINAPI CreateRoundRectRgn( INT left, INT top,
|
||||||
int asq, bsq, d, xd, yd;
|
int asq, bsq, d, xd, yd;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
|
|
||||||
/* Check if we can do a normal rectangle instead */
|
|
||||||
|
|
||||||
if ((ellipse_width == 0) || (ellipse_height == 0))
|
|
||||||
return CreateRectRgn( left, top, right, bottom );
|
|
||||||
|
|
||||||
/* Make the dimensions sensible */
|
/* Make the dimensions sensible */
|
||||||
|
|
||||||
if (left > right) { INT tmp = left; left = right; right = tmp; }
|
if (left > right) { INT tmp = left; left = right; right = tmp; }
|
||||||
|
@ -711,6 +706,16 @@ HRGN WINAPI CreateRoundRectRgn( INT left, INT top,
|
||||||
ellipse_width = abs(ellipse_width);
|
ellipse_width = abs(ellipse_width);
|
||||||
ellipse_height = abs(ellipse_height);
|
ellipse_height = abs(ellipse_height);
|
||||||
|
|
||||||
|
/* Check parameters */
|
||||||
|
|
||||||
|
if (ellipse_width > right-left) ellipse_width = right-left;
|
||||||
|
if (ellipse_height > bottom-top) ellipse_height = bottom-top;
|
||||||
|
|
||||||
|
/* Check if we can do a normal rectangle instead */
|
||||||
|
|
||||||
|
if ((ellipse_width < 2) || (ellipse_height < 2))
|
||||||
|
return CreateRectRgn( left, top, right, bottom );
|
||||||
|
|
||||||
/* Create region */
|
/* Create region */
|
||||||
|
|
||||||
d = (ellipse_height < 128) ? ((3 * ellipse_height) >> 2) : 64;
|
d = (ellipse_height < 128) ? ((3 * ellipse_height) >> 2) : 64;
|
||||||
|
@ -719,11 +724,6 @@ HRGN WINAPI CreateRoundRectRgn( INT left, INT top,
|
||||||
TRACE("(%d,%d-%d,%d %dx%d): ret=%04x\n",
|
TRACE("(%d,%d-%d,%d %dx%d): ret=%04x\n",
|
||||||
left, top, right, bottom, ellipse_width, ellipse_height, hrgn );
|
left, top, right, bottom, ellipse_width, ellipse_height, hrgn );
|
||||||
|
|
||||||
/* Check parameters */
|
|
||||||
|
|
||||||
if (ellipse_width > right-left) ellipse_width = right-left;
|
|
||||||
if (ellipse_height > bottom-top) ellipse_height = bottom-top;
|
|
||||||
|
|
||||||
/* Ellipse algorithm, based on an article by K. Porter */
|
/* Ellipse algorithm, based on an article by K. Porter */
|
||||||
/* in DDJ Graphics Programming Column, 8/89 */
|
/* in DDJ Graphics Programming Column, 8/89 */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue