test_class.declarator: ZOOMED_IN_SCALE = .0001
test_class.modifier: private static final
test_class.original_string: private static final double ZOOMED_IN_SCALE = .0001;
test_class.type: double
test_class.var_name: ZOOMED_IN_SCALE
test_class.declarator: MAX_LEVEL_SCALE = .4
test_class.modifier: private static final
test_class.original_string: private static final double MAX_LEVEL_SCALE = .4;
test_class.type: double
test_class.var_name: MAX_LEVEL_SCALE
test_class.declarator: DELTA = 1e-10
test_class.modifier: private static final
test_class.original_string: private static final double DELTA = 1e-10;
test_class.type: double
test_class.var_name: DELTA
test_class.declarator: MERCATOR = "EPSG:900913"
test_class.modifier: private static final
test_class.original_string: private static final String MERCATOR = "EPSG:900913";
test_class.type: String
test_class.var_name: MERCATOR
test_class.declarator: LONLAT = "EPSG:4326"
test_class.modifier: private static final
test_class.original_string: private static final String LONLAT = "EPSG:4326";
test_class.type: String
test_class.var_name: LONLAT
test_class.declarator: wms
test_class.modifier: @Autowired
  	@Qualifier("bluemarble")
  	private
test_class.original_string: @Autowired
  	@Qualifier("bluemarble")
  	private WmsLayer wms;
test_class.type: WmsLayer
test_class.var_name: wms
test_class.declarator: proxyWms
test_class.modifier: @Autowired
  	@Qualifier("proxyBlue")
  	private
test_class.original_string: @Autowired
  	@Qualifier("proxyBlue")
  	private WmsLayer proxyWms;
test_class.type: WmsLayer
test_class.var_name: proxyWms
test_class.declarator: defaultWms
test_class.modifier: @Autowired
  	@Qualifier("defaultBlue")
  	private
test_class.original_string: @Autowired
  	@Qualifier("defaultBlue")
  	private WmsLayer defaultWms;
test_class.type: WmsLayer
test_class.var_name: defaultWms
test_class.declarator: cachedWms
test_class.modifier: @Autowired
  	@Qualifier("cachedBlue")
  	private
test_class.original_string: @Autowired
  	@Qualifier("cachedBlue")
  	private WmsLayer cachedWms;
test_class.type: WmsLayer
test_class.var_name: cachedWms
test_class.declarator: escapeBlue
test_class.modifier: @Autowired
  	@Qualifier("escapeBlue")
  	private
test_class.original_string: @Autowired
  	@Qualifier("escapeBlue")
  	private WmsLayer escapeBlue;
test_class.type: WmsLayer
test_class.var_name: escapeBlue
test_class.declarator: geoService
test_class.modifier: @Autowired
  	private
test_class.original_string: @Autowired
  	private GeoService geoService;
test_class.type: GeoService
test_class.var_name: geoService
test_class.file: plugin/layer-wms/wms/src/test/java/org/geomajas/layer/wms/WmsLayerTest.java
test_class.identifier: WmsLayerTest
test_case.body: @Test
  	public void testLevels() throws Exception {
  		// this test failed before http://jira.geomajas.org/browse/WMS-18
  		Crs latlon = geoService.getCrs2(LONLAT);
  		Envelope latlonEnvelope = null;
  		for (int level = 0; level < 32; level++) {
  			double latlonScale = Math.pow(2, level);
  			// must reduce envelope as we zoom
  			latlonEnvelope = new Envelope(-180, -180 + 1.0 / latlonScale, -412, -412 + 1.0 / latlonScale);
  			List<RasterTile> tiles = wms.paint(latlon, latlonEnvelope, latlonScale);
  			Assert.assertEquals(1, tiles.size());
  			Assert.assertEquals(level, tiles.get(0).getCode().getTileLevel());
  			Assert.assertEquals(512, tiles.get(0).getBounds().getHeight(), DELTA);
  			Assert.assertEquals(512, tiles.get(0).getBounds().getWidth(), DELTA);
  		}
  	}
