package com.marshalchen.common.uimodule.tileView.tileview.tiles.selector;
import com.marshalchen.common.uimodule.tileView.tileview.detail.DetailLevel;
import com.marshalchen.common.uimodule.tileView.tileview.detail.DetailLevelSet;
import java.util.ArrayList;
import java.util.List;
public class TileSetSelectorByRange implements TileSetSelector {
private List<Double> switchPoint = new ArrayList<Double>();
@Override
public DetailLevel find( double scale, DetailLevelSet levels ) {
int totalLevels = levels.size();
int totalSwitches = switchPoint.size();
// fast-fail
if ( totalLevels == 0 ) {
return null;
}
// sanity check the switchPoints with the levels
// switchPoints should be 1 less then the total levels
if ( totalLevels != ( totalSwitches + 1 ) ) {
return null;
}
// loop through and find a set where this scale fits
for ( int index = 0; index < totalSwitches; index++ ) {
double thisSwitchPoint = this.switchPoint.get( index );
// when we exceed the scale we take the previous
if ( scale < thisSwitchPoint ) {
return levels.get( index );
}
}
// take the last
return levels.get( totalLevels - 1 );
}
public void add( final double value ) {
switchPoint.add( value );
}
}