1+ /*
2+ * #%L
3+ * ImgLib2: a general-purpose, multidimensional image processing library.
4+ * %%
5+ * Copyright (C) 2009 - 2016 Tobias Pietzsch, Stephan Preibisch, Stephan Saalfeld,
6+ * John Bogovic, Albert Cardona, Barry DeZonia, Christian Dietz, Jan Funke,
7+ * Aivar Grislis, Jonathan Hale, Grant Harris, Stefan Helfrich, Mark Hiner,
8+ * Martin Horn, Steffen Jaensch, Lee Kamentsky, Larry Lindsey, Melissa Linkert,
9+ * Mark Longair, Brian Northan, Nick Perry, Curtis Rueden, Johannes Schindelin,
10+ * Jean-Yves Tinevez and Michael Zinsmaier.
11+ * %%
12+ * Redistribution and use in source and binary forms, with or without
13+ * modification, are permitted provided that the following conditions are met:
14+ *
15+ * 1. Redistributions of source code must retain the above copyright notice,
16+ * this list of conditions and the following disclaimer.
17+ * 2. Redistributions in binary form must reproduce the above copyright notice,
18+ * this list of conditions and the following disclaimer in the documentation
19+ * and/or other materials provided with the distribution.
20+ *
21+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
25+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31+ * POSSIBILITY OF SUCH DAMAGE.
32+ * #L%
33+ */
134package net .imglib2 .algorithm .neighborhood ;
235
336import net .imglib2 .Cursor ;
740import net .imglib2 .RandomAccessibleInterval ;
841import net .imglib2 .img .Img ;
942import net .imglib2 .img .array .ArrayImgFactory ;
10- import net .imglib2 .outofbounds .OutOfBoundsBorderFactory ;
11- import net .imglib2 .outofbounds .OutOfBoundsFactory ;
1243import net .imglib2 .type .numeric .integer .ByteType ;
1344import net .imglib2 .util .Pair ;
1445import net .imglib2 .view .Views ;
1546
1647import org .junit .Test ;
1748
18- public class RandomAccessiblePairWithNeighborhoodTest {
49+ public class RandomAccessiblePairWithNeighborhoodTest
50+ {
1951
2052 @ Test
21- public void test () {
53+ public void testRandomAccessOnPair ()
54+ {
2255 // Extend input with Views.extend()
23- Img <ByteType > in = new ArrayImgFactory < ByteType >().create ( new FinalDimensions (3 , 3 ), new ByteType () );
24- OutOfBoundsFactory <ByteType , RandomAccessibleInterval <ByteType >> outOfBoundsFactory =
25- new OutOfBoundsBorderFactory <>();
26- RandomAccessibleInterval <ByteType > extendedIn = Views .interval (Views .extend (in , outOfBoundsFactory ), in ); // FAILS
27- // RandomAccessible<ByteType> extendedIn = Views.extend(in, outOfBoundsFactory); // WORKS
56+ Img < ByteType > in = new ArrayImgFactory < ByteType >().create ( new FinalDimensions ( 3 , 3 ), new ByteType () );
57+ RandomAccessibleInterval < ByteType > extendedIn = Views .interval ( Views .extendBorder ( in ), in );
2858
2959 // Create RandomAccessiblePair
30- final RandomAccessible <Neighborhood <ByteType >> safe = new RectangleShape (1 ,
31- false ).neighborhoodsRandomAccessibleSafe (extendedIn );
32- RandomAccessible <Pair <Neighborhood <ByteType >, ByteType >> pair = Views .pair (safe , extendedIn );
60+ final RandomAccessible < Neighborhood < ByteType > > safe = new RectangleShape ( //
61+ 1 ,
62+ false ).neighborhoodsRandomAccessibleSafe ( extendedIn );
63+ RandomAccessible < Pair < Neighborhood < ByteType >, ByteType > > pair = Views .pair ( safe , extendedIn );
3364
3465 // Set position out of bounds
35- RandomAccess <Pair <Neighborhood <ByteType >, ByteType >> randomAccess = pair
36- .randomAccess ();
37- randomAccess .setPosition (new int [] { 0 , 0 });
66+ RandomAccess < Pair < Neighborhood < ByteType >, ByteType > > randomAccess = pair .randomAccess ();
67+ randomAccess .setPosition ( new int [] { 0 , 0 } );
3868
3969 // Get value from Neighborhood via RandomAccessiblePair
40- Pair <Neighborhood <ByteType >, ByteType > pair2 = randomAccess .get ();
41- Neighborhood <ByteType > neighborhood = pair2 .getA ();
42- Cursor <ByteType > cursor = neighborhood .cursor ();
43-
70+ Pair < Neighborhood < ByteType >, ByteType > pair2 = randomAccess .get ();
71+ Neighborhood < ByteType > neighborhood = pair2 .getA ();
72+ Cursor < ByteType > cursor = neighborhood .cursor ();
73+
4474 // Tries to access (-1, -1) of the source
4575 cursor .next ().getRealDouble ();
4676 }
4777
48- }
78+ }
0 commit comments