diff --git a/config/plugins.properties b/config/plugins.properties index 522d343..a809559 100644 --- a/config/plugins.properties +++ b/config/plugins.properties @@ -1,5 +1,6 @@ +CamerasSimple.java=disabled +ScreenPanel.java=enabled Camtool.java=disabled -Cameras.java=disabled LaserGunAlignment.java=enabled test2.java=disabled GunSolenoidAlignment.java=enabled diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index fae8b48..c261cc3 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,4 +1,4 @@ -#Mon Sep 19 17:59:05 CEST 2016 +#Wed Sep 21 11:41:23 CEST 2016 colormap=Grayscale colormapAutomatic=true colormapMax=0.0 @@ -6,8 +6,8 @@ colormapMin=0.0 flipHorizontally=false flipVertically=false grayscale=false -imageHeight=1200 -imageWidth=1246 +imageHeight=1024 +imageWidth=1280 invert=false rescaleFactor=1.0 rescaleOffset=0.0 @@ -18,9 +18,9 @@ roiY=0 rotation=0.0 rotationCrop=true scale=1.0 -spatialCalOffsetX=-630.0 -spatialCalOffsetY=-612.0 -spatialCalScaleX=26.761819803746654 -spatialCalScaleY=26.595744680851062 +spatialCalOffsetX=NaN +spatialCalOffsetY=NaN +spatialCalScaleX=NaN +spatialCalScaleY=NaN spatialCalUnits=mm transpose=false diff --git a/plugins/ScreenPanel.form b/plugins/ScreenPanel.form index a08cd9f..4047de7 100644 --- a/plugins/ScreenPanel.form +++ b/plugins/ScreenPanel.form @@ -239,7 +239,7 @@ - + @@ -270,43 +270,38 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + - + + + + + + + + + @@ -368,6 +363,17 @@ + + + + + + + + + + + @@ -403,12 +409,10 @@ - - - - - - + + + + @@ -417,39 +421,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + @@ -593,7 +591,7 @@ - + @@ -654,7 +652,7 @@ - + @@ -704,7 +702,7 @@ - + diff --git a/plugins/ScreenPanel.java b/plugins/ScreenPanel.java index dbe6952..5d109fc 100644 --- a/plugins/ScreenPanel.java +++ b/plugins/ScreenPanel.java @@ -34,11 +34,8 @@ import ch.psi.pshell.imaging.Overlay; import ch.psi.pshell.imaging.Overlays; import ch.psi.pshell.imaging.Overlays.Text; import ch.psi.pshell.imaging.Pen; -import static ch.psi.pshell.imaging.Renderer.PEN_ERROR_TEXT; -import static ch.psi.pshell.imaging.RendererMenu.PEN_MARKER; import ch.psi.pshell.imaging.RendererMode; import ch.psi.pshell.imaging.Source; -import ch.psi.pshell.imaging.Utils; import ch.psi.pshell.scripting.InterpreterResult; import ch.psi.pshell.scripting.ScriptManager; import ch.psi.utils.Arr; @@ -53,7 +50,6 @@ import java.awt.Dimension; import java.awt.Font; import java.awt.Point; import java.awt.image.BufferedImage; -import java.awt.image.DataBufferByte; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -63,6 +59,7 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JDialog; +import javax.swing.SwingUtilities; import org.apache.commons.math3.analysis.function.Gaussian; import org.apache.commons.math3.fitting.GaussianCurveFitter; import org.apache.commons.math3.fitting.WeightedObservedPoint; @@ -93,6 +90,8 @@ public class ScreenPanel extends Panel { ex.printStackTrace(); } } + renderer.setProfileNormalized(true); + renderer.setShowProfileLimits(true); showFit = buttonFit.isSelected(); } @@ -159,16 +158,15 @@ public class ScreenPanel extends Panel { comboCameras.setSelectedItem(-1); if (model.getSize() > 0) { try { - //setCamera((String)comboCameras.getSelectedItem()); if (App.hasArgument("cam")) { - comboCameras.setSelectedItem(App.getArgumentValue("cam")); + comboCameras.setSelectedItem(App.getArgumentValue("cam")); } } catch (Exception ex) { ex.printStackTrace(); } } } - startTimer(1000); + startTimer(1000); } @Override @@ -353,13 +351,6 @@ public class ScreenPanel extends Panel { camera.getConfig().spatialCalScaleX = 1.0; camera.getConfig().spatialCalScaleY = 1.0; } - /* - double[] origin = ((Camtool)camera).origin.read(); - if (origin.length>=2){ - camera.getConfig().spatialCalOffsetX = origin[0]; - camera.getConfig().spatialCalOffsetY = origin[1]; - } - */ } buttonReticle.setEnabled(camera.getConfig().isCalibrated()); buttonGrabBackground.setEnabled(camera instanceof Camtool); @@ -373,10 +364,22 @@ public class ScreenPanel extends Panel { renderer.setDevice(camera); renderer.setAutoScroll(true); renderer.setMarker(marker); - + firstImage = true; + camera.addListener(new ImageListener() { @Override public void onImage(Object o, BufferedImage bi, Data data) { + if (firstImage && (bi!=null)){ + if ((renderer.getMode()==RendererMode.Zoom) || (renderer.getMode()==RendererMode.Fixed)){ + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + centralizeRenderer(); + } + }); + } + firstImage = false; + } if ((bi == null) || (!showFit)) { renderer.removeOverlays(fitOv); fitOv = null; @@ -396,7 +399,8 @@ public class ScreenPanel extends Panel { } catch (Exception ex) { if (renderer.getDevice() == null) { renderer.setZoom(1.0); - renderer.addOverlay(new Text(PEN_ERROR_TEXT, ex.toString(), new Font("Verdana", Font.PLAIN, 12), new Point(20, 20))); + renderer.setMode(RendererMode.Zoom); + renderer.addOverlay(new Text(renderer.getPenErrorText(), ex.toString(), new Font("Verdana", Font.PLAIN, 12), new Point(20, 20))); } } finally { checkReticle(); @@ -440,6 +444,8 @@ public class ScreenPanel extends Panel { valueFilter.setDevice(filter); } + + volatile Boolean firstImage; void checkReticle() { if ((renderer.getDevice() != null) && (camera != null) && (camera.getConfig().isCalibrated()) && buttonReticle.isSelected()) { @@ -453,6 +459,21 @@ public class ScreenPanel extends Panel { renderer.refresh(); } + void checkMarker() { + if (camera != null) { + if (buttonMarker.isSelected()) { + Dimension d = renderer.getImageSize(); + Point p = (d == null) ? new Point(renderer.getWidth() / 2, renderer.getHeight() / 2) : new Point(d.width / 2, d.height / 2); + Overlay ov = null; + marker = new Overlays.Crosshairs(renderer.getPenMarker(), p, new Dimension(100, 100)); + marker.setMovable(true); + } else { + marker = null; + } + renderer.setMarker(marker); + } + } + void updateZoom() { try { buttonZoomStretch.setSelected(renderer.getMode() == RendererMode.Stretch); @@ -466,6 +487,8 @@ public class ScreenPanel extends Panel { buttonZoom05.setSelected(true); } else if (renderer.getZoom() == 0.25) { buttonZoom025.setSelected(true); + } else if (renderer.getZoom() == 2.0) { + buttonZoom2.setSelected(true); } else { buttonGroup1.clearSelection(); } @@ -548,7 +571,7 @@ public class ScreenPanel extends Panel { Double ySigma = null; if (data != null) { //img = Utils.grayscale(img); - double maxPlot = 255.0; + int profileSize = Math.min(data.getWidth(), data.getHeight())/4; try { double[] sum = (double[]) Convert.toDouble(data.integrateVertically()); @@ -559,18 +582,17 @@ public class ScreenPanel extends Panel { sum[i] = sum[i] - min; } - maxPlot = 4 * stats.getMax() / data.getHeight(); - double[] gaussian = fitGaussian(sum, x); if (gaussian != null) { if ((gaussian[2] < sum.length * 0.45) && (gaussian[0] > min * 0.03)) { + double maxPlot = gaussian[0]; xMean = gaussian[1]; xSigma = gaussian[2]; gaussian[0] += min; double[] fit = getFitFunction(gaussian, x); int[] y = new int[x.length]; for (int i = 0; i < x.length; i++) { - y[i] = (int) (data.getHeight() - 1 - (fit[i] / maxPlot)); + y[i] = (int) (data.getHeight() - 1 - ((fit[i] / maxPlot) * profileSize)); } vpoly = new Overlays.Polyline(fitPen, x, y); } @@ -587,12 +609,12 @@ public class ScreenPanel extends Panel { for (int i = 0; i < sum.length; i++) { sum[i] = sum[i] - min; } - maxPlot = 4 * stats.getMax() / data.getWidth(); double[] gaussian = fitGaussian(sum, x); if (gaussian != null) { //Only aknowledge beam fully inside the image and peak over 3% of min if ((gaussian[2] < sum.length * 0.45) && (gaussian[0] > min * 0.03)) { + double maxPlot = gaussian[0]; yMean = gaussian[1]; ySigma = gaussian[2]; gaussian[0] += min; @@ -600,7 +622,7 @@ public class ScreenPanel extends Panel { int[] y = new int[x.length]; for (int i = 0; i < x.length; i++) { - y[i] = (int) (fit[i] / maxPlot); + y[i] = (int) ((fit[i] / maxPlot) * profileSize); } hpoly = new Overlays.Polyline(fitPen, y, x); } @@ -953,6 +975,22 @@ public class ScreenPanel extends Panel { } }).start(); } + + void centralizeRenderer(){ + Point center = null; + Dimension size = renderer.getImageSize(); + double zoom = (renderer.getMode() == RendererMode.Fixed) ? 1.0: renderer.getZoom(); + if (renderer.getCalibration()!=null){ + center = renderer.getCalibration().getCenter(); + } else if (size!=null){ + center = new Point(size.width/2, size.height/2); + } + if (center!=null){ + Point topleft = new Point(Math.max((int) (center.x - renderer.getWidth()/2/zoom), 0), + Math.max((int) (center.y - renderer.getHeight()/2/zoom) , 0)); + renderer.setViewPosition(topleft); + } + } //////// @SuppressWarnings("unchecked") @@ -984,6 +1022,7 @@ public class ScreenPanel extends Panel { buttonZoomNormal = new javax.swing.JRadioButton(); buttonZoom025 = new javax.swing.JRadioButton(); buttonZoom05 = new javax.swing.JRadioButton(); + buttonZoom2 = new javax.swing.JRadioButton(); jPanel2 = new javax.swing.JPanel(); buttonGrayscale = new javax.swing.JRadioButton(); buttonRainbow = new javax.swing.JRadioButton(); @@ -1191,6 +1230,14 @@ public class ScreenPanel extends Panel { } }); + buttonGroup1.add(buttonZoom2); + buttonZoom2.setText("2"); + buttonZoom2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonZoom2ActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -1198,33 +1245,31 @@ public class ScreenPanel extends Panel { .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(buttonZoomFit) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonZoom025) - .addComponent(buttonZoom05)) - .addGap(47, 47, 47)) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonZoomNormal) - .addComponent(buttonZoomStretch)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addComponent(buttonZoomFit) + .addComponent(buttonZoomNormal) + .addComponent(buttonZoomStretch)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonZoom025) + .addComponent(buttonZoom05) + .addComponent(buttonZoom2)) + .addGap(47, 47, 47)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(buttonZoomNormal) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(buttonZoomFit)) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(buttonZoom025) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonZoom05))) + .addGap(4, 4, 4) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonZoomNormal) + .addComponent(buttonZoom025)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(buttonZoomStretch) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonZoomFit) + .addComponent(buttonZoom05)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonZoomStretch) + .addComponent(buttonZoom2)) .addContainerGap()) ); @@ -1328,11 +1373,10 @@ public class ScreenPanel extends Panel { .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonRainbow) - .addComponent(buttonGrayscale) - .addComponent(buttonTemperature)) - .addComponent(checkHistogram, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(checkHistogram) + .addComponent(buttonTemperature) + .addComponent(buttonRainbow) + .addComponent(buttonGrayscale)) .addContainerGap()) ); @@ -1341,31 +1385,28 @@ public class ScreenPanel extends Panel { jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(buttonAutomatic) - .addComponent(buttonGrayscale)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(buttonFullRange) - .addComponent(buttonRainbow)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(buttonManual) - .addComponent(buttonTemperature))) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(77, 77, 77) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel3) - .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(checkHistogram)))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(4, 4, 4) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonAutomatic) + .addComponent(buttonGrayscale)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonFullRange) + .addComponent(buttonRainbow)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonManual) + .addComponent(buttonTemperature)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 4, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3) + .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel4) + .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(checkHistogram)) + .addContainerGap()) ); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Source")); @@ -1401,7 +1442,7 @@ public class ScreenPanel extends Panel { jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap() + .addGap(4, 4, 4) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonCamtool) .addComponent(buttonDirect)) @@ -1431,7 +1472,7 @@ public class ScreenPanel extends Panel { panelScreenLayout.setVerticalGroup( panelScreenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScreenLayout.createSequentialGroup() - .addContainerGap() + .addGap(4, 4, 4) .addComponent(comboScreen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(valueScreen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -1461,7 +1502,7 @@ public class ScreenPanel extends Panel { panelScreen1Layout.setVerticalGroup( panelScreen1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScreen1Layout.createSequentialGroup() - .addContainerGap() + .addGap(4, 4, 4) .addComponent(comboFilter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(valueFilter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -1484,7 +1525,7 @@ public class ScreenPanel extends Panel { jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() - .addGap(10, 10, 10) + .addContainerGap() .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelScreen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -1580,18 +1621,7 @@ public class ScreenPanel extends Panel { private void buttonMarkerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMarkerActionPerformed try { - if (camera != null) { - if (buttonMarker.isSelected()) { - Dimension d = renderer.getImageSize(); - Point p = (d == null) ? new Point(renderer.getWidth() / 2, renderer.getHeight() / 2) : new Point(d.width / 2, d.height / 2); - Overlay ov = null; - marker = new Overlays.Crosshairs(PEN_MARKER, p, new Dimension(100, 100)); - marker.setMovable(true); - } else { - marker = null; - } - renderer.setMarker(marker); - } + checkMarker(); } catch (Exception ex) { showException(ex); } @@ -1674,7 +1704,8 @@ public class ScreenPanel extends Panel { private void buttonZoomNormalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomNormalActionPerformed try { renderer.setMode(RendererMode.Fixed); - renderer.setViewPosition(new Point(0, 0)); + //renderer.setViewPosition(new Point(0, 0)); + centralizeRenderer(); } catch (Exception ex) { showException(ex); } @@ -1684,15 +1715,25 @@ public class ScreenPanel extends Panel { try { if ((camera != null) && (camera instanceof ColormapSource)) { ColormapSource source = (ColormapSource) camera; + Color colorReticule = new Color(64,64,64); + Color colorMarker = new Color(128,128,128); if (buttonGrayscale.isSelected()) { + colorReticule = new Color(0, 192, 0); + colorMarker = new Color(64, 255, 64); source.getConfig().colormap = Colormap.Grayscale; } - if (buttonTemperature.isSelected()) { + if (buttonTemperature.isSelected()) { source.getConfig().colormap = Colormap.Temperature; } - if (buttonRainbow.isSelected()) { + if (buttonRainbow.isSelected()) { source.getConfig().colormap = Colormap.Rainbow; } + + renderer.setPenReticle(new Pen(colorReticule)); + renderer.setPenProfile(new Pen(colorReticule)); + renderer.setPenMarker(new Pen(colorMarker, 2)); + renderer.setShowReticle(false); + checkReticle(); source.getConfig().colormapAutomatic = buttonAutomatic.isSelected(); source.getConfig().colormapMin = buttonFullRange.isSelected() ? Double.NaN : (Integer) spinnerMin.getValue(); source.getConfig().colormapMax = buttonFullRange.isSelected() ? Double.NaN : (Integer) spinnerMax.getValue(); @@ -1711,13 +1752,15 @@ public class ScreenPanel extends Panel { private void buttonZoom025ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom025ActionPerformed renderer.setZoom(0.25); renderer.setMode(RendererMode.Zoom); - renderer.setViewPosition(new Point(0, 0)); + //renderer.setViewPosition(new Point(0, 0)); + centralizeRenderer(); }//GEN-LAST:event_buttonZoom025ActionPerformed private void buttonZoom05ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom05ActionPerformed renderer.setZoom(0.5); renderer.setMode(RendererMode.Zoom); - renderer.setViewPosition(new Point(0, 0)); + //renderer.setViewPosition(new Point(0, 0)); + centralizeRenderer(); }//GEN-LAST:event_buttonZoom05ActionPerformed private void buttonCamtoolActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCamtoolActionPerformed @@ -1765,6 +1808,12 @@ public class ScreenPanel extends Panel { } }//GEN-LAST:event_checkHistogramActionPerformed + private void buttonZoom2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom2ActionPerformed + renderer.setZoom(2.0); + renderer.setMode(RendererMode.Zoom); + centralizeRenderer(); + }//GEN-LAST:event_buttonZoom2ActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton buttonAutomatic; private javax.swing.JRadioButton buttonCamtool; @@ -1788,6 +1837,7 @@ public class ScreenPanel extends Panel { private javax.swing.JRadioButton buttonTemperature; private javax.swing.JRadioButton buttonZoom025; private javax.swing.JRadioButton buttonZoom05; + private javax.swing.JRadioButton buttonZoom2; private javax.swing.JRadioButton buttonZoomFit; private javax.swing.JRadioButton buttonZoomNormal; private javax.swing.JRadioButton buttonZoomStretch;