Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump to pom-scijava-32.0.0-beta-5 and fix build errors #9

Merged
merged 1 commit into from
Aug 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava</artifactId>
<version>28.0.0</version>
<version>32.0.0-beta-5</version>
<relativePath />
</parent>

Expand Down Expand Up @@ -84,14 +84,8 @@
<!-- NB: Deploy releases to the SciJava Maven repository. -->
<releaseProfiles>sign,deploy-to-scijava</releaseProfiles>

<commons-cli.version>1.2</commons-cli.version>
<commons-cli.version>1.5.0</commons-cli.version>
<stringtemplate.version>3.2.1</stringtemplate.version>

<!-- TODO: Remove these version pins and update the code. -->
<bigdataviewer-core.version>9.0.3</bigdataviewer-core.version>
<imglib2.version>5.9.0</imglib2.version>
<imglib2-cache.version>1.0.0-beta-13</imglib2-cache.version>
<spim_data.version>2.2.4</spim_data.version>
</properties>

<repositories>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/bdv/server/BigDataServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import mpicbg.spim.data.SpimDataException;

import org.apache.commons.cli.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.ConnectorStatistics;
import org.eclipse.jetty.server.Handler;
Expand Down
147 changes: 73 additions & 74 deletions src/main/java/bdv/util/ThumbnailGenerator.java
Original file line number Diff line number Diff line change
@@ -1,36 +1,34 @@
package bdv.util;

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

import bdv.BigDataViewer;
import bdv.cache.CacheControl;
import bdv.spimdata.SpimDataMinimal;
import bdv.spimdata.XmlIoSpimDataMinimal;
import bdv.tools.InitializeViewerState;
import bdv.tools.brightness.ConverterSetup;
import bdv.tools.brightness.SetupAssignments;
import bdv.tools.transformation.TransformedSource;
import bdv.tools.transformation.XmlIoTransformedSources;
import bdv.viewer.Source;
import bdv.tools.transformation.ManualTransformation;
import bdv.viewer.BasicViewerState;
import bdv.viewer.SourceAndConverter;
import bdv.viewer.SynchronizedViewerState;
import bdv.viewer.ViewerState;
import bdv.viewer.render.AccumulateProjectorARGB;
import bdv.viewer.render.MultiResolutionRenderer;
import bdv.viewer.state.SourceGroup;
import bdv.viewer.state.SourceState;
import bdv.viewer.state.ViewerState;
import bdv.viewer.render.RenderTarget;
import bdv.viewer.render.awt.BufferedImageRenderResult;
import bdv.viewer.state.XmlIoViewerState;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import net.imglib2.realtransform.AffineTransform3D;
import net.imglib2.ui.PainterThread;
import net.imglib2.ui.RenderTarget;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

import static bdv.viewer.DisplayMode.SINGLE;
import static bdv.viewer.Interpolation.NEARESTNEIGHBOR;

/**
* Created by moon on 2/5/15.
Expand Down Expand Up @@ -69,17 +67,26 @@ public static BufferedImage makeThumbnail( final SpimDataMinimal spimData, final
if ( !generator.tryLoadSettings( baseFilename, setupAssignments ) )
InitializeViewerState.initBrightness( 0.001, 0.999, state, setupAssignments );

class ThumbnailTarget implements RenderTarget
class ThumbnailTarget implements RenderTarget< BufferedImageRenderResult >
{
BufferedImage bi;
final BufferedImageRenderResult renderResult = new BufferedImageRenderResult();

@Override
public BufferedImage setBufferedImage( final BufferedImage bufferedImage )
public BufferedImageRenderResult getReusableRenderResult()
{
bi = bufferedImage;
return null;
return renderResult;
}

@Override
public BufferedImageRenderResult createRenderResult()
{
return new BufferedImageRenderResult();
}

@Override
public void setRenderResult( final BufferedImageRenderResult renderResult )
{}

@Override
public int getWidth()
{
Expand All @@ -93,15 +100,50 @@ public int getHeight()
}
}
final ThumbnailTarget renderTarget = new ThumbnailTarget();
new MultiResolutionRenderer( renderTarget, new PainterThread( null ), new double[] { 1 }, 0, false, 1, null, false, AccumulateProjectorARGB.factory, new CacheControl.Dummy() ).paint( state );
return renderTarget.bi;
final MultiResolutionRenderer renderer = new MultiResolutionRenderer(
renderTarget, () -> {}, new double[] { 1 }, 0, 1, null, false,
AccumulateProjectorARGB.factory, new CacheControl.Dummy() );
renderer.paint( state );
return renderTarget.renderResult.getBufferedImage();
}

/**
* Initialize ViewerState with the given {@code sources} and {@code numTimepoints}.
* Set up {@code numGroups} SourceGroups named "group 1", "group 2", etc. Add the
* first source to the first group, the second source to the second group etc.
*
* TODO: Setting up groups like this doesn't make a lot of sense. This just
* replicates legacy behaviour. The remaining thing that stands in the way of
* removing it is ViewerState serialization, which assumes that there are always 10
* groups ... m(
*/
private static SynchronizedViewerState setupState( final List< SourceAndConverter< ? > > sources, final int numTimepoints, final int numGroups )
{
final SynchronizedViewerState state = new SynchronizedViewerState( new BasicViewerState() );
state.addSources( sources );
state.setSourcesActive( sources, true );
for ( int i = 0; i < numGroups; ++i ) {
final bdv.viewer.SourceGroup handle = new bdv.viewer.SourceGroup();
state.addGroup( handle );
state.setGroupName( handle, "group " + ( i + 1 ) );
state.setGroupActive( handle, true );
if ( i < sources.size() )
state.addSourceToGroup( sources.get( i ), handle );
}
state.setNumTimepoints( numTimepoints );
state.setInterpolation( NEARESTNEIGHBOR );
state.setDisplayMode( SINGLE );
state.setCurrentSource( sources.isEmpty() ? null : sources.get( 0 ) );
state.setCurrentGroup( numGroups <= 0 ? null : state.getGroups().get( 0 ) );

return state;
}

