@@ -229,64 +229,61 @@ void shrinkWindowForAngles(Window &oOutExtent, int nX, int nY,
229229
230230 // Set the X boundaries for the angles
231231 // ABELL - Verify for out-of-raster.
232- double xStart = horizontalIntersect (startAngle, nX, nY, win.yStart );
233- if (isnan ( xStart))
234- xStart = horizontalIntersect (startAngle, nX, nY, win.yStop );
232+ int xStart = hIntersect (startAngle, nX, nY, win.yStart );
233+ if (xStart == std::numeric_limits< int >:: max ( ))
234+ xStart = hIntersect (startAngle, nX, nY, win.yStop );
235235
236- double xStop = horizontalIntersect (endAngle, nX, nY, win.yStart );
237- if (isnan ( xStop))
238- xStop = horizontalIntersect (endAngle, nX, nY, win.yStop );
236+ int xStop = hIntersect (endAngle, nX, nY, win.yStart );
237+ if (xStop == std::numeric_limits< int >:: max ( ))
238+ xStop = hIntersect (endAngle, nX, nY, win.yStop );
239239
240- double xmax = nX;
240+ int xmax = nX;
241241 if (!rayBetween (startAngle, endAngle, 0 ))
242242 {
243- if (!isnan (xStart))
244- xmax = std::max (xmax, static_cast <double >(xStart));
245- if (!isnan (xStop))
246- xmax = std::max (xmax, static_cast <double >(xStop));
247- oOutExtent.xStop =
248- std::min (oOutExtent.xStop , static_cast <int >(std::round (xmax)));
243+ if (xStart != (std::numeric_limits<int >::max)())
244+ xmax = std::max (xmax, xStart);
245+ if (xStop != (std::numeric_limits<int >::max)())
246+ xmax = std::max (xmax, xStop);
247+ oOutExtent.xStop = std::min (oOutExtent.xStop , xmax);
249248 }
250- double xmin = nX;
249+
250+ int xmin = nX;
251251 if (!rayBetween (startAngle, endAngle, M_PI))
252252 {
253253 if (!isnan (xStart))
254254 xmin = std::min (xmin, xStart);
255255 if (!isnan (xStop))
256256 xmin = std::min (xmin, xStop);
257- oOutExtent.xStart =
258- std::max (oOutExtent.xStart , static_cast <int >(std::round (xmin)));
257+ oOutExtent.xStart = std::max (oOutExtent.xStart , xmin);
259258 }
260259
261260 // Set the Y boundaries for the angles
262261 // ABELL - Verify for out-of-raster.
263- double yStart = verticalIntersect (startAngle, nX, nY, win.xStart );
264- if (isnan ( yStart))
265- yStart = verticalIntersect (startAngle, nX, nY, win.xStop );
262+ int yStart = vIntersect (startAngle, nX, nY, win.xStart );
263+ if (yStart == std::numeric_limits< int >:: max ( ))
264+ yStart = vIntersect (startAngle, nX, nY, win.xStop );
266265
267- double yStop = verticalIntersect (endAngle, nX, nY, win.xStart );
268- if (isnan ( yStop))
269- yStop = verticalIntersect (endAngle, nX, nY, win.xStop );
266+ int yStop = vIntersect (endAngle, nX, nY, win.xStart );
267+ if (yStop == std::numeric_limits< int >:: max ( ))
268+ yStop = vIntersect (endAngle, nX, nY, win.xStop );
270269
271- double ymin = nY;
270+ int ymin = nY;
272271 if (!rayBetween (startAngle, endAngle, M_PI / 2 ))
273272 {
274- if (!isnan (yStart))
275- ymin = std::min (ymin, static_cast <double >(yStart));
276- if (!isnan (yStop))
277- ymin = std::min (ymin, static_cast <double >(yStop));
278- oOutExtent.yStart =
279- std::max (oOutExtent.yStart , static_cast <int >(std::round (ymin)));
273+ if (yStart != std::numeric_limits<int >::max ())
274+ ymin = std::min (ymin, yStart);
275+ if (yStop != std::numeric_limits<int >::max ())
276+ ymin = std::min (ymin, yStop);
277+ oOutExtent.yStart = std::max (oOutExtent.yStart , ymin);
280278 }
281- double ymax = nY;
279+ int ymax = nY;
282280 if (!rayBetween (startAngle, endAngle, 3 * M_PI / 2 ))
283281 {
284- if (!isnan (yStart))
285- ymax = std::max (ymax, static_cast <double >(yStart));
286- if (!isnan (yStop))
287- ymax = std::max (ymax, static_cast <double >(yStop));
288- oOutExtent.yStop =
289- std::min (oOutExtent.yStop , static_cast <int >(std::round (ymax)));
282+ if (yStart != std::numeric_limits<int >::max ())
283+ ymax = std::max (ymax, yStart);
284+ if (yStop != std::numeric_limits<int >::max ())
285+ ymax = std::max (ymax, yStop);
286+ oOutExtent.yStop = std::min (oOutExtent.yStop , ymax);
290287 }
291288}
292289
0 commit comments