@Override public String getDimensionOrder() { FormatTools.assertId(getCurrentFile(), true, 2); String order = reader.getDimensionOrder(); if (canMerge()) { final StringBuilder sb = new StringBuilder(order); while (order.indexOf('C') != 2) { char pre = order.charAt(order.indexOf('C') - 1); sb.setCharAt(order.indexOf('C'), pre); sb.setCharAt(order.indexOf(pre), 'C'); order = sb.toString(); } } return order; }
@Override public String getDimensionOrder() { FormatTools.assertId(getCurrentFile(), true, 2); String order = reader.getDimensionOrder(); if (canMerge()) { final StringBuilder sb = new StringBuilder(order); while (order.indexOf('C') != 2) { char pre = order.charAt(order.indexOf('C') - 1); sb.setCharAt(order.indexOf('C'), pre); sb.setCharAt(order.indexOf(pre), 'C'); order = sb.toString(); } } return order; }
@Override public boolean isInterleaved() { FormatTools.assertId(getCurrentFile(), true, 2); return canMerge() ? false : reader.isInterleaved(); }
@Override public boolean isIndexed() { FormatTools.assertId(getCurrentFile(), true, 2); return !canMerge() && reader.isIndexed(); }
@Override public boolean isIndexed() { FormatTools.assertId(getCurrentFile(), true, 2); return !canMerge() && reader.isIndexed(); }
@Override public boolean isInterleaved() { FormatTools.assertId(getCurrentFile(), true, 2); return canMerge() ? false : reader.isInterleaved(); }
@Override public boolean isRGB() { FormatTools.assertId(getCurrentFile(), true, 2); return canMerge() || reader.isRGB(); }
@Override public boolean isRGB() { FormatTools.assertId(getCurrentFile(), true, 2); return canMerge() || reader.isRGB(); }
@Override public int getImageCount() { FormatTools.assertId(getCurrentFile(), true, 2); int no = reader.getImageCount(); if (canMerge()) no /= getSizeC(); return no; }
@Override public int getImageCount() { FormatTools.assertId(getCurrentFile(), true, 2); int no = reader.getImageCount(); if (canMerge()) no /= getSizeC(); return no; }
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); if (!canMerge()) return super.openBytes(no, buf, x, y, w, h); int sizeC = getSizeC(); int[] nos = getZCTCoords(no); int z = nos[0], t = nos[2]; for (int c=0; c<sizeC; c++) { byte[] b = reader.openBytes(reader.getIndex(z, c, t), x, y, w, h); System.arraycopy(b, 0, buf, c * b.length, b.length); } return buf; }
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.assertId(getCurrentFile(), true, 2); if (!canMerge()) return super.openBytes(no, buf, x, y, w, h); int sizeC = getSizeC(); int[] nos = getZCTCoords(no); int z = nos[0], t = nos[2]; for (int c=0; c<sizeC; c++) { byte[] b = reader.openBytes(reader.getIndex(z, c, t), x, y, w, h); System.arraycopy(b, 0, buf, c * b.length, b.length); } return buf; }