/**
* Currently rendered state (visible sources, transformation, timepoint,
* etc.)
*/
private final ViewerState state;
private final SynchronizedViewerState state;

/**
* @param sources
Expand All @@ -112,56 +154,14 @@ public int getHeight()
private ThumbnailGenerator( final List< SourceAndConverter< ? > > sources, final int numTimePoints )
{
final int numGroups = 10;
final ArrayList< SourceGroup > groups = new ArrayList< SourceGroup >( numGroups );
for ( int i = 0; i < numGroups; ++i )
groups.add( new SourceGroup( "" ) );

state = new ViewerState( sources, groups, numTimePoints );
if ( !sources.isEmpty() )
state.setCurrentSource( 0 );
state = setupState( sources, numTimePoints, numGroups );
}

private void stateFromXml( final Element parent )
{
final XmlIoViewerState io = new XmlIoViewerState();
io.restoreFromXml( parent.getChild( io.getTagName() ), state );
}

private static class ManualTransformation
{
private final ViewerState state ;

private final XmlIoTransformedSources io;

public ManualTransformation( final ViewerState state )
{
this.state = state;
io = new XmlIoTransformedSources();
}

public void restoreFromXml( final Element parent )
{
final Element elem = parent.getChild( io.getTagName() );
final List< TransformedSource< ? > > sources = getTransformedSources();
final List< AffineTransform3D > transforms = io.fromXml( elem ).getTransforms();
if ( sources.size() != transforms.size() )
System.err.println( "failed to load <" + io.getTagName() + "> source and transform count mismatch" );
else
for ( int i = 0; i < sources.size(); ++i )
sources.get( i ).setFixedTransform( transforms.get( i ) );
}

private ArrayList< TransformedSource< ? > > getTransformedSources()
{
final ArrayList< TransformedSource< ? > > list = new ArrayList< TransformedSource< ? > >();
for ( final SourceState< ? > sourceState : state.getSources() )
{
final Source< ? > source = sourceState.getSpimSource();
if ( TransformedSource.class.isInstance( source ) )
list.add( ( TransformedSource< ? > ) source );
}
return list;
}
final bdv.viewer.state.ViewerState deprecatedState = new bdv.viewer.state.ViewerState( state );
io.restoreFromXml( parent.getChild( io.getTagName() ), deprecatedState );
}

private boolean tryLoadSettings( final String baseFilename, final SetupAssignments setupAssignments )
Expand All @@ -176,7 +176,7 @@ private boolean tryLoadSettings( final String baseFilename, final SetupAssignmen
final Element root = doc.getRootElement();
stateFromXml( root );
setupAssignments.restoreFromXml( root );
new ManualTransformation( state ).restoreFromXml( root );
new ManualTransformation( state.getSources() ).restoreFromXml( root );
return true;
}
catch ( final Exception e )
Expand Down Expand Up @@ -210,5 +210,4 @@ public static void main( final String[] args )
e.printStackTrace();
}
}

}