35
35
import net .imglib2 .AbstractWrappedInterval ;
36
36
import net .imglib2 .Cursor ;
37
37
import net .imglib2 .Interval ;
38
+ import net .imglib2 .IterableInterval ;
38
39
import net .imglib2 .Localizable ;
39
40
import net .imglib2 .Point ;
40
41
import net .imglib2 .RandomAccess ;
@@ -56,6 +57,8 @@ public class SparseIterableRegion extends AbstractWrappedInterval<Interval>
56
57
57
58
final private IntervalIndexer2 indexer ;
58
59
60
+ private final InsideIterable inside ;
61
+
59
62
public SparseIterableRegion (Interval interval ) {
60
63
this (interval , new TLongHashSet ());
61
64
}
@@ -64,6 +67,7 @@ public SparseIterableRegion(Interval interval, TLongSet positions) {
64
67
super (interval );
65
68
this .codes = positions ;
66
69
this .indexer = new IntervalIndexer2 (interval );
70
+ this .inside = new InsideIterable ();
67
71
}
68
72
69
73
public void add (Localizable position ) {
@@ -79,43 +83,58 @@ private boolean contains(Localizable position) {
79
83
}
80
84
81
85
@ Override
82
- public Cursor < Void > cursor () {
83
- return new SparseRoiCursor ();
86
+ public RandomAccess < BitType > randomAccess () {
87
+ return new SparseRoiRandomAccess ();
84
88
}
85
89
86
90
@ Override
87
- public Cursor < Void > localizingCursor ( ) {
88
- return cursor ();
91
+ public RandomAccess < BitType > randomAccess ( Interval interval ) {
92
+ return randomAccess ();
89
93
}
90
94
91
95
@ Override
92
- public long size () {
93
- return codes .size ();
96
+ public IterableInterval < Void > inside ()
97
+ {
98
+ return inside ;
94
99
}
95
100
96
- @ Override
97
- public Void firstElement () {
98
- return null ;
99
- }
101
+ private class InsideIterable extends AbstractWrappedInterval < Interval > implements IterableInterval < Void >
102
+ {
103
+ InsideIterable ()
104
+ {
105
+ super ( SparseIterableRegion .this );
106
+ }
100
107
101
- @ Override
102
- public Object iterationOrder () {
103
- return null ;
104
- }
108
+ @ Override
109
+ public Cursor < Void > cursor () {
110
+ return new SparseRoiCursor () ;
111
+ }
105
112
106
- @ Override
107
- public Iterator <Void > iterator () {
108
- return cursor ();
109
- }
113
+ @ Override
114
+ public Cursor <Void > localizingCursor () {
115
+ return cursor ();
116
+ }
110
117
111
- @ Override
112
- public RandomAccess <BitType > randomAccess () {
113
- return new SparseRoiRandomAccess ();
118
+ @ Override
119
+ public long size () {
120
+ return codes .size ();
121
+ }
122
+
123
+ @ Override
124
+ public Void firstElement () {
125
+ return null ;
126
+ }
127
+
128
+ @ Override
129
+ public Object iterationOrder () {
130
+ return this ;
131
+ }
114
132
}
115
133
116
134
@ Override
117
- public RandomAccess <BitType > randomAccess (Interval interval ) {
118
- return randomAccess ();
135
+ public BitType getType ()
136
+ {
137
+ return new BitType ();
119
138
}
120
139
121
140
private class SparseRoiCursor extends AbstractCursor <Void > implements
0 commit comments