package marytts.util.display;
import javax.swing.JFrame;
import marytts.signalproc.display.FunctionGraph;
import marytts.util.math.MathUtils;
public class DisplayUtils {
public static void plot(float[] x) {
if (x != null)
plot(x, 0, x.length - 1);
}
public static void plot(double[] x) {
if (x != null)
plot(x, 0, x.length - 1);
}
public static void plot(float[] x, int startInd, int endInd) {
plot(x, startInd, endInd, "");
}
public static void plot(double[] x, int startInd, int endInd) {
plot(x, startInd, endInd, "");
}
public static void plot(float[] x, String strTitle) {
if (x != null)
plot(x, 0, x.length - 1, strTitle, false);
}
public static void plot(double[] x, String strTitle) {
if (x != null)
plot(x, 0, x.length - 1, strTitle, false);
}
public static void plot(float[] x, int startInd, int endInd, String strTitle) {
plot(x, startInd, endInd, strTitle, false);
}
public static void plot(double[] x, int startInd, int endInd, String strTitle) {
plot(x, startInd, endInd, strTitle, false);
}
public static void plot(float[] x, int startInd, int endInd, String strTitle, boolean bAutoClose) {
plot(x, startInd, endInd, strTitle, bAutoClose, 3000);
}
public static void plot(double[] x, int startInd, int endInd, String strTitle, boolean bAutoClose) {
plot(x, startInd, endInd, strTitle, bAutoClose, 3000);
}
public static void plotZoomed(float[] x, String strTitle, double minVal) {
plotZoomed(x, strTitle, minVal, MathUtils.getMax(x));
}
public static void plotZoomed(double[] x, String strTitle, double minVal) {
if (x != null)
plotZoomed(x, strTitle, minVal, MathUtils.getMax(x));
}
public static void plotZoomed(float[] x, String strTitle, double minVal, double maxVal) {
plotZoomed(x, strTitle, minVal, maxVal, false);
}
public static void plotZoomed(double[] x, String strTitle, double minVal, double maxVal) {
plotZoomed(x, strTitle, minVal, maxVal, false);
}
public static void plotZoomed(float[] x, String strTitle, double minVal, double maxVal, boolean bAutoClose) {
plotZoomed(x, strTitle, minVal, maxVal, bAutoClose, 3000);
}
public static void plotZoomed(double[] x, String strTitle, double minVal, double maxVal, boolean bAutoClose) {
plotZoomed(x, strTitle, minVal, maxVal, bAutoClose, 3000);
}
public static void plotZoomed(float[] x, String strTitle, double minVal, double maxVal, boolean bAutoClose,
int milliSecondsToClose) {
if (x != null) {
double[] xd = new double[x.length];
for (int i = 0; i < x.length; i++)
xd[i] = x[i];
plotZoomed(xd, strTitle, minVal, maxVal, bAutoClose, milliSecondsToClose);
}
}
public static void plotZoomed(double[] x, String strTitle, double minVal, double maxVal, boolean bAutoClose,
int milliSecondsToClose) {
if (x != null) {
double[] y = null;
if (minVal > maxVal) {
double tmp = minVal;
minVal = maxVal;
maxVal = tmp;
}
y = new double[x.length];
for (int i = 0; i < x.length; i++) {
y[i] = x[i];
if (y[i] < minVal)
y[i] = minVal;
else if (y[i] > maxVal)
y[i] = maxVal;
}
plot(y, 0, y.length - 1, strTitle, bAutoClose, milliSecondsToClose);
}
}
public static void plot(float[] xIn, int startInd, int endInd, String strTitle, boolean bAutoClose, int milliSecondsToClose) {
if (xIn != null) {
double[] xd = new double[endInd - startInd + 1];
for (int i = startInd; i <= endInd; i++)
xd[i - startInd] = xIn[i];
FunctionGraph graph = new FunctionGraph(400, 200, 0, 1, xd);
JFrame frame = graph.showInJFrame(strTitle, 500, 300, true, false);
if (bAutoClose) {
try {
Thread.sleep(milliSecondsToClose);
} catch (InterruptedException e) {
}
frame.dispose();
}
}
}
// Plots the values in x
// If bAutoClose is specified, the figure is closed after milliSecondsToClose milliseconds
// milliSecondsToClose: has no effect if bAutoClose is false
public static void plot(double[] xIn, int startInd, int endInd, String strTitle, boolean bAutoClose, int milliSecondsToClose) {
if (xIn != null) {
endInd = MathUtils.CheckLimits(endInd, 0, xIn.length - 1);
startInd = MathUtils.CheckLimits(startInd, 0, endInd);
double[] x = new double[endInd - startInd + 1];
System.arraycopy(xIn, startInd, x, 0, x.length);
FunctionGraph graph = new FunctionGraph(400, 200, 0, 1, x);
JFrame frame = graph.showInJFrame(strTitle, 500, 300, true, false);
if (bAutoClose) {
try {
Thread.sleep(milliSecondsToClose);
} catch (InterruptedException e) {
}
frame.dispose();
}
}
}
}