/******************************************************************************* * 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.api.image.util; import java.util.ArrayList; import java.util.List; import org.weasis.core.api.Messages; public enum Unit { PIXEL(-5, Messages.getString("Unit.pix"), Messages.getString("Unit.pix_s"), 1.0), //$NON-NLS-1$ //$NON-NLS-2$ /* * The prefix "nano" means 1 x 10-9, so one nanometer = 0.000000001 meters. Alternatively, 1 meter contains * 1,000,000,000 nanometers. Visible light contains wavelengths from roughly 300 to 800 nm. To convert this * wavelength to energy. */ NANOMETER(-2, Messages.getString("Unit.nano"), Messages.getString("Unit.nano_S"), 1.0E-09), //$NON-NLS-1$ //$NON-NLS-2$ /* * Also known a micron. The prefix "micro" means 1 x 10-6, so one micrometer = 0.000001 meters. Alternatively, 1 * meter contains 1,000,000 micrometers. 1 micrometer = 10,000 Angstroms = 0.001 millimeters = 0.0009843 inches. */ MICROMETER(-1, Messages.getString("Unit.micro"), Messages.getString("Unit.micro_S"), 1.0E-06), //$NON-NLS-1$ //$NON-NLS-2$ /* * The prefix "milli" means 1/1000, so one millimeter = 0.001 meters. Alternatively, 1 meter contains 1000 * millimeters. 1 millimeter = 0.1 cm = 0.0394 inches. */ MILLIMETER(0, Messages.getString("Unit.milli"), Messages.getString("Unit.milli_s"), 1.0E-03), //$NON-NLS-1$ //$NON-NLS-2$ /* * The prefix "centi" means 1/100, so one centimeter = 0.01 meters. Alternatively, 1 meter contains 100 cm. 1 cm = * 10 mm = 0.3937 inches. */ CENTIMETER(1, Messages.getString("Unit.cent"), Messages.getString("Unit.cent_s"), 1.0E-02), //$NON-NLS-1$ //$NON-NLS-2$ /* * Defined as the length of 1,650,763.73 wavelengths of the orange-red radiation of 86Kr in a vacuum, one meter * contains 100 cm = 1000 mm. There are 1000 m in a kilometer. One meter = 39.37 inches = 3.28 feet = 1.09 yards. */ METER(2, Messages.getString("Unit.meter"), Messages.getString("Unit.meter_s"), 1.0), //$NON-NLS-1$ //$NON-NLS-2$ /* * The prefix "kilo" means 1000, so one kilometer = 1,000 meters. 1 kilometer = 3,280.84 feet = 1,093.6 yards = * 0.6214 miles. */ KILOMETER(3, Messages.getString("Unit.kilo"), Messages.getString("Unit.kilo_s"), 1.0E+03), //$NON-NLS-1$ //$NON-NLS-2$ // micro and mili iches are not official units because micro and mili comes from metric unit MICROINCH(9, Messages.getString("Unit.minch"), Messages.getString("Unit.minch_s"), 2.54E-08), //$NON-NLS-1$ //$NON-NLS-2$ MILLIINCH(10, Messages.getString("Unit.mil_inch"), Messages.getString("Unit.mil"), 2.54E-05), //$NON-NLS-1$ //$NON-NLS-2$ INCH(11, Messages.getString("Unit.inch"), Messages.getString("Unit.inch_s"), 2.54E-02), //$NON-NLS-1$ //$NON-NLS-2$ FEET(12, Messages.getString("Unit.feet"), Messages.getString("Unit.feet_s"), 3.048E-01), //$NON-NLS-1$ //$NON-NLS-2$ YARD(13, Messages.getString("Unit.yard"), Messages.getString("Unit.yard_s"), 9.144E-01), //$NON-NLS-1$ //$NON-NLS-2$ MILE(14, Messages.getString("Unit.mile"), Messages.getString("Unit.mile_s"), 1.609344E+03); //$NON-NLS-1$ //$NON-NLS-2$ private final int id; private final String fullName; private final String abbreviation; private final double convFactor; Unit(int id, String fullName, String abbreviation, double convFactor) { this.id = id; this.fullName = fullName; this.abbreviation = abbreviation; this.convFactor = convFactor; } public int getId() { return id; } public String getFullName() { return fullName; } public double getConvFactor() { return convFactor; } public String getAbbreviation() { return abbreviation; } @Override public String toString() { return fullName; } public double getConversionRatio(double calibRatio) { return calibRatio / convFactor; } public static List<AbbreviationUnit> getAbbreviationUnits() { ArrayList<AbbreviationUnit> units = new ArrayList<>(); for (Unit u : Unit.values()) { if (u.getId() != Unit.PIXEL.getId()) { units.add(new AbbreviationUnit(u)); } } return units; } public static Unit getCurrentIdUnit(int id) { for (Unit u : Unit.values()) { if (id == u.getId()) { return u; } } return Unit.PIXEL; } public static final List<String> getUnitsName() { ArrayList<String> list = new ArrayList<>(); for (Unit u : Unit.values()) { list.add(u.getFullName()); } return list; } public Unit getUpUnit() { for (Unit u : Unit.values()) { if (u.getId() - getId() == 1) { return u; } } return null; } public Unit getDownUnit() { for (Unit u : Unit.values()) { if (getId() - u.getId() == 1) { return u; } } return null; } public static List<Unit> getUnitExceptPixel() { ArrayList<Unit> list = new ArrayList<>(); for (Unit u : Unit.values()) { if (u.getId() != Unit.PIXEL.getId()) { list.add(u); } } return list; } }