mirror of https://github.com/rusefi/rusefi.git
146 lines
4.8 KiB
Java
146 lines
4.8 KiB
Java
package com.rusefi.ui;
|
|
|
|
import com.rusefi.FileLog;
|
|
import com.rusefi.models.Range;
|
|
import com.rusefi.models.XYData;
|
|
import com.rusefi.ui.util.UiUtils;
|
|
import com.rusefi.ui.util.JTextFieldWithWidth;
|
|
//import net.ericaro.surfaceplotter.DefaultSurfaceModel;
|
|
//import net.ericaro.surfaceplotter.JSurfacePanel;
|
|
//import net.ericaro.surfaceplotter.Mapper;
|
|
//import net.ericaro.surfaceplotter.surface.SurfaceModel;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
|
|
import static com.rusefi.models.Utils.parseIntWithReason;
|
|
|
|
/**
|
|
* Date: 1/22/13
|
|
* Andrey Belomutskiy, (c) 2013-2020
|
|
*/
|
|
/*
|
|
public class ChartHelper {
|
|
private ChartHelper() {
|
|
}
|
|
|
|
public static JPanel create3DControl(final XYData data, SurfaceModel surfaceModel, String title) {
|
|
final JPanel result = new JPanel(new BorderLayout());
|
|
result.setBorder(BorderFactory.createLineBorder(Color.red));
|
|
|
|
final JSurfacePanel jsp = new JSurfacePanel(surfaceModel);
|
|
jsp.setTitleText(title);
|
|
jsp.setConfigurationVisible(true);
|
|
jsp.getSurface().setXLabel("RPM");
|
|
jsp.getSurface().setYLabel("MAF voltage");
|
|
result.add(BorderLayout.CENTER, jsp);
|
|
|
|
JButton saveImageButton = UiUtils.createSaveImageButton();
|
|
saveImageButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
String fileName = FileLog.getDate() + "_3d.png";
|
|
|
|
UiUtils.saveImageWithPrompt(fileName, result, jsp);
|
|
}
|
|
});
|
|
|
|
JPanel upperPanel = new JPanel(new FlowLayout());
|
|
upperPanel.add(saveImageButton);
|
|
result.add(upperPanel, BorderLayout.NORTH);
|
|
|
|
JPanel bottomPanel = new JPanel(new FlowLayout());
|
|
bottomPanel.add(new JLabel("RPM: "));
|
|
|
|
final JTextField xField = new JTextFieldWithWidth("1200", 150);
|
|
final JTextField yField = new JTextFieldWithWidth("50", 150);
|
|
bottomPanel.add(xField);
|
|
bottomPanel.add(yField);
|
|
|
|
final JLabel currentValue = new JLabel();
|
|
bottomPanel.add(currentValue);
|
|
|
|
result.add(bottomPanel, BorderLayout.SOUTH);
|
|
|
|
ActionListener updateValue = new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
int rpm = parseIntWithReason(xField.getText(), "CH xField");
|
|
|
|
double y = Double.parseDouble(yField.getText());
|
|
|
|
currentValue.setText("" + data.getValue(rpm, y));
|
|
}
|
|
};
|
|
xField.addActionListener(updateValue);
|
|
yField.addActionListener(updateValue);
|
|
|
|
updateValue.actionPerformed(null);
|
|
|
|
return result;
|
|
}
|
|
|
|
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data) {
|
|
return createDefaultSurfaceModel(data, null);
|
|
}
|
|
|
|
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, final XYData data2) {
|
|
Range xRange = new Range((float) data.getMinXValue(), (float) data.getMaxXValue());
|
|
Range yRange = new Range((float) data.getMinYValue(), (float) data.getMaxYValue());
|
|
|
|
return createDefaultSurfaceModel(data, xRange, yRange, data2);
|
|
}
|
|
|
|
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, Range xRange, Range yRange) {
|
|
return createDefaultSurfaceModel(data, xRange, yRange, null);
|
|
}
|
|
|
|
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, Range xRange, Range yRange, final XYData data2) {
|
|
final DefaultSurfaceModel sm = new DefaultSurfaceModel();
|
|
|
|
sm.setPlotFunction2(false);
|
|
|
|
sm.setCalcDivisions(50);
|
|
sm.setDispDivisions(50);
|
|
sm.setContourLines(10);
|
|
|
|
sm.setXMin(xRange.getMin());
|
|
sm.setXMax(xRange.getMax());
|
|
setYRange(yRange, sm);
|
|
|
|
sm.setBoxed(true);
|
|
sm.setDisplayXY(true);
|
|
sm.setExpectDelay(false);
|
|
sm.setAutoScaleZ(true);
|
|
sm.setDisplayZ(true);
|
|
sm.setMesh(true);
|
|
sm.setPlotType(SurfaceModel.PlotType.SURFACE);
|
|
if (data2 == null)
|
|
sm.setFirstFunctionOnly(true);
|
|
else
|
|
sm.setBothFunction(true);
|
|
|
|
sm.setPlotColor(data2 != null ? SurfaceModel.PlotColor.FOG : SurfaceModel.PlotColor.SPECTRUM);
|
|
sm.setMapper(new Mapper() {
|
|
public float f1(float x, float y) {
|
|
return data.getValue(x, y);
|
|
}
|
|
|
|
public float f2(float x, float y) {
|
|
if (data2 == null)
|
|
return 0;
|
|
return data2.getValue(x, y);
|
|
}
|
|
});
|
|
sm.plot().execute();
|
|
return sm;
|
|
}
|
|
|
|
public static void setYRange(Range yRange, DefaultSurfaceModel sm) {
|
|
sm.setYMin(yRange.getMin());
|
|
sm.setYMax(yRange.getMax());
|
|
}
|
|
}
|
|
*/ |