/* * Copyright (C) 2009-2013 University of Dundee & Open Microscopy Environment. * All rights reserved. * * Use is subject to license terms supplied in LICENSE.txt */ package omeis.providers.re.utests; import java.nio.ByteBuffer; import java.util.List; import java.util.Random; import org.testng.annotations.BeforeClass; import ome.api.IPixels; import ome.io.nio.PixelBuffer; import ome.util.PixelData; import ome.logic.RenderingSettingsImpl; import ome.model.core.Channel; import ome.model.core.Pixels; import ome.model.display.RenderingDef; import ome.model.enums.PixelsType; import ome.model.enums.RenderingModel; import ome.model.stats.StatsInfo; import omeis.providers.re.Renderer; import omeis.providers.re.quantum.QuantumFactory; import junit.framework.TestCase; public class BaseRenderingTest extends TestCase { protected Renderer renderer; protected Random random = new Random(); protected PixelData data; protected Pixels pixels; protected PixelBuffer pixelBuffer; protected RenderingDef settings; protected RenderingSettingsImpl settingsService; protected IPixels pixelsMetadataService; protected TestPixelsService pixelsService; protected QuantumFactory quantumFactory; public static final int RUN_COUNT = 10; // Configurables @Override @BeforeClass protected void setUp() { PixelsType pixelsType = getPixelsType(); byte[] plane = getPlane(); data = new PixelData(pixelsType.getValue(), ByteBuffer.wrap(plane)); pixels = createDummyPixels(pixelsType, data); pixelsService = new TestPixelsService(pixels); pixelsService.setDummyPlane(plane); pixelsMetadataService = new TestPixelsMetadataService(); settingsService = new RenderingSettingsImpl(); settingsService.setPixelsMetadata(pixelsMetadataService); settingsService.setPixelsData(pixelsService); settings = settingsService.createNewRenderingDef(pixels); settingsService.resetDefaultsNoSave(settings, pixels); pixelBuffer = pixelsService.getPixelBuffer(pixels, false); List<RenderingModel> renderingModels = pixelsMetadataService.getAllEnumerations(RenderingModel.class); quantumFactory = createQuantumFactory(); renderer = new Renderer(quantumFactory, renderingModels, pixels, settings, pixelBuffer); } protected QuantumFactory createQuantumFactory() { return new TestQuantumFactory(); } protected int getSizeX() { return 1024; } protected int getSizeY() { return 1024; } protected int getSizeZ() { return 1; } protected int getSizeC() { return 3; } protected int getSizeT() { return 1; } protected int getBytesPerPixel() { return 2; } protected PixelsType getPixelsType() { PixelsType pixelsType = new PixelsType(); pixelsType.setValue("uint16"); pixelsType.setBitSize(16); return pixelsType; } protected byte[] getPlane() { byte[] plane = new byte[getSizeX() * getSizeY() * getBytesPerPixel()]; random.nextBytes(plane); return plane; } private double[] calculateMinMax(PixelData data) { double min = Double.MAX_VALUE; double max = Double.MIN_VALUE; double value; for (int i = 0; i < data.size(); i++) { value = data.getPixelValue(i); if (value > max) { max = value; } if (value < min) { min = value; } } return new double[] { min, max }; } Pixels createDummyPixels(PixelsType pixelsType, PixelData plane) { Pixels pixels = new Pixels(1L, true); pixels.setSizeX(getSizeX()); pixels.setSizeY(getSizeY()); pixels.setSizeZ(getSizeZ()); pixels.setSizeC(getSizeC()); pixels.setSizeT(getSizeT()); pixels.setPixelsType(pixelsType); double[] minAndMax = calculateMinMax(plane); for (int c = 0; c < pixels.getSizeC(); c++) { StatsInfo si = new StatsInfo(); si.setGlobalMin(minAndMax[0]); si.setGlobalMax(minAndMax[1]); Channel channel = new Channel(); channel.setStatsInfo(si); pixels.addChannel(channel); } return pixels; } }