This commit is contained in:
sfop
2016-09-12 15:40:53 +02:00
parent 0b6becd66e
commit ec78778cc2
6 changed files with 2204 additions and 243 deletions

View File

@@ -22,6 +22,9 @@ import ch.psi.pshell.epics.ChannelDouble;
import ch.psi.pshell.epics.ChannelDoubleArray;
import ch.psi.pshell.epics.ChannelInteger;
import ch.psi.pshell.epics.ChannelIntegerArray;
import ch.psi.pshell.imaging.Colormap;
import ch.psi.pshell.imaging.ColormapSource;
import ch.psi.pshell.imaging.ColormapSource.ColormapSourceConfig;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.imaging.Data;
import ch.psi.pshell.imaging.Overlay;
@@ -31,6 +34,7 @@ import ch.psi.pshell.imaging.Pen;
import static ch.psi.pshell.imaging.Renderer.PEN_ERROR_TEXT;
import ch.psi.pshell.imaging.Renderer.Profile;
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;
@@ -182,7 +186,7 @@ public class Cameras extends Panel {
public ArrayList<Integer> getCalibration() {
return (ArrayList<Integer>) state.get("calibration");
}
public double getCalOffsetX(){
ArrayList<Integer> calibration = getCalibration();
double ret = - (calibration.get(0) + calibration.get(2))/2;
@@ -393,7 +397,40 @@ public class Cameras extends Panel {
}
renderer.refresh();
}
void updateZoom(){
try{
buttonZoomStretch.setSelected(renderer.getMode() == RendererMode.Stretch);
buttonZoomFit.setSelected(renderer.getMode() == RendererMode.Fit);
buttonZoomNormal.setSelected( (renderer.getMode() == RendererMode.Fixed) || ((renderer.getMode() == RendererMode.Zoom) && (renderer.getZoom()==1.0)));
buttonZoom05.setSelected((renderer.getMode() == RendererMode.Zoom) && (renderer.getZoom()==0.5));
buttonZoom025.setSelected((renderer.getMode() == RendererMode.Zoom) && (renderer.getZoom()==0.25));
}catch (Exception ex) {
ex.printStackTrace();
}
}
void updateColormap(){
try{
if ((camera!=null) && (camera instanceof ColormapSource)){
ColormapSourceConfig config = ((ColormapSource)camera).getConfig();
buttonGrayscale.setSelected(config.colormap == Colormap.Grayscale);
buttonRainbow.setSelected(config.colormap == Colormap.Rainbow);
buttonTemperature.setSelected(config.colormap == Colormap.Temperature);
buttonFullRange.setSelected(config.isDefaultColormap());
buttonAutomatic.setSelected(config.colormapAutomatic);
buttonManual.setSelected((!buttonFullRange.isSelected()) && (!buttonAutomatic.isSelected()));
spinnerMin.setEnabled(buttonManual.isSelected());
spinnerMax.setEnabled(buttonManual.isSelected());
spinnerMin.setValue(Double.isNaN(config.colormapMin) ? 0 : Math.min(Math.max((int)config.colormapMin, 0), 65535));
spinnerMax.setValue(Double.isNaN(config.colormapMax) ? 0 : Math.min(Math.max((int)config.colormapMax, 0), 65535));
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
protected void onTimer() {
textState.setText((camera == null) ? "" : camera.getState().toString());
@@ -407,6 +444,8 @@ public class Cameras extends Panel {
Logger.getLogger(Cameras.class.getName()).log(Level.SEVERE, null, ex);
}
}
updateZoom();
updateColormap();
}
Pen fitPen = new Pen(new Color(192, 105, 0), 1);
@@ -761,59 +800,58 @@ public class Camtool extends ArraySource {
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
renderer = new ch.psi.pshell.imaging.Renderer();
jLabel1 = new javax.swing.JLabel();
comboCameras = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
textState = new javax.swing.JTextField();
buttonConfig = new javax.swing.JButton();
buttonSetup = new javax.swing.JButton();
checkCamtool = new javax.swing.JCheckBox();
buttonFit = new javax.swing.JToggleButton();
buttonPause = new javax.swing.JToggleButton();
buttonMarker = new javax.swing.JToggleButton();
buttonSave = new javax.swing.JToggleButton();
buttonReticle = new javax.swing.JToggleButton();
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
buttonGroup3 = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
buttonGrabBackground = new javax.swing.JButton();
renderer = new ch.psi.pshell.imaging.Renderer();
textState = new javax.swing.JTextField();
buttonSave = new javax.swing.JToggleButton();
buttonPause = new javax.swing.JToggleButton();
jLabel2 = new javax.swing.JLabel();
buttonFit = new javax.swing.JToggleButton();
comboCameras = new javax.swing.JComboBox();
buttonSetup = new javax.swing.JButton();
buttonMarker = new javax.swing.JToggleButton();
jLabel1 = new javax.swing.JLabel();
buttonConfig = new javax.swing.JButton();
buttonReticle = new javax.swing.JToggleButton();
jPanel2 = new javax.swing.JPanel();
buttonGrayscale = new javax.swing.JRadioButton();
buttonRainbow = new javax.swing.JRadioButton();
buttonTemperature = new javax.swing.JRadioButton();
buttonFullRange = new javax.swing.JRadioButton();
buttonManual = new javax.swing.JRadioButton();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
spinnerMin = new javax.swing.JSpinner();
spinnerMax = new javax.swing.JSpinner();
buttonAutomatic = new javax.swing.JRadioButton();
jPanel3 = new javax.swing.JPanel();
buttonZoomFit = new javax.swing.JRadioButton();
buttonZoomStretch = new javax.swing.JRadioButton();
buttonZoomNormal = new javax.swing.JRadioButton();
buttonZoom025 = new javax.swing.JRadioButton();
buttonZoom05 = new javax.swing.JRadioButton();
checkCamtool = new javax.swing.JCheckBox();
jLabel1.setText("Camera:");
comboCameras.setMaximumRowCount(30);
comboCameras.addActionListener(new java.awt.event.ActionListener() {
buttonGrabBackground.setText("Grab Background");
buttonGrabBackground.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboCamerasActionPerformed(evt);
buttonGrabBackgroundActionPerformed(evt);
}
});
jLabel2.setText("State:");
textState.setEditable(false);
textState.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textState.setDisabledTextColor(new java.awt.Color(0, 0, 0));
textState.setEnabled(false);
buttonConfig.setText("Config");
buttonConfig.addActionListener(new java.awt.event.ActionListener() {
buttonSave.setText("Save Snapshot");
buttonSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonConfigActionPerformed(evt);
}
});
buttonSetup.setText("Setup");
buttonSetup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSetupActionPerformed(evt);
}
});
checkCamtool.setSelected(true);
checkCamtool.setText("Camtool");
buttonFit.setSelected(true);
buttonFit.setText("Fit");
buttonFit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonFitActionPerformed(evt);
buttonSaveActionPerformed(evt);
}
});
@@ -824,6 +862,30 @@ public class Camtool extends ArraySource {
}
});
jLabel2.setText("State:");
buttonFit.setSelected(true);
buttonFit.setText("Fit");
buttonFit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonFitActionPerformed(evt);
}
});
comboCameras.setMaximumRowCount(30);
comboCameras.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comboCamerasActionPerformed(evt);
}
});
buttonSetup.setText("Setup");
buttonSetup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSetupActionPerformed(evt);
}
});
buttonMarker.setText("Marker");
buttonMarker.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -831,10 +893,12 @@ public class Camtool extends ArraySource {
}
});
buttonSave.setText("Save Snapshot");
buttonSave.addActionListener(new java.awt.event.ActionListener() {
jLabel1.setText("Camera:");
buttonConfig.setText("Config");
buttonConfig.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSaveActionPerformed(evt);
buttonConfigActionPerformed(evt);
}
});
@@ -846,36 +910,27 @@ public class Camtool extends ArraySource {
}
});
buttonGrabBackground.setText("Grab Background");
buttonGrabBackground.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonGrabBackgroundActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(renderer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(checkCamtool)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comboCameras, 0, 170, Short.MAX_VALUE)
.addComponent(comboCameras, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonConfig)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonSetup)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGap(50, 50, 50)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textState, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(buttonPause)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonMarker)
@@ -890,28 +945,27 @@ public class Camtool extends ArraySource {
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonConfig, buttonSetup});
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonConfig, buttonSetup});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonFit, buttonMarker, buttonPause, buttonReticle});
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonFit, buttonMarker, buttonPause, buttonReticle});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonGrabBackground, buttonSave});
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonGrabBackground, buttonSave});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(comboCameras, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(textState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonConfig)
.addComponent(buttonSetup)
.addComponent(checkCamtool))
.addComponent(buttonSetup))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(renderer, javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
.addComponent(renderer, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE)
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonPause)
.addComponent(buttonFit)
.addComponent(buttonMarker)
@@ -921,8 +975,237 @@ public class Camtool extends ArraySource {
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboCameras, textState});
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboCameras, textState});
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Colormap"));
buttonGroup2.add(buttonGrayscale);
buttonGrayscale.setText("Grayscale");
buttonGrayscale.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(buttonTemperature);
buttonTemperature.setText("Temperature");
buttonTemperature.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onChangeColormap(evt);
}
});
buttonGroup3.add(buttonFullRange);
buttonFullRange.setText("Full range");
buttonFullRange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onChangeColormap(evt);
}
});
buttonGroup3.add(buttonManual);
buttonManual.setText("Manual");
buttonManual.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onChangeColormap(evt);
}
});
jLabel3.setText("min:");
jLabel4.setText("max:");
spinnerMin.setModel(new javax.swing.SpinnerNumberModel(0, 0, 65535, 1));
spinnerMin.setEnabled(false);
spinnerMin.setPreferredSize(new java.awt.Dimension(60, 20));
spinnerMin.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
onChangeColormapRange(evt);
}
});
spinnerMax.setModel(new javax.swing.SpinnerNumberModel(255, 0, 65535, 1));
spinnerMax.setEnabled(false);
spinnerMax.setPreferredSize(new java.awt.Dimension(60, 20));
spinnerMax.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
onChangeColormapRange(evt);
}
});
buttonGroup3.add(buttonAutomatic);
buttonAutomatic.setText("Automatic");
buttonAutomatic.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onChangeColormap(evt);
}
});
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()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonFullRange)
.addComponent(buttonManual))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel4)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonGrayscale)
.addComponent(buttonRainbow)
.addComponent(buttonTemperature)
.addComponent(buttonAutomatic))
.addGap(0, 0, Short.MAX_VALUE))))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(buttonGrayscale)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonRainbow)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonTemperature)
.addGap(18, 18, 18)
.addComponent(buttonAutomatic)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonFullRange)
.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)
.addComponent(buttonManual))
.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)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Zoom"));
buttonGroup1.add(buttonZoomFit);
buttonZoomFit.setText("Fit");
buttonZoomFit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonZoomFitActionPerformed(evt);
}
});
buttonGroup1.add(buttonZoomStretch);
buttonZoomStretch.setText("Stretch");
buttonZoomStretch.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonZoomStretchActionPerformed(evt);
}
});
buttonGroup1.add(buttonZoomNormal);
buttonZoomNormal.setText("Normal");
buttonZoomNormal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonZoomNormalActionPerformed(evt);
}
});
buttonGroup1.add(buttonZoom025);
buttonZoom025.setText("0.25");
buttonZoom025.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonZoom025ActionPerformed(evt);
}
});
buttonGroup1.add(buttonZoom05);
buttonZoom05.setText("0.5");
buttonZoom05.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonZoom05ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonZoomFit)
.addComponent(buttonZoomStretch)
.addComponent(buttonZoomNormal)
.addComponent(buttonZoom025)
.addComponent(buttonZoom05))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(buttonZoomFit)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonZoomStretch)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonZoom025)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonZoom05)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonZoomNormal)
.addContainerGap())
);
checkCamtool.setSelected(true);
checkCamtool.setText("Use Camtool");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(checkCamtool)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(checkCamtool)
.addGap(61, 61, 61)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(0, 0, 0))
);
}// </editor-fold>//GEN-END:initComponents
private void comboCamerasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboCamerasActionPerformed
@@ -1043,20 +1326,97 @@ public class Camtool extends ArraySource {
}
}//GEN-LAST:event_buttonGrabBackgroundActionPerformed
private void buttonZoomFitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomFitActionPerformed
try {
renderer.setMode(RendererMode.Fit);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonZoomFitActionPerformed
private void buttonZoomStretchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomStretchActionPerformed
try {
renderer.setMode(RendererMode.Stretch);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonZoomStretchActionPerformed
private void buttonZoomNormalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomNormalActionPerformed
try {
renderer.setMode(RendererMode.Fixed);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonZoomNormalActionPerformed
private void onChangeColormap(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onChangeColormap
try {
if ((camera != null) && (camera instanceof ColormapSource)){
ColormapSource source = (ColormapSource)camera;
if (buttonGrayscale.isSelected()) source.getConfig().colormap = Colormap.Grayscale;
if (buttonTemperature.isSelected()) source.getConfig().colormap = Colormap.Temperature;
if (buttonRainbow.isSelected()) source.getConfig().colormap = Colormap.Rainbow;
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();
source.getConfig().save();
source.refresh();
}
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_onChangeColormap
private void onChangeColormapRange(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_onChangeColormapRange
onChangeColormap(null);
}//GEN-LAST:event_onChangeColormapRange
private void buttonZoom025ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom025ActionPerformed
renderer.setZoom(0.25);
renderer.setMode(RendererMode.Zoom);
}//GEN-LAST:event_buttonZoom025ActionPerformed
private void buttonZoom05ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom05ActionPerformed
renderer.setZoom(0.5);
renderer.setMode(RendererMode.Zoom);
}//GEN-LAST:event_buttonZoom05ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton buttonAutomatic;
private javax.swing.JButton buttonConfig;
private javax.swing.JToggleButton buttonFit;
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.JRadioButton buttonManual;
private javax.swing.JToggleButton buttonMarker;
private javax.swing.JToggleButton buttonPause;
private javax.swing.JRadioButton buttonRainbow;
private javax.swing.JToggleButton buttonReticle;
private javax.swing.JToggleButton buttonSave;
private javax.swing.JButton buttonSetup;
private javax.swing.JRadioButton buttonTemperature;
private javax.swing.JRadioButton buttonZoom025;
private javax.swing.JRadioButton buttonZoom05;
private javax.swing.JRadioButton buttonZoomFit;
private javax.swing.JRadioButton buttonZoomNormal;
private javax.swing.JRadioButton buttonZoomStretch;
private javax.swing.JCheckBox checkCamtool;
private javax.swing.JComboBox comboCameras;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private ch.psi.pshell.imaging.Renderer renderer;
private javax.swing.JSpinner spinnerMax;
private javax.swing.JSpinner spinnerMin;
private javax.swing.JTextField textState;
// End of variables declaration//GEN-END:variables
}