/* * Copyright 2010-2015 Institut Pasteur. * * This file is part of Icy. * * Icy is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Icy is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Icy. If not, see <http://www.gnu.org/licenses/>. */ package icy.image; /** * @author Stephane */ public class ImagePosition implements Comparable<ImagePosition> { public static final char T_ID = 'T'; public static final char Z_ID = 'Z'; protected int t; protected int z; /** * @param t * @param z */ public ImagePosition(int t, int z) { super(); this.t = t; this.z = z; } public ImagePosition() { this(-1, -1); } public void copyFrom(ImagePosition ip) { t = ip.t; z = ip.z; } public void switchLeft() { t = z; z = 0; } public void switchRight() { z = t; t = 0; } /** * @return the t */ public int getT() { return t; } /** * @param t * the t to set */ public void setT(int t) { this.t = t; } /** * @return the z */ public int getZ() { return z; } /** * @param z * the z to set */ public void setZ(int z) { this.z = z; } public void set(int t, int z) { this.t = t; this.z = z; } public int get(char ident) { final char id = Character.toUpperCase(ident); switch (id) { case T_ID: return t; case Z_ID: return z; } return -1; } public static boolean isValidIdentStatic(char ident) { final char id = Character.toUpperCase(ident); return (id == T_ID) || (id == Z_ID); } public boolean isValidIdent(char ident) { return isValidIdentStatic(ident); } public boolean isTUndefined() { return (t == -1); } public boolean isZUndefined() { return (z == -1); } public boolean isUndefined() { return isTUndefined() || isZUndefined(); } public char getFirstEmptyPos() { if (isTUndefined()) return T_ID; if (isZUndefined()) return Z_ID; // no empty pos return ' '; } public char getLastEmptyPos() { if (isZUndefined()) return Z_ID; if (isTUndefined()) return T_ID; // no empty pos return ' '; } public boolean isSamePos(ImagePosition ip, char posIdent) { final char id = Character.toUpperCase(posIdent); switch (id) { case T_ID: if (t == -1) return false; return (ip.t == t); case Z_ID: if ((t == -1) || (z == -1)) return false; return (ip.t == t) && (ip.z == z); } return false; } @Override public int compareTo(ImagePosition o) { final ImagePosition ip = o; final int ot = ip.t; final int oz = ip.z; if (t > ot) return 1; if (t < ot) return -1; if (z > oz) return 1; if (z < oz) return -1; return 0; } }