test_case.class_method_signature: WmsLayerTest.testLevels()
test_case.full_signature: @Test public void testLevels()
test_case.identifier: testLevels
test_case.invocations: getCrs2 pow paint assertEquals size assertEquals getTileLevel getCode get assertEquals getHeight getBounds get assertEquals getWidth getBounds get
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testLevels()
focal_class.declarator: log = LoggerFactory.getLogger(WmsLayer.class)
focal_class.modifier: private final
focal_class.original_string: private final Logger log = LoggerFactory.getLogger(WmsLayer.class);
focal_class.type: Logger
focal_class.var_name: log
focal_class.declarator: resolutions = new ArrayList<Resolution>()
focal_class.modifier: private final
focal_class.original_string: private final List<Resolution> resolutions = new ArrayList<Resolution>();
focal_class.type: List<Resolution>
focal_class.var_name: resolutions
focal_class.declarator: baseWmsUrl
focal_class.modifier: private
focal_class.original_string: private String baseWmsUrl;
focal_class.type: String
focal_class.var_name: baseWmsUrl
focal_class.declarator: format = "image/png"
focal_class.modifier: private
focal_class.original_string: private String format = "image/png";
focal_class.type: String
focal_class.var_name: format
focal_class.declarator: version = "1.1.1"
focal_class.modifier: private
focal_class.original_string: private String version = "1.1.1";
focal_class.type: String
focal_class.var_name: version
focal_class.declarator: styles = ""
focal_class.modifier: private
focal_class.original_string: private String styles = "";
focal_class.type: String
focal_class.var_name: styles
focal_class.declarator: parameters
focal_class.modifier: private
focal_class.original_string: private List<Parameter> parameters;
focal_class.type: List<Parameter>
focal_class.var_name: parameters
focal_class.declarator: enableFeatureInfoSupport
focal_class.modifier: private
focal_class.original_string: private boolean enableFeatureInfoSupport;
focal_class.type: boolean
focal_class.var_name: enableFeatureInfoSupport
focal_class.declarator: layerInfo
focal_class.modifier: private
focal_class.original_string: private RasterLayerInfo layerInfo;
focal_class.type: RasterLayerInfo
focal_class.var_name: layerInfo
focal_class.declarator: crs
focal_class.modifier: private
focal_class.original_string: private Crs crs;
focal_class.type: Crs
focal_class.var_name: crs
focal_class.declarator: id
focal_class.modifier: private
focal_class.original_string: private String id;
focal_class.type: String
focal_class.var_name: id
focal_class.declarator: featureInfoFormat = WmsFeatureInfoFormat.GML2
focal_class.modifier: private
focal_class.original_string: private WmsFeatureInfoFormat featureInfoFormat = WmsFeatureInfoFormat.GML2;
focal_class.type: WmsFeatureInfoFormat
focal_class.var_name: featureInfoFormat
focal_class.declarator: authentication
focal_class.modifier: @Deprecated
  	private
focal_class.original_string: @Deprecated
  	private WmsAuthentication authentication;
focal_class.type: WmsAuthentication
focal_class.var_name: authentication
focal_class.declarator: layerAuthentication
focal_class.modifier: private
focal_class.original_string: private LayerAuthentication layerAuthentication;
focal_class.type: LayerAuthentication
focal_class.var_name: layerAuthentication
focal_class.declarator: useProxy
focal_class.modifier: private
focal_class.original_string: private boolean useProxy;
focal_class.type: boolean
focal_class.var_name: useProxy
focal_class.declarator: useCache
focal_class.modifier: private
focal_class.original_string: private boolean useCache;
focal_class.type: boolean
focal_class.var_name: useCache
focal_class.declarator: geoService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private GeoService geoService;
focal_class.type: GeoService
focal_class.var_name: geoService
focal_class.declarator: httpService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private LayerHttpService httpService;
focal_class.type: LayerHttpService
focal_class.var_name: httpService
focal_class.declarator: converterService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private DtoConverterService converterService;
focal_class.type: DtoConverterService
focal_class.var_name: converterService
focal_class.declarator: dispatcherUrlService
focal_class.modifier: @Autowired(required = false)
  	private
