/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.glayer.support;
import com.bc.ceres.glayer.Assert2D;
import com.bc.ceres.glevel.MultiLevelSource;
import static org.junit.Assert.*;
import org.junit.Test;
import javax.media.jai.TiledImage;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
public class ImageLayerTest {
@Test
public void testThatLayerOperatesWithNullImage() {
final ImageLayer layer = new ImageLayer(MultiLevelSource.NULL);
assertNotNull(layer.getMultiLevelSource());
assertNotNull(layer.getImage());
assertNotNull(layer.getImageToModelTransform());
assertTrue(layer.getImageToModelTransform().isIdentity());
assertNotNull(layer.getModelToImageTransform());
assertTrue(layer.getModelToImageTransform().isIdentity());
assertNull(layer.getModelBounds());
}
@Test
public void testConstructors() {
ImageLayer layer;
final TiledImage image = new TiledImage(new BufferedImage(320, 200, BufferedImage.TYPE_BYTE_GRAY), true);
layer = new ImageLayer(image);
assertSame(image, layer.getImage());
assertEquals(new AffineTransform(), layer.getModelToImageTransform());
assertEquals(new AffineTransform(), layer.getImageToModelTransform());
final AffineTransform i2m = AffineTransform.getTranslateInstance(+100, +200);
layer = new ImageLayer(image, i2m, 1);
assertSame(image, layer.getImage());
assertNotSame(i2m, layer.getImageToModelTransform());
assertNotSame(i2m, layer.getModelToImageTransform());
assertEquals(AffineTransform.getTranslateInstance(+100, +200), layer.getImageToModelTransform());
assertEquals(AffineTransform.getTranslateInstance(-100, -200), layer.getModelToImageTransform());
}
@Test
public void testBoundingBox() {
ImageLayer layer;
final TiledImage image = new TiledImage(new BufferedImage(320, 200, BufferedImage.TYPE_BYTE_GRAY), true);
layer = new ImageLayer(image);
assertNotNull(layer.getModelBounds());
Assert2D.assertEquals(new Rectangle2D.Double(0.0, 0.0, 320.0, 200.0), layer.getModelBounds());
final AffineTransform i2m = new AffineTransform(0.5, 0, 0, 0.5, -25.5, 50.3);
layer = new ImageLayer(image, i2m, 1);
assertNotNull(layer.getModelBounds());
Assert2D.assertEquals(new Rectangle2D.Double(-25.5, 50.3, 160.0, 100.0), layer.getModelBounds());
}
}