diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index f5482c3..cec2c3d 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,7 +1,7 @@ -#Fri Jun 09 12:01:41 CEST 2017 +#Fri Jun 09 15:35:21 CEST 2017 colormap=Flame -colormapAutomatic=true -colormapMax=583.0 +colormapAutomatic=false +colormapMax=0.0 colormapMin=0.0 flipHorizontally=false flipVertically=false diff --git a/plugins/ScreenPanelDev.form b/plugins/ScreenPanelDev.form index 63b209a..b3e0f52 100644 --- a/plugins/ScreenPanelDev.form +++ b/plugins/ScreenPanelDev.form @@ -305,7 +305,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -466,32 +466,31 @@ - + - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + @@ -499,41 +498,71 @@ - + - - - - - - - - - - - - - - - - - - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -550,16 +579,22 @@ - + + + + + + + + + + + + - - - - - @@ -588,128 +623,11 @@ - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -892,31 +810,30 @@ - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + @@ -934,14 +851,14 @@ - + - + - + @@ -949,7 +866,7 @@ - + @@ -960,7 +877,6 @@ - @@ -990,7 +906,6 @@ - @@ -1004,7 +919,6 @@ - @@ -1013,12 +927,12 @@ - + - + diff --git a/plugins/ScreenPanelDev.java b/plugins/ScreenPanelDev.java index 1272972..4235ea8 100644 --- a/plugins/ScreenPanelDev.java +++ b/plugins/ScreenPanelDev.java @@ -149,6 +149,7 @@ public class ScreenPanelDev extends Panel { yRms = getCamtoolDouble("y_rms"); if (goodRegion){ double[] gX2 = new double[x_profile.length]; + Arrays.fill(gX2, Double.NaN); try{ double x = getCamtoolDoubleArray("gr_x_axis")[0]; System.arraycopy(x_fit_gauss_function, 0, gX2, (int) ((renderer.getCalibration() != null) ? renderer.getCalibration().convertToImageX(x): x), x_fit_gauss_function.length); @@ -156,6 +157,7 @@ public class ScreenPanelDev extends Panel { } x_fit_gauss_function = gX2; double[] gY2 = new double[y_profile.length]; + Arrays.fill(gY2, Double.NaN); try{ double y = getCamtoolDoubleArray("gr_y_axis")[0]; System.arraycopy(y_fit_gauss_function, 0, gY2, (int) ((renderer.getCalibration() != null) ? renderer.getCalibration().convertToImageY(y): y), y_fit_gauss_function.length); @@ -193,9 +195,15 @@ public class ScreenPanelDev extends Panel { public ScreenPanelDev() { initComponents(); + spinnerThreshold.setVisible(false); + spinnerGrThreshold.setVisible(false); labelGrThreshold.setVisible(false); + spinnerGrScale.setVisible(false); labelGrScale.setVisible(false); + //spinnerMin.setVisible(false); labelMin.setVisible(false); + //spinnerMax.setVisible(false); labelMax.setVisible(false); renderer.setPersistenceFile(Paths.get(getContext().getSetup().getContextPath(), "Renderer_Cameras.bin")); setPersistedComponents(new Component[]{buttonCamtool, buttonDirect}); comboCameras.setEnabled(false); + SwingUtils.setEnumCombo(comboColormap, Colormap.class); if (App.hasArgument("poll")) { try { polling = Integer.valueOf(App.getArgumentValue("poll")); @@ -593,9 +601,9 @@ public class ScreenPanelDev extends Panel { parseUserOverlays(); errorOverlay = null; checkBackground.setEnabled(false); - spinnerThreshold.setEnabled(false); - spinnerGrThreshold.setEnabled(false); - spinnerGrScale.setEnabled(false); + spinnerThreshold.setVisible(false); + spinnerGrThreshold.setVisible(false); labelGrThreshold.setVisible(false); + spinnerGrScale.setVisible(false); labelGrScale.setVisible(false); checkThreshold.setEnabled(false); checkGoodRegion.setEnabled(false); @@ -610,8 +618,10 @@ public class ScreenPanelDev extends Panel { calibrationDialolg = null; } + boolean was_camtool = false; if (camera != null) { //camera.removeAllListeners(); + was_camtool = camera instanceof Camtool; camera.close(); camera = null; } @@ -668,7 +678,7 @@ public class ScreenPanelDev extends Panel { if (camera instanceof Camtool) { //Managing no background exception. Can be done in a better way? checkBackground.setEnabled(true); - if (changed) { + if (changed || !was_camtool) { ((Camtool) camera).startPipeline(cameraName, null); updateCamtoolControls(); } else { @@ -680,9 +690,6 @@ public class ScreenPanelDev extends Panel { } ((Camtool) camera).startPipeline(cameraName, null, checkBackground.isSelected(), null, checkThreshold.isSelected() ? (Double) spinnerThreshold.getValue() : null, gr); } - spinnerThreshold.setEnabled(true); - spinnerGrThreshold.setEnabled(true); - spinnerGrScale.setEnabled(true); checkThreshold.setEnabled(true); checkGoodRegion.setEnabled(true); @@ -690,6 +697,8 @@ public class ScreenPanelDev extends Panel { } else { checkBackground.setEnabled(true); checkBackground.setSelected(false); + checkThreshold.setSelected(false); + checkGoodRegion.setSelected(false); if (polling <= 0) { camera.setMonitored(true); } else { @@ -877,26 +886,7 @@ public class ScreenPanelDev extends Panel { try { if ((camera != null) && (camera instanceof ColormapSource)) { ColormapSourceConfig config = ((ColormapSource) camera).getConfig(); - switch (config.colormap) { - case Grayscale: - buttonGrayscale.setSelected(true); - break; - case Rainbow: - buttonRainbow.setSelected(true); - break; - case Temperature: - buttonTemperature.setSelected(true); - break; - case Flame: - buttonFlame.setSelected(true); - break; - case Inverted: - buttonInverted.setSelected(true); - break; - default: - buttonGroup2.clearSelection(); - - } + comboColormap.setSelectedItem(config.colormap); if (config.isDefaultColormap()) { buttonFullRange.setSelected(true); } else if (config.colormapAutomatic) { @@ -905,6 +895,8 @@ public class ScreenPanelDev extends Panel { buttonManual.setSelected(true); } + //spinnerMin.setVisible(buttonManual.isSelected()); labelMin.setVisible(spinnerMin.isVisible()); + //spinnerMax.setVisible(buttonManual.isSelected()); labelMax.setVisible(spinnerMax.isVisible()); spinnerMin.setEnabled(buttonManual.isSelected()); spinnerMax.setEnabled(buttonManual.isSelected()); spinnerMin.setValue(Double.isNaN(config.colormapMin) ? 0 : Math.min(Math.max((int) config.colormapMin, 0), 65535)); @@ -935,6 +927,9 @@ public class ScreenPanelDev extends Panel { } catch (Exception ex) { } goodRegion = checkGoodRegion.isSelected(); + spinnerThreshold.setVisible(checkThreshold.isSelected()); + spinnerGrThreshold.setVisible(goodRegion); labelGrThreshold.setVisible(spinnerGrThreshold.isVisible()); + spinnerGrScale.setVisible(goodRegion); labelGrScale.setVisible(spinnerGrScale.isVisible()); updatingCamtoolControls = false; } } @@ -1029,7 +1024,7 @@ public class ScreenPanelDev extends Panel { } xMean = id.xMean; xSigma = id.xSigma;yMean = id.yMean;ySigma = id.ySigma; gX = id.x_fit_gauss_function; gY = id.y_fit_gauss_function; - pX = id.x_profile;pY = id.y_profile; + pX = id.x_profile; pY = id.y_profile; xCom = id.xCom; xRms = id.xRms; yCom = id.yCom; yRms = id.yRms; profileSize /= 4; @@ -1044,16 +1039,23 @@ public class ScreenPanelDev extends Panel { double rangePlot = max - min; for (int i = 0; i < x.length; i++) { - if (gX != null) { - y[i] = (int) (height - 1 - (((gX[i] - minPlot) / rangePlot) * profileSize)); + if (gX != null) { + y[i] = (int) (height - 1 - (((gX[i] - minPlot) / rangePlot) * profileSize)); } p[i] = (int) (height - 1 - (((pX[i] - minPlot) / rangePlot) * profileSize)); } + + if (goodRegion){ + for (int i = 0; i < x.length; i++) { + y[i] = (Double.isNaN(gX[i])) ? 100000 : y[i]; + } + } + vgaussian = new Overlays.Polyline(penFit, x, y); vprofile = new Overlays.Polyline(renderer.getPenProfile(), x, p); } - if (pX != null) { + if (pY != null) { int[] y = Arr.indexesInt(pY.length); int[] x = new int[pY.length]; int[] p = new int[pY.length]; @@ -1066,10 +1068,16 @@ public class ScreenPanelDev extends Panel { for (int i = 0; i < x.length; i++) { if (gY != null) { - x[i] = (int) (((gY[i] - minPlot) / rangePlot) * profileSize); + x[i] = (int) (((gY[i] - minPlot) / rangePlot) * profileSize); } p[i] = (int) (((pY[i] - minPlot) / rangePlot) * profileSize); } + + if (goodRegion){ + for (int i = 0; i < x.length; i++) { + x[i] = (Double.isNaN(gY[i])) ? -1 :x[i]; + } + } hgaussian = new Overlays.Polyline(penFit, x, y); hprofile = new Overlays.Polyline(renderer.getPenProfile(), p, y); } @@ -1827,20 +1835,17 @@ public class ScreenPanelDev extends Panel { buttonZoom05 = new javax.swing.JRadioButton(); buttonZoom2 = new javax.swing.JRadioButton(); jPanel2 = new javax.swing.JPanel(); - buttonFullRange = new javax.swing.JRadioButton(); - buttonManual = new javax.swing.JRadioButton(); + checkHistogram = new javax.swing.JCheckBox(); + comboColormap = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); + buttonFullRange = new javax.swing.JRadioButton(); + buttonManual = new javax.swing.JRadioButton(); + buttonAutomatic = new javax.swing.JRadioButton(); + labelMin = new javax.swing.JLabel(); spinnerMin = new javax.swing.JSpinner(); spinnerMax = new javax.swing.JSpinner(); - buttonAutomatic = new javax.swing.JRadioButton(); - checkHistogram = new javax.swing.JCheckBox(); - jPanel8 = new javax.swing.JPanel(); - buttonInverted = new javax.swing.JRadioButton(); - buttonFlame = new javax.swing.JRadioButton(); - buttonTemperature = new javax.swing.JRadioButton(); - buttonRainbow = new javax.swing.JRadioButton(); - buttonGrayscale = new javax.swing.JRadioButton(); + labelMax = new javax.swing.JLabel(); jPanel5 = new javax.swing.JPanel(); buttonCamtool = new javax.swing.JRadioButton(); buttonDirect = new javax.swing.JRadioButton(); @@ -1858,8 +1863,8 @@ public class ScreenPanelDev extends Panel { checkGoodRegion = new javax.swing.JCheckBox(); spinnerGrScale = new javax.swing.JSpinner(); spinnerGrThreshold = new javax.swing.JSpinner(); - jLabel5 = new javax.swing.JLabel(); - jLabel6 = new javax.swing.JLabel(); + labelGrThreshold = new javax.swing.JLabel(); + labelGrScale = new javax.swing.JLabel(); setPreferredSize(new java.awt.Dimension(873, 600)); @@ -2122,7 +2127,7 @@ public class ScreenPanelDev extends Panel { .addComponent(buttonZoom025) .addComponent(buttonZoom05) .addComponent(buttonZoom2)) - .addGap(47, 47, 47)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2144,8 +2149,27 @@ public class ScreenPanelDev extends Panel { jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Colormap")); + checkHistogram.setText("Histogram"); + checkHistogram.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + checkHistogramActionPerformed(evt); + } + }); + + comboColormap.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + onChangeColormap(evt); + } + }); + + jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel3.setText("Type:"); + + jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel4.setText("Range:"); + buttonGroup3.add(buttonFullRange); - buttonFullRange.setText("Full range"); + buttonFullRange.setText("Full"); buttonFullRange.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { onChangeColormap(evt); @@ -2160,9 +2184,15 @@ public class ScreenPanelDev extends Panel { } }); - jLabel3.setText("Min:"); + buttonGroup3.add(buttonAutomatic); + buttonAutomatic.setText("Automatic"); + buttonAutomatic.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + onChangeColormap(evt); + } + }); - jLabel4.setText("Max:"); + labelMin.setText("Min:"); spinnerMin.setModel(new javax.swing.SpinnerNumberModel(0, 0, 65535, 1)); spinnerMin.setEnabled(false); @@ -2182,148 +2212,63 @@ public class ScreenPanelDev extends Panel { } }); - buttonGroup3.add(buttonAutomatic); - buttonAutomatic.setText("Automatic"); - buttonAutomatic.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - checkHistogram.setText("Histogram"); - checkHistogram.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - checkHistogramActionPerformed(evt); - } - }); - - buttonGroup2.add(buttonInverted); - buttonInverted.setText("Inverted"); - buttonInverted.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - buttonGroup2.add(buttonFlame); - buttonFlame.setText("Flame"); - buttonFlame.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - buttonGroup2.add(buttonTemperature); - buttonTemperature.setText("Temperature"); - buttonTemperature.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - buttonGroup2.add(buttonRainbow); - buttonRainbow.setText("Rainbow"); - buttonRainbow.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - buttonGroup2.add(buttonGrayscale); - buttonGrayscale.setText("Grayscale"); - buttonGrayscale.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - onChangeColormap(evt); - } - }); - - javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); - jPanel8.setLayout(jPanel8Layout); - jPanel8Layout.setHorizontalGroup( - jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel8Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup() - .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonGrayscale) - .addComponent(buttonInverted)) - .addGap(20, 20, 20)) - .addComponent(buttonFlame)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonTemperature) - .addComponent(buttonRainbow))) - .addGap(0, 0, 0)) - ); - jPanel8Layout.setVerticalGroup( - jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel8Layout.createSequentialGroup() - .addGap(0, 0, 0) - .addComponent(buttonGrayscale) - .addGap(0, 0, 0) - .addComponent(buttonInverted) - .addGap(0, 0, 0) - .addComponent(buttonFlame) - .addGap(0, 0, 0) - .addComponent(buttonRainbow) - .addGap(0, 0, 0) - .addComponent(buttonTemperature) - .addGap(0, 0, 0)) - ); + labelMax.setText("Max:"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() + .addGap(4, 4, 4) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(checkHistogram) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonAutomatic) - .addComponent(buttonFullRange) - .addComponent(buttonManual) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel4) - .addComponent(jLabel3)) - .addGap(2, 2, 2) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerMax, 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) - .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(jLabel3) + .addComponent(jLabel4)) + .addGap(4, 4, 4) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonAutomatic) + .addComponent(buttonFullRange) + .addComponent(buttonManual) + .addComponent(comboColormap, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(labelMax) + .addGap(2, 2, 2) + .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addComponent(labelMin) + .addGap(2, 2, 2) + .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(checkHistogram, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerMax, spinnerMin}); + jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel3, jLabel4}); + jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGap(4, 4, 4) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(buttonAutomatic) - .addGap(0, 0, 0) - .addComponent(buttonFullRange) - .addGap(0, 0, 0) - .addComponent(buttonManual) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .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(jPanel8, 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) - .addComponent(checkHistogram)) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(comboColormap, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3) + .addComponent(checkHistogram)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(buttonAutomatic) + .addComponent(jLabel4)) + .addGap(0, 0, 0) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelMin) + .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonFullRange)) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(buttonManual) + .addComponent(labelMax) + .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) ); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Source")); @@ -2430,7 +2375,7 @@ public class ScreenPanelDev extends Panel { panelScreen2.setBorder(javax.swing.BorderFactory.createTitledBorder("Image")); - checkThreshold.setText("Threshold:"); + checkThreshold.setText("Threshold"); checkThreshold.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkThresholdActionPerformed(evt); @@ -2438,7 +2383,6 @@ public class ScreenPanelDev extends Panel { }); spinnerThreshold.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 99999.0d, 1.0d)); - spinnerThreshold.setEnabled(false); spinnerThreshold.setPreferredSize(new java.awt.Dimension(77, 20)); spinnerThreshold.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -2461,7 +2405,6 @@ public class ScreenPanelDev extends Panel { }); spinnerGrScale.setModel(new javax.swing.SpinnerNumberModel(3.0d, 0.01d, 100.0d, 1.0d)); - spinnerGrScale.setEnabled(false); spinnerGrScale.setPreferredSize(new java.awt.Dimension(77, 20)); spinnerGrScale.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -2470,7 +2413,6 @@ public class ScreenPanelDev extends Panel { }); spinnerGrThreshold.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.04d, 1.0d, 0.1d)); - spinnerGrThreshold.setEnabled(false); spinnerGrThreshold.setPreferredSize(new java.awt.Dimension(77, 20)); spinnerGrThreshold.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -2478,9 +2420,9 @@ public class ScreenPanelDev extends Panel { } }); - jLabel5.setText("Threshold:"); + labelGrThreshold.setText("Threshold:"); - jLabel6.setText("Scale:"); + labelGrScale.setText("Scale:"); javax.swing.GroupLayout panelScreen2Layout = new javax.swing.GroupLayout(panelScreen2); panelScreen2.setLayout(panelScreen2Layout); @@ -2489,26 +2431,29 @@ public class ScreenPanelDev extends Panel { .addGroup(panelScreen2Layout.createSequentialGroup() .addContainerGap() .addGroup(panelScreen2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(checkBackground) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScreen2Layout.createSequentialGroup() + .addComponent(checkGoodRegion) + .addGap(18, 18, Short.MAX_VALUE) + .addComponent(labelGrScale) + .addGap(2, 2, 2) + .addComponent(spinnerGrScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScreen2Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(labelGrThreshold) + .addGap(2, 2, 2) + .addComponent(spinnerGrThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(panelScreen2Layout.createSequentialGroup() + .addComponent(checkBackground) + .addGap(0, 0, Short.MAX_VALUE)) .addGroup(panelScreen2Layout.createSequentialGroup() .addComponent(checkThreshold) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spinnerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelScreen2Layout.createSequentialGroup() - .addGroup(panelScreen2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(panelScreen2Layout.createSequentialGroup() - .addComponent(checkGoodRegion) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel6) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spinnerGrScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelScreen2Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(jLabel5) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spinnerGrThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap()))) + .addGap(18, 18, Short.MAX_VALUE) + .addComponent(spinnerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) ); + + panelScreen2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerGrScale, spinnerGrThreshold, spinnerThreshold}); + panelScreen2Layout.setVerticalGroup( panelScreen2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelScreen2Layout.createSequentialGroup() @@ -2522,12 +2467,12 @@ public class ScreenPanelDev extends Panel { .addGroup(panelScreen2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkGoodRegion) .addComponent(spinnerGrScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6)) + .addComponent(labelGrScale)) .addGap(2, 2, 2) .addGroup(panelScreen2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerGrThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(labelGrThreshold)) + .addContainerGap()) ); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); @@ -2544,7 +2489,7 @@ public class ScreenPanelDev extends Panel { .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(pauseSelection, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(panelScreen2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -2789,23 +2734,23 @@ public class ScreenPanelDev extends Panel { private void onChangeColormap(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onChangeColormap try { - if ((camera != null) && (camera instanceof ColormapSource) && !updatingColormap) { + if ((camera != null) && (camera instanceof ColormapSource) && !updatingColormap) { ColormapSource source = (ColormapSource) camera; Color colorReticule = new Color(16, 16, 16); Color colorMarker = new Color(128, 128, 128); - if (buttonGrayscale.isSelected() || buttonInverted.isSelected()) { - colorReticule = new Color(0, 192, 0); - colorMarker = new Color(64, 255, 64); - source.getConfig().colormap = buttonGrayscale.isSelected() ? Colormap.Grayscale : Colormap.Inverted; - } else if (buttonFlame.isSelected()) { - colorReticule = new Color(0, 192, 0); - colorMarker = new Color(64, 255, 64); - source.getConfig().colormap = Colormap.Flame; - } else if (buttonTemperature.isSelected()) { - source.getConfig().colormap = Colormap.Temperature; - } else if (buttonRainbow.isSelected()) { - source.getConfig().colormap = Colormap.Rainbow; + source.getConfig().colormap = (Colormap)comboColormap.getSelectedItem(); + switch (source.getConfig().colormap){ + case Grayscale: + case Inverted: + colorReticule = new Color(0, 192, 0); + colorMarker = new Color(64, 255, 64); + break; + case Flame: + colorReticule = new Color(0, 192, 0); + colorMarker = new Color(64, 255, 64); + break; } + renderer.setPenReticle(new Pen(colorReticule)); renderer.setPenProfile(new Pen(colorReticule, 0)); renderer.setPenMarker(new Pen(colorMarker, 2)); @@ -2815,14 +2760,15 @@ public class ScreenPanelDev extends Panel { source.getConfig().colormapMin = buttonFullRange.isSelected() ? Double.NaN : (Integer) spinnerMin.getValue(); source.getConfig().colormapMax = buttonFullRange.isSelected() ? Double.NaN : (Integer) spinnerMax.getValue(); source.getConfig().save(); - source.refresh(); + source.refresh(); if (buttonPause.isSelected()) { updatePause(); } + updateColormap(); } } catch (Exception ex) { showException(ex); - } + } }//GEN-LAST:event_onChangeColormap private void onChangeColormapRange(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_onChangeColormapRange @@ -2966,7 +2912,7 @@ public class ScreenPanelDev extends Panel { if (!updatingCamtoolControls) { try { if ((camera instanceof Camtool) && (((Camtool) camera).isPipelineStarted())) { - spinnerThreshold.setEnabled(checkThreshold.isSelected()); + spinnerThreshold.setVisible(checkThreshold.isSelected()); ((Camtool) camera).setThreshold(checkThreshold.isSelected() ? (Double) spinnerThreshold.getValue() : null); } } catch (Exception ex) { @@ -3012,8 +2958,8 @@ public class ScreenPanelDev extends Panel { if (!updatingCamtoolControls) { try { if ((camera instanceof Camtool) && (((Camtool) camera).isPipelineStarted())) { - spinnerGrScale.setEnabled(checkGoodRegion.isSelected()); - spinnerGrThreshold.setEnabled(checkGoodRegion.isSelected()); + spinnerGrScale.setVisible(checkGoodRegion.isSelected()); labelGrScale.setVisible(spinnerGrScale.isVisible()); + spinnerGrThreshold.setVisible(checkGoodRegion.isSelected()); labelGrThreshold.setVisible(spinnerGrThreshold.isVisible()); if (checkGoodRegion.isSelected()){ ((Camtool) camera).setGoodRegion( (Double)spinnerGrThreshold.getValue(), (Double)spinnerGrScale.getValue() ); } else { @@ -3048,24 +2994,19 @@ public class ScreenPanelDev extends Panel { private javax.swing.JButton buttonConfig; private javax.swing.JRadioButton buttonDirect; private javax.swing.JToggleButton buttonFit; - private javax.swing.JRadioButton buttonFlame; private javax.swing.JRadioButton buttonFullRange; private javax.swing.JButton buttonGrabBackground; - private javax.swing.JRadioButton buttonGrayscale; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.ButtonGroup buttonGroup2; private javax.swing.ButtonGroup buttonGroup3; private javax.swing.ButtonGroup buttonGroup4; - private javax.swing.JRadioButton buttonInverted; private javax.swing.JRadioButton buttonManual; private javax.swing.JToggleButton buttonMarker; private javax.swing.JToggleButton buttonPause; private javax.swing.JToggleButton buttonProfile; - private javax.swing.JRadioButton buttonRainbow; private javax.swing.JToggleButton buttonReticle; private javax.swing.JToggleButton buttonSave; private javax.swing.JButton buttonStop; - private javax.swing.JRadioButton buttonTemperature; private javax.swing.JRadioButton buttonZoom025; private javax.swing.JRadioButton buttonZoom05; private javax.swing.JRadioButton buttonZoom2; @@ -3077,14 +3018,13 @@ public class ScreenPanelDev extends Panel { private javax.swing.JCheckBox checkHistogram; private javax.swing.JCheckBox checkThreshold; private javax.swing.JComboBox comboCameras; + private javax.swing.JComboBox comboColormap; private javax.swing.JComboBox comboFilter; private javax.swing.JComboBox comboScreen; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; @@ -3092,8 +3032,11 @@ public class ScreenPanelDev extends Panel { private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; - private javax.swing.JPanel jPanel8; private javax.swing.JProgressBar jProgressBar1; + private javax.swing.JLabel labelGrScale; + private javax.swing.JLabel labelGrThreshold; + private javax.swing.JLabel labelMax; + private javax.swing.JLabel labelMin; private javax.swing.JPanel panelScreen; private javax.swing.JPanel panelScreen1; private javax.swing.JPanel panelScreen2; diff --git a/script/RFscan/phase_scan_caqtdm.py b/script/RFscan/phase_scan_caqtdm.py index e2a5aa0..6035cca 100644 --- a/script/RFscan/phase_scan_caqtdm.py +++ b/script/RFscan/phase_scan_caqtdm.py @@ -77,7 +77,7 @@ finally: x.close() phase_offset = 90 - ph_crest -amplitude_scale = energy_max / Ampl +amplitude_scale = fit_amplitude / Ampl power_scale = Power / math.pow(Ampl,2) caput(station + "-RSYS:SET-VSUM-PHASE-OFFSET-BASE", phase_offset) diff --git a/script/RFscan/phase_scan_caqtdm_sim.py b/script/RFscan/phase_scan_caqtdm_sim.py index 728810f..fec5773 100644 --- a/script/RFscan/phase_scan_caqtdm_sim.py +++ b/script/RFscan/phase_scan_caqtdm_sim.py @@ -77,7 +77,7 @@ finally: x.close() phase_offset = 90 - ph_crest -amplitude_scale = energy_max / Ampl +amplitude_scale = fit_amplitude / Ampl power_scale = Power / math.pow(Ampl,2) caput(station + "-RSYS:SET-VSUM-PHASE-OFFSET-BASE", phase_offset)