private boolean isLastSliderIndex(int sliderIndex) { return getSliderCount() - 1 == sliderIndex; }
private double getMaxSliderSample(int sliderIndex) { if (sliderIndex == getSliderCount() - 1) { return getMaxSample(); } else { return getSliderSample(sliderIndex + 1); } }
private void setSliderSample(int index, double newValue, boolean adjusting) { if (adjusting) { double minValue = Double.NEGATIVE_INFINITY; if (index > 0 && index < getSliderCount() - 1) { minValue = getSliderSample(index - 1); } if (newValue < minValue) { newValue = minValue; } } setSliderSample(index, newValue); }
private void drawSliders(Graphics2D g2d) { g2d.translate(sliderBaseLineRect.x, sliderBaseLineRect.y); g2d.setStroke(STROKE_1); for (int i = 0; i < getSliderCount(); i++) { if (isSliderVisible(i)) { double sliderPos = getRelativeSliderPos(getSliderSample(i)); g2d.translate(sliderPos, 0.0); final Color sliderColor = getSliderColor(i); g2d.setPaint(sliderColor); g2d.fill(sliderShape); int gray = (sliderColor.getRed() + sliderColor.getGreen() + sliderColor.getBlue()) / 3; g2d.setColor(gray < 128 ? Color.white : Color.black); g2d.draw(sliderShape); String text = getFormattedValue(getSliderSample(i)); g2d.setColor(Color.black); // save the old transformation final AffineTransform oldTransform = g2d.getTransform(); g2d.transform(AffineTransform.getRotateInstance(Math.PI / 2)); g2d.drawString(text, 3 + 0.5f * SLIDER_HEIGHT, 0.35f * FONT_SIZE); // restore the old transformation g2d.setTransform(oldTransform); g2d.translate(-sliderPos, 0.0); } } g2d.translate(-sliderBaseLineRect.x, -sliderBaseLineRect.y); }
private void computeFactors() { factors = new double[getSliderCount()]; final double firstPS = scaleInverse(getFirstSliderSample()); final double lastPS = scaleInverse(getLastSliderSample()); double dsn = lastPS - firstPS; if (dsn == 0 || Double.isNaN(dsn)) { dsn = Double.MIN_VALUE; } for (int i = 0; i < getSliderCount(); i++) { final double sample = scaleInverse(getSliderSample(i)); final double dsi = sample - firstPS; factors[i] = dsi / dsn; } }
private boolean isSliderVisible(int sliderIndex) { if (sliderIndex == 0 || sliderIndex == getSliderCount() - 1) { return true; } ImageInfo.UncertaintyVisualisationMode uvMode = getModel().getImageInfo().getUncertaintyVisualisationMode(); return uvMode == null || uvMode == ImageInfo.UncertaintyVisualisationMode.None || uvMode == ImageInfo.UncertaintyVisualisationMode.Polychromatic_Blending || uvMode == ImageInfo.UncertaintyVisualisationMode.Polychromatic_Overlay; }
public void distributeSlidersEvenly() { final double pos1 = scaleInverse(getFirstSliderSample()); final double pos2 = scaleInverse(getLastSliderSample()); final double delta = pos2 - pos1; final double evenSpace = delta / (getSliderCount() - 2 + 1); for (int i = 0; i < getSliderCount(); i++) { final double value = scale(pos1 + evenSpace * i); setSliderSample(i, value, false); } }
for (int i = 0; i < getSliderCount(); i++) { x1 = (int) getAbsoluteSliderPos(getSliderSample(i)); y1 = histoRect.y + histoRect.height - 1;
private void partitionSliders(boolean adjusting) { final double pos1 = scaleInverse(getFirstSliderSample()); final double pos2 = scaleInverse(getLastSliderSample()); final double delta = pos2 - pos1; for (int i = 0; i < (getSliderCount() - 1); i++) { final double value = scale(pos1 + factors[i] * delta); setSliderSample(i, value, adjusting); } }
private Color getSliderColor(int index) { ImageInfo.UncertaintyVisualisationMode uvMode = getModel().getImageInfo().getUncertaintyVisualisationMode(); if (uvMode != null) { if (uvMode == ImageInfo.UncertaintyVisualisationMode.Transparency_Blending) { return Color.WHITE; } else if (uvMode == ImageInfo.UncertaintyVisualisationMode.Monochromatic_Blending) { return getModel().getSliderColor(getSliderCount() - 1); } } return getModel().getSliderColor(index); }
private void editSliderSample(MouseEvent evt, final int sliderIndex) { final PropertyContainer vc = new PropertyContainer(); vc.addProperty(Property.create("sample", getSliderSample(sliderIndex))); vc.getDescriptor("sample").setDisplayName("sample"); vc.getDescriptor("sample").setUnit(getModel().getParameterUnit()); final ValueRange valueRange; if (sliderIndex == 0) { valueRange = new ValueRange(Double.NEGATIVE_INFINITY, round(getMaxSliderSample(sliderIndex))); } else if (sliderIndex == getSliderCount() - 1) { valueRange = new ValueRange(round(getMinSliderSample(sliderIndex)), Double.POSITIVE_INFINITY); } else { valueRange = new ValueRange(round(getMinSliderSample(sliderIndex)), round(getMaxSliderSample(sliderIndex))); } vc.getDescriptor("sample").setValueRange(valueRange); final BindingContext ctx = new BindingContext(vc); final NumberFormatter formatter = new NumberFormatter(new DecimalFormat("#0.0#")); formatter.setValueClass(Double.class); // to ensure that double values are returned final JFormattedTextField field = new JFormattedTextField(formatter); field.setColumns(11); field.setHorizontalAlignment(JFormattedTextField.RIGHT); ctx.bind("sample", field); showPopup(evt, field); ctx.addPropertyChangeListener("sample", pce -> { hidePopup(); setSliderSample(sliderIndex, (Double) ctx.getBinding("sample").getPropertyValue()); computeZoomInToSliderLimits(); applyChanges(); }); }