diff --git a/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java index 1ef3ccd85f488d1f080369df93751daf2b77811f..60d9698410895daddc2c5321cb6b58fd79f39c42 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java @@ -37,18 +37,20 @@ public abstract class BasicLoader { */ public abstract int[] loadPlaneData(final int plane) throws IOException; - /** - * Read value from plane at specified offset. - * - * @param plane Zero based plane index. - * @param offset Offset on flattened plane data. - * @return Plane value at the index. - */ - protected int valueAt(final int plane, final int offset) { - new Exception().printStackTrace(System.err); - assert (false) : "Unimplemented overload of BasicLoader::valueAt()"; - return Integer.MIN_VALUE; - } + // /** + // * Read value from plane at specified offset. + // * + // * @param plane Zero based plane index. + // * @param offset Offset on flattened plane data. + // * @return Plane value at the index. + // */ + // protected int valueAt(final int plane, final int offset) { + // new Exception().printStackTrace(System.err); + // assert (false) : "Unimplemented overload of BasicLoader::valueAt()"; + // return Integer.MIN_VALUE; + // } + + protected abstract int valueAt(final int plane, final int x, final int y, final int width); /** * Wrap column (x) index based on specified wrapping strategy. @@ -149,7 +151,9 @@ public abstract class BasicLoader { break; srcX = wrapColumnIndex(srcX); } - rowVectors[vectorIndex][vectorX] = valueAt(plane, Block.index(srcX, row, dims.getY())); + + // TODO(Moravec): dims.getY() should probably be dims.getX()! Check this! + rowVectors[vectorIndex][vectorX] = valueAt(plane, srcX, row, dims.getY()); } ++vectorIndex; } @@ -217,7 +221,8 @@ public abstract class BasicLoader { } srcX = wrapColumnIndex(srcX); } - block[Block.index(x, y, blockDim.getX())] = valueAt(planeIndex, Block.index(srcX, srcY, dims.getX())); + + block[Block.index(x, y, blockDim.getX())] = valueAt(planeIndex, srcX, srcY, dims.getX()); } } } @@ -284,7 +289,7 @@ public abstract class BasicLoader { srcX = wrapColumnIndex(srcX); } - voxel[Voxel.dataIndex(x, y, z, voxelDim)] = valueAt(srcZ, Block.index(srcX, srcY, dims.getX())); + voxel[Voxel.dataIndex(x, y, z, voxelDim)] = valueAt(srcZ, srcX, srcY, dims.getX()); } } } diff --git a/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java index 023c76d42417aa131412f1c5bcbf9a93bb7274d0..a5b60bb7760ce1da573da626625eeb9c6212cfc4 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java @@ -1,5 +1,6 @@ package cz.it4i.qcmp.io.loader; +import cz.it4i.qcmp.data.Block; import cz.it4i.qcmp.data.Range; import cz.it4i.qcmp.data.V2i; import cz.it4i.qcmp.data.V3i; @@ -44,9 +45,10 @@ public class FlatBufferLoader extends BasicLoader implements IPlaneLoader { } } + @Override - protected int valueAt(final int plane, final int offset) { - return TypeConverter.shortToInt(((short[]) bufferInputData.getPixelBuffer())[(plane * planePixelCount) + offset]); + protected int valueAt(final int plane, final int x, final int y, final int width) { + return TypeConverter.shortToInt(((short[]) bufferInputData.getPixelBuffer())[(plane * planePixelCount) + Block.index(x, y, width)]); } @Override diff --git a/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java index 259964b0fd87c59fb69304a6e9e6ab3ba7257c3f..a0b8e7eb21759e5c539fc6a686c0cba4c5ccd7e4 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java @@ -1,5 +1,6 @@ package cz.it4i.qcmp.io.loader; +import cz.it4i.qcmp.data.Block; import cz.it4i.qcmp.data.Range; import cz.it4i.qcmp.data.V2i; import cz.it4i.qcmp.data.V3i; @@ -36,11 +37,10 @@ public final class ImageJBufferLoader extends BasicLoader implements IPlaneLoade final short[] srcBuffer = (short[]) bufferInputData.getPixelBuffer(plane); return TypeConverter.shortArrayToIntArray(srcBuffer); } - - + @Override - protected int valueAt(final int plane, final int offset) { - return TypeConverter.shortToInt(((short[]) bufferInputData.getPixelBuffer(plane))[offset]); + protected int valueAt(int plane, int x, int y, int width) { + return TypeConverter.shortToInt(((short[]) bufferInputData.getPixelBuffer(plane))[Block.index(x, y, width)]); } @Override diff --git a/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java index b699e3a4e81cdd8fd29be414355967d5d3327092..c226a72f176d5a95500ebadcfb940a80073d93c3 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java @@ -20,6 +20,13 @@ public final class RawDataLoader extends BasicLoader implements IPlaneLoader { this.inputDataInfo = inputDataInfo; } + @Override + protected int valueAt(final int plane, final int x, final int y, final int width) { + new Exception().printStackTrace(System.err); + assert (false) : "RawDataLoader shouldn't use valueAt impl methods!"; + return -1; + } + @Override public int[] loadPlaneData(final int plane) throws IOException { final byte[] buffer; diff --git a/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java index aaf7e86d9440257819a850ae0be3219e84cfdc48..a253532c640cdd23692cbfd6104815280f951911 100644 --- a/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java +++ b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java @@ -29,6 +29,13 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader { this.reader = ScifioWrapper.getReader(this.inputDataInfo.getFilePath()); } + @Override + protected int valueAt(final int plane, final int x, final int y, final int width) { + new Exception().printStackTrace(System.err); + assert (false) : "SCIFIOLoader shouldn't use valueAt impl methods!"; + return -1; + } + @Override public int[] loadPlaneData(final int plane) throws IOException { final byte[] planeBytes;