/*******************************************************************************
* Copyright (c) 2010 Oak Ridge National Laboratory.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.eclipse.nebula.visualization.widgets.figures;
import java.beans.PropertyDescriptor;
import org.eclipse.draw2d.Figure;
import org.eclipse.nebula.visualization.widgets.datadefinition.ColorMap;
import org.eclipse.nebula.visualization.widgets.datadefinition.ColorMap.PredefinedColorMap;
import org.eclipse.swt.widgets.Display;
/**
* @author Xihui Chen
*
*/
public class IntensityGraphTest extends AbstractWidgetTest {
public static int count = 0;
@Override
public Figure createTestWidget() {
final IntensityGraphFigure figure = new IntensityGraphFigure();
Thread t = new Thread(new Runnable() {
public void run() {
int c=0;
while (c++<100) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
final double[] simuData = new double[1024 * 768];
int seed = count++;
for (int i = 0; i < 768; i++) {
for (int j = 0; j < 1024; j++) {
int x = j - 128;
int y = i - 128;
int p = (int) Math.sqrt(x * x + y * y);
simuData[i * 1024 + j] = Math.sin(p * 2 * Math.PI
/ 256 + seed * 10);
}
}
Display.getDefault().asyncExec(new Runnable() {
public void run() {
System.out.println(count);
figure.setDataArray(simuData);
}
});
}
}
});
t.start();
figure.setMax(1);
figure.setMin(-1);
figure.setDataHeight(768);
figure.setDataWidth(1024);
figure.setColorMap(new ColorMap(PredefinedColorMap.JET, true, true));
return figure;
}
@Override
public String[] getPropertyNames() {
String[] superProps = super.getPropertyNames();
String[] myProps = new String[] { "colorMap", "cropBottom", "cropLeft",
"cropRight", "cropTop", "dataArray", "dataHeight", "dataWidth",
"max", "min", "runMode", "showRamp", "colorDepth", "inRGBMode",
"singleLineProfiling" };
return concatenateStringArrays(superProps, myProps);
}
@Override
public Object generateTestData(PropertyDescriptor pd, Object seed) {
if (pd.getName().equals("dataArray") && seed != null
&& seed instanceof Integer) {
double[] simuData = new double[65536];
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
int x = j - 128;
int y = i - 128;
int p = (int) Math.sqrt(x * x + y * y);
simuData[i * 256 + j] = Math.sin(p * 2 * Math.PI / 256
+ (Integer) seed);
}
}
return simuData;
} else if (pd.getName().equals("dataWidth")
|| pd.getName().equals("dataHeight"))
return 256;
else if (pd.getName().equals("max"))
return 1;
else if (pd.getName().equals("min"))
return -1;
else if (pd.getName().equals("colorMap") && seed != null
&& seed instanceof Integer)
return new ColorMap(
PredefinedColorMap.values()[(Integer) seed % 6 + 1], true,
true);
return super.generateTestData(pd, seed);
}
@Override
public boolean isAutoTest() {
return true;
}
}