[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Re: gdk_draw_polygon +stipple fill has problem
- From: Melvin Hadasht <melvin hadasht free fr>
- To: "'gtk-app-devel-list gnome org'" <gtk-app-devel-list gnome org>
- Subject: Re: Re: gdk_draw_polygon +stipple fill has problem
- Date: Fri, 4 Jul 2003 10:39:00 +0200
Hi,
> The width and height calculations are wrong. Obvioously, one cannot
> calculate them before knowing what the actual minimum x and y will
> be. I.e. two separate loops are needed:
>
> for (i = 0; i < npoints; i++)
> {
> bounds.x = MIN (bounds.x, points[i].x);
> bounds.y = MIN (bounds.y, points[i].y);
> }
>
> for (i = 0; i < npoints; i++)
> {
> bounds.width = MAX (bounds.width, points[i].x - bounds.x);
> bounds.height = MAX (bounds.height, points[i].y - bounds.y);
> }
Two separate loops are not needed if we introduce two temp variables
to hold the max coordinates:
/* Initial valid values for the bounds taken from the first point*/
bounds.x = tmpmax.x = points[0].x;
bounds.y = tmpmax.y = points[0].y;
/* Find min and max by iterating through the rest of the points*/
for (i = 1; i < npoints; i++) /* Note: start at 1 not 0 */
{
bounds.x = MIN (bounds.x, points[i].x);
bounds.y = MIN (bounds.y, points[i].y);
tmpmax.x = MAX(tmpmax.x, points[i].x);
tmpmax.y = MAX(tmpmax.y, points[i].y);
}
/* Compute extents */
bounds.width = tmpmax.x - bounds.x
bounds.height = tmpmax.y - bounds.y
(In fact, we can use bounds.width/height as temp variables, but then
the code is less readable because bounds.width/height will temporarily
contains the max coordinates instead of the width/height)
This gets rid of the second loop that in addition contained
two substractions.
Cheers
--
Melvin Hadasht
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]