package org.basex.gui.view.map;
/**
* Interface MapAlgorithms need to implement.
*
* @author BaseX Team 2005-12, BSD License
* @author Joerg Hauser
*/
abstract class MapAlgo {
/**
* Calculates the average aspect Ratios of rectangles given in the list.
* @param r Array of rectangles
* @return average aspect ratio
*/
static double lineRatio(final MapRects r) {
if(r.size == 0) return Double.MAX_VALUE;
double ar = 0;
int dev = 0;
for(final MapRect rect : r) {
if(rect.w != 0 && rect.h != 0) {
++dev;
if(rect.w > rect.h) {
ar += (double) rect.w / rect.h;
} else {
ar += (double) rect.h / rect.w;
}
}
}
return ar / dev;
}
/**
* Splits List nodes into Rectangles matching in given space.
* @param r parent rectangle
* @param l children array
* @param ns start array position
* @param ne end array position
* @return rectangles
*/
abstract MapRects calcMap(final MapRect r, final MapList l, final int ns,
final int ne);
}