focal_class.original_string: @Autowired(required = false)
  	private DispatcherUrlService dispatcherUrlService;
focal_class.type: DispatcherUrlService
focal_class.var_name: dispatcherUrlService
focal_class.declarator: cacheManagerService
focal_class.modifier: @Autowired(required = false)
  	private
focal_class.original_string: @Autowired(required = false)
  	private CacheManagerService cacheManagerService;
focal_class.type: CacheManagerService
focal_class.var_name: cacheManagerService
focal_class.declarator: securityContext
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private SecurityContext securityContext;
focal_class.type: SecurityContext
focal_class.var_name: securityContext
focal_class.file: plugin/layer-wms/wms/src/main/java/org/geomajas/layer/wms/WmsLayer.java
focal_class.identifier: WmsLayer
focal_class.interfaces: implements RasterLayer, LayerFeatureInfoSupport, ProxyLayerSupport
focal_class.class_method_signature: WmsLayer.getId()
focal_class.full_signature: public String getId()
focal_class.identifier: getId
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getId()
focal_class.class_method_signature: WmsLayer.setId(String id)
focal_class.full_signature: public void setId(String id)
focal_class.identifier: setId
focal_class.modifiers: public
focal_class.parameters: (String id)
focal_class.return: void
focal_class.signature: void setId(String id)
focal_class.class_method_signature: WmsLayer.getLayerInfo()
focal_class.full_signature: public RasterLayerInfo getLayerInfo()
focal_class.identifier: getLayerInfo
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: RasterLayerInfo
focal_class.signature: RasterLayerInfo getLayerInfo()
focal_class.class_method_signature: WmsLayer.getCrs()
focal_class.full_signature: @Deprecated public CoordinateReferenceSystem getCrs()
focal_class.identifier: getCrs
focal_class.modifiers: @Deprecated public
focal_class.parameters: ()
focal_class.return: CoordinateReferenceSystem
focal_class.signature: CoordinateReferenceSystem getCrs()
focal_class.class_method_signature: WmsLayer.postConstruct()
focal_class.full_signature: @PostConstruct protected void postConstruct()
focal_class.identifier: postConstruct
focal_class.modifiers: @PostConstruct protected
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void postConstruct()
focal_class.class_method_signature: WmsLayer.getFeatureInfoFormat()
focal_class.full_signature: @Api public WmsFeatureInfoFormat getFeatureInfoFormat()
focal_class.identifier: getFeatureInfoFormat
focal_class.modifiers: @Api public
focal_class.parameters: ()
focal_class.return: WmsFeatureInfoFormat
focal_class.signature: WmsFeatureInfoFormat getFeatureInfoFormat()
focal_class.class_method_signature: WmsLayer.setFeatureInfoFormat(WmsFeatureInfoFormat featureInfoFormat)
focal_class.full_signature: @Api public void setFeatureInfoFormat(WmsFeatureInfoFormat featureInfoFormat)
focal_class.identifier: setFeatureInfoFormat
focal_class.modifiers: @Api public
focal_class.parameters: (WmsFeatureInfoFormat featureInfoFormat)
focal_class.return: void
focal_class.signature: void setFeatureInfoFormat(WmsFeatureInfoFormat featureInfoFormat)
focal_class.class_method_signature: WmsLayer.setLayerInfo(RasterLayerInfo layerInfo)
focal_class.full_signature: @Api public void setLayerInfo(RasterLayerInfo layerInfo)
focal_class.identifier: setLayerInfo
focal_class.modifiers: @Api public
focal_class.parameters: (RasterLayerInfo layerInfo)
focal_class.return: void
focal_class.signature: void setLayerInfo(RasterLayerInfo layerInfo)
focal_class.class_method_signature: WmsLayer.getFeaturesByLocation(Coordinate layerCoordinate, double layerScale, int pixelTolerance)
focal_class.full_signature: public List<Feature> getFeaturesByLocation(Coordinate layerCoordinate, double layerScale, int pixelTolerance)
focal_class.identifier: getFeaturesByLocation
focal_class.modifiers: public
focal_class.parameters: (Coordinate layerCoordinate, double layerScale, int pixelTolerance)
focal_class.return: List<Feature>
focal_class.signature: List<Feature> getFeaturesByLocation(Coordinate layerCoordinate, double layerScale, int pixelTolerance)
focal_class.class_method_signature: WmsLayer.getTextFeatures(InputStream stream)
focal_class.full_signature: private List<Feature> getTextFeatures(InputStream stream)
focal_class.identifier: getTextFeatures
focal_class.modifiers: private
focal_class.parameters: (InputStream stream)
focal_class.return: List<Feature>
focal_class.signature: List<Feature> getTextFeatures(InputStream stream)
focal_class.class_method_signature: WmsLayer.getHtmlFeatures(String url)
focal_class.full_signature: private List<Feature> getHtmlFeatures(String url)
focal_class.identifier: getHtmlFeatures
focal_class.modifiers: private
focal_class.parameters: (String url)
focal_class.return: List<Feature>
focal_class.signature: List<Feature> getHtmlFeatures(String url)
focal_class.class_method_signature: WmsLayer.getGmlFeatures(InputStream stream, Version version)
focal_class.full_signature: private List<Feature> getGmlFeatures(InputStream stream, Version version)
focal_class.identifier: getGmlFeatures
focal_class.modifiers: private
focal_class.parameters: (InputStream stream, Version version)
focal_class.return: List<Feature>
focal_class.signature: List<Feature> getGmlFeatures(InputStream stream, Version version)
focal_class.class_method_signature: WmsLayer.toDto(SimpleFeature feature)
focal_class.full_signature: private Feature toDto(SimpleFeature feature)
focal_class.identifier: toDto
focal_class.modifiers: private
focal_class.parameters: (SimpleFeature feature)
focal_class.return: Feature
focal_class.signature: Feature toDto(SimpleFeature feature)
focal_class.class_method_signature: WmsLayer.paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_class.full_signature: public List<RasterTile> paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_class.identifier: paint
focal_class.modifiers: public
focal_class.parameters: (CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_class.return: List<RasterTile>
focal_class.signature: List<RasterTile> paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_class.class_method_signature: WmsLayer.getWmsTargetUrl()
focal_class.full_signature: private String getWmsTargetUrl()
focal_class.identifier: getWmsTargetUrl
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getWmsTargetUrl()
focal_class.class_method_signature: WmsLayer.formatGetFeatureInfoUrl(int width, int height, Bbox box, int x, int y,
  			boolean internal)
focal_class.full_signature: private String formatGetFeatureInfoUrl(int width, int height, Bbox box, int x, int y,
  			boolean internal)
focal_class.identifier: formatGetFeatureInfoUrl
focal_class.modifiers: private
focal_class.parameters: (int width, int height, Bbox box, int x, int y,
  			boolean internal)
focal_class.return: String
focal_class.signature: String formatGetFeatureInfoUrl(int width, int height, Bbox box, int x, int y,
  			boolean internal)
focal_class.class_method_signature: WmsLayer.formatUrl(int width, int height, Bbox box)
focal_class.full_signature: private String formatUrl(int width, int height, Bbox box)
focal_class.identifier: formatUrl
focal_class.modifiers: private
focal_class.parameters: (int width, int height, Bbox box)
focal_class.return: String
focal_class.signature: String formatUrl(int width, int height, Bbox box)
focal_class.class_method_signature: WmsLayer.formatBaseUrl(String targetUrl, int width, int height, Bbox box)
focal_class.full_signature: private StringBuilder formatBaseUrl(String targetUrl, int width, int height, Bbox box)
focal_class.identifier: formatBaseUrl
focal_class.modifiers: private
focal_class.parameters: (String targetUrl, int width, int height, Bbox box)
focal_class.return: StringBuilder
focal_class.signature: StringBuilder formatBaseUrl(String targetUrl, int width, int height, Bbox box)
focal_class.class_method_signature: WmsLayer.getResolutionForScale(double scale)
focal_class.full_signature: private Resolution getResolutionForScale(double scale)
focal_class.identifier: getResolutionForScale
focal_class.modifiers: private
focal_class.parameters: (double scale)
focal_class.return: Resolution
focal_class.signature: Resolution getResolutionForScale(double scale)
focal_class.class_method_signature: WmsLayer.calculateBestQuadTreeResolution(double scale)
focal_class.full_signature: private Resolution calculateBestQuadTreeResolution(double scale)
focal_class.identifier: calculateBestQuadTreeResolution
focal_class.modifiers: private
focal_class.parameters: (double scale)
focal_class.return: Resolution
focal_class.signature: Resolution calculateBestQuadTreeResolution(double scale)
focal_class.class_method_signature: WmsLayer.getRasterGrid(Envelope bounds, double width, double height)
focal_class.full_signature: private RasterGrid getRasterGrid(Envelope bounds, double width, double height)
focal_class.identifier: getRasterGrid
focal_class.modifiers: private
focal_class.parameters: (Envelope bounds, double width, double height)
focal_class.return: RasterGrid
focal_class.signature: RasterGrid getRasterGrid(Envelope bounds, double width, double height)
focal_class.class_method_signature: WmsLayer.clipBounds(Envelope bounds)
focal_class.full_signature: private Envelope clipBounds(Envelope bounds)
focal_class.identifier: clipBounds
focal_class.modifiers: private
focal_class.parameters: (Envelope bounds)
focal_class.return: Envelope
focal_class.signature: Envelope clipBounds(Envelope bounds)
focal_class.class_method_signature: WmsLayer.getBaseWmsUrl()
focal_class.full_signature: public String getBaseWmsUrl()
focal_class.identifier: getBaseWmsUrl
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getBaseWmsUrl()
focal_class.class_method_signature: WmsLayer.setBaseWmsUrl(String baseWmsUrl)
focal_class.full_signature: @Api public void setBaseWmsUrl(String baseWmsUrl)
focal_class.identifier: setBaseWmsUrl
focal_class.modifiers: @Api public
focal_class.parameters: (String baseWmsUrl)
focal_class.return: void
focal_class.signature: void setBaseWmsUrl(String baseWmsUrl)
focal_class.class_method_signature: WmsLayer.getFormat()
focal_class.full_signature: public String getFormat()
focal_class.identifier: getFormat
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getFormat()
focal_class.class_method_signature: WmsLayer.setFormat(String format)
focal_class.full_signature: @Api public void setFormat(String format)
focal_class.identifier: setFormat
focal_class.modifiers: @Api public
focal_class.parameters: (String format)
focal_class.return: void
focal_class.signature: void setFormat(String format)
focal_class.class_method_signature: WmsLayer.setVersion(String version)
focal_class.full_signature: @Api public void setVersion(String version)
focal_class.identifier: setVersion
focal_class.modifiers: @Api public
focal_class.parameters: (String version)
focal_class.return: void
focal_class.signature: void setVersion(String version)
focal_class.class_method_signature: WmsLayer.setStyles(String styles)
focal_class.full_signature: @Api public void setStyles(String styles)
focal_class.identifier: setStyles
focal_class.modifiers: @Api public
focal_class.parameters: (String styles)
focal_class.return: void
focal_class.signature: void setStyles(String styles)
focal_class.class_method_signature: WmsLayer.setParameters(List<Parameter> parameters)
focal_class.full_signature: @Api public void setParameters(List<Parameter> parameters)
focal_class.identifier: setParameters
focal_class.modifiers: @Api public
focal_class.parameters: (List<Parameter> parameters)
focal_class.return: void
focal_class.signature: void setParameters(List<Parameter> parameters)
focal_class.class_method_signature: WmsLayer.getAuthentication()
focal_class.full_signature: @Deprecated public WmsAuthentication getAuthentication()
focal_class.identifier: getAuthentication
focal_class.modifiers: @Deprecated public
focal_class.parameters: ()
focal_class.return: WmsAuthentication
focal_class.signature: WmsAuthentication getAuthentication()
focal_class.class_method_signature: WmsLayer.setAuthentication(WmsAuthentication authentication)
focal_class.full_signature: @Api @Deprecated public void setAuthentication(WmsAuthentication authentication)
focal_class.identifier: setAuthentication
focal_class.modifiers: @Api @Deprecated public
focal_class.parameters: (WmsAuthentication authentication)
focal_class.return: void
focal_class.signature: void setAuthentication(WmsAuthentication authentication)
focal_class.class_method_signature: WmsLayer.getProxyAuthentication()
focal_class.full_signature: public ProxyAuthentication getProxyAuthentication()
focal_class.identifier: getProxyAuthentication
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ProxyAuthentication
focal_class.signature: ProxyAuthentication getProxyAuthentication()
focal_class.class_method_signature: WmsLayer.setLayerAuthentication(LayerAuthentication layerAuthentication)
focal_class.full_signature: @Api public void setLayerAuthentication(LayerAuthentication layerAuthentication)
focal_class.identifier: setLayerAuthentication
focal_class.modifiers: @Api public
focal_class.parameters: (LayerAuthentication layerAuthentication)
focal_class.return: void
focal_class.signature: void setLayerAuthentication(LayerAuthentication layerAuthentication)
focal_class.class_method_signature: WmsLayer.setUseProxy(boolean useProxy)
focal_class.full_signature: @Api public void setUseProxy(boolean useProxy)
focal_class.identifier: setUseProxy
focal_class.modifiers: @Api public
focal_class.parameters: (boolean useProxy)
focal_class.return: void
focal_class.signature: void setUseProxy(boolean useProxy)
focal_class.class_method_signature: WmsLayer.setUseCache(boolean useCache)
focal_class.full_signature: @Api public void setUseCache(boolean useCache)
focal_class.identifier: setUseCache
focal_class.modifiers: @Api public
focal_class.parameters: (boolean useCache)
focal_class.return: void
focal_class.signature: void setUseCache(boolean useCache)
focal_class.class_method_signature: WmsLayer.isUseCache()
focal_class.full_signature: @Api public boolean isUseCache()
focal_class.identifier: isUseCache
focal_class.modifiers: @Api public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isUseCache()
focal_class.class_method_signature: WmsLayer.setEnableFeatureInfoSupport(boolean enableFeatureInfoSupport)
focal_class.full_signature: @Api public void setEnableFeatureInfoSupport(boolean enableFeatureInfoSupport)
focal_class.identifier: setEnableFeatureInfoSupport
focal_class.modifiers: @Api public
focal_class.parameters: (boolean enableFeatureInfoSupport)
focal_class.return: void
focal_class.signature: void setEnableFeatureInfoSupport(boolean enableFeatureInfoSupport)
focal_class.class_method_signature: WmsLayer.isEnableFeatureInfoSupport()
focal_class.full_signature: public boolean isEnableFeatureInfoSupport()
focal_class.identifier: isEnableFeatureInfoSupport
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isEnableFeatureInfoSupport()
focal_class.class_method_signature: WmsLayer.clearCacheManagerService()
focal_class.full_signature:  void clearCacheManagerService()
focal_class.identifier: clearCacheManagerService
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void clearCacheManagerService()
focal_method.body: public List<RasterTile> paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
  			throws GeomajasException {
  		Envelope layerBounds = bounds;
  		double layerScale = scale;
  		CrsTransform layerToMap = null;
  		boolean needTransform = !crs.equals(targetCrs);
  
  		try {
  			// We don't necessarily need to split into same CRS and different CRS cases, the latter implementation uses
  			// identity transform if crs's are equal for map and layer but might introduce bugs in rounding and/or
  			// conversions.
  			if (needTransform) {
  				layerToMap = geoService.getCrsTransform(crs, targetCrs);
  				CrsTransform mapToLayer = geoService.getCrsTransform(targetCrs, crs);
  
  				// Translate the map coordinates to layer coordinates, assumes equal x-y orientation
  				layerBounds = geoService.transform(bounds, mapToLayer);
  				layerScale = bounds.getWidth() * scale / layerBounds.getWidth();
  			}
  		} catch (MismatchedDimensionException e) {
  			throw new GeomajasException(e, ExceptionCode.RENDER_DIMENSION_MISMATCH);
  		}
  		layerBounds = clipBounds(layerBounds);
  		if (layerBounds.isNull()) {
  			return new ArrayList<RasterTile>(0);
  		}
  
  		// Grid is in layer coordinate space!
  		Resolution bestResolution = getResolutionForScale(layerScale);
  		RasterGrid grid = getRasterGrid(layerBounds, bestResolution.getTileWidth(), bestResolution.getTileHeight());
  
  		// We calculate the first tile's screen box with this assumption
  		List<RasterTile> result = new ArrayList<RasterTile>();
  		for (int i = grid.getXmin(); i < grid.getXmax(); i++) {
  			for (int j = grid.getYmin(); j < grid.getYmax(); j++) {
  				double x = grid.getLowerLeft().x + (i - grid.getXmin()) * grid.getTileWidth();
  				double y = grid.getLowerLeft().y + (j - grid.getYmin()) * grid.getTileHeight();
  				// layer coordinates
  				Bbox worldBox;
  				Bbox layerBox;
  				if (needTransform) {
  					layerBox = new Bbox(x, y, grid.getTileWidth(), grid.getTileHeight());
  					// Transforming back to map coordinates will only result in a proper grid if the transformation
  					// is nearly affine
  					worldBox = geoService.transform(layerBox, layerToMap);
  				} else {
  					worldBox = new Bbox(x, y, grid.getTileWidth(), grid.getTileHeight());
  					layerBox = worldBox;
  				}
  				// Rounding to avoid white space between raster tiles lower-left becomes upper-left in inverted y-space
  				Bbox screenBox = new Bbox(Math.round(scale * worldBox.getX()), -Math.round(scale * worldBox.getMaxY()),
  						Math.round(scale * worldBox.getMaxX()) - Math.round(scale * worldBox.getX()), Math.round(scale
  								* worldBox.getMaxY())
  								- Math.round(scale * worldBox.getY()));
  
  				RasterTile image = new RasterTile(screenBox, getId() + "." + bestResolution.getLevel() + "." + i + ","
  						+ j);
  
  				image.setCode(new TileCode(bestResolution.getLevel(), i, j));
  				String url = formatUrl(bestResolution.getTileWidthPx(), bestResolution.getTileHeightPx(), layerBox);
  				image.setUrl(url);
  				result.add(image);
  			}
  		}
  
  		return result;
  	}
focal_method.class_method_signature: WmsLayer.paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_method.full_signature: public List<RasterTile> paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_method.identifier: paint
focal_method.invocations: equals getCrsTransform getCrsTransform transform getWidth getWidth clipBounds isNull getResolutionForScale getRasterGrid getTileWidth getTileHeight getXmin getXmax getYmin getYmax getLowerLeft getXmin getTileWidth getLowerLeft getYmin getTileHeight getTileWidth getTileHeight transform getTileWidth getTileHeight round getX round getMaxY round getMaxX round getX round getMaxY round getY getId getLevel setCode getLevel formatUrl getTileWidthPx getTileHeightPx setUrl add
focal_method.modifiers: public
focal_method.parameters: (CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)
focal_method.return: List<RasterTile>
focal_method.signature: List<RasterTile> paint(CoordinateReferenceSystem targetCrs, Envelope bounds, double scale)