diff --git a/src/main/java/bdv/server/CellHandler.java b/src/main/java/bdv/server/CellHandler.java index a3fe4df520e47fddfb89a0640fe169f576cdf689..5d6712ca33e74305f8cdea685adbb3904fa3a237 100644 --- a/src/main/java/bdv/server/CellHandler.java +++ b/src/main/java/bdv/server/CellHandler.java @@ -1,20 +1,18 @@ package bdv.server; -import bdv.BigDataViewer; -import bdv.img.cache.CacheHints; -import bdv.img.cache.LoadingStrategy; -import bdv.img.cache.VolatileCell; -import bdv.img.cache.VolatileGlobalCellCache; -import bdv.img.hdf5.Hdf5ImageLoader; -import bdv.img.remote.AffineTransform3DJsonSerializer; -import bdv.img.remote.RemoteImageLoader; -import bdv.img.remote.RemoteImageLoaderMetaData; -import bdv.spimdata.SequenceDescriptionMinimal; -import bdv.spimdata.SpimDataMinimal; -import bdv.spimdata.XmlIoSpimDataMinimal; -import bdv.util.ThumbnailGenerator; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; -import com.google.gson.GsonBuilder; +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import mpicbg.spim.data.SpimDataException; import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray; @@ -29,21 +27,30 @@ import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; -import javax.imageio.ImageIO; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import bdv.BigDataViewer; +import bdv.img.cache.CacheHints; +import bdv.img.cache.LoadingStrategy; +import bdv.img.cache.VolatileCell; +import bdv.img.cache.VolatileGlobalCellCache; +import bdv.img.hdf5.Hdf5ImageLoader; +import bdv.img.hdf5.Hdf5VolatileShortArrayLoader; +import bdv.img.remote.AffineTransform3DJsonSerializer; +import bdv.img.remote.RemoteImageLoader; +import bdv.img.remote.RemoteImageLoaderMetaData; +import bdv.spimdata.SequenceDescriptionMinimal; +import bdv.spimdata.SpimDataMinimal; +import bdv.spimdata.XmlIoSpimDataMinimal; +import bdv.util.ThumbnailGenerator; -import java.awt.image.BufferedImage; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; +import com.google.gson.GsonBuilder; public class CellHandler extends ContextHandler { private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( CellHandler.class ); - private final VolatileGlobalCellCache< VolatileShortArray > cache; + private final VolatileGlobalCellCache cache; + + private final Hdf5VolatileShortArrayLoader loader; private final CacheHints cacheHints; @@ -91,6 +98,7 @@ public class CellHandler extends ContextHandler final Hdf5ImageLoader imgLoader = ( Hdf5ImageLoader ) seq.getImgLoader(); cache = imgLoader.getCache(); + loader = imgLoader.getShortArrayLoader(); cacheHints = new CacheHints( LoadingStrategy.BLOCKING, 0, false ); // dataSetURL property is used for providing the XML file by replace @@ -136,7 +144,7 @@ public class CellHandler extends ContextHandler final int timepoint = Integer.parseInt( parts[ 2 ] ); final int setup = Integer.parseInt( parts[ 3 ] ); final int level = Integer.parseInt( parts[ 4 ] ); - VolatileCell< VolatileShortArray > cell = cache.getGlobalIfCached( timepoint, setup, level, index, cacheHints ); + VolatileCell< ? > cell = cache.getGlobalIfCached( timepoint, setup, level, index, cacheHints ); if ( cell == null ) { final int[] cellDims = new int[] { @@ -147,10 +155,11 @@ public class CellHandler extends ContextHandler Long.parseLong( parts[ 8 ] ), Long.parseLong( parts[ 9 ] ), Long.parseLong( parts[ 10 ] ) }; - cell = cache.createGlobal( cellDims, cellMin, timepoint, setup, level, index, cacheHints ); + cell = cache.createGlobal( cellDims, cellMin, timepoint, setup, level, index, cacheHints, loader ); } - final short[] data = cell.getData().getCurrentStorageArray(); + @SuppressWarnings( "unchecked" ) + final short[] data = ( ( VolatileCell< VolatileShortArray > ) cell ).getData().getCurrentStorageArray(); final byte[] buf = new byte[ 2 * data.length ]; for ( int i = 0, j = 0; i < data.length; i++ ) { diff --git a/src/main/java/bdv/util/ThumbnailGenerator.java b/src/main/java/bdv/util/ThumbnailGenerator.java index 8f824c63de2d6f27da76bb94cd5cc02d38812fcf..64c78f785e4f6761ead77c4e0ab2c9bf68041a26 100644 --- a/src/main/java/bdv/util/ThumbnailGenerator.java +++ b/src/main/java/bdv/util/ThumbnailGenerator.java @@ -26,6 +26,7 @@ import bdv.tools.transformation.TransformedSource; import bdv.tools.transformation.XmlIoTransformedSources; import bdv.viewer.Source; import bdv.viewer.SourceAndConverter; +import bdv.viewer.render.AccumulateProjectorARGB; import bdv.viewer.render.MultiResolutionRenderer; import bdv.viewer.state.SourceGroup; import bdv.viewer.state.SourceState; @@ -93,7 +94,7 @@ public class ThumbnailGenerator } } final ThumbnailTarget renderTarget = new ThumbnailTarget(); - new MultiResolutionRenderer( renderTarget, new PainterThread( null ), new double[] { 1 }, 0, false, 1, null, false, new Cache.Dummy() ).paint( state ); + new MultiResolutionRenderer( renderTarget, new PainterThread( null ), new double[] { 1 }, 0, false, 1, null, false, AccumulateProjectorARGB.factory, new Cache.Dummy() ).paint( state ); return renderTarget.bi; }