/*******************************************************************************
* Copyright (c) 2016 Weasis Team and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Nicolas Roduit - initial API and implementation
*******************************************************************************/
package org.weasis.core.ui.editor.image;
import java.awt.Point;
import org.weasis.core.api.gui.util.DecFormater;
import org.weasis.core.api.image.util.Unit;
import org.weasis.core.ui.Messages;
/**
* User: boraldo Date: 28.01.14 Time: 15:02
*/
public class PixelInfo {
private double[] values;
private String[] channelNames;
private String pixelValueUnit;
private Point position;
private Unit pixelSpacingUnit;
// Only display square pixel, so one value is enough.
private Double pixelSize;
public double[] getValues() {
return values;
}
public void setValues(double[] values) {
this.values = values;
}
public String[] getChannelNames() {
return channelNames;
}
public void setChannelNames(String[] channelNames) {
this.channelNames = channelNames;
}
public String getPixelValueUnit() {
return pixelValueUnit;
}
public void setPixelValueUnit(String pixelValueUnit) {
this.pixelValueUnit = pixelValueUnit;
}
public String getPixelValueText() {
if (values != null) {
if (values.length == 1) {
StringBuilder text = new StringBuilder();
text.append(DecFormater.oneDecimal(values[0]));
if (pixelValueUnit != null) {
text.append(" ");//$NON-NLS-1$
text.append(pixelValueUnit);
}
return text.toString();
} else if (values.length > 1) {
// TODO add preference for Pixel value type (RGB, IHS...) and pixel position (pix, real)
// float[] ihs = IHSColorSpace.getInstance().fromRGB(new float[]
// {
// c[0] / 255f, c[1] / 255f, c[2] / 255f
// });
// c[0] = (int) (ihs[0] * 255f);
// c[1] = (int) ((ihs[1] / (Math.PI * 2)) * 255f);
// c[2] = (int) (ihs[2] * 255f);
//
// message.append(" (I = " + c[0] + ", H = " + c[1] + ", S = " + c[2] + ")");
StringBuilder text = new StringBuilder();
for (int i = 0; i < values.length; i++) {
text.append(" ");//$NON-NLS-1$
text.append((channelNames == null || i >= channelNames.length)
? Messages.getString("PixelInfo.unknown") : channelNames[i].substring(0, //$NON-NLS-1$
1));
text.append("=");//$NON-NLS-1$
text.append(DecFormater.twoDecimal(values[i]));
}
return text.toString();
}
}
return Messages.getString("PixelInfo.no_val"); //$NON-NLS-1$
}
public Unit getPixelSpacingUnit() {
return pixelSpacingUnit;
}
public void setPixelSpacingUnit(Unit pixelSpacingUnit) {
this.pixelSpacingUnit = pixelSpacingUnit;
}
public Double getPixelSize() {
return pixelSize;
}
public void setPixelSize(Double pixelSize) {
this.pixelSize = pixelSize;
}
public Point getPosition() {
return position;
}
public void setPosition(Point position) {
this.position = position;
}
public String getPixelPositionText() {
if (position == null) {
return Messages.getString("DefaultView2d.out");//$NON-NLS-1$
}
StringBuilder text = new StringBuilder("("); //$NON-NLS-1$
text.append(position.x);
text.append(",");//$NON-NLS-1$
text.append(position.y);
text.append(")");//$NON-NLS-1$
return text.toString();
}
public String getRealPositionText() {
if (position == null || pixelSpacingUnit == null || pixelSize == null) {
return getPixelPositionText();
}
StringBuilder text = new StringBuilder("("); //$NON-NLS-1$
text.append(DecFormater.twoDecimal(pixelSize * position.x));
text.append(pixelSpacingUnit.getAbbreviation());
text.append(",");//$NON-NLS-1$
text.append(DecFormater.twoDecimal(pixelSize * position.y));
text.append(pixelSpacingUnit.getAbbreviation());
text.append(")");//$NON-NLS-1$
return text.toString();
}
}