|
From: <le...@us...> - 2007-01-07 13:25:12
|
Revision: 112
http://svn.sourceforge.net/qcell/?rev=112&view=rev
Author: lessm
Date: 2007-01-07 05:25:06 -0800 (Sun, 07 Jan 2007)
Log Message:
-----------
- Renderer class updated
- Some changes in CalculationData class (backward compatible a think)
- simulationWindow class added
Modified Paths:
--------------
trunk/qcell/baseheaders/CalculationData.h
trunk/qcell/baseheaders/Renderer.h
trunk/qcell/basesources/CalculationData.cpp
trunk/qcell/basesources/Renderer.cpp
Added Paths:
-----------
trunk/qcell/baseheaders/simulationwindow.h
trunk/qcell/baseheaders/simulationwindow.ui
trunk/qcell/basesources/simulationwindow.cpp
Modified: trunk/qcell/baseheaders/CalculationData.h
===================================================================
--- trunk/qcell/baseheaders/CalculationData.h 2007-01-07 12:32:30 UTC (rev 111)
+++ trunk/qcell/baseheaders/CalculationData.h 2007-01-07 13:25:06 UTC (rev 112)
@@ -65,7 +65,7 @@
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);
@@ -82,6 +82,10 @@
CalculationData & operator = (CalculationData &cData);
+signals:
+ void dataUpdated();
+ void dataResized();
+
};
#endif
Modified: trunk/qcell/baseheaders/Renderer.h
===================================================================
--- trunk/qcell/baseheaders/Renderer.h 2007-01-07 12:32:30 UTC (rev 111)
+++ trunk/qcell/baseheaders/Renderer.h 2007-01-07 13:25:06 UTC (rev 112)
@@ -10,7 +10,9 @@
#include <QImage>
#include <QPainter>
#include <QObject>
-#include <QtOpenGL>
+#include <QtOpengl>
+#include <QPixmap>
+#include <QChar>
struct SYMBOL
{
@@ -18,9 +20,10 @@
QColor color;
float floatColorDiffuse[4], floatColorSpectacular[4];
int primitiveID;
+ QChar textSybmol;
};
-class Renderer : public CalculationData, public QGLWidget
+class Renderer : /*public CalculationData,*/ public QGLWidget
{
Q_OBJECT
private:
@@ -40,6 +43,8 @@
QImage render2D(int zval=0);
QImage render3D(void);
+ CalculationData storage;
+
protected:
void initializeGL();
void paintGL();
@@ -49,7 +54,7 @@
Renderer(QWidget *parent);
~Renderer();
-
+/*
void setDataType(baseDataTypes::DATA_TYPES type = baseDataTypes::CHAR);
bool resizeData(int x, char *dataPointer=NULL, bool foreignDataPointer=0);
@@ -57,17 +62,28 @@
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(int zplane=-1);
+ void renderToPixmap(QPixmap *pixmap, int zval);
bool setSymbolColor(int index, QColor color);
bool hideSymbol(int index);
bool showSymbol(int index);
bool setSymbolPrimitive(int index, int primitiveId);
void addSymbol(SYMBOL symbol);
+ SYMBOL getSymbol(int index);
void setTranslation(float x, float y, float z);
void setRotation(float x, float y, float z);
+ void rotateX(float rot);
+ void rotateY(float rot);
+ void rotateZ(float rot);
+
+ void translateX(float trans);
+ void translateY(float trans);
+ void translateZ(float trans);
+
+ CalculationData * getStorage(void);
};
#endif
Added: trunk/qcell/baseheaders/simulationwindow.h
===================================================================
--- trunk/qcell/baseheaders/simulationwindow.h (rev 0)
+++ trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 13:25:06 UTC (rev 112)
@@ -0,0 +1,77 @@
+#ifndef SIMULATIONWINDOW_H
+#define SIMULATIONWINDOW_H
+
+#include <QPainter>
+#include <QWidget>
+#include <QMouseEvent>
+#include <QBrush>
+#include <QTableWidget>
+#include <QTableWidgetItem>
+#include <QGraphicsView>
+#include <QPixmap>
+#include <QGraphicsPixmapItem>
+#include <QProgressDialog>
+#include "ui_simulationwindow.h"
+#include "../baseheaders/Renderer.h"
+
+// this is widget make visualization of world data
+
+class simulationWindow : public QWidget
+{
+ Q_OBJECT
+
+private:
+ Ui::simulationWindowClass ui;
+
+protected:
+ Renderer *renderer;
+ int cursor_x, cursor_y;
+ int z_plane;
+ float zoom;
+ QTableWidget *table2D;
+ QTableWidget *table1D;
+ QTableWidget *table1DMem;
+
+ bool table2DUpdateRequest, table1DUpdateRequest, graph2DUpdateRequest;
+
+ QGraphicsView *graphicsView2D;
+ QGraphicsScene *graphicsScene2D;
+ QGraphicsPixmapItem *graphicsScene2DPixmap;
+ QPixmap *pixmap;
+
+ virtual void mouseMoveEvent(QMouseEvent * event);
+ virtual void mousePressEvent(QMouseEvent * event);
+ virtual void wheelEvent(QWheelEvent * event);
+ virtual void resizeEvent(QResizeEvent * event);
+ virtual void paintEvent(QPaintEvent * event);
+
+
+
+protected:
+ void update2DTable(void);
+ void update2DGraph(void);
+ void update1DTable(void);
+ void update1DTableMem(void);
+
+public:
+ simulationWindow(QWidget *parent = 0);
+ ~simulationWindow();
+
+ Renderer *getRenderer();
+ CalculationData *getStorage();
+
+protected slots:
+ void zPlaneChange(int i);
+ void dataUpdateRequest(void);
+ void dataResizeRequest(void);
+ void GridView2DRepaint(void);
+ void GridView1DRepaint(void);
+ void GridView1DMemClear(void);
+signals:
+ void progressUpdate(int val);
+
+
+
+};
+
+#endif // SIMULATIONWINDOW_H
Added: trunk/qcell/baseheaders/simulationwindow.ui
===================================================================
--- trunk/qcell/baseheaders/simulationwindow.ui (rev 0)
+++ trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 13:25:06 UTC (rev 112)
@@ -0,0 +1,176 @@
+<ui version="4.0" >
+ <class>simulationWindowClass</class>
+ <widget class="QWidget" name="simulationWindowClass" >
+ <property name="windowTitle" >
+ <string>simulationWindow</string>
+ </property>
+ <widget class="QTabWidget" name="tabWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>620</width>
+ <height>460</height>
+ </rect>
+ </property>
+ <property name="tabPosition" >
+ <enum>QTabWidget::North</enum>
+ </property>
+ <property name="tabShape" >
+ <enum>QTabWidget::Rounded</enum>
+ </property>
+ <property name="currentIndex" >
+ <number>3</number>
+ </property>
+ <widget class="QWidget" name="view3D" >
+ <attribute name="title" >
+ <string>3D View</string>
+ </attribute>
+ </widget>
+ <widget class="QWidget" name="view2D" >
+ <attribute name="title" >
+ <string>2D Text View</string>
+ </attribute>
+ <widget class="QSpinBox" name="Grid2DZplane" >
+ <property name="geometry" >
+ <rect>
+ <x>500</x>
+ <y>10</y>
+ <width>91</width>
+ <height>22</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label" >
+ <property name="geometry" >
+ <rect>
+ <x>440</x>
+ <y>10</y>
+ <width>35</width>
+ <height>14</height>
+ </rect>
+ </property>
+ <property name="lineWidth" >
+ <number>3</number>
+ </property>
+ <property name="text" >
+ <string>Z Plane</string>
+ </property>
+ <property name="textFormat" >
+ <enum>Qt::AutoText</enum>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="Grid2DValues" >
+ <property name="geometry" >
+ <rect>
+ <x>140</x>
+ <y>10</y>
+ <width>83</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Values</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="Grid2DSybmols" >
+ <property name="geometry" >
+ <rect>
+ <x>240</x>
+ <y>10</y>
+ <width>83</width>
+ <height>18</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Symbols</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" name="Grig2DColors" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>91</width>
+ <height>18</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Enable Colors</string>
+ </property>
+ </widget>
+ </widget>
+ <widget class="QWidget" name="view2DGraph" >
+ <attribute name="title" >
+ <string>2D Graphics View</string>
+ </attribute>
+ </widget>
+ <widget class="QWidget" name="view1D" >
+ <attribute name="title" >
+ <string>1D View</string>
+ </attribute>
+ <widget class="QRadioButton" name="Grid1DSybmols" >
+ <property name="geometry" >
+ <rect>
+ <x>240</x>
+ <y>10</y>
+ <width>83</width>
+ <height>18</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Symbols</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" name="Grid1DValues" >
+ <property name="geometry" >
+ <rect>
+ <x>140</x>
+ <y>10</y>
+ <width>83</width>
+ <height>18</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Values</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QCheckBox" name="Grig1DColors" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>91</width>
+ <height>18</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Enable Colors</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="memClr" >
+ <property name="geometry" >
+ <rect>
+ <x>350</x>
+ <y>10</y>
+ <width>75</width>
+ <height>23</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Clear Memory</string>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <resources/>
+ <connections/>
+</ui>
Modified: trunk/qcell/basesources/CalculationData.cpp
===================================================================
--- trunk/qcell/basesources/CalculationData.cpp 2007-01-07 12:32:30 UTC (rev 111)
+++ trunk/qcell/basesources/CalculationData.cpp 2007-01-07 13:25:06 UTC (rev 112)
@@ -11,6 +11,10 @@
bool CalculationData::resizeData(bool foreignDataPointer, char *dataPointer)
{
clearData();
+
+ if(getSizeInByte()==0)
+ return 0;
+
if(!foreignDataPointer)
{
data = new char[getSizeInByte()];
@@ -21,11 +25,13 @@
fillData(dataPointer);
haveForeignDataPointer = 0;
+ emit dataResized();
}
else
{
data = dataPointer;
haveForeignDataPointer = 1;
+ emit dataUpdated();
}
return 1;
}
@@ -33,14 +39,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 +56,7 @@
CalculationData::~CalculationData()
{
- dataType = baseDataTypes::NONE;
+ dataType = baseDataTypes::DATA_TYPES::NONE;
sizeX = sizeY = sizeZ = sizeT = 0;
dimension = -1;
dataSize = 0;
@@ -61,7 +67,7 @@
{
switch(dataType)
{
- case baseDataTypes::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
break;
case baseDataTypes::CHAR:
@@ -86,16 +92,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 +116,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 +141,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 +183,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 +204,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 +225,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 +246,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 +267,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 +292,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 +317,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 +342,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 +383,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 +397,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 +411,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,11 +425,11 @@
{
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;
}
@@ -431,33 +437,37 @@
void CalculationData::setDataType(DATA_TYPES type)
{
- dataType = type;
- dataSize = 0;
- switch(dataType)
+ if(type!=dataType)
{
- case baseDataTypes::BOOL:
+ dataType = type;
dataSize = 0;
- break;
+ switch(dataType)
+ {
+ case baseDataTypes::BOOL:
+ dataSize = 0;
+ break;
- case baseDataTypes::CHAR:
- dataSize = sizeof(char);
- break;
+ case baseDataTypes::CHAR:
+ dataSize = sizeof(char);
+ break;
- case baseDataTypes::DOUBLE:
- dataSize = sizeof(double);
- break;
+ case baseDataTypes::DOUBLE:
+ dataSize = sizeof(double);
+ break;
- case baseDataTypes::FLOAT:
- dataSize = sizeof(float);
- break;
+ case baseDataTypes::FLOAT:
+ dataSize = sizeof(float);
+ break;
- case baseDataTypes::INT:
- dataSize = sizeof(int);
- break;
+ case baseDataTypes::INT:
+ dataSize = sizeof(int);
+ break;
- case baseDataTypes::SHORT:
- dataSize = sizeof(short);
- break;
+ case baseDataTypes::SHORT:
+ dataSize = sizeof(short);
+ break;
+ }
+ resizeData();
}
}
@@ -472,42 +482,58 @@
bool CalculationData::resizeData(int x, char *dataPointer, bool foreignDataPointer)
{
- sizeX = x;
- sizeY = 0;
- sizeZ = 0;
- sizeT = 0;
- dimension = 1;
- return resizeData(foreignDataPointer, dataPointer);
+ if(sizeX!=x || dimension!=1)
+ {
+ sizeX = x;
+ sizeY = 0;
+ sizeZ = 0;
+ sizeT = 0;
+ dimension = 1;
+ return resizeData(foreignDataPointer, dataPointer);
+ }
+ return 1;
}
bool CalculationData::resizeData(int x, int y, char *dataPointer, bool foreignDataPointer)
{
- sizeX = x;
- sizeY = y;
- sizeZ = 0;
- sizeT = 0;
- dimension = 2;
- return resizeData(foreignDataPointer, dataPointer);;
+ if(sizeX!=x || sizeY!=y || dimension!=2)
+ {
+ sizeX = x;
+ sizeY = y;
+ sizeZ = 0;
+ sizeT = 0;
+ dimension = 2;
+ return resizeData(foreignDataPointer, dataPointer);
+ }
+ return 1;
}
bool CalculationData::resizeData(int x, int y, int z, char *dataPointer, bool foreignDataPointer)
{
- sizeX = x;
- sizeY = y;
- sizeZ = z;
- sizeT = 0;
- dimension = 3;
- return resizeData(foreignDataPointer, dataPointer);;
+ if(sizeX!=x || sizeY!=y || sizeZ!=z || dimension!=3)
+ {
+ sizeX = x;
+ sizeY = y;
+ sizeZ = z;
+ sizeT = 0;
+ dimension = 3;
+ return resizeData(foreignDataPointer, dataPointer);
+ }
+ return 1;
}
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 resizeData(foreignDataPointer, dataPointer);
+ if(sizeX!=x || sizeY!=y || sizeZ!=z || sizeT!=z || dimension!=3)
+ {
+ sizeX = x;
+ sizeY = y;
+ sizeZ = z;
+ sizeT = t;
+ dimension = 4;
+ return resizeData(foreignDataPointer, dataPointer);
+ }
+ return 1;
}
bool CalculationData::resizeData(QVector<int> newSize, char *dataPointer, bool foreignDataPointer)
@@ -531,7 +557,7 @@
return sizeX;
}
-int CalculationData::getSizeY(void)
+int CalculationData::getSizeY(void)
{
return sizeY;
}
@@ -550,10 +576,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 +592,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(char);
}
- case baseDataTypes::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
switch(dimension)
{
case 1:
@@ -579,7 +605,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(double);
}
- case baseDataTypes::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
switch(dimension)
{
case 1:
@@ -592,7 +618,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(float);
}
- case baseDataTypes::INT:
+ case baseDataTypes::DATA_TYPES::INT:
switch(dimension)
{
case 1:
@@ -605,7 +631,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(int);
}
- case baseDataTypes::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
switch(dimension)
{
case 1:
@@ -633,20 +659,25 @@
void CalculationData::fillData(const char *dataPointer)
{
- if(data!=NULL)
- memcpy(data, dataPointer, getSizeInByte());
+ if(!haveForeignDataPointer)
+ {
+ if(data!=NULL)
+ memcpy(data, dataPointer, getSizeInByte());
+ emit dataUpdated();
+ }
}
void CalculationData::setForeignDataPointer(char *dataPointer)
{
clearData();
data = dataPointer;
+ haveForeignDataPointer = 1;
+ emit dataUpdated();
}
QString CalculationData::createXmlHeader(void)
{
- /// @todo The nasties thing to do - change that!!!
- return QString::number((int)this);
+ return QString();
}
bool CalculationData::setFromXmlString(QString *xmlString)
@@ -682,5 +713,4 @@
fillData(cData.getDataPointer());
return *this;
-}
-
+}
\ No newline at end of file
Modified: trunk/qcell/basesources/Renderer.cpp
===================================================================
--- trunk/qcell/basesources/Renderer.cpp 2007-01-07 12:32:30 UTC (rev 111)
+++ trunk/qcell/basesources/Renderer.cpp 2007-01-07 13:25:06 UTC (rev 112)
@@ -53,9 +53,9 @@
painter.begin(OGLpBuffer);
else
painter.begin(imageBuffer);
- for(int x=0;x<sizeX;++x)
+ for(int x=0;x<storage.getSizeX();++x)
{
- painter.setPen(symbolsMap[getValueAt_i(x)].color);
+ painter.setPen(symbolsMap[storage.getValueAt_i(x)].color);
painter.drawPoint(x, 0);
}
painter.end();
@@ -71,11 +71,11 @@
painter.begin(OGLpBuffer);
else
painter.begin(imageBuffer);
- for(int y=0;y<sizeY;++y)
+ for(int y=0;y<storage.getSizeY();++y)
{
- for(int x=0;x<sizeX;++x)
+ for(int x=0;x<storage.getSizeX();++x)
{
- painter.setPen(symbolsMap[getValueAt_i(x, y, zval)].color);
+ painter.setPen(symbolsMap[storage.getValueAt_i(x, y, zval)].color);
painter.drawPoint(x, y);
}
}
@@ -144,10 +144,8 @@
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)
@@ -155,16 +153,17 @@
discretValues = 1;
OGLpBuffer = NULL;
imageBuffer = NULL;
-// painter = NULL;
SYMBOL baseSymbols;
baseSymbols.hide = 1;
baseSymbols.primitiveID = 0;
+ baseSymbols.textSybmol = '.';
addSymbol(baseSymbols);
setSymbolColor(0, QColor(0,0,0));
baseSymbols.hide = 0;
baseSymbols.primitiveID = 0;
+ baseSymbols.textSybmol = '*';
addSymbol(baseSymbols);
setSymbolColor(1, QColor(255,255,255));
@@ -190,7 +189,7 @@
delete imageBuffer;
imageBuffer = NULL;
}
-
+/*
void Renderer::setDataType(baseDataTypes::DATA_TYPES type)
{
switch(type)
@@ -216,18 +215,11 @@
if(CalculationData::resizeData(x, dataPointer, foreignDataPointer))
{
- //if(painter)
- // delete painter;
-
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = new QGLPixelBuffer(sizeX, 1, format(), this);
if(!OGLpBuffer->hasOpenGLPbuffers())
{
- // painter = new QPainter(OGLpBuffer);
- //}
- //else
- //{
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = NULL;
@@ -235,8 +227,6 @@
if(imageBuffer)
delete imageBuffer;
imageBuffer = new QImage(sizeX, 1, QImage::Format_RGB32);
- //painter = new QPainter(imageBuffer);
-
}
return 1;
}
@@ -247,19 +237,12 @@
{
if(CalculationData::resizeData(x, y, dataPointer, foreignDataPointer))
{
- //if(painter)
- // delete painter;
-
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = new QGLPixelBuffer(sizeX, sizeY, format(), this);
if(!OGLpBuffer->hasOpenGLPbuffers())
{
- // painter = new QPainter(OGLpBuffer);
- //}
- //else
- //{
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = NULL;
@@ -267,7 +250,6 @@
if(imageBuffer)
delete imageBuffer;
imageBuffer = new QImage(sizeX, sizeY, QImage::Format_RGB32);
- //painter = new QPainter(imageBuffer);
}
return 1;
}
@@ -279,19 +261,12 @@
if(CalculationData::resizeData(x, y, z, dataPointer, foreignDataPointer))
{
- //if(painter)
- // delete painter;
-
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = new QGLPixelBuffer(sizeX, sizeY, format(), this);
if(!OGLpBuffer->hasOpenGLPbuffers())
{
- //painter = new QPainter(OGLpBuffer);
- //}
- //else
- //{
if(OGLpBuffer)
delete OGLpBuffer;
OGLpBuffer = NULL;
@@ -299,7 +274,6 @@
if(imageBuffer)
delete imageBuffer;
imageBuffer = new QImage(sizeX, sizeY, QImage::Format_RGB32);
- //painter = new QPainter(imageBuffer);
}
return 1;
}
@@ -331,19 +305,19 @@
}
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)
+ float mx = -(float)storage.getSizeX(), my = -(float)storage.getSizeY(), mz = -(float)storage.getSizeZ();
+ for(int z=0;z<storage.getSizeZ();++z)
{
- for(int y=sizeY;y>0;--y)
+ for(int y=storage.getSizeY();y>0;--y)
{
- for(int x=0;x<sizeX;++x)
+ for(int x=0;x<storage.getSizeX();++x)
{
- index = getValueAt_i(counter++);
+ index = storage.getValueAt_i(counter++);
if(!(symbolsMap[index].hide))
{
glPushMatrix();
@@ -362,7 +336,7 @@
{
if(zplane==-1)
{
- switch(dimension)
+ switch(storage.getDimension())
{
case 1:
return render1D();
@@ -374,12 +348,28 @@
}
else
{
- if(dimension>1)
+ if(storage.getDimension()>1)
return render2D(zplane);
}
return QImage();
}
+void Renderer::renderToPixmap(QPixmap *pixmap, int zval)
+{
+ if(storage.getDimension()>1)
+ {
+ painter.begin(pixmap);
+ for(int y=0;y<storage.getSizeY();++y)
+ {
+ for(int x=0;x<storage.getSizeX();++x)
+ {
+ painter.setPen(symbolsMap[storage.getValueAt_i(x, y, zval)].color);
+ painter.drawPoint(x, y);
+ }
+ }
+ painter.end();
+ }
+}
bool Renderer::setSymbolColor(int index, QColor color)
{
@@ -434,6 +424,11 @@
symbolsMap<<symbol;
}
+SYMBOL Renderer::getSymbol(int index)
+{
+ return symbolsMap[index];
+}
+
void Renderer::setTranslation(float x, float y, float z)
{
translation[0] = x;
@@ -448,3 +443,37 @@
rotation[2] = z;
}
+void Renderer::rotateX(float rot)
+{
+ rotation[0] += rot;
+}
+
+void Renderer::rotateY(float rot)
+{
+ rotation[1] += rot;
+}
+
+void Renderer::rotateZ(float rot)
+{
+ rotation[2] += rot;
+}
+
+void Renderer::translateX(float trans)
+{
+ translation[0] += trans;
+}
+
+void Renderer::translateY(float trans)
+{
+ translation[1] += trans;
+}
+
+void Renderer::translateZ(float trans)
+{
+ translation[2] += trans;
+}
+
+CalculationData * Renderer::getStorage(void)
+{
+ return &storage;
+}
\ No newline at end of file
Added: trunk/qcell/basesources/simulationwindow.cpp
===================================================================
--- trunk/qcell/basesources/simulationwindow.cpp (rev 0)
+++ trunk/qcell/basesources/simulationwindow.cpp 2007-01-07 13:25:06 UTC (rev 112)
@@ -0,0 +1,434 @@
+#include "../baseheaders/simulationwindow.h"
+
+void simulationWindow::mouseMoveEvent(QMouseEvent * event)
+{
+ if(ui.view3D->isVisible())
+ {
+ if(event->buttons()==(Qt::LeftButton | Qt::RightButton))
+ {
+ renderer->rotateX((float)(event->y() - cursor_y)/2.0f);
+ renderer->rotateY((float)(event->x() - cursor_x)/2.0f);
+
+ }
+ else
+ if(event->buttons()==Qt::RightButton)
+ {
+ renderer->translateX((float)(event->x() - cursor_x)/10.0f);
+ renderer->translateY((float)(cursor_y - event->y())/10.0f);
+ }
+
+ cursor_x = event->x();
+ cursor_y = event->y();
+ renderer->updateGL();
+ }
+}
+
+void simulationWindow::wheelEvent(QWheelEvent * event)
+{
+ if(ui.view3D->isVisible())
+ {
+ renderer->translateZ((float)event->delta()/100.0f);
+ renderer->updateGL();
+ }
+/*
+ if(ui.view2DGraph->isVisible())
+ {
+ //zoom =+ (float)event->delta();
+ //graphicsScene2DPixmap->setZValue(zoom);
+ }
+*/
+ if(ui.view2DGraph->isVisible())
+ {
+ if(renderer->getStorage()->getDimension()>2)
+ {
+ if(event->delta()>0)
+ ++z_plane;
+ else
+ --z_plane;
+ if(z_plane<0)
+ z_plane = 0;
+
+ if(z_plane>=renderer->getStorage()->getSizeZ())
+ z_plane = renderer->getStorage()->getSizeZ()-1;
+
+ ui.Grid2DZplane->setValue(z_plane);
+ update2DGraph();
+ table2DUpdateRequest = 1;
+ }
+ else
+ z_plane = 0;
+
+ }
+}
+
+void simulationWindow::mousePressEvent(QMouseEvent * event)
+{
+ if(ui.view3D->isVisible())
+ {
+ cursor_x = event->x();
+ cursor_y = event->y();
+ }
+}
+
+void simulationWindow::resizeEvent(QResizeEvent * event)
+{
+
+ ui.tabWidget->resize(width() - 20, height() - 60);
+ ui.view1D->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20);
+ ui.view2D->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20);
+ ui.view3D->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20);
+ ui.view2DGraph->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20);
+
+
+ renderer->resize(ui.view3D->width() - 7, ui.view3D->height() - 7);
+ table2D->move(0, 35);
+ table2D->resize(ui.view2D->width() - 7 , ui.view2D->height() - 42);
+ graphicsView2D->resize(ui.view2DGraph->width() - 7, ui.view2DGraph->height() - 7);
+
+ table1D->move(0, 35);
+ table1D->resize(ui.view1D->width() - 7, 75);
+
+ table1DMem->move(0, 150);
+ table1DMem->resize(ui.view1D->width() - 7, ui.view1D->height() - 157);
+}
+
+void simulationWindow::paintEvent(QPaintEvent * event)
+{
+ if(ui.view2D->isVisible() && table2DUpdateRequest)
+ {
+ update2DTable();
+ table2DUpdateRequest = 0;
+ }
+ if(ui.view2DGraph->isVisible() && graph2DUpdateRequest)
+ {
+ update2DGraph();
+ graph2DUpdateRequest = 0;
+ }
+
+ if(ui.view1D->isVisible() && table1DUpdateRequest)
+ update1DTable();
+}
+
+void simulationWindow::update2DTable(void)
+{
+ QTableWidgetItem *item;
+ QProgressDialog progresDialog;
+
+ progresDialog.setLabelText("Generating view pleas wait...");
+ progresDialog.setMaximum(renderer->getStorage()->getSizeY());
+
+ progresDialog.show();
+
+ if(table2D->columnCount()!= renderer->getStorage()->getSizeX() || table2D->rowCount()!= renderer->getStorage()->getSizeY())
+ {
+ ui.Grid2DZplane->setRange(0, renderer->getStorage()->getSizeZ()-1);
+ table2D->clear();
+ table2D->setColumnCount(renderer->getStorage()->getSizeX());
+ table2D->setRowCount(renderer->getStorage()->getSizeY());
+ for(int i=0;i<renderer->getStorage()->getSizeY();++i)
+ table2D->setRowHeight(i, 30);
+ for(int i=0;i<renderer->getStorage()->getSizeX();++i)
+ table2D->setColumnWidth(i, 30);
+
+
+ for(int y=0;y<renderer->getStorage()->getSizeY();++y)
+ {
+ for(int x=0;x<renderer->getStorage()->getSizeX();++x)
+ {
+ if(ui.Grid2DValues->isChecked())
+ item = new QTableWidgetItem(tr("%1").arg(renderer->getStorage()->getValueAt_i(x, y, z_plane)));
+ else
+ item = new QTableWidgetItem(tr("%1").arg(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x, y, z_plane)).textSybmol));
+ item->setTextAlignment(Qt::AlignCenter);
+ item->setTextColor(Qt::black);
+ if(ui.Grig2DColors->isChecked())
+ {
+ item->setBackgroundColor(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x, y, z_plane)).color);
+ if(item->textColor() == item->backgroundColor())
+ {
+ if(item->backgroundColor()==Qt::black)
+ item->setTextColor(Qt::white);
+ else
+ item->setTextColor(Qt::black);
+ }
+ }
+ else
+ item->setBackgroundColor(Qt::white);
+ table2D->setItem(y, x, item);
+ }
+ progresDialog.setValue(y);
+ }
+ }
+ else
+ {
+ for(int y=0;y<renderer->getStorage()->getSizeY();++y)
+ {
+ for(int x=0;x<renderer->getStorage()->getSizeX();++x)
+ {
+ item = table2D->item(y, x);
+ if(ui.Grid2DValues->isChecked())
+ item->setText(tr("%1").arg(renderer->getStorage()->getValueAt_i(x, y, z_plane)));
+ else
+ item->setText(tr("%1").arg(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x, y, z_plane)).textSybmol));
+
+ item->setTextColor(Qt::black);
+ if(ui.Grig2DColors->isChecked())
+ {
+ item->setBackgroundColor(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x, y, z_plane)).color);
+ if(item->textColor() == item->backgroundColor())
+ {
+ if(item->backgroundColor()==Qt::black)
+ item->setTextColor(Qt::white);
+ else
+ item->setTextColor(Qt::black);
+ }
+ }
+ else
+ item->setBackgroundColor(Qt::white);
+ }
+ progresDialog.setValue(y);
+ }
+ }
+}
+
+void simulationWindow::update2DGraph(void)
+{
+ if(renderer->getStorage()->getDimension()>1)
+ {
+ if(pixmap->width() != renderer->getStorage()->getSizeX() || pixmap->height() != renderer->getStorage()->getSizeY())
+ {
+ delete pixmap;
+ pixmap = new QPixmap(renderer->getStorage()->getSizeX(), renderer->getStorage()->getSizeY());
+ }
+ renderer->renderToPixmap(pixmap, z_plane);
+ graphicsScene2DPixmap->setPixmap(*pixmap);
+ }
+}
+
+void simulationWindow::update1DTable(void)
+{
+ QTableWidgetItem *item;//, *memItem;
+ if(table1D->columnCount()!= renderer->getStorage()->getSizeX())
+ {
+
+ table1D->clear();
+ table1D->setColumnCount(renderer->getStorage()->getSizeX());
+ table1D->setRowHeight(0, 30);
+
+ table1DMem->clear();
+ //table1DMem->setRowCount(1);
+ table1DMem->setColumnCount(renderer->getStorage()->getSizeX());
+ table1DMem->setRowHeight(0, 30);
+
+ for(int x=0;x<renderer->getStorage()->getSizeX();++x)
+ {
+ table1D->setColumnWidth(x, 30);
+ table1DMem->setColumnWidth(x, 30);
+ if(ui.Grid1DSybmols->isChecked())
+ {
+ item = new QTableWidgetItem(tr("%1").arg(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x)).textSybmol));
+ }
+ else
+ {
+ item = new QTableWidgetItem(tr("%1").arg(renderer->getStorage()->getValueAt_i(x)));
+ }
+ item->setTextAlignment(Qt::AlignCenter);
+
+ item->setTextColor(Qt::black);
+ if(ui.Grig1DColors->isChecked())
+ {
+ item->setBackgroundColor(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x)).color);
+ if(item->textColor() == item->backgroundColor())
+ {
+ if(item->backgroundColor()==Qt::black)
+ item->setTextColor(Qt::white);
+ else
+ item->setTextColor(Qt::black);
+ }
+ }
+ else
+ item->setBackgroundColor(Qt::white);
+
+ table1D->setItem(0, x, item);
+
+ /*
+ memItem = new QTableWidgetItem(*item);
+ table1DMem->setItem(0, x, memItem);
+ */
+ }
+ }
+ else
+ {
+ for(int x=0;x<renderer->getStorage()->getSizeX();++x)
+ {
+ item = table1D->item(0, x);
+ if(ui.Grid1DSybmols->isChecked())
+ item->setText(tr("%1").arg(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x)).textSybmol));
+ else
+ item->setText(tr("%1").arg(renderer->getStorage()->getValueAt_i(x)));
+
+ item->setTextColor(Qt::black);
+ if(ui.Grig1DColors->isChecked())
+ {
+ item->setBackgroundColor(renderer->getSymbol(renderer->getStorage()->getValueAt_i(x)).color);
+ if(item->textColor() == item->backgroundColor())
+ {
+ if(item->backgroundColor()==Qt::black)
+ item->setTextColor(Qt::white);
+ else
+ item->setTextColor(Qt::black);
+ }
+ }
+ else
+ item->setBackgroundColor(Qt::white);
+ }
+ }
+}
+
+void simulationWindow::update1DTableMem(void)
+{
+ QTableWidgetItem *item, *memItem;
+ table1DMem->setRowCount(table1DMem->rowCount()+1);
+ for(int x=0;x<renderer->getStorage()->getSizeX();++x)
+ {
+ item = table1D->item(0, x);
+ memItem = new QTableWidgetItem(*item);
+ table1DMem->setItem(table1DMem->rowCount() - 1, x, memItem);
+ }
+ if(table1DMem->rowCount()>30)
+ table1DMem->removeRow(0);
+}
+
+simulationWindow::simulationWindow(QWidget *parent)
+ : QWidget(parent)
+{
+ z_plane = 0;
+ zoom = 1.0;
+ ui.setupUi(this);
+
+ renderer = new Renderer(ui.view3D);
+ renderer->resize(ui.view3D->width(), ui.view3D->height());
+
+ graphicsView2D = new QGraphicsView(ui.view2DGraph);
+ graphicsScene2D = new QGraphicsScene;
+
+ pixmap = new QPixmap(0, 0);
+
+ graphicsScene2DPixmap = graphicsScene2D->addPixmap(*pixmap);
+ graphicsView2D->setScene(graphicsScene2D);
+
+ table1D = new QTableWidget(ui.view1D);
+ table1D->setRowCount(1);
+
+ table1DMem = new QTableWidget(ui.view1D);
+
+ table2D = new QTableWidget(ui.view2D);
+ connect(ui.Grid2DZplane, SIGNAL(valueChanged(int)), SLOT(zPlaneChange(int)));
+ connect(renderer->getStorage(), SIGNAL(dataUpdated()), SLOT(dataUpdateRequest()));
+
+ connect(ui.Grid2DSybmols, SIGNAL(clicked(bool)), SLOT(GridView2DRepaint()));
+ connect(ui.Grid2DValues, SIGNAL(clicked(bool)), SLOT(GridView2DRepaint()));
+ connect(ui.Grig2DColors, SIGNAL(clicked(bool)), SLOT(GridView2DRepaint()));
+
+ connect(ui.Grid1DSybmols, SIGNAL(clicked(bool)), SLOT(GridView1DRepaint()));
+ connect(ui.Grid1DValues, SIGNAL(clicked(bool)), SLOT(GridView1DRepaint()));
+ connect(ui.Grig1DColors, SIGNAL(clicked(bool)), SLOT(GridView1DRepaint()));
+
+ connect(renderer->getStorage(), SIGNAL(dataResized()), SLOT(dataResizeRequest()));
+
+ connect(ui.memClr, SIGNAL(clicked(bool)), SLOT(GridView1DMemClear()));
+
+ table2DUpdateRequest = 0;
+ table1DUpdateRequest = 0;
+}
+
+simulationWindow::~simulationWindow()
+{
+ if(renderer)
+ delete renderer;
+ renderer = NULL;
+
+ if(pixmap)
+ delete pixmap;
+}
+
+Renderer * simulationWindow::getRenderer()
+{
+ return renderer;
+}
+
+CalculationData *simulationWindow::getStorage()
+{
+ return renderer->getStorage();
+}
+
+void simulationWindow::zPlaneChange(int i)
+{
+ z_plane = i;
+ if(ui.view2D->isVisible())
+ update2DTable();
+ graph2DUpdateRequest = 1;
+}
+
+void simulationWindow::dataUpdateRequest(void)
+{
+ switch(renderer->getStorage()->getDimension())
+ {
+ case 1:
+ update1DTable();
+ update1DTableMem();
+ break;
+ case 3:
+ renderer->repaint();
+
+ case 2:
+ update2DTable();
+ update2DGraph();
+ break;
+ }
+}
+
+void simulationWindow::dataResizeRequest(void)
+{
+ switch(renderer->getStorage()->getDimension())
+ {
+ case 1:
+ ui.tabWidget->setTabEnabled(0, 0);
+ ui.tabWidget->setTabEnabled(1, 0);
+ ui.tabWidget->setTabEnabled(2, 0);
+ ui.tabWidget->setTabEnabled(3, 1);
+ break;
+
+ case 2:
+ ui.tabWidget->setTabEnabled(0, 0);
+ ui.tabWidget->setTabEnabled(1, 1);
+ ui.tabWidget->setTabEnabled(2, 1);
+ ui.tabWidget->setTabEnabled(3, 0);
+ break;
+
+ case 3:
+ ui.tabWidget->setTabEnabled(0, 1);
+ ui.tabWidget->setTabEnabled(1, 1);
+ ui.tabWidget->setTabEnabled(2, 1);
+ ui.tabWidget->setTabEnabled(3, 0);
+ break;
+ }
+}
+
+void simulationWindow::GridView2DRepaint()
+{
+ update2DTable();
+}
+
+void simulationWindow::GridView1DRepaint()
+{
+ update1DTable();
+}
+
+void simulationWindow::GridView1DMemClear(void)
+{
+ while(table1DMem->rowCount()>0)
+ table1DMem->removeRow(0);
+
+ update1DTableMem();
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|