|
From: <le...@us...> - 2006-12-31 10:41:28
|
Revision: 87
http://svn.sourceforge.net/qcell/?rev=87&view=rev
Author: lessm
Date: 2006-12-31 02:41:23 -0800 (Sun, 31 Dec 2006)
Log Message:
-----------
- method resize in CalculationData change to resizeData
- Renderer class can render 1D,2D,3D data
Modified Paths:
--------------
trunk/qcell/baseheaders/CalculationData.h
trunk/qcell/baseheaders/Calculator.h
trunk/qcell/baseheaders/Renderer.h
trunk/qcell/basesources/CalculationData.cpp
trunk/qcell/basesources/Calculator.cpp
trunk/qcell/basesources/LocalFunction.cpp
trunk/qcell/basesources/Neighbourhood.cpp
trunk/qcell/basesources/Renderer.cpp
Modified: trunk/qcell/baseheaders/CalculationData.h
===================================================================
--- trunk/qcell/baseheaders/CalculationData.h 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/baseheaders/CalculationData.h 2006-12-31 10:41:23 UTC (rev 87)
@@ -22,7 +22,7 @@
protected:
void clearData(void);
- bool resize(bool foreignDataPointer=0, char *dataPointer=NULL);
+ bool resizeData(bool foreignDataPointer=0, char *dataPointer=NULL);
void * getAddressAt(int x, int y, int z, int t);
public:
@@ -58,14 +58,14 @@
baseDataTypes::DATA_TYPES getDataType(void);
int getDataSize(void);
- bool resize(int x, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, int z, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, int z, int t, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(QVector<int> newSize, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, int z, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, int z, int t, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(QVector<int> newSize, char *dataPointer=NULL, bool foreignDataPointer=0);
int getSizeX(void);
- int getSizeY(void);
+ int getSizeY(void);
int getSizeZ(void);
int getSizeT(void);
int getSizeInByte(void);
Modified: trunk/qcell/baseheaders/Calculator.h
===================================================================
--- trunk/qcell/baseheaders/Calculator.h 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/baseheaders/Calculator.h 2006-12-31 10:41:23 UTC (rev 87)
@@ -33,7 +33,7 @@
bool setCalculationSpace(QVector<int> start, QVector<int> end, bool dataCopy=0, char *foreignDataPointer=NULL);
int getOutputDataSizeInByte(void);
- const char *getOutputDataPointer(void);
+ /*const*/ char *getOutputDataPointer(void);
void calculate(void);
};
Modified: trunk/qcell/baseheaders/Renderer.h
===================================================================
--- trunk/qcell/baseheaders/Renderer.h 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/baseheaders/Renderer.h 2006-12-31 10:41:23 UTC (rev 87)
@@ -10,40 +10,62 @@
#include <QImage>
#include <QPainter>
#include <QObject>
+#include <QtOpengl>
+struct SYMBOL
+{
+ bool hide;
+ QColor color;
+ float floatColorDiffuse[4], floatColorSpectacular[4];
+ int primitiveID;
+};
+
class Renderer : public CalculationData, public QGLWidget
{
Q_OBJECT
private:
protected:
- QVector<QColor> ColorMap;
+ QVector<SYMBOL> symbolsMap;
QGLPixelBuffer *OGLpBuffer;
bool discretValues;
+ QVector<GLuint> primitives;
+ QVector<double> rotation, translation;
+
+ GLuint generateBox(void);
+
QImage render1D(void);
- QImage render2D(void);
+ QImage render2D(int zval=0);
QImage render3D(void);
+protected:
+ void initializeGL();
+ void paintGL();
+ void resizeGL(int width, int height);
+
public:
- typedef enum RENDER_MODE
- {
- TEXT,
- GRAPHICS
- };
Renderer(QWidget *parent);
~Renderer();
void setDataType(baseDataTypes::DATA_TYPES type = baseDataTypes::CHAR);
- bool resize(int x, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, int z, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(int x, int y, int z, int t, char *dataPointer=NULL, bool foreignDataPointer=0);
- bool resize(QVector<int> newSize, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, int z, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(int x, int y, int z, int t, char *dataPointer=NULL, bool foreignDataPointer=0);
+ bool resizeData(QVector<int> newSize, char *dataPointer=NULL, bool foreignDataPointer=0);
+ void render(void);
QImage renderToQImage(void);
- void setColorInMap(int value, QColor color);
+ bool setSymbolColor(int index, QColor color);
+ bool hideSymbol(int index);
+ bool showSymbol(int index);
+ bool setSymbolPrimitive(int index, int primitiveId);
+ void addSymbol(SYMBOL symbol);
+
+ void setTranslation(float x, float y, float z);
+ void setRotation(float x, float y, float z);
};
#endif
Modified: trunk/qcell/basesources/CalculationData.cpp
===================================================================
--- trunk/qcell/basesources/CalculationData.cpp 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/basesources/CalculationData.cpp 2006-12-31 10:41:23 UTC (rev 87)
@@ -8,7 +8,7 @@
data = NULL;
}
-bool CalculationData::resize(bool foreignDataPointer, char *dataPointer)
+bool CalculationData::resizeData(bool foreignDataPointer, char *dataPointer)
{
clearData();
if(!foreignDataPointer)
@@ -33,14 +33,14 @@
void * CalculationData::getAddressAt(int x, int y, int z, int t)
{
int dSize;
- if(dataType==baseDataTypes::NONE)
+ if(dataType==baseDataTypes::DATA_TYPES::NONE)
return NULL;
return data + dataSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ);
}
CalculationData::CalculationData()
{
- dataType = baseDataTypes::NONE;
+ dataType = baseDataTypes::DATA_TYPES::NONE;
sizeX = sizeY = sizeZ = sizeT = 0;
dimension = -1;
dataSize = 0;
@@ -50,7 +50,7 @@
CalculationData::~CalculationData()
{
- dataType = baseDataTypes::NONE;
+ dataType = baseDataTypes::DATA_TYPES::NONE;
sizeX = sizeY = sizeZ = sizeT = 0;
dimension = -1;
dataSize = 0;
@@ -61,7 +61,7 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
case baseDataTypes::CHAR:
@@ -86,16 +86,16 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, 0, 0));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, 0, 0)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, 0, 0)));
case baseDataTypes::FLOAT:
return (int)(*((float *)(getAddressAt(x, y, 0, 0))));
@@ -110,16 +110,16 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, z, 0));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, z, 0)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, z, 0)));
case baseDataTypes::FLOAT:
@@ -135,16 +135,16 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, z, t));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, z, t)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, z, t)));
case baseDataTypes::FLOAT:
@@ -177,18 +177,18 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, 0, 0, 0)) = (char)val;
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, 0, 0, 0))) = val;
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, 0, 0, 0))) = (short)val;
break;
}
@@ -198,18 +198,18 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, 0, 0)) = (char)val;
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, 0, 0))) = val;
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, 0, 0))) = (short)val;
break;
}
@@ -219,18 +219,18 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, z, 0)) = (char)val;
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, z, 0))) = val;
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, z, 0))) = (short)val;
break;
}
@@ -240,18 +240,18 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, z, t)) = (char)val;
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, z, t))) = val;
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, z, t))) = (short)val;
break;
}
@@ -261,22 +261,22 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return (double)*((char *)getAddressAt(x, 0, 0, 0));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return (double)*((int *)(getAddressAt(x, 0, 0, 0)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return (double)*((short *)(getAddressAt(x, 0, 0, 0)));
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, 0, 0, 0)));
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, 0, 0, 0)));
}
return 0.0;
@@ -286,22 +286,22 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return (double)*((char *)getAddressAt(x, y, 0, 0));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return (double)*((int *)(getAddressAt(x, y, 0, 0)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return (double)*((short *)(getAddressAt(x, y, 0, 0)));
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, 0, 0)));
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, 0, 0)));
}
return 0.0;
@@ -311,22 +311,22 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return (double)*((char *)getAddressAt(x, y, z, 0));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return (double)*((int *)(getAddressAt(x, y, z, 0)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return (double)*((short *)(getAddressAt(x, y, z, 0)));
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, z, 0)));
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, z, 0)));
}
return 0.0;
@@ -336,22 +336,22 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return (double)*((char *)getAddressAt(x, y, z, t));
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return (double)*((int *)(getAddressAt(x, y, z, t)));
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return (double)*((short *)(getAddressAt(x, y, z, t)));
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, z, t)));
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, z, t)));
}
return 0.0;
@@ -377,11 +377,11 @@
{
switch(dataType)
{
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, 0, 0, 0))) = val;
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, 0, 0, 0))) = (float)val;
break;
}
@@ -391,11 +391,11 @@
{
switch(dataType)
{
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, 0, 0))) = val;
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, 0, 0))) = (float)val;
break;
}
@@ -405,11 +405,11 @@
{
switch(dataType)
{
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, z, 0))) = val;
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, z, 0))) = (float)val;
break;
}
@@ -419,17 +419,17 @@
{
switch(dataType)
{
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, z, t))) = val;
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, z, t))) = (float)val;
break;
}
}
-void CalculationData::setDataType(baseDataTypes::DATA_TYPES type)
+void CalculationData::setDataType(DATA_TYPES type)
{
dataType = type;
dataSize = 0;
@@ -470,58 +470,58 @@
return dataSize;
}
-bool CalculationData::resize(int x, char *dataPointer, bool foreignDataPointer)
+bool CalculationData::resizeData(int x, char *dataPointer, bool foreignDataPointer)
{
sizeX = x;
sizeY = 0;
sizeZ = 0;
sizeT = 0;
dimension = 1;
- return resize(foreignDataPointer, dataPointer);
+ return resizeData(foreignDataPointer, dataPointer);
}
-bool CalculationData::resize(int x, int y, char *dataPointer, bool foreignDataPointer)
+bool CalculationData::resizeData(int x, int y, char *dataPointer, bool foreignDataPointer)
{
sizeX = x;
sizeY = y;
sizeZ = 0;
sizeT = 0;
dimension = 2;
- return resize(foreignDataPointer, dataPointer);;
+ return resizeData(foreignDataPointer, dataPointer);;
}
-bool CalculationData::resize(int x, int y, int z, char *dataPointer, bool foreignDataPointer)
+bool CalculationData::resizeData(int x, int y, int z, char *dataPointer, bool foreignDataPointer)
{
sizeX = x;
sizeY = y;
sizeZ = z;
sizeT = 0;
dimension = 3;
- return resize(foreignDataPointer, dataPointer);;
+ return resizeData(foreignDataPointer, dataPointer);;
}
-bool CalculationData::resize(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer)
+bool CalculationData::resizeData(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer)
{
sizeX = x;
sizeY = y;
sizeZ = z;
sizeT = t;
dimension = 4;
- return resize(foreignDataPointer, dataPointer);;
+ return resizeData(foreignDataPointer, dataPointer);
}
-bool CalculationData::resize(QVector<int> newSize, char *dataPointer, bool foreignDataPointer)
+bool CalculationData::resizeData(QVector<int> newSize, char *dataPointer, bool foreignDataPointer)
{
switch(newSize.size())
{
case 1:
- return resize(newSize[0], dataPointer, foreignDataPointer);
+ return resizeData(newSize[0], dataPointer, foreignDataPointer);
case 2:
- return resize(newSize[1], newSize[2], dataPointer, foreignDataPointer);
+ return resizeData(newSize[1], newSize[2], dataPointer, foreignDataPointer);
case 3:
- return resize(newSize[1], newSize[2], newSize[3], dataPointer, foreignDataPointer);
+ return resizeData(newSize[1], newSize[2], newSize[3], dataPointer, foreignDataPointer);
case 4:
- return resize(newSize[1], newSize[2], newSize[3], newSize[4], dataPointer, foreignDataPointer);
+ return resizeData(newSize[1], newSize[2], newSize[3], newSize[4], dataPointer, foreignDataPointer);
}
return 0;
}
@@ -550,10 +550,10 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
return (sizeX * sizeY * sizeZ * sizeT)/8 + 1;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
switch(dimension)
{
case 1:
@@ -566,7 +566,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(char);
}
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
switch(dimension)
{
case 1:
@@ -579,7 +579,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(double);
}
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
switch(dimension)
{
case 1:
@@ -592,7 +592,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(float);
}
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
switch(dimension)
{
case 1:
@@ -605,7 +605,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(int);
}
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
switch(dimension)
{
case 1:
@@ -666,16 +666,16 @@
switch(cData.getDimension())
{
case 1:
- resize(cData.getSizeX());
+ resizeData(cData.getSizeX());
break;
case 2:
- resize(cData.getSizeX(), cData.getSizeY());
+ resizeData(cData.getSizeX(), cData.getSizeY());
break;
case 3:
- resize(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ());
+ resizeData(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ());
break;
case 4:
- resize(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ(), cData.getSizeT());
+ resizeData(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ(), cData.getSizeT());
break;
}
Modified: trunk/qcell/basesources/Calculator.cpp
===================================================================
--- trunk/qcell/basesources/Calculator.cpp 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/basesources/Calculator.cpp 2006-12-31 10:41:23 UTC (rev 87)
@@ -177,7 +177,7 @@
return 0;
}
-const char *Calculator::getOutputDataPointer(void)
+/*const*/ char *Calculator::getOutputDataPointer(void)
{
return outData;
}
Modified: trunk/qcell/basesources/LocalFunction.cpp
===================================================================
--- trunk/qcell/basesources/LocalFunction.cpp 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/basesources/LocalFunction.cpp 2006-12-31 10:41:23 UTC (rev 87)
@@ -5,20 +5,20 @@
switch(functionMode)
{
- case LocalFunction::SUM:
+ case LocalFunction::FUNCTION_TYPE::SUM:
numElements = 1;
for(int i=0;i<sumArguments.size();++i)
numElements *= sumArguments[i].size() * (maxArgVal - 1) + 1;
break;
- case LocalFunction::SUM_AND_SWITCH:
+ case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH:
numElements = 1;
for(int i=0;i<sumArguments.size();++i)
numElements *= sumArguments[i].size() * (maxArgVal - 1) + 1;
numElements *= freeArguments.size() * maxArgVal;
break;
- case LocalFunction::SWITCH:
+ case LocalFunction::FUNCTION_TYPE::SWITCH:
numElements = numArg * maxArgVal;
break;
}
@@ -32,7 +32,7 @@
int i, t, out;
QVector<int> temp;
- if(functionMode==LocalFunction::SCRIPT)
+ if(functionMode==LocalFunction::FUNCTION_TYPE::SCRIPT)
return -1;
temp.resize(maxArgVal);
@@ -130,12 +130,12 @@
LocalFunction::LocalFunction()
{
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
}
LocalFunction::~LocalFunction()
{
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
}
void LocalFunction::init(int numberOfArguments, int alphabetSize)
@@ -145,7 +145,7 @@
valueTable.clear();
sumArguments.clear();
freeArguments.clear();
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
}
void LocalFunction::addSumArguments(QVector<int> args)
@@ -162,12 +162,12 @@
}
if(freeArguments.size()==0)
- functionMode = LocalFunction::SUM;
+ functionMode = LocalFunction::FUNCTION_TYPE::SUM;
else
if(freeArguments.size()==numArg)
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
else
- functionMode = LocalFunction::SUM_AND_SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH;
}
}
@@ -184,12 +184,12 @@
freeArguments<<i;
if(freeArguments.size()==0)
- functionMode = LocalFunction::SUM;
+ functionMode = LocalFunction::FUNCTION_TYPE::SUM;
else
if(freeArguments.size()==numArg)
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
else
- functionMode = LocalFunction::SUM_AND_SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH;
}
}
@@ -198,13 +198,13 @@
sumArguments.clear();
freeArguments.clear();
valueTable.clear();
- functionMode = LocalFunction::SWITCH;
+ functionMode = LocalFunction::FUNCTION_TYPE::SWITCH;
}
void LocalFunction::setScript(QString scriptData)
{
script = scriptData;
- functionMode = LocalFunction::SCRIPT;
+ functionMode = LocalFunction::FUNCTION_TYPE::SCRIPT;
}
void LocalFunction::setFunctonType(LocalFunction::FUNCTION_TYPE type)
@@ -221,13 +221,13 @@
{
switch(functionMode)
{
- case LocalFunction::SUM:
+ case LocalFunction::FUNCTION_TYPE::SUM:
return 1;
- case LocalFunction::SUM_AND_SWITCH:
+ case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH:
return freeArguments.size() + 1;
- case LocalFunction::SWITCH:
+ case LocalFunction::FUNCTION_TYPE::SWITCH:
return freeArguments.size();
}
@@ -256,11 +256,11 @@
resizeValueTable();
switch(functionMode)
{
- case LocalFunction::SUM:
+ case LocalFunction::FUNCTION_TYPE::SUM:
valueTable[sum] = value;
break;
- case LocalFunction::SUM_AND_SWITCH:
+ case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH:
offset = sum * freeArguments.size() * maxArgVal;
for(int i=offset;i<freeArguments.size() * maxArgVal + offset;++i)
valueTable[i] = value;
@@ -333,7 +333,7 @@
int i, index = 0, temp;
if(valueTable.empty())
resizeValueTable();
- if(functionMode==LocalFunction::SCRIPT)
+ if(functionMode==LocalFunction::FUNCTION_TYPE::SCRIPT)
return -1;
QVector<int> sums, freeArgs;
@@ -342,7 +342,7 @@
switch(functionMode)
{
- case LocalFunction::SCRIPT:
+ case LocalFunction::FUNCTION_TYPE::SCRIPT:
break;
default:
index = calculateSumsIndex(sums) + calculateSwitchIndex(freeArgs);
@@ -357,12 +357,12 @@
double out = 0.0;
switch(functionMode)
{
- case LocalFunction::SUM:
+ case LocalFunction::FUNCTION_TYPE::SUM:
for (i=0;i<args.size();++i)
out += args[i];
break;
- case LocalFunction::SCRIPT:
+ case LocalFunction::FUNCTION_TYPE::SCRIPT:
break;
}
Modified: trunk/qcell/basesources/Neighbourhood.cpp
===================================================================
--- trunk/qcell/basesources/Neighbourhood.cpp 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/basesources/Neighbourhood.cpp 2006-12-31 10:41:23 UTC (rev 87)
@@ -282,22 +282,22 @@
dType = type;
switch(dType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
dataSize = sizeof(char);
break;
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
dataSize = sizeof(double);
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
dataSize = sizeof(float);
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
dataSize = sizeof(int);
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
dataSize = sizeof(short);
break;
}
@@ -311,38 +311,38 @@
int i;
switch(dType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
- case baseDataTypes::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
for(i=0;i<neighbourVector.size();++i)
{
neighbourVector[i].value.iValue = *((char *)(address + neighbourVector[i].offset));
}
break;
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
for(i=0;i<neighbourVector.size();++i)
{
neighbourVector[i].value.dValue = *((double *)(address + neighbourVector[i].offset));
}
break;
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
for(i=0;i<neighbourVector.size();++i)
{
neighbourVector[i].value.dValue = *((float *)(address + neighbourVector[i].offset));
}
break;
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
for(i=0;i<neighbourVector.size();++i)
{
neighbourVector[i].value.iValue = *((int *)(address + neighbourVector[i].offset));
}
break;
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
for(i=0;i<neighbourVector.size();++i)
{
neighbourVector[i].value.iValue = *((short *)(address + neighbourVector[i].offset));
Modified: trunk/qcell/basesources/Renderer.cpp
===================================================================
--- trunk/qcell/basesources/Renderer.cpp 2006-12-31 10:15:35 UTC (rev 86)
+++ trunk/qcell/basesources/Renderer.cpp 2006-12-31 10:41:23 UTC (rev 87)
@@ -1,24 +1,71 @@
#include "../baseheaders/Renderer.h"
+GLuint Renderer::generateBox()
+{
+ GLuint list = glGenLists(1);
+ glNewList(list, GL_COMPILE);
+ glBegin(GL_QUADS);
+
+ glNormal3f( 0.0f, 0.0f, 1.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+
+ glNormal3f( 0.0f, 0.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+
+ glNormal3f( 0.0f, -1.0f, 0.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+
+ glNormal3f( 0.0f, 1.0f, 0.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+
+ glNormal3f( 1.0f, 0.0f, 0.0f);
+ glVertex3f( 1.0f, -1.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, -1.0f);
+ glVertex3f( 1.0f, 1.0f, 1.0f);
+ glVertex3f( 1.0f, -1.0f, 1.0f);
+
+ glNormal3f(-1.0f, 0.0f, 0.0f);
+ glVertex3f(-1.0f, 1.0f, 1.0f);
+ glVertex3f(-1.0f, 1.0f, -1.0f);
+ glVertex3f(-1.0f, -1.0f, -1.0f);
+ glVertex3f(-1.0f, -1.0f, 1.0f);
+
+ glEnd();
+ glEndList();
+ return list;
+}
+
QImage Renderer::render1D(void)
{
QPainter painter(OGLpBuffer);
for(int x=0;x<sizeX;++x)
{
- painter.setPen(ColorMap[getValueAt_i(x)]);
+ painter.setPen(symbolsMap[getValueAt_i(x)].color);
painter.drawPoint(x, 0);
}
return OGLpBuffer->toImage();
}
-QImage Renderer::render2D(void)
+QImage Renderer::render2D(int zval)
{
QPainter painter(OGLpBuffer);
for(int y=0;y<sizeY;++y)
{
for(int x=0;x<sizeX;++x)
{
- painter.setPen(ColorMap[getValueAt_i(x, y)]);
+ painter.setPen(symbolsMap[getValueAt_i(x, y, zval)].color);
painter.drawPoint(x, y);
}
}
@@ -27,18 +74,95 @@
QImage Renderer::render3D(void)
{
- return QImage();
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+
+ glTranslated(translation[0], translation[1], translation[2]);
+ glRotatef(rotation[0], 1.0f, 0.0f, 0.0f);
+ glRotatef(rotation[1], 0.0f, 1.0f, 0.0f);
+ glRotatef(rotation[2], 0.0f, 0.0f, 1.0f);
+ render();
+ return grabFrameBuffer();
}
+void Renderer::initializeGL()
+ {
+ qglClearColor(QColor(0,0,0));
+ glShadeModel(GL_SMOOTH);
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+
+ //glEnable(GL_COLOR_MATERIAL);
+
+ //glEnable(GL_NORMALIZE);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+
+ float ambient[] = {0.02f, 0.02f, 0.02f, 1.0f};
+ float diffuse[] = {0.9f, 0.9f, 0.9f, 1.0f};
+ float spectacular[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ float position[] = { -1000.0f, 1000.0f, 1000.0f, 1.0f};
+
+ glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spectacular);
+ glLightfv(GL_LIGHT0, GL_POSITION, position);
+
+ primitives<<generateBox();
+ }
+
+ void Renderer::paintGL()
+ {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glLoadIdentity();
+
+ glTranslated(translation[0], translation[1], translation[2]);
+ glRotatef(rotation[0], 1.0f, 0.0f, 0.0f);
+ glRotatef(rotation[1], 0.0f, 1.0f, 0.0f);
+ glRotatef(rotation[2], 0.0f, 0.0f, 1.0f);
+
+ render();
+ }
+
+ void Renderer::resizeGL(int width, int height)
+ {
+ glViewport(0, 0, width, height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ //glOrtho(-10.0, 10.0, 10.0, -10.0, 0.1, 15.0);
+ gluPerspective(75.0f, (GLdouble)width / (GLdouble)height, 0.1f, 1000.0f);
+ glMatrixMode(GL_MODELVIEW);
+ glTranslated(0.0, 0.0, -10.0);
+ }
+
Renderer::Renderer(QWidget *parent) : QGLWidget(parent)
{
discretValues = 1;
OGLpBuffer = NULL;
- ColorMap.resize(1024);
+
+
+ SYMBOL baseSymbols;
+ baseSymbols.hide = 1;
+ baseSymbols.primitiveID = 0;
+ addSymbol(baseSymbols);
+ setSymbolColor(0, QColor(0,0,0));
+
+ baseSymbols.hide = 0;
+ baseSymbols.primitiveID = 0;
+ addSymbol(baseSymbols);
+ setSymbolColor(1, QColor(255,255,255));
+
+ translation.resize(3);
+ rotation.resize(3);
}
Renderer::~Renderer()
{
+ makeCurrent();
+ for(int i=0;i<primitives.size();++i)
+ glDeleteLists(primitives[i], 1);
+
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = NULL;
@@ -64,10 +188,10 @@
CalculationData::setDataType(type);
}
-bool Renderer::resize(int x, char *dataPointer, bool foreignDataPointer)
+bool Renderer::resizeData(int x, char *dataPointer, bool foreignDataPointer)
{
- if(CalculationData::resize(x, dataPointer, foreignDataPointer))
+ if(CalculationData::resizeData(x, dataPointer, foreignDataPointer))
{
if(OGLpBuffer)
delete OGLpBuffer;
@@ -77,9 +201,9 @@
return 0;
}
-bool Renderer::resize(int x, int y, char *dataPointer, bool foreignDataPointer)
+bool Renderer::resizeData(int x, int y, char *dataPointer, bool foreignDataPointer)
{
- if(CalculationData::resize(x, y, dataPointer, foreignDataPointer))
+ if(CalculationData::resizeData(x, y, dataPointer, foreignDataPointer))
{
if(OGLpBuffer)
delete OGLpBuffer;
@@ -89,19 +213,19 @@
return 0;
}
-bool Renderer::resize(int x, int y, int z, char *dataPointer, bool foreignDataPointer)
+bool Renderer::resizeData(int x, int y, int z, char *dataPointer, bool foreignDataPointer)
{
- return CalculationData::resize(x, y, z, dataPointer, foreignDataPointer);
+ return CalculationData::resizeData(x, y, z, dataPointer, foreignDataPointer);
}
-bool Renderer::resize(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer)
+bool Renderer::resizeData(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer)
{
- return CalculationData::resize(x, y, z, t, dataPointer, foreignDataPointer);
+ return CalculationData::resizeData(x, y, z, t, dataPointer, foreignDataPointer);
}
-bool Renderer::resize(QVector<int> newSize, char *dataPointer, bool foreignDataPointer)
+bool Renderer::resizeData(QVector<int> newSize, char *dataPointer, bool foreignDataPointer)
{
- if(CalculationData::resize(newSize, dataPointer, foreignDataPointer))
+ if(CalculationData::resizeData(newSize, dataPointer, foreignDataPointer))
{
if(OGLpBuffer)
delete OGLpBuffer;
@@ -120,6 +244,33 @@
return 0;
}
+void Renderer::render(void)
+{
+ int counter = 0, index;
+ float mx = -(float)sizeX, my = -(float)sizeY, mz = -(float)sizeZ;
+ for(int z=0;z<sizeZ;++z)
+ {
+ for(int y=sizeY;y>0;--y)
+ {
+ for(int x=0;x<sizeX;++x)
+ {
+
+ index = getValueAt_i(counter++);
+ if(!(symbolsMap[index].hide))
+ {
+ glPushMatrix();
+ glTranslatef(mx + (float)x * 2.0f , my + (float)y * 2.0f, mz + (float)z * 2.0f);
+ //glColor3ub(symbolsMap[index].color.red(), symbolsMap[index].color.green(), symbolsMap[index].color.blue());
+ glMaterialfv(GL_FRONT, GL_DIFFUSE, symbolsMap[index].floatColorDiffuse);
+ glMaterialfv(GL_FRONT, GL_SPECULAR, symbolsMap[index].floatColorSpectacular);
+ glCallList(primitives[symbolsMap[index].primitiveID]);
+ glPopMatrix();
+ }
+ }
+ }
+ }
+}
+
QImage Renderer::renderToQImage(void)
{
switch(dimension)
@@ -128,11 +279,77 @@
return render1D();
case 2:
return render2D();
+ case 3:
+ return render3D();
}
return QImage();
}
-void Renderer::setColorInMap(int value, QColor color)
+
+bool Renderer::setSymbolColor(int index, QColor color)
{
- ColorMap[value] = color;
-}
\ No newline at end of file
+ if(index<symbolsMap.size())
+ {
+ symbolsMap[index].color = color;
+ symbolsMap[index].floatColorSpectacular[0] = symbolsMap[index].floatColorDiffuse[0] = (float)color.red() / 255.0f;
+ symbolsMap[index].floatColorSpectacular[1] = symbolsMap[index].floatColorDiffuse[1] = (float)color.green() / 255.0f;
+ symbolsMap[index].floatColorSpectacular[2] = symbolsMap[index].floatColorDiffuse[2] = (float)color.blue() / 255.0f;
+ symbolsMap[index].floatColorSpectacular[3] = symbolsMap[index].floatColorDiffuse[3] = 1.0f;
+
+ symbolsMap[index].floatColorSpectacular[0] += symbolsMap[index].floatColorDiffuse[0] * 0.1f;
+ symbolsMap[index].floatColorSpectacular[1] += symbolsMap[index].floatColorDiffuse[1] * 0.1f;
+ symbolsMap[index].floatColorSpectacular[2] += symbolsMap[index].floatColorDiffuse[2] * 0.1f;
+ return 1;
+ }
+ return 0;
+}
+
+bool Renderer::hideSymbol(int index)
+{
+ if(index<symbolsMap.size())
+ {
+ symbolsMap[index].hide = 1;
+ return 1;
+ }
+ return 0;
+}
+
+bool Renderer::showSymbol(int index)
+{
+ if(index<symbolsMap.size())
+ {
+ symbolsMap[index].hide = 0;
+ return 1;
+ }
+ return 0;
+}
+
+bool Renderer::setSymbolPrimitive(int index, int primitiveId)
+{
+ if(index<symbolsMap.size() && primitiveId<primitives.size())
+ {
+ symbolsMap[index].primitiveID = primitiveId;
+ return 1;
+ }
+ return 0;
+}
+
+void Renderer::addSymbol(SYMBOL symbol)
+{
+ symbolsMap<<symbol;
+}
+
+void Renderer::setTranslation(float x, float y, float z)
+{
+ translation[0] = x;
+ translation[1] = y;
+ translation[2] = z;
+}
+
+void Renderer::setRotation(float x, float y, float z)
+{
+ rotation[0] = x;
+ rotation[1] = y;
+ rotation[2] = z;
+}
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|