805 |
|
|
806 |
final Envelope maxAllowedExtend = getMaxExtend(); |
final Envelope maxAllowedExtend = getMaxExtend(); |
807 |
|
|
808 |
|
// This variable is used to break the loop if it runs forever... |
809 |
|
Envelope lastCalculatedArea = null; |
810 |
|
/* |
811 |
|
* If a maxAllowedExtend is set, we have to honour that... |
812 |
|
*/ |
813 |
while (maxAllowedExtend != null && !maxAllowedExtend.contains(newArea) |
while (maxAllowedExtend != null && !maxAllowedExtend.contains(newArea) |
814 |
&& newArea != null && !newArea.isNull() |
&& newArea != null && !newArea.isNull() |
815 |
&& !Double.isNaN(newArea.getMinX()) |
&& !Double.isNaN(newArea.getMinX()) |
816 |
&& !Double.isNaN(newArea.getMaxX()) |
&& !Double.isNaN(newArea.getMaxX()) |
817 |
&& !Double.isNaN(newArea.getMinY()) |
&& !Double.isNaN(newArea.getMinY()) |
818 |
&& !Double.isNaN(newArea.getMaxY())) { |
&& !Double.isNaN(newArea.getMaxY())) { |
819 |
/* |
|
820 |
* If a maxExtend is set, we have to honour that... |
if (newArea.equals(lastCalculatedArea)) |
821 |
*/ |
break; |
822 |
|
// Check that we are not iterating for ever due to double precision rounding errors |
823 |
|
lastCalculatedArea = newArea; |
824 |
|
|
825 |
// Exceeds top? Move down and maybe cut |
// Exceeds top? Move down and maybe cut |
826 |
if (newArea.getMaxY() > maxAllowedExtend.getMaxY()) { |
if (newArea.getMaxY() > maxAllowedExtend.getMaxY()) { |
827 |
final double divY = newArea.getMaxY() |
final double divY = newArea.getMaxY() |