/** * Scale the affine transform (use with scaleBoundingBox so it is the right image, but just smaller) * * @param t transform * @param factor scaling factor */ public static void scaleTransform( final AffineTransform3D t, final double factor ) { final AffineTransform3D at = new AffineTransform3D(); at.scale( factor ); t.preConcatenate( at ); }
private void scale( final double s, final double x, final double y ) { // center shift affine.set( affine.get( 0, 3 ) - x, 0, 3 ); affine.set( affine.get( 1, 3 ) - y, 1, 3 ); // scale affine.scale( s ); // center un-shift affine.set( affine.get( 0, 3 ) + x, 0, 3 ); affine.set( affine.get( 1, 3 ) + y, 1, 3 ); }
private void scale( final double s, final double x, final double y ) { // center shift affine.set( affine.get( 0, 3 ) - x, 0, 3 ); affine.set( affine.get( 1, 3 ) - y, 1, 3 ); // scale affine.scale( s ); // center un-shift affine.set( affine.get( 0, 3 ) + x, 0, 3 ); affine.set( affine.get( 1, 3 ) + y, 1, 3 ); }
private void scale( final double s, final double x, final double y ) { // center shift affine.set( affine.get( 0, 3 ) - x, 0, 3 ); affine.set( affine.get( 1, 3 ) - y, 1, 3 ); // scale affine.scale( s ); // center un-shift affine.set( affine.get( 0, 3 ) + x, 0, 3 ); affine.set( affine.get( 1, 3 ) + y, 1, 3 ); }
@Override public void setCanvasSize( final int width, final int height, final boolean updateTransform ) { if ( updateTransform ) { synchronized ( affine ) { affine.set( affine.get( 0, 3 ) - canvasW / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) - canvasH / 2, 1, 3 ); affine.scale( ( double ) width / canvasW ); affine.set( affine.get( 0, 3 ) + width / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) + height / 2, 1, 3 ); update(); } } canvasW = width; canvasH = height; centerX = width / 2; centerY = height / 2; }
@Override public void setCanvasSize( final int width, final int height, final boolean updateTransform ) { if ( updateTransform ) { synchronized ( affine ) { affine.set( affine.get( 0, 3 ) - canvasW / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) - canvasH / 2, 1, 3 ); affine.scale( ( double ) width / canvasW ); affine.set( affine.get( 0, 3 ) + width / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) + height / 2, 1, 3 ); notifyListener(); } } canvasW = width; canvasH = height; centerX = width / 2; centerY = height / 2; }
@Override public void setCanvasSize( final int width, final int height, final boolean updateTransform ) { if ( width == 0 || height == 0 ) { // NB: We are probably in some intermediate layout scenario. // Attempting to trigger a transform update with 0 size will result // in the exception "Matrix is singular" from imglib2-realtrasform. return; } if ( updateTransform ) { synchronized ( affine ) { affine.set( affine.get( 0, 3 ) - canvasW / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) - canvasH / 2, 1, 3 ); affine.scale( ( double ) width / canvasW ); affine.set( affine.get( 0, 3 ) + width / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) + height / 2, 1, 3 ); notifyListener(); } } canvasW = width; canvasH = height; centerX = width / 2; centerY = height / 2; }
affine.set( affine.get( 0, 3 ) - canvasW / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) - canvasH / 2, 1, 3 ); affine.scale( ( double ) width / canvasW ); affine.set( affine.get( 0, 3 ) + width / 2, 0, 3 ); affine.set( affine.get( 1, 3 ) + height / 2, 1, 3 );
else scale = Math.min( scaleX, scaleY ); viewerTransform.scale( scale );
else scale = Math.min( scaleX, scaleY ); viewerTransform.scale( scale );
tGV.set( tGV.get( 0, 3 ) - canvasW / 2, 0, 3 ); tGV.set( tGV.get( 1, 3 ) - canvasH / 2, 1, 3 ); tGV.scale( ( double ) width / canvasW ); tGV.set( tGV.get( 0, 3 ) + width / 2, 0, 3 ); tGV.set( tGV.get( 1, 3 ) + height / 2, 1, 3 );