public MeasurementsAdapter getMeasurementAdapter(Unit displayUnit, Point offset) { Unit unit = displayUnit; if (unit == null || pixelSpacingUnit == null || pixelSpacingUnit.equals(Unit.PIXEL)) { unit = Unit.PIXEL; } double unitRatio; if (unit.equals(Unit.PIXEL)) { unitRatio = 1.0; } else { unitRatio = getPixelSize() * unit.getConversionRatio(pixelSpacingUnit.getConvFactor()); } int offsetx = offset == null ? 0 : -offset.x; int offsety = offset == null ? 0 : -offset.y; return new MeasurementsAdapter(unitRatio, offsetx, offsety, false, 0, unit.getAbbreviation()); }
private void initialize() { ImageElement image = view2d.getImage(); if (image != null) { Unit unit = image.getPixelSpacingUnit(); if (!Unit.PIXEL.equals(unit)) { Point2D ptA = line.getStartPoint(); Point2D ptB = line.getEndPoint(); if (Objects.nonNull(ptA) && Objects.nonNull(ptB)) { jTextFieldLineWidth.setValue(ptA.distance(ptB) * image.getPixelSize()); } } else { GridBagConstraints gbcTextPane = new GridBagConstraints(); gbcTextPane.gridwidth = 4; gbcTextPane.insets = new Insets(0, 0, 5, 5); gbcTextPane.fill = GridBagConstraints.HORIZONTAL; gbcTextPane.gridx = 0; gbcTextPane.gridy = 0; gbcTextPane.weightx = 1.0; gbcTextPane.weighty = 1.0; JScrollPane scroll = new JScrollPane(createArea(Messages.getString("CalibrationView.warn"), //$NON-NLS-1$ true, 0)); scroll.setPreferredSize(new Dimension(300, 75)); jPanelMode.add(scroll, gbcTextPane); unit = Unit.MILLIMETER; } jComboBoxUnit.setSelectedItem(unit); } }
public void applyNewCalibration() { ImageElement image = view2d.getImage(); if (image != null) { Number inputCalibVal = JMVUtils.getFormattedValue(jTextFieldLineWidth); if (inputCalibVal != null) { double imgRatio = image.getPixelSize(); Unit unit = (Unit) jComboBoxUnit.getSelectedItem(); Unit imgUnit = image.getPixelSpacingUnit(); if (!Unit.PIXEL.equals(unit)) { image.setPixelSpacingUnit(unit); Double lineLength = null; Point2D ptA = line.getStartPoint(); Point2D ptB = line.getEndPoint(); if (Objects.nonNull(ptA) && Objects.nonNull(ptB)) { lineLength = ptA.distance(ptB); } if (Objects.isNull(lineLength) || lineLength < 1d) { lineLength = 1.0; } double newRatio = inputCalibVal.doubleValue() / lineLength; if ((Objects.nonNull(imgRatio) && MathUtil.isDifferent(newRatio, imgRatio)) || !Objects.equals(unit, imgUnit)) { applyCalibration(newRatio, unit); } } } } } }
@Override public double getRealWorldViewScale() { double viewScale = 0.0; E img = getImage(); if (img != null) { Window win = SwingUtilities.getWindowAncestor(this); if (win != null) { GraphicsConfiguration config = win.getGraphicsConfiguration(); Monitor monitor = MeasureTool.viewSetting.getMonitor(config.getDevice()); if (monitor != null) { double realFactor = monitor.getRealScaleFactor(); if (realFactor > 0.0) { Unit imgUnit = img.getPixelSpacingUnit(); if (!Unit.PIXEL.equals(imgUnit)) { viewScale = imgUnit.getConvFactor() * img.getPixelSize() / realFactor; viewScale = -adjustViewScale(viewScale); } } } } } return viewScale; }