private String getPixelString(RasterDataNode raster) {
if (raster.getImageToModelTransform().equals(currentRaster.getImageToModelTransform())
&& raster.getSceneToModelTransform().equals(currentRaster.getSceneToModelTransform())) {
if (!pixelPosValidInRaster) {
return RasterDataNode.INVALID_POS_TEXT;
}
return getPixelString(raster, pixelX, pixelY, rasterLevel);
}
final Point2D.Double scenePos = new Point2D.Double(sceneX, sceneY);
Point2D.Double modelPos = new Point2D.Double();
try {
raster.getSceneToModelTransform().transform(scenePos, modelPos);
if (Double.isNaN(modelPos.getX()) || Double.isNaN(modelPos.getY())) {
return PixelInfoViewModelUpdater.INVALID_POS_TEXT;
}
} catch (TransformException e) {
return PixelInfoViewModelUpdater.INVALID_POS_TEXT;
}
final MultiLevelModel multiLevelModel = raster.getMultiLevelModel();
final int level = getLevel(multiLevelModel);
final PixelPos rasterPos = (PixelPos) multiLevelModel.getModelToImageTransform(level).transform(modelPos, new PixelPos());
final int rasterX = floor(rasterPos.getX());
final int rasterY = floor(rasterPos.getY());
if (!coordinatesAreInRasterBounds(raster, rasterX, rasterY, level)) {
return RasterDataNode.INVALID_POS_TEXT;
}
return getPixelString(raster, rasterX, rasterY, level);
}