private void setColor( GL gl, TextureTileRequest request ) { if ( request.getUnitsPerPixel() <= 0.1 ) { gl.glColor4f( 1.0f, 0.0f, 0.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 0.2 ) { gl.glColor4f( 1.0f, 0.5f, 0.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 0.4 ) { gl.glColor4f( 1.0f, 1.0f, 0.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 0.8 ) { gl.glColor4f( 0.5f, 1.0f, 0.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 1.6 ) { gl.glColor4f( 0.0f, 1.0f, 0.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 3.2 ) { gl.glColor4f( 0.0f, 1.0f, 0.5f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 6.4 ) { gl.glColor4f( 0.0f, 1.0f, 1.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 12.8 ) { gl.glColor4f( 0.0f, 0.5f, 1.0f, 0.2f ); } else if ( request.getUnitsPerPixel() <= 25.6 ) { gl.glColor4f( 0.0f, 0.0f, 1.0f, 0.2f ); } else { gl.glColor4f( 0.0f, 0.0f, 0.9f, 0.2f ); } }
private List<TextureTileRequest> createTileRequests( Collection<TextureRequest> origRequests ) { List<TextureTileRequest> requests = new ArrayList<TextureTileRequest>(); for ( TextureRequest textureRequest : origRequests ) { requests.add( new TextureTileRequest( textureRequest ) ); } List<TextureTileRequest> minimizedRequests = new ArrayList<TextureTileRequest>( requests.size() ); for ( TextureTileRequest request : requests ) { boolean needed = true; List<TextureTileRequest> superseededRequests = new ArrayList<TextureTileRequest>(); for ( TextureTileRequest request2 : minimizedRequests ) { if ( request2.supersedes( request ) ) { needed = false; break; } else if ( request.shareCorner( request2 ) && Math.abs( request.getUnitsPerPixel() - request2.getUnitsPerPixel() ) < 1E-8 ) { superseededRequests.add( request2 ); request.merge( request2 ); } } for ( TextureTileRequest textureRequest : superseededRequests ) { minimizedRequests.remove( textureRequest ); } if ( needed ) { minimizedRequests.add( request ); } } LOG.debug( "Tile requests: " + requests.size() + ", minimized: " + minimizedRequests.size() ); return minimizedRequests; }
/** * @param request */ private TextureTile getMatchingTileWithLogging( TextureTileRequest request ) { TextureTile tile = null; // System.out.println( "Cached tiles: " + cachedTiles.size() ); LOG.debug( "testing: " + request.toString() ); for ( TextureTile candidate : cachedTiles ) { LOG.debug( "against: " + candidate ); if ( request.isFullfilled( candidate ) ) { LOG.debug( "-- a match " ); tile = candidate; // System.out.println( "using from cache tile: " + tile.hashCode() ); cachedTiles.remove( candidate ); cachedTiles.add( candidate ); break; } } if ( tile == null ) { LOG.debug( "-- no match " ); tile = getMatchingProvider( request.getUnitsPerPixel() ).getTextureTile( request ); if ( tile != null && tile.enableCaching() ) { addToCache( tile ); } } return tile; }
/** * @param request */ private TextureTile getMatchingTileWithout( TextureTileRequest request ) { TextureTile tile = null; for ( TextureTile candidate : cachedTiles ) { if ( request.isFullfilled( candidate ) ) { tile = candidate; cachedTiles.remove( candidate ); cachedTiles.add( candidate ); break; } } if ( tile == null ) { tile = getMatchingProvider( request.getUnitsPerPixel() ).getTextureTile( request ); if ( tile != null && tile.enableCaching() ) { addToCache( tile ); } } return tile; }
@Override public TextureTile getTextureTile( TextureTileRequest request ) { if ( request.getUnitsPerPixel() >= maxResolution || request.getUnitsPerPixel() < 0.009 ) { double worldWidth = maxX - minX; double worldHeight = maxY - minY; double resolution = request.getUnitsPerPixel(); resolution = ttr.getUnitsPerPixel();