This commit is contained in:
gobbo_a
2016-09-21 11:42:13 +02:00
parent 3498abbb53
commit a6876b1c9c
4 changed files with 222 additions and 173 deletions

View File

@@ -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;