From: <dhu...@us...> - 2006-12-15 09:57:55
|
Revision: 67 http://svn.sourceforge.net/qcell/?rev=67&view=rev Author: dhubleizh Date: 2006-12-15 01:57:50 -0800 (Fri, 15 Dec 2006) Log Message: ----------- - added storage maps - the way of storing Worlds and their changes throughout the experiment needs to be rethinked Modified Paths: -------------- trunk/qcell/baseheaders/StorageInterface.h trunk/qcell/storage/Storage.cpp trunk/qcell/storage/Storage.h Modified: trunk/qcell/baseheaders/StorageInterface.h =================================================================== --- trunk/qcell/baseheaders/StorageInterface.h 2006-12-15 09:23:43 UTC (rev 66) +++ trunk/qcell/baseheaders/StorageInterface.h 2006-12-15 09:57:50 UTC (rev 67) @@ -58,6 +58,12 @@ * @return Neighbourhood */ virtual Neighbourhood loadNeighbourhood(QString request) = 0; + /** + * @brief Saves given in XML Neighbourhood to the storage + * + * @param node XML representing Neighoburhood + */ + virtual void saveNeighbourhood(QDomNode node) = 0; /** Modified: trunk/qcell/storage/Storage.cpp =================================================================== --- trunk/qcell/storage/Storage.cpp 2006-12-15 09:23:43 UTC (rev 66) +++ trunk/qcell/storage/Storage.cpp 2006-12-15 09:57:50 UTC (rev 67) @@ -32,7 +32,20 @@ { } +void Storage::saveNeighbourhood(QDomNode node) +{ + if(node.nodeName != "Neighbourhood") + { + qDebug(tr("The XML sent to save isn't of Neighbourhood, but of %1 !") + .attr(node.nodeName()) + ); + return; + } + + +} + LocalFunction Storage::loadLocalFunction(QString request) { Modified: trunk/qcell/storage/Storage.h =================================================================== --- trunk/qcell/storage/Storage.h 2006-12-15 09:23:43 UTC (rev 66) +++ trunk/qcell/storage/Storage.h 2006-12-15 09:57:50 UTC (rev 67) @@ -11,17 +11,36 @@ #include "StorageInterface.h" #include <QByteArray> +#include <QDomNode> class Storage : public QObject, public StorageInterface { Q_OBJECT Q_INTERFACES(StorageInterface) - +protected: + /// Holds Neighbourhoods in XML indexed by filename + QMap<QString, QDomNode> Neighbourhoods; + /// Holds LocalFunctions in XML indexed by filename + QMap<QString, QDomNode> LocalFunctions; + /// + /** + * @brief Hodls Worlds indexed by random number + * + * As Worlds are the only things, that really get changed during + * an experiment, we need to store each world seperately, thus the + * indexing by a random number, to ensure, that even two worlds loaded + * from the same file are distinguishable, as experiments change worlds. + */ + /// @todo Find a way of keeping world changes + QMap<qint, QDomNode> Worlds; + +public: QByteArray loadData(QString request); QByteArray loadWholeData(); void saveData(QString request, QByteArray data); void saveWholeWhole(QByteArray data); Neighbourhood loadNeighbourhood(QString request); + void saveNeighbourhood(QDomNode node); LocalFunction loadLocalFunction(QString request); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2006-12-19 15:08:39
|
Revision: 68 http://svn.sourceforge.net/qcell/?rev=68&view=rev Author: lessm Date: 2006-12-19 06:58:48 -0800 (Tue, 19 Dec 2006) Log Message: ----------- - Calculator and Renderer class add Modified Paths: -------------- trunk/qcell/baseheaders/BaseDataTypes.h trunk/qcell/baseheaders/CalculationData.h trunk/qcell/baseheaders/LocalFunction.h trunk/qcell/baseheaders/Neighbourhood.h trunk/qcell/basesources/CalculationData.cpp trunk/qcell/basesources/Client.cpp trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/basesources/Neighbourhood.cpp trunk/qcell/bin/ServerConfig.xml trunk/qcell/client/main.cpp Added Paths: ----------- trunk/qcell/baseheaders/Calculator.h trunk/qcell/baseheaders/Renderer.h trunk/qcell/basesources/Calculator.cpp trunk/qcell/basesources/Renderer.cpp Modified: trunk/qcell/baseheaders/BaseDataTypes.h =================================================================== --- trunk/qcell/baseheaders/BaseDataTypes.h 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/baseheaders/BaseDataTypes.h 2006-12-19 14:58:48 UTC (rev 68) @@ -1,18 +1,23 @@ #ifndef _BASE_DATA_TYPES #define _BASE_DATA_TYPES -class baseDataTypes +#include <QObject> + +class baseDataTypes : QObject { + Q_OBJECT +private: +protected: public: enum DATA_TYPES { - BOOL, - CHAR, - SHORT, - INT, - FLOAT, - DOUBLE, - NONE + BOOL = 0, + CHAR = 1, + SHORT = 2, + INT = 3, + FLOAT = 4, + DOUBLE = 5, + NONE = 6 }; }; Modified: trunk/qcell/baseheaders/CalculationData.h =================================================================== --- trunk/qcell/baseheaders/CalculationData.h 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/baseheaders/CalculationData.h 2006-12-19 14:58:48 UTC (rev 68) @@ -1,33 +1,29 @@ #ifndef _CALCULATION_DATA #define _CALCULATION_DATA +#include <QObject> #include <string.h> #include <QString> +#include <QVector> #include <QDomDocument> #include <QDomElement> #include "BaseDataTypes.h" class CalculationData : public baseDataTypes { + Q_OBJECT private: +protected: DATA_TYPES dataType; int sizeX, sizeY, sizeZ, sizeT; - int backBufferSizeX, backBufferSizeY, backBufferSizeZ, backBufferSizeT; - int dimension, size; - char *data, *dataBorderFree; + int dimension, dataSize; + char *data; + bool haveForeignDataPointer; - int minX, minY, minZ, minT; - int maxX, maxY, maxZ, maxT; - - bool borderExist; - protected: -//public: - bool resize(const char *dataPointer=NULL); + void clearData(void); + bool resize(bool foreignDataPointer=0, char *dataPointer=NULL); void * getAddressAt(int x, int y, int z, int t); - void * getAddressAtBackBuffer(int x, int y, int z, int t); - void calculateBackBufferSize(void); - void copyData(void); public: @@ -38,67 +34,54 @@ int getValueAt_i(int x, int y); int getValueAt_i(int x, int y, int z); int getValueAt_i(int x, int y, int z, int t); + int getValueAt_i(QVector<int> pos); - void setValueAt_i(int val, int x); - void setValueAt_i(int val, int x, int y); - void setValueAt_i(int val, int x, int y, int z); - void setValueAt_i(int val, int x, int y, int z, int t); + void setValueAt(int val, int x); + void setValueAt(int val, int x, int y); + void setValueAt(int val, int x, int y, int z); + void setValueAt(int val, int x, int y, int z, int t); + void setValueAt(int val, QVector<int> pos); double getValueAt_d(int x); double getValueAt_d(int x, int y); double getValueAt_d(int x, int y, int z); double getValueAt_d(int x, int y, int z, int t); + double getValueAt_d(QVector<int> pos); - void setValueAt_d(double val, int x); - void setValueAt_d(double val, int x, int y); - void setValueAt_d(double val, int x, int y, int z); - void setValueAt_d(double val, int x, int y, int z, int t); + void setValueAt(double val, int x); + void setValueAt(double val, int x, int y); + void setValueAt(double val, int x, int y, int z); + void setValueAt(double val, int x, int y, int z, int t); + void setValueAt(double val, QVector<int> pos); - void setDataType(baseDataTypes::DATA_TYPES type = baseDataTypes::DATA_TYPES::CHAR); + void setDataType(baseDataTypes::DATA_TYPES type = baseDataTypes::CHAR); baseDataTypes::DATA_TYPES getDataType(void); int getDataSize(void); - bool resize(int x, const char *dataPointer=NULL); - bool resize(int x, int y, const char *dataPointer=NULL); - bool resize(int x, int y, int z, const char *dataPointer=NULL); - bool resize(int x, int y, int z, int t, const char *dataPointer=NULL); + 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); int getSizeX(void); int getSizeY(void); int getSizeZ(void); int getSizeT(void); int getSizeInByte(void); + int getDimension(void); const char *getDataPointer(void); - const char *getBackBufferDataPointer(void); - void fill(const char *dataPointer); + void fillData(const char *dataPointer); + void setForeignDataPointer(char *dataPointer); - - void setCalculationSpace(bool noDataCopy=0); - void setCalculationSpace(int startX, int endX, bool noDataCopy=0); - void setCalculationSpace(int startX, int startY, int endX, int endY, bool noDataCopy=0); - void setCalculationSpace(int startX, int startY, int startZ, int endX, int endY, int endZ, bool noDataCopy=0); - void setCalculationSpace(int startX, int startY, int startZ, int startT, int endX, int endY, int endZ, int endT, bool noDataCopy=0); - - bool haveBorder(void); - QString createXmlHeader(void); - void setFromXmlString(QString *xmlString); - void parseXmlElement(QDomElement *root); + bool setFromXmlString(QString *xmlString); + bool parseXmlElement(QDomElement *root); - void setValueAt_i_Back(int val, int x); - void setValueAt_i_Back(int val, int x, int y); - void setValueAt_i_Back(int val, int x, int y, int z); - void setValueAt_i_Back(int val, int x, int y, int z, int t); + CalculationData & operator = (CalculationData &cData); - void setValueAt_d_Back(double val, int x); - void setValueAt_d_Back(double val, int x, int y); - void setValueAt_d_Back(double val, int x, int y, int z); - void setValueAt_d_Back(double val, int x, int y, int z, int t); - void fillData_i(int val=0); - void fillData_d(double val=0.0); - }; #endif Added: trunk/qcell/baseheaders/Calculator.h =================================================================== --- trunk/qcell/baseheaders/Calculator.h (rev 0) +++ trunk/qcell/baseheaders/Calculator.h 2006-12-19 14:58:48 UTC (rev 68) @@ -0,0 +1,41 @@ +#ifndef _CALCULATOR_H +#define _CALCULATOR_H + +#include "CalculationData.h" +#include "Neighbourhood.h" +#include "LocalFunction.h" +#include <QByteArray> +#include <QVector> +#include <QObject> + +class Calculator : public CalculationData +{ + Q_OBJECT +private: +protected: + char *outData; + bool haveForeignOutputDataPointer; + QVector<int> outDataSize, calculationSpaceStart, calculationSpaceEnd; + Neighbourhood *neighbourhood; + LocalFunction *localfunction; + +protected: + void clearOutputData(void); + void copyData(void); + bool resizeOutputDataBuffer(bool dataCopy=0, char *dataPointer=NULL); + +public: + Calculator(); + ~Calculator(); + + void setNeighbourhood(Neighbourhood *n); + void setLocalFunction(LocalFunction *f); + + bool setCalculationSpace(QVector<int> start, QVector<int> end, bool dataCopy=0, char *foreignDataPointer=NULL); + int getOutputDataSizeInByte(void); + const char *getOutputDataPointer(void); + + void calculate(void); +}; + +#endif Modified: trunk/qcell/baseheaders/LocalFunction.h =================================================================== --- trunk/qcell/baseheaders/LocalFunction.h 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/baseheaders/LocalFunction.h 2006-12-19 14:58:48 UTC (rev 68) @@ -7,9 +7,10 @@ #include <QDomElement> #include <QDomText> #include <QStringList> - #include <math.h> +//#include <Python.h> + class LocalFunction { @@ -19,16 +20,13 @@ { SWITCH, SUM, - MIXED_SUM_SWITCH, - PRODUCT, - MIXED_PRODUCT_SWITCH, + SUM_AND_SWITCH, SCRIPT }; private: QVector<int> valueTable; - QVector<int> sumArguments; - QVector<int> productArguments; + QVector< QVector<int> > sumArguments; QVector<int> freeArguments; FUNCTION_TYPE functionMode; int numArg, maxArgVal, numElements; @@ -38,15 +36,18 @@ //public: void resizeValueTable(void); int mostPopularValue(void); + QVector<int> calculateSums(QVector<int> &args); + QVector<int> calculateSwitchArguments(QVector<int> &args); + int calculateSumsIndex(QVector<int> args); + int calculateSwitchIndex(QVector<int> args); + QString valueTableToString(void); QString valueTableToString(int fillValue); - QString sumArgumentsToString(void); - QString productArgumentsToString(void); void valueTableFromString(QString *string); void sumArgumentsFromString(QString *string); - void productArgumentsFromString(QString *string); + public: LocalFunction(); @@ -54,11 +55,12 @@ void init(int numberOfArguments, int alphabetSize); - // args is vector contein index of arguments to sum + // args is vector contein index of arguments to sum + void addSumArguments(QVector<int> args); void setSumArguments(QVector<int> args); + void setFreeArguments(QVector<int> args); + void setFreeArguments(void); - void setProductArguments(QVector<int> args); - void setSwitchFunction(void); // @@ -73,12 +75,13 @@ // fill value table with val void setDefaultValue(int val); - // first value is sum or product if function have sum or product arguments - // - bool addFunctionValue(int value, QVector<int> args); + // first value is sum if function have sum arguments + bool setFunctionValue(int value, int sum); + bool setFunctionValue(int value, QVector<int> args); + bool setFunctionValue(int value, int sum, QVector<int> freeArgs); + bool setFunctionValue(int value, QVector<int> sums, QVector<int> freeArgs); int resolve(QVector<int> arg); - double resolve(QVector<double> arg); QString toXmlString(void); Modified: trunk/qcell/baseheaders/Neighbourhood.h =================================================================== --- trunk/qcell/baseheaders/Neighbourhood.h 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/baseheaders/Neighbourhood.h 2006-12-19 14:58:48 UTC (rev 68) @@ -58,8 +58,8 @@ void calculateOffsets(int sizeX, int sizeY, int sizeZ, int sizeT, baseDataTypes::DATA_TYPES type); void resolveValues(const char *address); + QVector<int> valuesToVector_i(void); + QVector<double> valuesToVector_d(void); }; - - #endif Added: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h (rev 0) +++ trunk/qcell/baseheaders/Renderer.h 2006-12-19 14:58:48 UTC (rev 68) @@ -0,0 +1,49 @@ +#ifndef _RENDERER_H +#define _RENDERER_H + +#include "CalculationData.h" +#include <QVector> +#include <QColor> +#include <QGLPixelBuffer> +#include <QGLFramebufferObject> +#include <QGLWidget> +#include <QImage> +#include <QPainter> +#include <QObject> + +class Renderer : public CalculationData, public QGLWidget +{ + Q_OBJECT +private: +protected: + QVector<QColor> ColorMap; + QGLPixelBuffer *OGLpBuffer; + bool discretValues; + + QImage render1D(void); + QImage render2D(void); + QImage render3D(void); + +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); + + QImage renderToQImage(void); + void setColorInMap(int value, QColor color); +}; + +#endif Modified: trunk/qcell/basesources/CalculationData.cpp =================================================================== --- trunk/qcell/basesources/CalculationData.cpp 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/basesources/CalculationData.cpp 2006-12-19 14:58:48 UTC (rev 68) @@ -1,164 +1,51 @@ #include "../baseheaders/CalculationData.h" -bool CalculationData::resize(const char *dataPointer) +void CalculationData::clearData(void) { - borderExist = 0; - if(data) - delete[] data; + if(!haveForeignDataPointer && data) + delete data; - data = new char[getSizeInByte()]; - if(!data) - return 0; - - if(dataBorderFree) - { - delete[] dataBorderFree; - dataBorderFree = NULL; - } - - if(dataPointer) - fill(dataPointer); - return 1; + data = NULL; } -void * CalculationData::getAddressAt(int x, int y, int z, int t) +bool CalculationData::resize(bool foreignDataPointer, char *dataPointer) { - int dSize; - if(dataType==baseDataTypes::DATA_TYPES::NONE) - return NULL; - switch(dataType) + clearData(); + if(!foreignDataPointer) { - case baseDataTypes::DATA_TYPES::BOOL: - dSize = sizeof(char); - break; + data = new char[getSizeInByte()]; + if(!data) + return 0; - case baseDataTypes::DATA_TYPES::CHAR: - dSize = 1; - break; + if(dataPointer) + fillData(dataPointer); - case baseDataTypes::DATA_TYPES::INT: - dSize = sizeof(int); - break; - - case baseDataTypes::DATA_TYPES::SHORT: - dSize = sizeof(short); - break; - - case baseDataTypes::DATA_TYPES::DOUBLE: - dSize = sizeof(double); - break; - case baseDataTypes::DATA_TYPES::FLOAT: - dSize = sizeof(float); - break; + haveForeignDataPointer = 0; } - - return data + dSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ); + else + { + data = dataPointer; + haveForeignDataPointer = 1; + } + return 1; } -void * CalculationData::getAddressAtBackBuffer(int x, int y, int z, int t) +void * CalculationData::getAddressAt(int x, int y, int z, int t) { int dSize; if(dataType==baseDataTypes::DATA_TYPES::NONE) return NULL; - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; - break; - - case baseDataTypes::DATA_TYPES::CHAR: - dSize = sizeof(char); - break; - - case baseDataTypes::DATA_TYPES::INT: - dSize = sizeof(int); - break; - - case baseDataTypes::DATA_TYPES::SHORT: - dSize = sizeof(short); - break; - - case baseDataTypes::DATA_TYPES::DOUBLE: - dSize = sizeof(double); - break; - case baseDataTypes::DATA_TYPES::FLOAT: - dSize = sizeof(float); - break; - } - - x -= minX; - y -= minY; - z -= minZ; - t -= minT; - - if(t<0) - t=0; - if(z<0) - z=0; - if(y<0) - y=0; - if(x<0) - x=0; - - //int index = dSize * (x + y * backBufferSizeX + z * backBufferSizeX * backBufferSizeY + t * backBufferSizeX * backBufferSizeY * backBufferSizeZ); - - return dataBorderFree + dSize * (x + y * backBufferSizeX + z * backBufferSizeX * backBufferSizeY + t * backBufferSizeX * backBufferSizeY * backBufferSizeZ); + return data + dataSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ); } -void CalculationData::calculateBackBufferSize(void) -{ - switch(dimension) - { - case 4: - backBufferSizeT = (maxT - minT) + 1; - case 3: - backBufferSizeZ = (maxZ - minZ) + 1; - case 2: - backBufferSizeY = (maxY - minY) + 1; - case 1: - backBufferSizeX = (maxX - minX) + 1; - } - - if(maxX<0) - maxX=0; - - if(maxY<0) - maxY=0; - - if(maxZ<0) - maxZ=0; - - if(maxT<0) - maxT=0; -} - -void CalculationData::copyData(void) -{ - int counterF=0, counterB=0; - for(int t=minT;t<=maxT;++t) - { - for(int z=minZ;z<=maxZ;++z) - { - for(int y=minY;y<=maxY;++y) - { - counterF += minX * size; - memcpy(dataBorderFree + counterB, data + counterF, backBufferSizeX * size); - counterF += (sizeX - minX) * size; - counterB += backBufferSizeX * size; - } - } - } -} - CalculationData::CalculationData() { dataType = baseDataTypes::DATA_TYPES::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; - size = -1; + dataSize = 0; data = NULL; - dataBorderFree = NULL; - borderExist = 0; + haveForeignDataPointer = 0; } CalculationData::~CalculationData() @@ -166,17 +53,8 @@ dataType = baseDataTypes::DATA_TYPES::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; - size = -1; - if(data) - { - delete[] data; - data = NULL; - } - if(dataBorderFree) - { - delete[] dataBorderFree; - dataBorderFree = NULL; - } + dataSize = 0; + clearData(); } int CalculationData::getValueAt_i(int x) @@ -184,19 +62,24 @@ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, 0, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, 0, 0, 0))); + + case baseDataTypes::FLOAT: + return (int)(*((float *)(getAddressAt(x, 0, 0, 0)))); + + case baseDataTypes::DOUBLE: + return (int)(*((double *)(getAddressAt(x, 0, 0, 0)))); } - return -1; + return 0; } int CalculationData::getValueAt_i(int x, int y) @@ -204,7 +87,6 @@ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -215,8 +97,13 @@ case baseDataTypes::DATA_TYPES::SHORT: return *((short *)(getAddressAt(x, y, 0, 0))); + case baseDataTypes::FLOAT: + return (int)(*((float *)(getAddressAt(x, y, 0, 0)))); + + case baseDataTypes::DOUBLE: + return (int)(*((double *)(getAddressAt(x, y, 0, 0)))); } - return -1; + return 0; } int CalculationData::getValueAt_i(int x, int y, int z) @@ -224,7 +111,6 @@ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -235,8 +121,14 @@ case baseDataTypes::DATA_TYPES::SHORT: return *((short *)(getAddressAt(x, y, z, 0))); + + case baseDataTypes::FLOAT: + return (int)(*((float *)(getAddressAt(x, y, z, 0)))); + + case baseDataTypes::DOUBLE: + return (int)(*((double *)(getAddressAt(x, y, z, 0)))); } - return -1; + return 0; } int CalculationData::getValueAt_i(int x, int y, int z, int t) @@ -244,7 +136,6 @@ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -255,16 +146,38 @@ case baseDataTypes::DATA_TYPES::SHORT: return *((short *)(getAddressAt(x, y, z, t))); + + case baseDataTypes::FLOAT: + return (int)(*((float *)(getAddressAt(x, y, z, t)))); + + case baseDataTypes::DOUBLE: + return (int)(*((double *)(getAddressAt(x, y, z, t)))); + } - return -1; + return 0; } -void CalculationData::setValueAt_i(int val, int x) +int CalculationData::getValueAt_i(QVector<int> pos) { + switch(pos.size()) + { + case 1: + return getValueAt_i(pos[0]); + case 2: + return getValueAt_i(pos[0], pos[1]); + case 3: + return getValueAt_i(pos[0], pos[1], pos[2]); + case 4: + return getValueAt_i(pos[0], pos[1], pos[2], pos[3]); + } + return 0; +} + +void CalculationData::setValueAt(int val, int x) +{ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -281,12 +194,11 @@ } } -void CalculationData::setValueAt_i(int val, int x, int y) +void CalculationData::setValueAt(int val, int x, int y) { switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -303,12 +215,11 @@ } } -void CalculationData::setValueAt_i(int val, int x, int y, int z) +void CalculationData::setValueAt(int val, int x, int y, int z) { switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -325,12 +236,11 @@ } } -void CalculationData::setValueAt_i(int val, int x, int y, int z, int t) +void CalculationData::setValueAt(int val, int x, int y, int z, int t) { switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - size = 0; break; case baseDataTypes::DATA_TYPES::CHAR: @@ -351,56 +261,120 @@ { switch(dataType) { + case baseDataTypes::DATA_TYPES::BOOL: + break; + + case baseDataTypes::DATA_TYPES::CHAR: + return (double)*((char *)getAddressAt(x, 0, 0, 0)); + + case baseDataTypes::DATA_TYPES::INT: + return (double)*((int *)(getAddressAt(x, 0, 0, 0))); + + case baseDataTypes::DATA_TYPES::SHORT: + return (double)*((short *)(getAddressAt(x, 0, 0, 0))); + case baseDataTypes::DATA_TYPES::DOUBLE: return *((double *)(getAddressAt(x, 0, 0, 0))); case baseDataTypes::DATA_TYPES::FLOAT: return *((float *)(getAddressAt(x, 0, 0, 0))); } - return -1; + return 0.0; } double CalculationData::getValueAt_d(int x, int y) { switch(dataType) { + case baseDataTypes::DATA_TYPES::BOOL: + break; + + case baseDataTypes::DATA_TYPES::CHAR: + return (double)*((char *)getAddressAt(x, y, 0, 0)); + + case baseDataTypes::DATA_TYPES::INT: + return (double)*((int *)(getAddressAt(x, y, 0, 0))); + + case baseDataTypes::DATA_TYPES::SHORT: + return (double)*((short *)(getAddressAt(x, y, 0, 0))); + case baseDataTypes::DATA_TYPES::DOUBLE: return *((double *)(getAddressAt(x, y, 0, 0))); case baseDataTypes::DATA_TYPES::FLOAT: return *((float *)(getAddressAt(x, y, 0, 0))); } - return -1; + return 0.0; } double CalculationData::getValueAt_d(int x, int y, int z) { switch(dataType) { + case baseDataTypes::DATA_TYPES::BOOL: + break; + + case baseDataTypes::DATA_TYPES::CHAR: + return (double)*((char *)getAddressAt(x, y, z, 0)); + + case baseDataTypes::DATA_TYPES::INT: + return (double)*((int *)(getAddressAt(x, y, z, 0))); + + case baseDataTypes::DATA_TYPES::SHORT: + return (double)*((short *)(getAddressAt(x, y, z, 0))); + case baseDataTypes::DATA_TYPES::DOUBLE: return *((double *)(getAddressAt(x, y, z, 0))); case baseDataTypes::DATA_TYPES::FLOAT: return *((float *)(getAddressAt(x, y, z, 0))); } - return -1; + return 0.0; } double CalculationData::getValueAt_d(int x, int y, int z, int t) { switch(dataType) { + case baseDataTypes::DATA_TYPES::BOOL: + break; + + case baseDataTypes::DATA_TYPES::CHAR: + return (double)*((char *)getAddressAt(x, y, z, t)); + + case baseDataTypes::DATA_TYPES::INT: + return (double)*((int *)(getAddressAt(x, y, z, t))); + + case baseDataTypes::DATA_TYPES::SHORT: + return (double)*((short *)(getAddressAt(x, y, z, t))); + case baseDataTypes::DATA_TYPES::DOUBLE: return *((double *)(getAddressAt(x, y, z, t))); case baseDataTypes::DATA_TYPES::FLOAT: return *((float *)(getAddressAt(x, y, z, t))); } - return -1; + return 0.0; } -void CalculationData::setValueAt_d(double val, int x) +double CalculationData::getValueAt_d(QVector<int> pos) { + switch(pos.size()) + { + case 1: + return getValueAt_d(pos[0]); + case 2: + return getValueAt_d(pos[0], pos[1]); + case 3: + return getValueAt_d(pos[0], pos[1], pos[2]); + case 4: + return getValueAt_d(pos[0], pos[1], pos[2], pos[3]); + } + return 0.0; +} + +void CalculationData::setValueAt(double val, int x) +{ switch(dataType) { case baseDataTypes::DATA_TYPES::DOUBLE: @@ -413,7 +387,7 @@ } } -void CalculationData::setValueAt_d(double val, int x, int y) +void CalculationData::setValueAt(double val, int x, int y) { switch(dataType) { @@ -427,7 +401,7 @@ } } -void CalculationData::setValueAt_d(double val, int x, int y, int z) +void CalculationData::setValueAt(double val, int x, int y, int z) { switch(dataType) { @@ -441,7 +415,7 @@ } } -void CalculationData::setValueAt_d(double val, int x, int y, int z, int t) +void CalculationData::setValueAt(double val, int x, int y, int z, int t) { switch(dataType) { @@ -458,31 +432,31 @@ void CalculationData::setDataType(DATA_TYPES type) { dataType = type; - size = -1; + dataSize = 0; switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; + case baseDataTypes::BOOL: + dataSize = 0; break; - case baseDataTypes::DATA_TYPES::CHAR: - size = 1; + case baseDataTypes::CHAR: + dataSize = sizeof(char); break; - case baseDataTypes::DATA_TYPES::DOUBLE: - size = sizeof(double); + case baseDataTypes::DOUBLE: + dataSize = sizeof(double); break; - case baseDataTypes::DATA_TYPES::FLOAT: - size = sizeof(float); + case baseDataTypes::FLOAT: + dataSize = sizeof(float); break; - case baseDataTypes::DATA_TYPES::INT: - size = sizeof(int); + case baseDataTypes::INT: + dataSize = sizeof(int); break; - case baseDataTypes::DATA_TYPES::SHORT: - size = sizeof(short); + case baseDataTypes::SHORT: + dataSize = sizeof(short); break; } } @@ -493,49 +467,65 @@ } int CalculationData::getDataSize(void) { - return size; + return dataSize; } -bool CalculationData::resize(int x, const char *dataPointer) +bool CalculationData::resize(int x, char *dataPointer, bool foreignDataPointer) { sizeX = x; sizeY = 0; sizeZ = 0; sizeT = 0; dimension = 1; - return resize(dataPointer); + return resize(foreignDataPointer, dataPointer); } -bool CalculationData::resize(int x, int y, const char *dataPointer) +bool CalculationData::resize(int x, int y, char *dataPointer, bool foreignDataPointer) { sizeX = x; sizeY = y; sizeZ = 0; sizeT = 0; dimension = 2; - return resize(dataPointer); + return resize(foreignDataPointer, dataPointer);; } -bool CalculationData::resize(int x, int y, int z, const char *dataPointer) +bool CalculationData::resize(int x, int y, int z, char *dataPointer, bool foreignDataPointer) { sizeX = x; sizeY = y; sizeZ = z; sizeT = 0; dimension = 3; - return resize(dataPointer); + return resize(foreignDataPointer, dataPointer);; } -bool CalculationData::resize(int x, int y, int z, int t, const char *dataPointer) +bool CalculationData::resize(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer) { sizeX = x; sizeY = y; sizeZ = z; sizeT = t; dimension = 4; - return resize(dataPointer); + return resize(foreignDataPointer, dataPointer);; } +bool CalculationData::resize(QVector<int> newSize, char *dataPointer, bool foreignDataPointer) +{ + switch(newSize.size()) + { + case 1: + return resize(newSize[0], dataPointer, foreignDataPointer); + case 2: + return resize(newSize[1], newSize[2], dataPointer, foreignDataPointer); + case 3: + return resize(newSize[1], newSize[2], newSize[3], dataPointer, foreignDataPointer); + case 4: + return resize(newSize[1], newSize[2], newSize[3], newSize[4], dataPointer, foreignDataPointer); + } + return 0; +} + int CalculationData::getSizeX(void) { return sizeX; @@ -561,19 +551,19 @@ switch(dataType) { case baseDataTypes::DATA_TYPES::BOOL: - return (sizeX * sizeY * sizeZ * sizeT)/8; + return (sizeX * sizeY * sizeZ * sizeT)/8 + 1; case baseDataTypes::DATA_TYPES::CHAR: switch(dimension) { case 1: - return sizeX; + return sizeX * sizeof(char); case 2: - return sizeX * sizeY; + return sizeX * sizeY * sizeof(char); case 3: - return sizeX * sizeY * sizeZ; + return sizeX * sizeY * sizeZ * sizeof(char); case 4: - return sizeX * sizeY * sizeZ * sizeT; + return sizeX * sizeY * sizeZ * sizeT * sizeof(char); } case baseDataTypes::DATA_TYPES::DOUBLE: @@ -631,493 +621,64 @@ return 0; } -const char *CalculationData::getDataPointer(void) +int CalculationData::getDimension(void) { - return data; + return dimension; } -const char *CalculationData::getBackBufferDataPointer(void) +const char *CalculationData::getDataPointer(void) { - return dataBorderFree; + return data; } -void CalculationData::fill(const char *dataPointer) +void CalculationData::fillData(const char *dataPointer) { if(data!=NULL) - { memcpy(data, dataPointer, getSizeInByte()); - } } -void CalculationData::setCalculationSpace(bool noDataCopy) +void CalculationData::setForeignDataPointer(char *dataPointer) { - minX = 0; - minY = 0; - minZ = 0; - minT = 0; - - maxX = sizeX - 1; - maxY = sizeY - 1; - maxZ = sizeZ - 1; - maxT = sizeT - 1; - - borderExist = 0; - if(dataBorderFree) - { - delete[] dataBorderFree; - } - dataBorderFree = new char[getSizeInByte()]; - calculateBackBufferSize(); - if(!noDataCopy) - copyData(); + clearData(); + data = dataPointer; } -void CalculationData::setCalculationSpace(int startX, int endX, bool noDataCopy) +QString CalculationData::createXmlHeader(void) { - minX = startX; - maxX = endX; - minY = 0; - maxY = 0; - minZ = 0; - maxZ = 0; - minT = 0; - maxT = 0; - borderExist = 1; - if(dataBorderFree) - { - delete[] dataBorderFree; - } - dataBorderFree = new char[((maxX - minX) + 1) * size]; - calculateBackBufferSize(); - if(!noDataCopy) - copyData(); + return QString(); } -void CalculationData::setCalculationSpace(int startX, int startY, int endX, int endY, bool noDataCopy) +bool CalculationData::setFromXmlString(QString *xmlString) { - minX = startX; - maxX = endX; - minY = startY; - maxY = endY; - minZ = 0; - maxZ = 0; - minT = 0; - maxT = 0; - borderExist = 1; - if(dataBorderFree) - { - delete[] dataBorderFree; - } - dataBorderFree = new char[(((maxX - minX) + 1) * ((maxY - minY) + 1)) * size]; - calculateBackBufferSize(); - if(!noDataCopy) - copyData(); + return 1; } -void CalculationData::setCalculationSpace(int startX, int startY, int startZ, int endX, int endY, int endZ, bool noDataCopy) +bool CalculationData::parseXmlElement(QDomElement *root) { - minX = startX; - maxX = endX; - minY = startY; - maxY = endY; - minZ = startZ; - maxZ = endZ; - minT = 0; - maxT = 0; - borderExist = 1; - if(dataBorderFree) - { - delete[] dataBorderFree; - } - dataBorderFree = new char[(((maxX - minX) + 1) * ((maxY - minY) + 1) * ((maxZ - minZ) + 1)) * size]; - calculateBackBufferSize(); - if(!noDataCopy) - copyData(); + return 1; } -void CalculationData::setCalculationSpace(int startX, int startY, int startZ, int startT, int endX, int endY, int endZ, int endT, bool noDataCopy) +CalculationData & CalculationData::operator = (CalculationData &cData) { - minX = startX; - maxX = endX; - minY = startY; - maxY = endY; - minZ = startZ; - maxZ = endZ; - minT = startT; - maxT = endT; - borderExist = 1; - if(dataBorderFree) - { - delete[] dataBorderFree; - } - dataBorderFree = new char[(((maxX - minX) + 1) * ((maxY - minY) + 1) * ((maxZ - minZ) + 1) * ((maxT - minT) + 1)) * size]; - calculateBackBufferSize(); - if(!noDataCopy) - copyData(); -} + clearData(); + setDataType(cData.getDataType()); -bool CalculationData::haveBorder(void) -{ - return borderExist; -} - -QString CalculationData::createXmlHeader(void) -{ - QDomDocument doc; - QDomElement root, element, subElementMin, subElementMax; - root = doc.createElement("CalculationData"); - doc.appendChild(root); - element = doc.createElement("Data"); - switch(dimension) + switch(cData.getDimension()) { - case 4: - element.setAttribute("t", sizeT); - case 3: - element.setAttribute("z", sizeZ); - case 2: - element.setAttribute("y", sizeY); case 1: - element.setAttribute("x", sizeX); - } - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - element.setAttribute("ContentType", "bool"); + resize(cData.getSizeX()); break; - - case baseDataTypes::DATA_TYPES::CHAR: - element.setAttribute("ContentType", "char"); + case 2: + resize(cData.getSizeX(), cData.getSizeY()); break; - - case baseDataTypes::DATA_TYPES::DOUBLE: - element.setAttribute("ContentType", "double"); + case 3: + resize(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ()); break; - - case baseDataTypes::DATA_TYPES::FLOAT: - element.setAttribute("ContentType", "float"); + case 4: + resize(cData.getSizeX(), cData.getSizeY(), cData.getSizeZ(), cData.getSizeT()); break; - - case baseDataTypes::DATA_TYPES::INT: - element.setAttribute("ContentType", "bool"); - break; - - case baseDataTypes::DATA_TYPES::SHORT: - element.setAttribute("ContentType", "short"); - break; } - root.appendChild(element); - if(haveBorder()) - { - element = doc.createElement("Border"); - subElementMin = doc.createElement("Min"); - subElementMax = doc.createElement("Max"); - switch(dimension) - { - case 4: - subElementMin.setAttribute("t", minT); - subElementMax.setAttribute("t", maxT); - case 3: - subElementMin.setAttribute("z", minZ); - subElementMax.setAttribute("z", maxZ); - case 2: - subElementMin.setAttribute("y", minY); - subElementMax.setAttribute("y", maxY); - case 1: - subElementMin.setAttribute("x", minX); - subElementMax.setAttribute("x", maxX); - } - element.appendChild(subElementMin); - element.appendChild(subElementMax); - root.appendChild(element); - } - return doc.toString(); -} - -void CalculationData::setFromXmlString(QString *xmlString) -{ - QDomDocument doc; - QDomElement element; - doc.setContent(*xmlString); - element = doc.documentElement(); - parseXmlElement(&element); -} - -void CalculationData::parseXmlElement(QDomElement *root) -{ - QDomElement element, minElement, maxElement; - QDomNode node, subNode; - - if(root->tagName()=="CalculationData") - { - node = root->firstChild(); - while(!node.isNull()) - { - element = node.toElement(); - if(element.tagName()=="Data") - { - if(element.attribute("ContentType")=="bool") - setDataType(baseDataTypes::DATA_TYPES::BOOL); - else - if(element.attribute("ContentType")=="char") - setDataType(baseDataTypes::DATA_TYPES::CHAR); - else - if(element.attribute("ContentType")=="double") - setDataType(baseDataTypes::DATA_TYPES::DOUBLE); - else - if(element.attribute("ContentType")=="float") - setDataType(baseDataTypes::DATA_TYPES::FLOAT); - else - if(element.attribute("ContentType")=="int") - setDataType(baseDataTypes::DATA_TYPES::INT); - else - if(element.attribute("ContentType")=="short") - setDataType(baseDataTypes::DATA_TYPES::SHORT); - - if(element.hasAttribute("t")) - resize(element.attribute("t").toInt(), element.attribute("z").toInt(), element.attribute("y").toInt(), element.attribute("x").toInt()); - else - if(element.hasAttribute("z")) - resize(element.attribute("z").toInt(), element.attribute("y").toInt(), element.attribute("x").toInt()); - else - if(element.hasAttribute("y")) - resize(element.attribute("y").toInt(), element.attribute("x").toInt()); - else - resize(element.attribute("x").toInt()); - - } - if(element.tagName()=="Border") - { - subNode = element.firstChild(); - while(!subNode.isNull()) - { - element = subNode.toElement(); - if(element.tagName()=="Min") - minElement = subNode.toElement(); - else - if(element.tagName()=="Max") - maxElement = subNode.toElement(); - subNode = subNode.nextSibling(); - } - switch(dimension) - { - case 1: - setCalculationSpace(minElement.attribute("x").toInt(), maxElement.attribute("x").toInt()); - break; - case 2: - setCalculationSpace(minElement.attribute("x").toInt(), minElement.attribute("y").toInt(), maxElement.attribute("x").toInt(), maxElement.attribute("y").toInt()); - break; - case 3: - setCalculationSpace(minElement.attribute("x").toInt(), minElement.attribute("y").toInt(), minElement.attribute("z").toInt(), maxElement.attribute("x").toInt(), maxElement.attribute("y").toInt(), maxElement.attribute("z").toInt()); - break; - case 4: - setCalculationSpace(minElement.attribute("x").toInt(), minElement.attribute("y").toInt(), minElement.attribute("z").toInt(), minElement.attribute("t").toInt(), maxElement.attribute("x").toInt(), maxElement.attribute("y").toInt(), maxElement.attribute("z").toInt(), maxElement.attribute("t").toInt()); - break; - } - } - node = node.nextSibling(); - } - if(!haveBorder()) - setCalculationSpace(); - } -} - -void CalculationData::setValueAt_i_Back(int val, int x) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; - break; - - case baseDataTypes::DATA_TYPES::CHAR: - *((char *)getAddressAtBackBuffer(x, 0, 0, 0)) = (char)val; - break; - - case baseDataTypes::DATA_TYPES::INT: - *((int *)(getAddressAtBackBuffer(x, 0, 0, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::SHORT: - *((short *)(getAddressAtBackBuffer(x, 0, 0, 0))) = (short)val; - break; - } -} - -void CalculationData::setValueAt_i_Back(int val, int x, int y) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; - break; - - case baseDataTypes::DATA_TYPES::CHAR: - *((char *)getAddressAtBackBuffer(x, y, 0, 0)) = (char)val; - break; - - case baseDataTypes::DATA_TYPES::INT: - *((int *)(getAddressAtBackBuffer(x, y, 0, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::SHORT: - *((short *)(getAddressAtBackBuffer(x, y, 0, 0))) = (short)val; - break; - } -} - -void CalculationData::setValueAt_i_Back(int val, int x, int y, int z) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; - break; - - case baseDataTypes::DATA_TYPES::CHAR: - *((char *)getAddressAtBackBuffer(x, y, z, 0)) = (char)val; - break; - - case baseDataTypes::DATA_TYPES::INT: - *((int *)(getAddressAtBackBuffer(x, y, z, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::SHORT: - *((short *)(getAddressAtBackBuffer(x, y, z, 0))) = (short)val; - break; - } -} - -void CalculationData::setValueAt_i_Back(int val, int x, int y, int z, int t) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - size = 0; - break; - - case baseDataTypes::DATA_TYPES::CHAR: - *((char *)getAddressAtBackBuffer(x, y, z, t)) = (char)val; - break; - - case baseDataTypes::DATA_TYPES::INT: - *((int *)(getAddressAtBackBuffer(x, y, z, t))) = val; - break; - - case baseDataTypes::DATA_TYPES::SHORT: - *((short *)(getAddressAtBackBuffer(x, y, z, t))) = (short)val; - break; - } -} - -void CalculationData::setValueAt_d_Back(double val, int x) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::DOUBLE: - *((double *)(getAddressAtBackBuffer(x, 0, 0, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::FLOAT: - *((float *)(getAddressAtBackBuffer(x, 0, 0, 0))) = (float)val; - break; - } -} - -void CalculationData::setValueAt_d_Back(double val, int x, int y) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::DOUBLE: - *((double *)(getAddressAtBackBuffer(x, y, 0, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::FLOAT: - *((float *)(getAddressAtBackBuffer(x, y, 0, 0))) = (float)val; - break; - } -} - -void CalculationData::setValueAt_d_Back(double val, int x, int y, int z) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::DOUBLE: - *((double *)(getAddressAtBackBuffer(x, y, z, 0))) = val; - break; - - case baseDataTypes::DATA_TYPES::FLOAT: - *((float *)(getAddressAtBackBuffer(x, y, z, 0))) = (float)val; - break; - } -} - -void CalculationData::setValueAt_d_Back(double val, int x, int y, int z, int t) -{ - switch(dataType) - { - case baseDataTypes::DATA_TYPES::DOUBLE: - *((double *)(getAddressAtBackBuffer(x, y, z, t))) = val; - break; - - case baseDataTypes::DATA_TYPES::FLOAT: - *((float *)(getAddressAtBackBuffer(x, y, z, t))) = (float)val; - break; - } -} - -void CalculationData::fillData_i(int val) -{ - int dSize; - switch(dataType) - { - case baseDataTypes::DATA_TYPES::BOOL: - break; - - case baseDataTypes::DATA_TYPES::CHAR: - dSize = sizeof(char); - for(int i=0;i<getSizeInByte();i+=dSize) - { - *((char *)(data + i)) = (char)val; - } - break; - - case baseDataTypes::DATA_TYPES::INT: - dSize = sizeof(int); - for(int i=0;i<getSizeInByte();i+=dSize) - { - *((int *)(data + i)) = val; - } - break; - - case baseDataTypes::DATA_TYPES::SHORT: - dSize = sizeof(short); - for(int i=0;i<getSizeInByte();i+=dSize) - { - *((short *)(data + i)) = (short)val; - } - break; - } -} - -void CalculationData::fillData_d(double val) -{ - int dSize; - switch(dataType) - { - case baseDataTypes::DATA_TYPES::DOUBLE: - dSize = sizeof(double); - for(int i=0;i<getSizeInByte();i+=dSize) - { - *((double *)(data + i)) = val; - } - break; - case baseDataTypes::DATA_TYPES::FLOAT: - dSize = sizeof(float); - for(int i=0;i<getSizeInByte();i+=dSize) - { - *((float *)(data + i)) = (float)val; - } - break; - } -} + fillData(cData.getDataPointer()); + return *this; +} \ No newline at end of file Added: trunk/qcell/basesources/Calculator.cpp =================================================================== --- trunk/qcell/basesources/Calculator.cpp (rev 0) +++ trunk/qcell/basesources/Calculator.cpp 2006-12-19 14:58:48 UTC (rev 68) @@ -0,0 +1,219 @@ +#include "../baseheaders/Calculator.h" + +void Calculator::clearOutputData(void) +{ + if(!haveForeignOutputDataPointer && outData) + delete outData; + + outData = NULL; +} + +void Calculator::copyData(void) +{ + int counter = 0; + for(int t=calculationSpaceStart[3];t<=calculationSpaceEnd[3];++t) + { + for(int z=calculationSpaceStart[2];z<=calculationSpaceEnd[2];++z) + { + for(int y=calculationSpaceStart[1];y<=calculationSpaceEnd[1];++y) + { + memcpy(outData + counter, getAddressAt(calculationSpaceStart[0], y, z, t), outDataSize[0]); + counter += outDataSize[0]; + } + } + } +} + +bool Calculator::resizeOutputDataBuffer(bool dataCopy, char *dataPointer) +{ + clearOutputData(); + if(dataPointer==NULL) + { + haveForeignOutputDataPointer = 1; + outData = new char[getOutputDataSizeInByte()]; + if(!outData) + return 0; + + } + else + { + haveForeignOutputDataPointer = 0; + outData = dataPointer; + } + if(dataCopy) + copyData(); + + return 1; +} + +Calculator::Calculator() +{ + outData = NULL; + haveForeignOutputDataPointer = 0; + outDataSize.resize(4); + calculationSpaceStart.resize(4); + calculationSpaceEnd.resize(4); + neighbourhood = NULL; + localfunction = NULL; +} + +Calculator::~Calculator() +{ + clearOutputData(); + haveForeignOutputDataPointer = 0; + neighbourhood = NULL; + localfunction = NULL; +} + +void Calculator::setNeighbourhood(Neighbourhood *n) +{ + neighbourhood = n; + neighbourhood->calculateOffsets(sizeX, sizeY, sizeZ, sizeT, getDataType()); +} + +void Calculator::setLocalFunction(LocalFunction *f) +{ + localfunction = f; +} + +bool Calculator::setCalculationSpace(QVector<int> start, QVector<int> end, bool dataCopy, char *foreignDataPointer) +{ + if( start.size() == end.size() && start.size()==dimension) + { + for(int i=0;i<4;++i) + { + if(i<dimension) + { + calculationSpaceStart[i] = start[i]; + calculationSpaceEnd[i] = end[i]; + outDataSize[i] = calculationSpaceEnd[i] - calculationSpaceStart[i] + 1; + } + else + { + calculationSpaceStart[i] = 0; + calculationSpaceEnd[i] = 0; + outDataSize[i] = 0; + } + } + + return resizeOutputDataBuffer(dataCopy, foreignDataPointer); + } + return 0; +} + + +int Calculator::getOutputDataSizeInByte(void) +{ + switch(dataType) + { + case baseDataTypes::DATA_TYPES::BOOL: + return (outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3])/8 + 1; + + case baseDataTypes::DATA_TYPES::CHAR: + switch(dimension) + { + case 1: + return outDataSize[0] * sizeof(char); + case 2: + return outDataSize[0] * outDataSize[1] * sizeof(char); + case 3: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * sizeof(char); + case 4: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(char); + } + + case baseDataTypes::DATA_TYPES::DOUBLE: + switch(dimension) + { + case 1: + return outDataSize[0] * sizeof(double); + case 2: + return outDataSize[0] * outDataSize[1] * sizeof(double); + case 3: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * sizeof(double); + case 4: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(double); + } + + case baseDataTypes::DATA_TYPES::FLOAT: + switch(dimension) + { + case 1: + return outDataSize[0] * sizeof(float); + case 2: + return outDataSize[0] * outDataSize[1] * sizeof(float); + case 3: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * sizeof(float); + case 4: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(float); + } + + case baseDataTypes::DATA_TYPES::INT: + switch(dimension) + { + case 1: + return outDataSize[0] * sizeof(int); + case 2: + return outDataSize[0] * outDataSize[1] * sizeof(int); + case 3: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * sizeof(int); + case 4: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(int); + } + + case baseDataTypes::DATA_TYPES::SHORT: + switch(dimension) + { + case 1: + return outDataSize[0] * sizeof(short); + case 2: + return outDataSize[0] * outDataSize[1] * sizeof(short); + case 3: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * sizeof(short); + case 4: + return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(short); + } + } + return 0; +} + +const char *Calculator::getOutputDataPointer(void) +{ + return outData; +} + +void Calculator::calculate(void) +{ + int counter = 0; + char temp[8]; + for(int t=calculationSpaceStart[3];t<=calculationSpaceEnd[3];++t) + { + for(int z=calculationSpaceStart[2];z<=calculationSpaceEnd[2];++z) + { + for(int y=calculationSpaceStart[1];y<=calculationSpaceEnd[1];++y) + { + for(int x=calculationSpaceStart[0];x<=calculationSpaceEnd[0];++x) + { + neighbourhood->resolveValues((const char *)getAddressAt(x, y, z, t)); + switch(dataType) + { + case baseDataTypes::BOOL: + case baseDataTypes::CHAR: + case baseDataTypes::SHORT: + case baseDataTypes::INT: + *((int *)temp) = localfunction->resolve(neighbourhood->valuesToVector_i()); + break; + case baseDataTypes::FLOAT: + *((float *)temp) = (float)localfunction->resolve(neighbourhood->valuesToVector_d()); + break; + case baseDataTypes::DOUBLE: + *((double *)temp) = localfunction->resolve(neighbourhood->valuesToVector_d()); + break; + } + memcpy(outData + counter, temp, dataSize); + counter += dataSize; + } + } + } + } +} Modified: trunk/qcell/basesources/Client.cpp =================================================================== --- trunk/qcell/basesources/Client.cpp 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/basesources/Client.cpp 2006-12-19 14:58:48 UTC (rev 68) @@ -392,5 +392,4 @@ } else ++pingTry; - } Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2006-12-15 09:57:50 UTC (rev 67) +++ trunk/qcell/basesources/LocalFunction.cpp 2006-12-19 14:58:48 UTC (rev 68) @@ -5,22 +5,19 @@ switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::PRODUCT: - numElements = pow(maxArgVal - 1, productArguments.size()) + 1; - break; - case LocalFunction::FUNCTION_TYPE::SUM: - numElements = sumArguments.size() * (maxArgVal - 1) + 1; + numElements = 1; + for(int i=0;i<sumArguments.size();++i) + numElements *= sumArguments[i].size() * (maxArgVal - 1) + 1; break; - case LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH: - numElements = freeArguments.size() * maxArgVal * (sumArguments.size() * (maxArgVal - 1) + 1); + 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::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH: - numElements = freeArguments.size() * maxArgVal * (pow(maxArgVal - 1, productArguments.size()) + 1); - break; - case LocalFunction::FUNCTION_TYPE::SWITCH: numElements = numArg * maxArgVal; break; @@ -61,97 +58,76 @@ return out; } -QString LocalFunction::valueTableToString(void) +QVector<int> LocalFunction::calculateSums(QVector<int> &args) { - int fillValue; - QString data, index, value; - fillValue = mostPopularValue(); - for(int i=0;i<numElements;i++) + int i, j; + QVector<int> out; + out.resize(sumArguments.size()); + for(i=0;i<sumArguments.size();++i) { - if(valueTable[i]!=fillValue) - { - index.setNum(i); - value.setNum(valueTable[i]); - data = index + ":" + value + ";"; - } + out[i] = 0; + foreach(j, sumArguments[i]) + out[i] += args[j]; } - return data; + return out; } -QString LocalFunction::valueTableToString(int fillValue) +QVector<int> LocalFunction::calculateSwitchArguments(QVector<int> &args) { - QString data, index, value; - for(int i=0;i<numElements;i++) - { - if(valueTable[i]!=fillValue) - { - index.setNum(i); - value.setNum(valueTable[i]); - data += index + ":" + value + ";"; - } - } - return data; + int index; + QVector<int> out; + foreach(index, freeArguments) + out<<args[index]; + return out; } -QString LocalFunction::sumArgumentsToString(void) +int LocalFunction::calculateSumsIndex(QVector<int> args) { - int i; - QString out, temp; - foreach(i, sumArguments) + int mult, index = 0; + int switchFunctionSize = pow(maxArgVal, freeArguments.size()); + for(int i=0;i<sumArguments.size();++i) { - temp.setNum(i); - out += temp + ";"; + mult = 1; + for(int j=i;j<sumArguments.size() - 1;++j) + mult *= sumArguments[j].size() * (maxArgVal - 1) + 1; + index += args[i] * mult * switchFunctionSize; } - return out; + return index; } -QString LocalFunction::productArgumentsToString(void) +int LocalFunction::calculateSwitchIndex(QVector<int> args) { - int i; - QString out, temp; - foreach(i, productArguments) - { - temp.setNum(i); - out += temp + ";"; - } - return out; + int index = 0; + for(int i=0;i<freeArguments.size();++i) + index += args[i] * pow(maxArgVal, i); + return index; } -void LocalFunction::valueTableFromString(QString *string) +QString LocalFunction::valueTableToString(void) { - QStringList splitList, element; - QString temp; - splitList = string->split(";", QString::SplitBehavior::SkipEmptyParts); - foreach(temp, splitList) - { - element = temp.split(":"); - valueTable[element.at(0).toInt()] = element.at(1).toInt(); - } + return QString(); } +QString LocalFunction::valueTableToString(int fillValue) +{ + return QString(); +} -void LocalFunction::sumArgumentsFromString(QString *string) +QString LocalFunction::sumArgumentsToString(void) { - QStringList splitList; - QString temp; - QVector<int> v; - splitList = string->split(";", QString::SplitBehavior::SkipEmptyParts); - foreach(temp, splitList) - v.append(temp.toInt()); - setSumArguments(v); + return QString(); } -void LocalFunction::productArgumentsFromString(QString *string) +void LocalFunction::valueTableFromString(QString *string) { - QStringList splitList; - QString temp; - QVector<int> v; - splitList = string->split(";", QString::SplitBehavior::SkipEmptyParts); - foreach(temp, splitList) - v.append(temp.toInt()); - setProductArguments(v); } + +void LocalFunction::sumArgumentsFromString(QString *string) +{ +} + + LocalFunction::LocalFunction() { functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; @@ -168,21 +144,22 @@ maxArgVal = alphabetSize; valueTable.clear(); sumArguments.clear(); - productArguments.clear(); freeArguments.clear(); functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; } -void LocalFunction::setSumArguments(QVector<int> arg) +void LocalFunction::addSumArguments(QVector<int> args) { - if(arg.size()<=numArg) + int index; + if(args.size()>0) { - sumArguments = arg; - freeArguments.clear(); - valueTable.clear(); - for(int i=0;i<numArg;++i) - if(!sumArguments.contains(i)) - freeArguments<<i; + sumArguments.append(args); + for(int i=0;i<args.size();++i) + { + index = freeArguments.indexOf(args[i]); + if(index>-1) + freeArguments.remove(index); + } if(freeArguments.size()==0) functionMode = LocalFunction::FUNCTION_TYPE::SUM; @@ -190,34 +167,35 @@ if(freeArguments.size()==numArg) functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; else - functionMode = LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH; + functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH; } } -void LocalFunction::setProductArguments(QVector<int> arg) +void LocalFunction::setSumArguments(QVector<int> arg) { if(arg.size()<=numArg) { - productArguments = arg; + sumArguments.clear(); + sumArguments.append(arg); freeArguments.clear(); valueTable.clear(); for(int i=0;i<numArg;++i) - if(!productArguments.contains(i)) + if(!sumArguments[0].contains(i)) freeArguments<<i; + if(freeArguments.size()==0) - functionMode = LocalFunction::FUNCTION_TYPE::PRODUCT; + functionMode = LocalFunction::FUNCTION_TYPE::SUM; else if(freeArguments.size()==numArg) functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; else - functionMode = LocalFunction::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH; + functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH; } } void LocalFunction::setSwitchFunction(void) { sumArguments.clear(); - productArguments.clear(); freeArguments.clear(); valueTable.clear(); functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; @@ -244,11 +222,9 @@ switch(functionMode) { case LocalFunction::FUNCTION_TYPE::SUM: - case LocalFunction::FUNCTION_TYPE::PRODUCT: return 1; - case LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH: - case LocalFunction::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH: + case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH: return freeArguments.size() + 1; case LocalFunction::FUNCTION_TYPE::SWITCH: @@ -271,36 +247,84 @@ } +bool LocalFunction::setFunctionValue(int value, int sum) +{ + int offset; + if(sumArguments.size()==0 || sumArguments.size()>1) + return 0; + if(valueTable.empty()) + resizeValueTable(); + switch(functionMode) + { + case LocalFunction::FUNCTION_TYPE::SUM: + valueTable[sum] = value; + break; -bool LocalFunction::addFunctionValue(int value, QVector<int> args) + 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; + break; + + default: + return 0; + } + return 1; +} + + +bool LocalFunction::setFunctionValue(int value, QVector<int> args) { - int i, index = 0, t; if(valueTable.empty()) resizeValueTable(); switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: - case LocalFunction::FUNCTION_TYPE::PRODUCT: - index = args[0]; + case LocalFunction::SWITCH: + valueTable[calculateSwitchIndex(args)]; break; - case LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH: - - t = freeArguments.size(); - for(i=0;i<freeArguments.size();++i) - index += args[i+1] * pow(maxArgVal, i); - index += args[0] * pow(maxArgVal, freeArguments.size()); - break; + default: + return 0; + } + return 1; +} - case LocalFunction::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH: +bool LocalFunction::setFunctionValue(int value, int sum, QVector<int> freeArgs) +{ + int index; + if(sumArguments.size()==0 || sumArguments.size()>1) + return 0; + if(valueTable.empty()) + resizeValueTable(); + switch(functionMode) + { + case LocalFunction::SUM_AND_SWITCH: + index = calculateSwitchIndex(freeArgs); + index = sum * pow(maxArgVal, freeArguments.size()) + index; + valueTable[index] = value; break; + default: + return 0; + } + return 1; +} - case LocalFunction::FUNCTION_TYPE::SWITCH: - for(i=0;i<numArg;++i) - index += args[i] * pow(maxArgVal, i); - break; +bool LocalFunction::setFunctionValue(int value, QVector<int> sums, QVector<int> freeArgs) +{ + int index; + if(sumArguments.size()==0 || freeArguments.size()==0) + return 0; + if(valueTable.empty()) + resizeValueTable(); + switch(functionMode) + { + case LocalFunction::SUM_AND_SWITCH: + index = calculateSumsIndex(sums) + calculateSwitchIndex(freeArgs); + valueTable[index] = value; + break; + default: + return 0; } - valueTable[index] = value; return 1; } @@ -312,33 +336,17 @@ if(functionMode==LocalFunction::FUNCTION_TYPE::SCRIPT) return -1; + QVector<int> sums, freeArgs; + sums = calculateSums(args); + freeArgs = calculateSwitchArguments(args); + switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: - case LocalFunction::FUNCTION_TYPE::PRODUCT: - index = args[0]; - break; - - case LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH: - for(i=0;i<freeArguments.size();++i) - index += args[freeArguments[i]] * pow(maxArgVal, i); - - temp = 0; - for(i=0;i<sumArguments.size();++i) - temp += args[sumArguments[i]]; - - index += temp * pow(maxArgVal, freeArguments.size()); - break; - - case LocalFunction::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH: - break; - - case LocalFunction::FUNCTION_TYPE::SWITCH: - for(i=0;i<numArg;++i) - index += args[i] * pow(maxArgVal, i); - break; case LocalFunction::FUNCTION_TYPE::SCRIPT: break; + default: + index = calculateSumsIndex(sums) + calculateSwitchIndex(freeArgs); + break; } return valueTable[index]; } @@ -353,11 +361,6 @@ for (i=0;i<args.size();++i) out += args[i]; break; - case LocalFunction::FUNCTION_TYPE::PRODUCT: - out = args[0]; - for (i=1;i<args.size();++i) - out *= args[i]; - break; case LocalFunction::FUNCTION_TYPE::SCRIPT: break; @@ -369,162 +372,16 @@ QString LocalFunction::toXmlString(void) { - int i, fillValue; - QString data, index; - QDomDocument dom; - QDomElement root, element, subElement; - QDomText textData = dom.createTextNode(""); - root = dom.createElement("LocalFunction"); - root.setAttribute("ArgumentsNumber", numArg); - root.setAttribute("AlphabetSize", maxArgVal); - fillValue = mostPopularValue(); - switch(functionMode) - { - case LocalFunction::FUNCTION_TYPE::SUM: - element = dom.createElement("Sum"); - element.setAttribute("Fill", fillValue); - data = valueTableToString(fillValue); - textData.setData(data); - element.appendChild(textData); - root.appendChild(element); - break; - - case LocalFunction::FUNCTION_TYPE::PRODUCT: - element = dom.createElement("Product"); - element.setAttribute("Fill", fillValue); - data = valueTableToString(fillValue); - textData.setData(data); - element.appendChild(textData); - root.appendChild(element); - break; - - case LocalFunction::FUNCTION_TYPE::MIXED_SUM_SWITCH: - element = dom.createElement("Mixed"); - element.setAttribute("Fill", fillValue); - data = sumArgumentsToString(); - element.setAttribute("SumArguments", data); - data = valueTableToString(fillValue); - textData.setData(data); - element.appendChild(textData); - root.appendChild(element); - break; - case LocalFunction::FUNCTION_TYPE::MIXED_PRODUCT_SWITCH: - element = dom.createElement("Mixed"); - element.setAttribute("Fill", fillValue); - data = productArgumentsToString(); - element.setAttribute("ProductArguments", data); - data = valueTableToString(fillValue); - textData.setData(data); - element.appendChild(textData); - root.appendChild(element); - - break; - - case LocalFunction::FUNCTION_TYPE::SWITCH: - element = dom.createElement("Switch"); - element.setAttribute("Fill", fillValue); - data = valueTableToString(fillValue); - textData.setData(data); - element.appendChild(textData); - root.appendChild(element); - break; - - case LocalFunction::FUNCTION_TYPE::SCRIPT: - element = dom.createElement("Script"); - textData.setData(script); - element.appendChild(textData); - root.appendChild(element); - break; - } - - dom.appendChild(root); - return dom.toString(); + return QString(); } bool LocalFunction::fromXmlString(QString *xmlString) { - QDomDocument doc; - QDomElement element; - doc.setContent(*xmlString); - element = doc.documentElement(); - return fromDomElement(&element); + return 1; } bool LocalFunction::fromDomElement(QDomElement *xmlElement) { - QDomElement element; - QDomText domText; - QString text; - if(xmlElement->tagName()=="LocalFunction") - { - init(xmlElement->attribute("ArgumentsNumber").toInt(), xmlElement->attribute("AlphabetSize").toInt()); - element = xmlElement->firstChildElement(); - if(element.tagName()=="Sum") - { ... [truncated message content] |
From: <dhu...@us...> - 2006-12-21 15:51:05
|
Revision: 80 http://svn.sourceforge.net/qcell/?rev=80&view=rev Author: dhubleizh Date: 2006-12-21 07:51:01 -0800 (Thu, 21 Dec 2006) Log Message: ----------- - updated translations Modified Paths: -------------- trunk/qcell/parsers/N/N_pl.qm trunk/qcell/parsers/N/N_pl.ts trunk/qcell/visgui/visgui_pl.qm trunk/qcell/visgui/visgui_pl.ts Modified: trunk/qcell/parsers/N/N_pl.qm =================================================================== (Binary files differ) Modified: trunk/qcell/parsers/N/N_pl.ts =================================================================== --- trunk/qcell/parsers/N/N_pl.ts 2006-12-21 15:50:38 UTC (rev 79) +++ trunk/qcell/parsers/N/N_pl.ts 2006-12-21 15:51:01 UTC (rev 80) @@ -3,49 +3,77 @@ <context> <name>NParserPlugin</name> <message> - <location filename="NParserPlugin.cpp" line="58"/> + <location filename="NParserPlugin.cpp" line="41"/> <source>The input file is to short!</source> <translation>Plik wejściowy jest za krótki!</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="73"/> + <location filename="NParserPlugin.cpp" line="56"/> <source>Wrong dimensions specificatoin in line %1. It should be of format %2.</source> <translation>Zła specyfikacja wymiarów w lini %1. Powinna być w formacie %2.</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="104"/> + <location filename="NParserPlugin.cpp" line="97"/> <source>Wrong sizes specification in line %1. It should be of format %2.</source> <translation>Zła specyfikacja rozmiarów w linii %1. Powinna być w formacie %2.</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="132"/> + <location filename="NParserPlugin.cpp" line="135"/> <source>Wrong zaro point specification in line %1. It should be of format %2.</source> <translation>Zła specyfikacja punktu zerowego w linii %1. Powinna być w formacie %2.</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="141"/> + <location filename="NParserPlugin.cpp" line="144"/> <source>The number of lines in file doesn't correspond to declared dimensions sizes.</source> <translation>Liczba linii w pliku nie zgadza się z zadeklarowanymi rozmiarami wymiarów.</translation> </message> <message> <location filename="NParserPlugin.cpp" line="156"/> <source>Line number %1 isn't of lenght declared in the header: %2.</source> - <translation>Linia numer %1 nie jest długości zadeklarowanej w nagłówku: %2.</translation> + <translation type="obsolete">Linia numer %1 nie jest długości zadeklarowanej w nagłówku: %2.</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="188"/> + <location filename="NParserPlugin.cpp" line="203"/> <source>In line %1 the number of neighbours (%2) exceeded the one declared in the header (%3).</source> <translation>W linii %1 liczba sąsiadów (%2) przekroczyła tę zadeklarowaną w nagłówku (%3).</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="206"/> + <location filename="NParserPlugin.cpp" line="229"/> <source>The number of neighbours (%1) is smaller then declared in the header(%2).</source> <translation>Liczba sąsiadów (%1) jest mniejsza niż zadeklarowana w nagłółku (%2).</translation> </message> <message> - <location filename="NParserPlugin.cpp" line="230"/> + <location filename="NParserPlugin.cpp" line="244"/> <source>Neighbours numbers do not ascend in proper manner. There is neighbour nr %1 and then %2.</source> <translation>Numery sąsiadów nie rosną w odpowiedni sposób. Jest sąsiad nr %1 i potem nr %2.</translation> </message> + <message> + <location filename="NParserPlugin.cpp" line="84"/> + <source>In line %1 all the values need to be more then 0 for the neighbourhood to be usuable.</source> + <translation>W linijce %1 wszystkie wartości muszą być większe niż 0 by sąsiedztwo nadawało się do użytku.</translation> + </message> + <message> + <location filename="NParserPlugin.cpp" line="122"/> + <source>In line %1 the zero poin position can't be larger then the dimensions declared in header.</source> + <translation>W linijce %1 pozycja odniesienia nie może być większa niż rozmiary wymiarów zadeklarowane w nagłówku.</translation> + </message> + <message> + <location filename="NParserPlugin.cpp" line="159"/> + <source>Line number %1 isn't of proper format. It should be %2.</source> + <translation>Niepoprawny format linijki numer %1. Powinien być %2.</translation> + </message> + <message> + <location filename="NParserPlugin.cpp" line="190"/> + <source>A newly found neighbour in line %1 column %2 already added.</source> + <translation>Nowo znaleziony sąsiad w linijce %1 kolumnie %2 wcześniej dodany.</translation> + </message> </context> +<context> + <name>Neighbourhood</name> + <message> + <location filename="NParserPlugin.cpp" line="40"/> + <source>The input file is to short!</source> + <translation type="obsolete">Plik wejściowy jest za krótki!</translation> + </message> +</context> </TS> Modified: trunk/qcell/visgui/visgui_pl.qm =================================================================== (Binary files differ) Modified: trunk/qcell/visgui/visgui_pl.ts =================================================================== --- trunk/qcell/visgui/visgui_pl.ts 2006-12-21 15:50:38 UTC (rev 79) +++ trunk/qcell/visgui/visgui_pl.ts 2006-12-21 15:51:01 UTC (rev 80) @@ -1,6 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS><TS version="1.1" language="pl"> <context> + <name>@default</name> + <message> + <location filename="main.cpp" line="64"/> + <source>Debug</source> + <translation type="obsolete">Odpluskwianie</translation> + </message> + <message> + <location filename="main.cpp" line="67"/> + <source>Warning</source> + <translation type="obsolete">Ostrzeżenie</translation> + </message> + <message> + <location filename="main.cpp" line="70"/> + <source>Critical</source> + <translation type="obsolete">Krytyczny</translation> + </message> + <message> + <location filename="main.cpp" line="73"/> + <source>Fatal</source> + <translation type="obsolete">Śmiertelny</translation> + </message> +</context> +<context> <name>AboutDialog</name> <message> <location filename="AboutDialog.ui" line="13"/> @@ -21,10 +44,15 @@ <translation>Typ wtyczki %1 nie jest wspierany przez te wtyczkę.</translation> </message> <message> - <location filename="../basesources/GenericParserPlugin.cpp" line="67"/> + <location filename="../basesources/GenericParserPlugin.cpp" line="69"/> <source>This plugin doesn't support parsing of type %1. It supports %2.</source> <translation>Ta wtyczka nie obsługuję parsowania typu %1. Wspiera typ %2.</translation> </message> + <message> + <location filename="../basesources/GenericParserPlugin.cpp" line="34"/> + <source>Here I am!</source> + <translation>Tutaj jestem!</translation> + </message> </context> <context> <name>MainWindow</name> @@ -135,7 +163,7 @@ <translation>Pokazuje informacje o programie.</translation> </message> <message> - <location filename="MainWindow.cpp" line="71"/> + <location filename="MainWindow.cpp" line="105"/> <source>Open Neighbourhood</source> <translation>Otwórz Sąsiedztwo</translation> </message> @@ -145,9 +173,77 @@ <translation type="obsolete"> pliki</translation> </message> <message> - <location filename="MainWindow.cpp" line="82"/> + <location filename="MainWindow.cpp" line="195"/> <source>files</source> <translation>pliki</translation> </message> + <message> + <location filename="MainWindow.cpp" line="172"/> + <source>Plugins warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="MainWindow.cpp" line="97"/> + <source>There are no plugins loaded to handle Neighbourhood parsing.</source> + <translation>Nie ma załadowanej żadnej wtyczki do obsługi parsowania plików Sąsiedztwa.</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="136"/> + <source>There are no plugins loaded to handle Function parsing.</source> + <translation>Nie ma załadowanej żadnej wtyczki do obsługi parsowania Funkcji.</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="144"/> + <source>Open Function</source> + <translation>Otwórz Funkcję</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="174"/> + <source>There are no plugins loaded to handle World parsing.</source> + <translation>Nie ma załadowanej żadnej wtyczki do parsowania Świata.</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="182"/> + <source>Open World</source> + <translation>Otwórz Świat</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="213"/> + <source>Error opening file %1.</source> + <translation>Błąd podczas otwierania pliku %1.</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="251"/> + <source>The file extensions %1 isn't supported.</source> + <translation>Rozszerzenie pliku %1 nie jest wspierane.</translation> + </message> + <message> + <location filename="MainWindow.cpp" line="261"/> + <source>Unsupported file type to parse.</source> + <translation>Niewspierany typ pliku do przeczytania.</translation> + </message> </context> +<context> + <name>QApplication</name> + <message> + <location filename="main.cpp" line="65"/> + <source>Debug</source> + <translation>Odpluskwianie</translation> + </message> + <message> + <location filename="main.cpp" line="68"/> + <source>Warning</source> + <translation>Ostrzeżenie</translation> + </message> + <message> + <location filename="main.cpp" line="71"/> + <source>Critical</source> + <translation>Krytyczny</translation> + </message> + <message> + <location filename="main.cpp" line="74"/> + <source>Fatal</source> + <translation>Śmiertelny</translation> + </message> +</context> </TS> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2006-12-29 18:04:43
|
Revision: 81 http://svn.sourceforge.net/qcell/?rev=81&view=rev Author: dhubleizh Date: 2006-12-29 10:04:32 -0800 (Fri, 29 Dec 2006) Log Message: ----------- - new catalog in doc for thesis writing - main tex work, two indexes of acronyms and glossaries - Makefile to build this (complicated build system) Added Paths: ----------- trunk/qcell/doc/ trunk/qcell/doc/licenciate_thesis/ trunk/qcell/doc/licenciate_thesis/Makefile trunk/qcell/doc/licenciate_thesis/acronyms.gdf trunk/qcell/doc/licenciate_thesis/thesis.bib trunk/qcell/doc/licenciate_thesis/thesis.gdf trunk/qcell/doc/licenciate_thesis/thesis.tex Added: trunk/qcell/doc/licenciate_thesis/Makefile =================================================================== --- trunk/qcell/doc/licenciate_thesis/Makefile (rev 0) +++ trunk/qcell/doc/licenciate_thesis/Makefile 2006-12-29 18:04:32 UTC (rev 81) @@ -0,0 +1,41 @@ +# public domain + +thesis=thesis +acronyms=acronyms +glossary=glossary +ids=/usr/share/texmf/tex/latex/glosstex/glosstex.ist + +GLOSSARIES=acronyms.gdf thesis.gdf +TEXFILES=thesis.tex +tex=pdflatex -interaction=nonstopmode --translate-file=il2-pl + +all: compile glossary compile bibliography compile compile + +bibliography: + bibtex $(thesis) + $(tex) $(thesis) + $(tex) $(thesis) + +glossary: + glosstex $(thesis) $(GLOSSARIES) + makeindex $(thesis).gxs -o $(thesis).glx -s $(ids) + $(tex) $(thesis) + +compile: $(TEXFILES) + $(tex) $(thesis) + +dvi: all + platex $(thesis) +pdf: all + $(tex} $(thesis) + +clean: clean_pdf clean_dvi clean_bbl + rm -f *.{aux,glx,gxg,gxs,ilg,log,out,toc} + +clean_bbl: + rm -f *.{bbl,blg} +clean_pdf: + rm -f *.pdf + +clean_dvi: + rm -f *.dvi Added: trunk/qcell/doc/licenciate_thesis/acronyms.gdf =================================================================== --- trunk/qcell/doc/licenciate_thesis/acronyms.gdf (rev 0) +++ trunk/qcell/doc/licenciate_thesis/acronyms.gdf 2006-12-29 18:04:32 UTC (rev 81) @@ -0,0 +1,7 @@ +@entry{GUI, GUI, Graphical User Interface} cz\xEAsto nazywany te\xBF \xB6rodowiskiem graficznym---og\xF3lne okre\xB6lenie sposobu prezentacji informacji przez komputer oraz interakcji z u\xBFytkownikiem, polegaj\xB1cego na rysowaniu i obs\xB3ugiwaniu widget\xF3w.\citep{plwiki} + +@entry{IDE, IDE, Integrated Development Environment} Zintegrowane \xB6rodowisko programistyczne---jest to aplikacja lub zesp\xF3\xB3 aplikacji (\xB6rodowisko) s\xB3u\xBF\xB1cych do tworzenia, modyfikowania, testowania i konserwacji oprogramowania.\citep{plwiki} + +@entry{EPS, EPS, Encapsulated PostScript} format plik\xF3w, b\xEAd\xB1cy podzbiorem j\xEAzyka PostScript, kt\xF3rego g\xB3\xF3wnym przeznaczeniem jest przechowywanie pojedynczych stron zawieraj\xB1cych grafik\xEA komputerow\xB1 w postaci umo\xBFliwiajacej osadzanie ich w innych dokumentach.\citep{plwiki} + +@entry{SVG, SVG, Scalable Vector Graphics} uniwersalny format dwuwymiarowej, statycznej i animowanej grafiki wektorowej, nieobwarowany licencjami i patentami, stworzony w 1999 roku przez W3C z my\xB6l\xB1 o zastosowaniu go na stronach WWW. U\xBFywany r\xF3wnie\xBF jako niezale\xBFny od platformy systemowej format grafiki. SVG nale\xBFy do rodziny XML, wi\xEAc mo\xBFe by\xE6 integrowany z innymi j\xEAzykami, jak na przyk\xB3ad XHTML.\citep{plwiki} Added: trunk/qcell/doc/licenciate_thesis/thesis.bib =================================================================== --- trunk/qcell/doc/licenciate_thesis/thesis.bib (rev 0) +++ trunk/qcell/doc/licenciate_thesis/thesis.bib 2006-12-29 18:04:32 UTC (rev 81) @@ -0,0 +1,16 @@ +@MISC{plwiki, + title = {Wikipedia, wydanie polskie}, + howpublished = {\url{http://pl.wikipedia.org}}, + month = {listopad}, + year = {2006}, + organization = {Wikimedia Foundation Inc.} +} + +@MISC{enwiki, + title = {Wikipedia, wydanie anglielskie}, + howpublished = {\url{http://en.wikipedia.org}}, + month = {listopad}, + year = {2006}, + organization = {Wikimedia Foundation Inc.} +} + Added: trunk/qcell/doc/licenciate_thesis/thesis.gdf =================================================================== --- trunk/qcell/doc/licenciate_thesis/thesis.gdf (rev 0) +++ trunk/qcell/doc/licenciate_thesis/thesis.gdf 2006-12-29 18:04:32 UTC (rev 81) @@ -0,0 +1,4 @@ +@entry{debugger, debugger} (pol. odpluskwiacz, polskie t\xB3umaczenie u\xBFywane tak\xBFe w slangu polskich programist\xF3w) ---- program komputerowy s\xB3u\xBF\xB1cy do analizy kodu \xBCr\xF3d\xB3owego lub kodu maszynowego w celu znalezienia w nim b\xB3\xEAd\xF3w programistycznych (bug\xF3w). Proces naprawy kodu za pomoc\xB1 debugera okre\xB6la si\xEA mianem debugowania, lub bardziej po polsku --- uruchamiania.\citep{plwiki} + +@entry{GNOME, GNOME, GNU Network Object Model Environment} jest graficznym \xB6rodowiskiem u\xBFytkownika opartym na systemie X Window System oraz widgetach GTK+ i GDK. Dzia\xB3a na wi\xEAkszo\xB6ci system\xF3w typu Unix.\citep{plwiki} + Added: trunk/qcell/doc/licenciate_thesis/thesis.tex =================================================================== --- trunk/qcell/doc/licenciate_thesis/thesis.tex (rev 0) +++ trunk/qcell/doc/licenciate_thesis/thesis.tex 2006-12-29 18:04:32 UTC (rev 81) @@ -0,0 +1,91 @@ +% File: thesis.tex +% Created: czw gru 28 06:00 2006 C +% Last Change: czw gru 28 06:00 2006 C +% +% TODO: +% - Rozbi\xE6 rozdzia\xB3y na osobne pliki (u\xB3atwi r\xF3wnoczesn\xB1 prac\xEA) +% - Zrobi\xE6 stron\xEA tytu\xB3ow\xB1 (omin\xB1\xE6 problem numerowania stron i hypertex-a +% - Pozbiera\xE6 do kupy bibliografi\xEA +% - Okre\xB6li\xE6 format drukowania bibliografii +% +%&glosstex thesis thesis.gdf +%&makeindex thesis.gxs -o thesis.glx -s /usr/share/texmf/tex/latex/glosstex/glosstex.ist + +% Typ rekomendowany na prac\xEA PhD +\documentclass[12pt,a4paper]{report} + +% Po polsku +\usepackage{polski} + +% \xAFeby mo\xBFna by\xB3o dawa\xE6 linki +\usepackage{url} + +% Bibliografia w dowolnym formacie +\usepackage{natbib} + +% Korzystamy z bajer\xF3w pdf'a, jak kolorowe linki +\pdfcompresslevel=9 +% Na razie wy\xB3\xB1czam, dop\xF3ki nie wymy\xB6l\xEA, jak poradzi\xE6 sobie ze stron\xB1 tytu\xB3ow\xB1 +\usepackage[colorlinks,hyperindex,plainpages=false]{hyperref} + +% Skr\xF3ty i terminy u\xBFywane +\usepackage[footnote,refpage]{glosstex} + +\begin{document} +\title{Wizualizacja przetwarzania w automacie kom\xF3rkowym z wybranym obserwatorem} +% Sorry - po prostu czysto alfabetycznie +\author{Cezary Krzy\xBFanowski,\\ +Leszek Smentek} +\date{\today} +%\maketitle + +% Spis tre\xB6ci augomagicznie generowany z tytu\xB3\xF3w rozdzia\xB3\xF3w i sekcji +\tableofcontents + +%Jedziemy z koksem +\chapter{Wprowadzenie} +\section{Uzasadnienie tematu} +\section{Cel i zakres pracy} + +\chapter{Zakres problematyki} + +\chapter{Koncepcja rozwi\xB1zania} + +\chapter{Implementacja} +\section{Stosowane narz\xEAdzia} + +\subsection{Przy pisaniu projektu} +\begin{description} + \item[gcc] Wieloplatformowy zestaw kompilator\xF3w. W szczeg\xF3lno\xB6ci u\xBFywany by\xB3 kompilator j\xEAzyka C++~--- gcc-c++ w wersji 4.2.\\\url{http://gcc.gnu.org/} + \item[gdb] Wieloplatformowy \gls{debugger} w wersji 6.6.\\\url{http://www.gnu.org/software/gdb/} + \item[Qt] Zestaw bibliotek firmy Trolltech\textsuperscript{\textregistered} do wieloplatformowego tworzenia oprogramowania, w szczeg\xF3lno\xB6ci do tworzenia \ac{GUI} o natywnym, dla danej platoformy, wygl\xB1dzie. Biblioteki te zawieraj\xB1 szerok\xB1 gam\xEA klas og\xF3lnego zastosowania, oraz w\xB3asny system kompilacji. U\xBFyto wersji 4.2.\\\url{http://www.trolltech.com/products/qt/} + \item[Vim] Niezwykle rozszerzalny, wieloplatformowy edytor tekstu (i nie tylko) z szerok\xB1 gam\xB1 wtyczek do pracy z niemal\xBFe dowolnym typem plik\xF3w. Stanowi\xB3 na zmian\xEA \ac{IDE}, \gls{debugger} oraz program do sk\xB3adu tekstu. Pisz\xB1cy te s\xB3owa pozwoli sobie w tym miejscu na drobn\xB1 reklam\xEA, gdy\xBF przekonany jeset, i\xBF interfejs vim-a, b\xEAd\xB1cy powodem wielu nieprzespanych nocy pocz\xB1tkuj\xB1cych u\xBFytkownik\xF3w, przy odrobinie wprawy i nauki pozwoli\xB3 zaoszcz\xEAdzi\xE6 godziny pracy. U\xBFyto wersji 7.0.\\\url{http://www.vim.org/} +\end{description} + +\subsection{Przy pisaniu pracy} +\begin{description} + \item [AcrobatReader] Interpreter plik\xF3w pdf.\\\url{http://www.adobe.com/products/acrobat/readstep2.html}. + \item [aspell] Wolnodost\xEApny program do sprawdzania pisowni i gramatyki wraz ze s\xB3ownikami w wielu j\xEAzykach.\\\url{http://aspell.sourceforge.net/} + \item [Evince] Interpreter plik\xF3w pdf w \xB6rodowisku \gls{GNOME} na platformie Linux.\\\url{http://www.gnome.org/projects/evince/} + \item [GIMP] Program do tworzenia grafiki rastrowej i przekszta\xB3cania obraz\xF3w do formatu \ac{EPS} wykorzystywanego w \TeX{}ie.\\\url{http://www.gimp.org/} + \item [Inkspace] Program do tworzenia grafiki wektorowej, g\xB3\xF3wnie w formacie \ac{SVG}.\\\url{http://www.inkscape.org/} + \item [\TeX{}] \xA6rodowisko wieloplatformowego sk\xB3adania tekstu, wraz z zainstalowanym systemem mark \LaTeXe{}.\\\url{http://www.tug.org/} +\end{description} + +\section{Projekt} +\section{Plan test\xF3w} + +\chapter{Wyniki} + +\chapter{Zako\xF1czenie} + +% Bibliografia w zewn\xEAtrznym pliku w/g standardu natbib +\bibliographystyle{plain} +\bibliography{thesis} + +% indeksy i spisy +\printglosstex(acr) +\printglosstex(glo) + +\end{document} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <le...@us...> - 2007-01-04 09:32:55
|
Revision: 92 http://svn.sourceforge.net/qcell/?rev=92&view=rev Author: lessm Date: 2007-01-04 01:32:52 -0800 (Thu, 04 Jan 2007) Log Message: ----------- - 2d rendering have software rendering mode Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/basesources/Renderer.cpp Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-02 16:29:31 UTC (rev 91) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-04 09:32:52 UTC (rev 92) @@ -27,6 +27,8 @@ protected: QVector<SYMBOL> symbolsMap; QGLPixelBuffer *OGLpBuffer; + QImage *imageBuffer; + QPainter painter; bool discretValues; QVector<GLuint> primitives; @@ -57,7 +59,7 @@ bool resizeData(QVector<int> newSize, char *dataPointer=NULL, bool foreignDataPointer=0); void render(void); - QImage renderToQImage(void); + QImage renderToQImage(int zplane=-1); bool setSymbolColor(int index, QColor color); bool hideSymbol(int index); bool showSymbol(int index); Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-01-02 16:29:31 UTC (rev 91) +++ trunk/qcell/basesources/Renderer.cpp 2007-01-04 09:32:52 UTC (rev 92) @@ -49,18 +49,28 @@ QImage Renderer::render1D(void) { - QPainter painter(OGLpBuffer); + if(OGLpBuffer) + painter.begin(OGLpBuffer); + else + painter.begin(imageBuffer); for(int x=0;x<sizeX;++x) { painter.setPen(symbolsMap[getValueAt_i(x)].color); painter.drawPoint(x, 0); } - return OGLpBuffer->toImage(); + painter.end(); + if(OGLpBuffer) + return OGLpBuffer->toImage(); + + return *imageBuffer; } QImage Renderer::render2D(int zval) { - QPainter painter(OGLpBuffer); + if(OGLpBuffer) + painter.begin(OGLpBuffer); + else + painter.begin(imageBuffer); for(int y=0;y<sizeY;++y) { for(int x=0;x<sizeX;++x) @@ -69,7 +79,11 @@ painter.drawPoint(x, y); } } - return OGLpBuffer->toImage(); + painter.end(); + if(OGLpBuffer) + return OGLpBuffer->toImage(); + + return *imageBuffer; } QImage Renderer::render3D(void) @@ -140,21 +154,22 @@ { discretValues = 1; OGLpBuffer = NULL; - + imageBuffer = NULL; +// painter = NULL; - SYMBOL baseSymbols; - baseSymbols.hide = 1; - baseSymbols.primitiveID = 0; - addSymbol(baseSymbols); - setSymbolColor(0, QColor(0,0,0)); + 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)); + baseSymbols.hide = 0; + baseSymbols.primitiveID = 0; + addSymbol(baseSymbols); + setSymbolColor(1, QColor(255,255,255)); - translation.resize(3); - rotation.resize(3); + translation.resize(3); + rotation.resize(3); } Renderer::~Renderer() @@ -163,9 +178,17 @@ for(int i=0;i<primitives.size();++i) glDeleteLists(primitives[i], 1); + // if(painter) + // delete painter; + // painter = NULL; + if(OGLpBuffer) delete OGLpBuffer; OGLpBuffer = NULL; + + if(imageBuffer) + delete imageBuffer; + imageBuffer = NULL; } void Renderer::setDataType(baseDataTypes::DATA_TYPES type) @@ -193,9 +216,28 @@ 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; + + if(imageBuffer) + delete imageBuffer; + imageBuffer = new QImage(sizeX, 1, QImage::Format_RGB32); + //painter = new QPainter(imageBuffer); + + } return 1; } return 0; @@ -205,9 +247,28 @@ { 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; + + if(imageBuffer) + delete imageBuffer; + imageBuffer = new QImage(sizeX, sizeY, QImage::Format_RGB32); + //painter = new QPainter(imageBuffer); + } return 1; } return 0; @@ -215,7 +276,34 @@ bool Renderer::resizeData(int x, int y, int z, char *dataPointer, bool foreignDataPointer) { - return CalculationData::resizeData(x, y, z, dataPointer, foreignDataPointer); + + 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; + + if(imageBuffer) + delete imageBuffer; + imageBuffer = new QImage(sizeX, sizeY, QImage::Format_RGB32); + //painter = new QPainter(imageBuffer); + } + return 1; + } + return 0; } bool Renderer::resizeData(int x, int y, int z, int t, char *dataPointer, bool foreignDataPointer) @@ -260,7 +348,6 @@ { 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]); @@ -271,17 +358,25 @@ } } -QImage Renderer::renderToQImage(void) +QImage Renderer::renderToQImage(int zplane) { - switch(dimension) + if(zplane==-1) { - case 1: - return render1D(); - case 2: - return render2D(); - case 3: - return render3D(); + switch(dimension) + { + case 1: + return render1D(); + case 2: + return render2D(); + case 3: + return render3D(); + } } + else + { + if(dimension>1) + return render2D(zplane); + } return QImage(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 10:41:17
|
Revision: 93 http://svn.sourceforge.net/qcell/?rev=93&view=rev Author: dhubleizh Date: 2007-01-05 02:41:09 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - no Cass::Enum::value !!!!!!! Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/basesources/CalculationData.cpp trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/basesources/Neighbourhood.cpp Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-04 09:32:52 UTC (rev 92) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-05 10:41:09 UTC (rev 93) @@ -10,7 +10,7 @@ #include <QImage> #include <QPainter> #include <QObject> -#include <QtOpengl> +#include <QtOpenGL> struct SYMBOL { Modified: trunk/qcell/basesources/CalculationData.cpp =================================================================== --- trunk/qcell/basesources/CalculationData.cpp 2007-01-04 09:32:52 UTC (rev 92) +++ trunk/qcell/basesources/CalculationData.cpp 2007-01-05 10:41:09 UTC (rev 93) @@ -33,14 +33,14 @@ void * CalculationData::getAddressAt(int x, int y, int z, int t) { int dSize; - if(dataType==baseDataTypes::DATA_TYPES::NONE) + if(dataType==baseDataTypes::NONE) return NULL; return data + dataSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ); } CalculationData::CalculationData() { - dataType = baseDataTypes::DATA_TYPES::NONE; + dataType = baseDataTypes::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = 0; @@ -50,7 +50,7 @@ CalculationData::~CalculationData() { - dataType = baseDataTypes::DATA_TYPES::NONE; + dataType = baseDataTypes::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = 0; @@ -61,7 +61,7 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; case baseDataTypes::CHAR: @@ -86,16 +86,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::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::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, 0))); case baseDataTypes::FLOAT: @@ -135,16 +135,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, t))); case baseDataTypes::FLOAT: @@ -177,18 +177,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, 0, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, 0, 0, 0))) = (short)val; break; } @@ -198,18 +198,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, 0, 0))) = (short)val; break; } @@ -219,18 +219,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, 0))) = (short)val; break; } @@ -240,18 +240,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, t)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, t))) = (short)val; break; } @@ -261,22 +261,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, 0, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, 0, 0, 0))); } return 0.0; @@ -286,22 +286,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, 0, 0))); } return 0.0; @@ -311,22 +311,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, 0))); } return 0.0; @@ -336,22 +336,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, t))); } return 0.0; @@ -377,11 +377,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, 0, 0, 0))) = (float)val; break; } @@ -391,11 +391,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, 0, 0))) = (float)val; break; } @@ -405,11 +405,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, 0))) = (float)val; break; } @@ -419,11 +419,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, t))) = (float)val; break; } @@ -550,10 +550,10 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: return (sizeX * sizeY * sizeZ * sizeT)/8 + 1; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: switch(dimension) { case 1: @@ -566,7 +566,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(char); } - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: switch(dimension) { case 1: @@ -579,7 +579,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(double); } - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: switch(dimension) { case 1: @@ -592,7 +592,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(float); } - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: switch(dimension) { case 1: @@ -605,7 +605,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(int); } - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: switch(dimension) { case 1: Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-01-04 09:32:52 UTC (rev 92) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-01-05 10:41:09 UTC (rev 93) @@ -5,20 +5,20 @@ switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: + case LocalFunction::SUM: numElements = 1; for(int i=0;i<sumArguments.size();++i) numElements *= sumArguments[i].size() * (maxArgVal - 1) + 1; break; - case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH: + case LocalFunction::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::FUNCTION_TYPE::SWITCH: + case LocalFunction::SWITCH: numElements = numArg * maxArgVal; break; } @@ -32,7 +32,7 @@ int i, t, out; QVector<int> temp; - if(functionMode==LocalFunction::FUNCTION_TYPE::SCRIPT) + if(functionMode==LocalFunction::SCRIPT) return -1; temp.resize(maxArgVal); @@ -130,12 +130,12 @@ LocalFunction::LocalFunction() { - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; } LocalFunction::~LocalFunction() { - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; } void LocalFunction::init(int numberOfArguments, int alphabetSize) @@ -145,7 +145,7 @@ valueTable.clear(); sumArguments.clear(); freeArguments.clear(); - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; } void LocalFunction::addSumArguments(QVector<int> args) @@ -162,12 +162,12 @@ } if(freeArguments.size()==0) - functionMode = LocalFunction::FUNCTION_TYPE::SUM; + functionMode = LocalFunction::SUM; else if(freeArguments.size()==numArg) - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; else - functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH; + functionMode = LocalFunction::SUM_AND_SWITCH; } } @@ -184,12 +184,12 @@ freeArguments<<i; if(freeArguments.size()==0) - functionMode = LocalFunction::FUNCTION_TYPE::SUM; + functionMode = LocalFunction::SUM; else if(freeArguments.size()==numArg) - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; else - functionMode = LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH; + functionMode = LocalFunction::SUM_AND_SWITCH; } } @@ -198,13 +198,13 @@ sumArguments.clear(); freeArguments.clear(); valueTable.clear(); - functionMode = LocalFunction::FUNCTION_TYPE::SWITCH; + functionMode = LocalFunction::SWITCH; } void LocalFunction::setScript(QString scriptData) { script = scriptData; - functionMode = LocalFunction::FUNCTION_TYPE::SCRIPT; + functionMode = LocalFunction::SCRIPT; } void LocalFunction::setFunctonType(LocalFunction::FUNCTION_TYPE type) @@ -221,13 +221,13 @@ { switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: + case LocalFunction::SUM: return 1; - case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH: + case LocalFunction::SUM_AND_SWITCH: return freeArguments.size() + 1; - case LocalFunction::FUNCTION_TYPE::SWITCH: + case LocalFunction::SWITCH: return freeArguments.size(); } @@ -256,11 +256,11 @@ resizeValueTable(); switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: + case LocalFunction::SUM: valueTable[sum] = value; break; - case LocalFunction::FUNCTION_TYPE::SUM_AND_SWITCH: + case LocalFunction::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::FUNCTION_TYPE::SCRIPT) + if(functionMode==LocalFunction::SCRIPT) return -1; QVector<int> sums, freeArgs; @@ -342,7 +342,7 @@ switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SCRIPT: + case LocalFunction::SCRIPT: break; default: index = calculateSumsIndex(sums) + calculateSwitchIndex(freeArgs); @@ -357,12 +357,12 @@ double out = 0.0; switch(functionMode) { - case LocalFunction::FUNCTION_TYPE::SUM: + case LocalFunction::SUM: for (i=0;i<args.size();++i) out += args[i]; break; - case LocalFunction::FUNCTION_TYPE::SCRIPT: + case LocalFunction::SCRIPT: break; } Modified: trunk/qcell/basesources/Neighbourhood.cpp =================================================================== --- trunk/qcell/basesources/Neighbourhood.cpp 2007-01-04 09:32:52 UTC (rev 92) +++ trunk/qcell/basesources/Neighbourhood.cpp 2007-01-05 10:41:09 UTC (rev 93) @@ -282,22 +282,22 @@ dType = type; switch(dType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: dataSize = sizeof(char); break; - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: dataSize = sizeof(double); break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: dataSize = sizeof(float); break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: dataSize = sizeof(int); break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: dataSize = sizeof(short); break; } @@ -311,38 +311,38 @@ int i; switch(dType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: for(i=0;i<neighbourVector.size();++i) { neighbourVector[i].value.iValue = *((char *)(address + neighbourVector[i].offset)); } break; - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: for(i=0;i<neighbourVector.size();++i) { neighbourVector[i].value.dValue = *((double *)(address + neighbourVector[i].offset)); } break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: for(i=0;i<neighbourVector.size();++i) { neighbourVector[i].value.dValue = *((float *)(address + neighbourVector[i].offset)); } break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: for(i=0;i<neighbourVector.size();++i) { neighbourVector[i].value.iValue = *((int *)(address + neighbourVector[i].offset)); } break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: for(i=0;i<neighbourVector.size();++i) { neighbourVector[i].value.iValue = *((short *)(address + neighbourVector[i].offset)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 12:49:48
|
Revision: 98 http://svn.sourceforge.net/qcell/?rev=98&view=rev Author: dhubleizh Date: 2007-01-05 04:49:45 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - preliminary parsing out things - generic interfaces updated for parse out - started KI saving implementation Modified Paths: -------------- trunk/qcell/baseheaders/GenericParserPlugin.h trunk/qcell/baseheaders/interfaces.h trunk/qcell/basesources/GenericParserPlugin.cpp trunk/qcell/parsers/KI/KIParserPlugin.cpp trunk/qcell/parsers/KI/KIParserPlugin.h Modified: trunk/qcell/baseheaders/GenericParserPlugin.h =================================================================== --- trunk/qcell/baseheaders/GenericParserPlugin.h 2007-01-05 10:45:54 UTC (rev 97) +++ trunk/qcell/baseheaders/GenericParserPlugin.h 2007-01-05 12:49:45 UTC (rev 98) @@ -68,7 +68,7 @@ QString parse(const QByteArray content, const QString type, const QString subtype=""); - + QByteArray parseOut(QString content, const QString type, const QString subtype="") = 0; }; #endif Modified: trunk/qcell/baseheaders/interfaces.h =================================================================== --- trunk/qcell/baseheaders/interfaces.h 2007-01-05 10:45:54 UTC (rev 97) +++ trunk/qcell/baseheaders/interfaces.h 2007-01-05 12:49:45 UTC (rev 98) @@ -50,6 +50,9 @@ * @return A xml string containing the parsed data in common format */ virtual QString parse(const QByteArray content, const QString type, const QString subtype) = 0; + + virtual QByteArray parseOut(QString content, const QString type, const QString subtype) = 0; + }; Q_DECLARE_INTERFACE(ParserInterface, Modified: trunk/qcell/basesources/GenericParserPlugin.cpp =================================================================== --- trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-05 10:45:54 UTC (rev 97) +++ trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-05 12:49:45 UTC (rev 98) @@ -77,3 +77,50 @@ } +void GenericParserPlugin::parseOut(const QByteArray content, const QString type, const QString subtype) +{ + if(!supported_parser_types.contains(type)) + { + // Constructing supported parser types + QString types; + for(int i =0 ; i < supported_parser_types.count()-1; i++) + { + types.append(supported_parser_types[i]); + types.append(','); + + }; + types.append(supported_parser_types.last()); + + qDebug(tr("This plugin doesn't support saving type %1. It supports %2.") + .arg(type) + .arg(types) + .toAscii() + ); + + return; + } + else if(!supported_file_types.contains(subtype)){ + + // Constructing supported file types + QString subtypes; + for(int i =0 ; i < supported_file_types.count()-1; i++) + { + subtypes.append(supported_file_types[i]); + subtypes.append(','); + + }; + subtypes.append(supported_file_types.last()); + + qDebug(tr("This plugin doesn't support saving type %1. It supports %2.") + .arg(type) + .arg(subtypes) + .toAscii() + ); + + return; + + } + + return realParserOut(content, type, subtype); +} + Modified: trunk/qcell/parsers/KI/KIParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-05 10:45:54 UTC (rev 97) +++ trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-05 12:49:45 UTC (rev 98) @@ -136,5 +136,78 @@ return cd.createXmlHeader(); } +QByteArray KIParserPlugin::parseOut(QString content, const QString type, const QString subtype) +{ + // The resulting array to write to file by the backend + QByteArray result; + // Generic type to parse XML request + CalculationData cd; + // Number of dimensions we are dealing with + int dimensions; + + // Check if we can use the generic type from the XML string + if(!cd.setFromXmlString(&content)) + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + } + + dimensions = cd.getDimension(); + + /// @todo header + + switch (dimensions) + { + case 1: + { + for (int x = 0; x < cd.getDataSize(); x++) + { + result.append(cd.getValueAt_i(x)); + } + + break; + } + case 2: + { + for(int y = 0; y < cd.getSizeY(); y++) + { + for (int x = 0; x < cd.getSizeX(); x++) + { + result.append(cd.getValueAt_i(x,y)); + } + + result.append('\n'); + } + + break; + } + case 3: + { + for(int z = 0; z < cd.getSizeZ(); z++) + { + for (int y = 0; y < cd.getSizeY(); y++) + { + for (int x = 0; x < cd.getSizeX(); x++) + { + result.append(cd.getValueAt_d(x, y, z)); + } + + result.append('\n'); + } + + result.append('\n'); + } + + break; + } + default: + { + qDebug(tr("Unable to parse out Calculation Data: Wrong number of dimensions!").toAscii()); + return QByteArray(); + } + } + + return result; +} + Q_EXPORT_PLUGIN2(KIFileParser, KIParserPlugin) Modified: trunk/qcell/parsers/KI/KIParserPlugin.h =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-05 10:45:54 UTC (rev 97) +++ trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-05 12:49:45 UTC (rev 98) @@ -19,7 +19,7 @@ { protected: QString realParser(QByteArray content, QString type, QString subtype); - + QByteArray parseOut(QString content, const QString type, const QString subtype=""); public: KIParserPlugin(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 16:05:34
|
Revision: 100 http://svn.sourceforge.net/qcell/?rev=100&view=rev Author: dhubleizh Date: 2007-01-05 08:05:33 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - getNeighbours to save file Modified Paths: -------------- trunk/qcell/baseheaders/Neighbourhood.h trunk/qcell/basesources/Neighbourhood.cpp Modified: trunk/qcell/baseheaders/Neighbourhood.h =================================================================== --- trunk/qcell/baseheaders/Neighbourhood.h 2007-01-05 16:04:44 UTC (rev 99) +++ trunk/qcell/baseheaders/Neighbourhood.h 2007-01-05 16:05:33 UTC (rev 100) @@ -51,6 +51,7 @@ bool fromDomElement(QDomElement *xmlElement); QString toXmlString(); int getNeighbourNumber(void); + QVector<NContainer> getNeighbours(); bool getBoolValueOf(int index); int getIntValueOf(int index); double getDoubleValueOf(int index); Modified: trunk/qcell/basesources/Neighbourhood.cpp =================================================================== --- trunk/qcell/basesources/Neighbourhood.cpp 2007-01-05 16:04:44 UTC (rev 99) +++ trunk/qcell/basesources/Neighbourhood.cpp 2007-01-05 16:05:33 UTC (rev 100) @@ -261,6 +261,11 @@ return neighbourVector.size(); } +QVector<NContainer> Neighbourhood::getNeighbours() +{ + return QVector<NContainer>(neighbourVector); +} + bool Neighbourhood::getBoolValueOf(int index) { return neighbourVector[index].value.bValue; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 16:06:14
|
Revision: 101 http://svn.sourceforge.net/qcell/?rev=101&view=rev Author: dhubleizh Date: 2007-01-05 08:06:12 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - generic saving facilty (parsingOut) - KI parsingOut implementation Modified Paths: -------------- trunk/qcell/basesources/GenericParserPlugin.cpp trunk/qcell/parsers/KI/KIParserPlugin.cpp Modified: trunk/qcell/basesources/GenericParserPlugin.cpp =================================================================== --- trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-05 16:05:33 UTC (rev 100) +++ trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-05 16:06:12 UTC (rev 101) @@ -77,7 +77,7 @@ } -void GenericParserPlugin::parseOut(const QByteArray content, const QString type, const QString subtype) +QByteArray GenericParserPlugin::parseOut(const QString content, const QString type, const QString subtype) { if(!supported_parser_types.contains(type)) { @@ -97,7 +97,7 @@ .toAscii() ); - return; + return QByteArray(); } else if(!supported_file_types.contains(subtype)){ @@ -117,10 +117,10 @@ .toAscii() ); - return; + return QByteArray(); } - return realParserOut(content, type, subtype); + return parseOut(content, type, subtype); } Modified: trunk/qcell/parsers/KI/KIParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-05 16:05:33 UTC (rev 100) +++ trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-05 16:06:12 UTC (rev 101) @@ -142,8 +142,6 @@ QByteArray result; // Generic type to parse XML request CalculationData cd; - // Number of dimensions we are dealing with - int dimensions; // Check if we can use the generic type from the XML string if(!cd.setFromXmlString(&content)) @@ -151,11 +149,7 @@ qDebug(tr("Unable to parse out internal data!").toAscii()); } - dimensions = cd.getDimension(); - - /// @todo header - - switch (dimensions) + switch (cd.getDimension()) { case 1: { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 16:06:43
|
Revision: 102 http://svn.sourceforge.net/qcell/?rev=102&view=rev Author: dhubleizh Date: 2007-01-05 08:06:41 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - NParser Fucked inability to parseOut Modified Paths: -------------- trunk/qcell/parsers/N/NParserPlugin.cpp trunk/qcell/parsers/N/NParserPlugin.h trunk/qcell/visgui/MainWindow.cpp trunk/qcell/visgui/MainWindow.h trunk/qcell/visgui/MainWindow.ui Modified: trunk/qcell/parsers/N/NParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.cpp 2007-01-05 16:06:12 UTC (rev 101) +++ trunk/qcell/parsers/N/NParserPlugin.cpp 2007-01-05 16:06:41 UTC (rev 102) @@ -257,5 +257,59 @@ return N.toXmlString(); } +QByteArray NParserPlugin::parseOut(QString content, const QString type, const QString subtype) +{ + // The resulting array to write to file by the end backend + QByteArray result; + // Generic class for parsing out XMLString + Neighbourhood N; + QVector<NContainer> neighbours; + // Maximum found dimensions + int max_x, max_y,max_z; + // Needs to be set to 1, as there needs to be at least one of each + // dimensions for this implementation + max_x = max_y = max_z = 1; + + if(!N.fromXmlString(&content)) + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + } + + // Filetype and dimensions declaration + result.append('N'); + result.append(N.getDimension()); + result.append('\n'); + + // Sizes of dimensions + + //Od tego momentu le\xBF\xEA + + //Determin the maximum of each supported dimension + foreach(NContainer tmp, neighbours) + { + if(tmp.x > max_x) + { + max_x = tmp.x; + } + else if(tmp.y > max_y) + { + max_y = tmp.y; + } + else if (tmp.z > max_z) + { + max_z = tmp.z; + } + } + + // Construct a space of max_x x max_y x max_z filled with '-'; + // At least one is needed always, even when the rest of dimensions is 0 + QVector<QVector<QVector<char> > > table(max_z, QVector<QVector<char> >(max_y, QVector<char>(max_x, '-'))); + + foreach(NContainer tmp, neighbours) + { + + } +} + Q_EXPORT_PLUGIN2(NFileParser, NParserPlugin) Modified: trunk/qcell/parsers/N/NParserPlugin.h =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.h 2007-01-05 16:06:12 UTC (rev 101) +++ trunk/qcell/parsers/N/NParserPlugin.h 2007-01-05 16:06:41 UTC (rev 102) @@ -19,7 +19,7 @@ { protected: QString realParser(const QByteArray content, const QString type, const QString subtype); - + QByteArray parseOut(QString content, const QString type, const QString subtype); public: NParserPlugin(); Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-05 16:06:12 UTC (rev 101) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-05 16:06:41 UTC (rev 102) @@ -274,14 +274,114 @@ } +void MainWindow::callSaver(const QString filename, const QString type) +{ +// QFile file(filename); + QString XMLString; +// QString subtype = filename.section('.', -1); + QString subtype; + +// if (!file.open(QIODevice::Truncate | QIODevice::Text)) +// { +// qDebug(tr("Error opnening file %1.") +// .arg(filename) +// .toAscii() +// ); +// +// return; +// } + + if (type == "Neighbourhood") + { +// if (!neighbourhood_parsers.contains(subtype)) +// { +// qDebug(tr("The file extensions %1 isn't supported.") +// .arg(subtype) +// .toAscii() +// ); +// return; +// } + +// neighbourhood_parsers[subtype]->parseOut(neighbourhood->toXmlString(), type, subtype); + neighbourhood_parsers["N"]->parseOut("Kupa", "typ", "subtyp"); + + } + else if (type == "LocalFunction") + { + if (!function_parsers.contains(subtype)) + { + qDebug(tr("The file extensions %1 isn't supported.") + .arg(subtype) + .toAscii() + ); + return; + } + + qDebug("Przed"); + function_parsers[subtype]->parseOut(local_function->toXmlString(), type, subtype); + } + else if (type == "World") + { + if (!world_parsers.contains(subtype)) + { + qDebug(tr("The file extensions %1 isn't supported.") + .arg(subtype) + .toAscii() + ); + return; + } + + /// @todo Wait for toXmlString +// world_parsers[subtype]->parseOut(data.last().toXmlString(), type, subtype); + } + else + { + qDebug(tr("Unsupported file type to parse.").toAscii()); + return; + } +} + void MainWindow::setupEngine() { working = false; + iteration = 0; } -void MainWindow::oneStep() +void MainWindow::oneStep(int direction) { /// @todo Write oneStep + switch (direction) + { + case Forward: + { + if(iteration < (data.count()-1)) + { + /// @todo moving through the list + } + else + { + /// @todo processing + } + + iteration++; + break; + + } + case Back: + { + if(iteration == 0) + { + qDebug(tr("You cannot step back beyond the beginning of the experiment!").toAscii()); + return; + } + + /// @todo actuall going back + + iteration--; + } + + } + iterationLCD->display(iteration); } void MainWindow::stepForward(int step) @@ -327,6 +427,7 @@ void MainWindow::on_action_Back_activated() { /// @todo Handle back movement + oneStep( Back); } void MainWindow::on_action_Start_activated() @@ -358,6 +459,67 @@ void MainWindow::on_action_Restart_activated() { /// @todo Handle restarting the experiment - CalculationData backup = data.first(); + iteration = 0; + this->iterationLCD->display(iteration); + +// CalculationData backup = data.first(); } +void MainWindow::on_action_World_save_activated() +{ + if(world_parsers.count() == 0) + { + QMessageBox::warning( + /*parent*/ this, + /*title*/ tr("Plugins warning"), + /*message*/ tr("There are no plugins loaded to handle World saving.") + ); + + return; + + } + + QFileDialog fd( + /*parent*/ this, + /*cation*/ tr("Save World"), + /*dir*/ "." + ); + + fd.setAcceptMode(QFileDialog::AcceptSave); + fd.setFileMode(QFileDialog::AnyFile); + + QStringList filters; + QString filter; + // Add filter in format %{name} files (*.%{name}) + foreach(QString key, world_parsers.keys()) + { + // Don't shorten this, as it is made for translations + // purposes + filter = key + " " + tr("files") + " (*." + key + ")"; + filters << filter; + } + fd.setFilters(filters); + + fd.exec(); + + if(!fd.selectedFiles().isEmpty()) + { + callSaver(fd.selectedFiles().first(), "World"); + + } + +} + +void MainWindow::on_action_Neighbourhood_save_activated() +{ + qDebug("UngaBunga!!!!!"); + callSaver("A cokolwiek", "Neighbourhood"); + + +} + +void MainWindow::on_action_Function_save_activated() +{ + +} + Modified: trunk/qcell/visgui/MainWindow.h =================================================================== --- trunk/qcell/visgui/MainWindow.h 2007-01-05 16:06:12 UTC (rev 101) +++ trunk/qcell/visgui/MainWindow.h 2007-01-05 16:06:41 UTC (rev 102) @@ -41,6 +41,10 @@ void on_action_Function_activated(); void on_action_World_activated(); + void on_action_World_save_activated(); + void on_action_Neighbourhood_save_activated(); + void on_action_Function_save_activated(); + /// @todo not here! void on_action_Forward_activated(); void on_action_Back_activated(); @@ -55,9 +59,17 @@ void callParser(QString filename, QString type); + void callSaver(const QString filename, const QString type); /// @todo Not in here! + enum Direction + { + Forward = 1, + Back, + }; + bool working; + int iteration; QList<CalculationData> data; LocalFunction* local_function; @@ -66,7 +78,7 @@ void setupEngine(); - void oneStep(); + void oneStep(int direction = Forward); void stepForward(int step); void continousSteps(); Modified: trunk/qcell/visgui/MainWindow.ui =================================================================== --- trunk/qcell/visgui/MainWindow.ui 2007-01-05 16:06:12 UTC (rev 101) +++ trunk/qcell/visgui/MainWindow.ui 2007-01-05 16:06:41 UTC (rev 102) @@ -5,7 +5,7 @@ <rect> <x>0</x> <y>0</y> - <width>553</width> + <width>532</width> <height>538</height> </rect> </property> @@ -23,6 +23,59 @@ <property name="spacing" > <number>6</number> </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>321</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="iterationLabel" > + <property name="text" > + <string>Iteration</string> + </property> + </widget> + </item> + <item> + <widget class="QLCDNumber" name="iterationLCD" > + <property name="numDigits" > + <number>5</number> + </property> + <property name="segmentStyle" > + <enum>QLCDNumber::Flat</enum> + </property> + </widget> + </item> + </layout> + </item> </layout> </widget> <widget class="QMenuBar" name="mainMenubar" > @@ -30,10 +83,26 @@ <rect> <x>0</x> <y>0</y> - <width>553</width> + <width>532</width> <height>30</height> </rect> </property> + <widget class="QMenu" name="menu_Edit" > + <property name="title" > + <string>&Edit</string> + </property> + </widget> + <widget class="QMenu" name="menu_Experiment" > + <property name="title" > + <string>&Experiment</string> + </property> + <addaction name="action_Start" /> + <addaction name="action_Stop" /> + <addaction name="action_Restart" /> + <addaction name="separator" /> + <addaction name="action_Forward" /> + <addaction name="action_Back" /> + </widget> <widget class="QMenu" name="menu_Help" > <property name="title" > <string>&Help</string> @@ -41,11 +110,6 @@ <addaction name="separator" /> <addaction name="action_About" /> </widget> - <widget class="QMenu" name="menu_Edit" > - <property name="title" > - <string>&Edit</string> - </property> - </widget> <widget class="QMenu" name="menu_File" > <property name="title" > <string>&File</string> @@ -57,27 +121,25 @@ <property name="title" > <string>&Open</string> </property> + <addaction name="action_World" /> <addaction name="action_Neighbourhood" /> <addaction name="action_Function" /> - <addaction name="action_World" /> </widget> + <widget class="QMenu" name="menu_Save_experiment" > + <property name="title" > + <string>&Save experiment</string> + </property> + <addaction name="action_World_save" /> + <addaction name="action_Neighbourhood_save" /> + <addaction name="action_Function_save" /> + </widget> <addaction name="menu_Open" /> <addaction name="action_Open_experiment" /> <addaction name="action_Continiue_experiment" /> + <addaction name="menu_Save_experiment" /> <addaction name="separator" /> <addaction name="action_Quit" /> </widget> - <widget class="QMenu" name="menu_Experiment" > - <property name="title" > - <string>&Experiment</string> - </property> - <addaction name="action_Start" /> - <addaction name="action_Stop" /> - <addaction name="action_Restart" /> - <addaction name="separator" /> - <addaction name="action_Forward" /> - <addaction name="action_Back" /> - </widget> <addaction name="menu_File" /> <addaction name="menu_Edit" /> <addaction name="menu_Experiment" /> @@ -95,8 +157,8 @@ <addaction name="action_Stop" /> <addaction name="action_Restart" /> <addaction name="separator" /> + <addaction name="action_Back" /> <addaction name="action_Forward" /> - <addaction name="action_Back" /> </widget> <action name="action_Quit" > <property name="text" > @@ -212,6 +274,21 @@ <string>Iterates one setp back.</string> </property> </action> + <action name="action_World_save" > + <property name="text" > + <string>&World</string> + </property> + </action> + <action name="action_Neighbourhood_save" > + <property name="text" > + <string>&Neighbourhood</string> + </property> + </action> + <action name="action_Function_save" > + <property name="text" > + <string>&Function</string> + </property> + </action> </widget> <resources/> <connections/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-05 20:28:54
|
Revision: 103 http://svn.sourceforge.net/qcell/?rev=103&view=rev Author: dhubleizh Date: 2007-01-05 12:28:52 -0800 (Fri, 05 Jan 2007) Log Message: ----------- - added a bunch of get functions to LocalFucntion for getting out info needed when saving - written some almost complete saving function for FQTParserPlugin Modified Paths: -------------- trunk/qcell/baseheaders/LocalFunction.h trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.h Modified: trunk/qcell/baseheaders/LocalFunction.h =================================================================== --- trunk/qcell/baseheaders/LocalFunction.h 2007-01-05 16:06:41 UTC (rev 102) +++ trunk/qcell/baseheaders/LocalFunction.h 2007-01-05 20:28:52 UTC (rev 103) @@ -29,7 +29,7 @@ QVector< QVector<int> > sumArguments; QVector<int> freeArguments; FUNCTION_TYPE functionMode; - int numArg, maxArgVal, numElements; + int numArg, maxArgVal, numElements, maxRetVal; QString script; protected: @@ -53,7 +53,7 @@ LocalFunction(); ~LocalFunction(); - void init(int numberOfArguments, int alphabetSize); + void init(int numberOfArguments, int alphabetSize, int returnValues); // args is vector contein index of arguments to sum void addSumArguments(QVector<int> args); @@ -69,6 +69,10 @@ // method set type of function (normally function type is set automatically when setSumArguments, setProductArguments, setSwitchFunction or setScript methosd ar used) void setFunctonType(LocalFunction::FUNCTION_TYPE type); LocalFunction::FUNCTION_TYPE getFunctonType(void); + int getNumberOfArgs(); + int getAlphabetSize(); + int getMaxReturnValues(); + QVector<int> getSummedArguments(); int addFunctionValueArgumentsNumberRequest(void); Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-01-05 16:06:41 UTC (rev 102) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-01-05 20:28:52 UTC (rev 103) @@ -138,10 +138,11 @@ functionMode = LocalFunction::SWITCH; } -void LocalFunction::init(int numberOfArguments, int alphabetSize) +void LocalFunction::init(int numberOfArguments, int alphabetSize, int returnValues) { numArg = numberOfArguments; maxArgVal = alphabetSize; + maxRetVal = returnValues; valueTable.clear(); sumArguments.clear(); freeArguments.clear(); @@ -217,6 +218,26 @@ return functionMode; } +int LocalFunction::getNumberOfArgs() +{ + return maxArgVal; +} + +int LocalFunction::getAlphabetSize() +{ + return maxArgVal; +} + +int LocalFunction::getMaxReturnValues() +{ + return maxRetVal; +} + +QVector<int> LocalFunction::getSummedArguments() +{ + return sumArguments.first(); +} + int LocalFunction::addFunctionValueArgumentsNumberRequest(void) { switch(functionMode) Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-05 16:06:41 UTC (rev 102) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-05 20:28:52 UTC (rev 103) @@ -30,6 +30,9 @@ QMap<int, QVector<int> > results; // The maximum achivable sum of arguments int max_sum; + // After parsing the header one can determin how many possibilities does the + // free arguments post + int free_args_columns; // Generic class for generating XML LocalFunction lf; @@ -72,7 +75,6 @@ values_nr = tmp_split[1].toLong(); return_values_nr = tmp_split[2].toLong(); - max_sum = arguments_nr * (values_nr - 1); if((arguments_nr == 0) || (values_nr == 0) || (return_values_nr == 0)) { @@ -110,7 +112,7 @@ // Index of arguments gettins summed up lines[0] = lines[0].trimmed(); - format = QRegExp("^((\\d)+,){" + QString::number(arguments_nr-1) + "}(\\d)+$"); + format = QRegExp("^((\\d)+,){1-" + QString::number(arguments_nr-2) + "}(\\d)+$"); if(format.exactMatch(lines[0])) { int arg_index, arg_nr; @@ -137,6 +139,9 @@ arg_nr++; } + // Now we can calculate the maximal sum value + max_sum = arg_nr * (values_nr - 1); + free_args_columns = values_nr^arg_nr; lines.removeFirst(); line_nr++; @@ -154,7 +159,7 @@ // Main function parsing lines[0] = lines[0].trimmed(); - format = QRegExp("^(\\d)+:([0-9a-Z]){" + QString::number(arguments_nr-1) + "}[0-9a-Z]$"); + format = QRegExp("^(\\d)+:([0-9a-Z]){" + QString::number(free_args_columns-1) + "}[0-9a-Z]$"); QStringList tmp; int tmp_sum,value_index; QVector<int> tmp_values; @@ -228,15 +233,71 @@ line_nr++; } + // All possible permutations of values of free arguments in lexographical order + QVector<QVector<int> > permutations; + // setting the type of function lf.setFunctonType(LocalFunction::SUM); // setting the number of arguments the function will take // and the alphabet size - lf.init(arguments_nr, values_nr); + lf.init(arguments_nr, values_nr, return_values_nr); + + // Set the arguments numbers tu sum + lf.setSumArguments(arguments); + /// @todo How the fuck set FQT function parameters eh? + foreach(int sum, results.keys()) + { + + } return lf.toXmlString(); } + +QByteArray FQTParserPlugin::parseOut(QString content, const QString type, const QString subtype) +{ + // The resulting array to write to file by the backend + QByteArray result; + // Generic type to parse XML request + LocalFunction lf; + + // Check if we can use the generic type from the XML string + if(!lf.fromXmlString(&content)); + { + qDebug(tr("Unable to parse out internal data!").toAscii()); + } + + // Header + result.append("FQT"); + result.append('\n'); + + // Second line + // Num of args + result.append(lf.getNumberOfArgs()); + result.append(' '); + // Num of arg values + result.append(lf.getAlphabetSize()); + result.append(' '); + // Num of return values + result.append(lf.getMaxReturnValues()); + result.append(' '); + result.append('\n'); + + // Third line - summed args + foreach(int arg, lf.getSummedArguments()) + { + result.append(QString::number(arg)[0].toAscii()); + result.append(','); + } + // Get rid of the penging `,' + result.chop(1); + result.append('\n'); + + /// @todo Main function writing + + return result; +} + Q_EXPORT_PLUGIN2(FQTFileParser, FQTParserPlugin) Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.h =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.h 2007-01-05 16:06:41 UTC (rev 102) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.h 2007-01-05 20:28:52 UTC (rev 103) @@ -21,7 +21,7 @@ { protected: QString realParser(const QByteArray content, const QString type, const QString subtype); - + QByteArray parseOut(QString content, const QString type, const QString subtype=""); public: FQTParserPlugin(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-06 15:21:41
|
Revision: 106 http://svn.sourceforge.net/qcell/?rev=106&view=rev Author: dhubleizh Date: 2007-01-06 07:21:38 -0800 (Sat, 06 Jan 2007) Log Message: ----------- - preliminary debugged and checked N in parsing - uncommented some test things in MainWindow - bugs during parsing in MainWindow Modified Paths: -------------- trunk/qcell/parsers/N/NParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/parsers/N/NParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.cpp 2007-01-06 13:39:10 UTC (rev 105) +++ trunk/qcell/parsers/N/NParserPlugin.cpp 2007-01-06 15:21:38 UTC (rev 106) @@ -35,6 +35,8 @@ // Basic sanity check result = QString(content).split('\n'); + // Trim empty last line + result.removeLast(); if(result.count() < 4) { qDebug(tr("The input file is to short!").toAscii()); @@ -64,14 +66,14 @@ format = QRegExp("^([0-9a-Z] ){" + QString::number(dimensions) + "}[0-9a-Z]$"); if(format.exactMatch(result[0])) { - neighbours_nr = result[0][result.count()].toAscii() - '0'; - columns = result[0][0].toAscii() - '0'; + neighbours_nr = result[0][result[0].count()-1].toAscii() - '0'; + lines = (int)result[0][0].toAscii() - '0'; - if(result.count() > 3 ) + if(result[0].count() > 3 ) { - lines = result[0][2].toAscii() - '0'; + columns = result[0][2].toAscii() - '0'; - if(result.count() == 7) + if(result[0].count() == 7) { walls = result[0][4].toAscii() - '0'; } @@ -101,7 +103,7 @@ // Zero point coordinates result[0] = result[0].trimmed(); - format.setPattern("^(([0-9a-Z] ){" + QString::number(dimensions-1) + "}[0-9a-Z]$"); + format.setPattern("^([0-9a-Z] ){" + QString::number(dimensions-1) + "}[0-9a-Z]$"); if(format.exactMatch(result[0])) { pos0_x = result[0][0].toAscii() - '0'; @@ -135,10 +137,12 @@ .arg(format.pattern()) .toAscii() ); + + return QString(); } // Further sanity check - if(result.count() != lines * walls) + if(result.count() != (lines * walls)) { qDebug(tr("The number of lines in file doesn't correspond to declared dimensions sizes.").toAscii()); return QString(); @@ -148,6 +152,7 @@ result[0] = result[0].trimmed(); format.setPattern("^([\\-1-9a-Z]){" + QString::number(columns) + "}$"); int tmp_neighbour; + QVector<int> coordinates(3,0); foreach(QString line, result) { x = 0; @@ -165,18 +170,18 @@ // Adding to a map is so much cool, as we can get the values sorted // instatly - foreach(QChar sign, result.first()) + foreach(QChar sign, line) { if(sign.toAscii() != '-') { - QVector<int> coordinates(x); + coordinates[0] = x - pos0_x; if(dimensions > 1) { - coordinates.append(y); + coordinates[1] = y - pos0_y; if(dimensions == 3) { - coordinates.append(z); + coordinates[2] = z - pos0_z; } } @@ -193,10 +198,10 @@ return QString(); } - neighbours[sign.toAscii()-'0'] = coordinates; + neighbours[tmp_neighbour] = coordinates; // Sanity check - number of neighbours exceeding declared one - if(neighbours_nr > neighbours.count()) + if(neighbours.count() > neighbours_nr) { qDebug(tr("In line %1 the number of neighbours (%2) exceeded the one declared in the header (%3).") .arg(line_nr) @@ -254,6 +259,7 @@ N.addNeighbour(difs); } + qDebug(N.toXmlString().toAscii()); return N.toXmlString(); } Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-06 13:39:10 UTC (rev 105) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-06 15:21:38 UTC (rev 106) @@ -226,6 +226,8 @@ ); } + file_content = file.readAll(); + if (type == "Neighbourhood") { if (!neighbourhood_parsers.contains(subtype)) @@ -276,34 +278,32 @@ void MainWindow::callSaver(const QString filename, const QString type) { -// QFile file(filename); + QFile file(filename); QString XMLString; -// QString subtype = filename.section('.', -1); - QString subtype; + QString subtype = filename.section('.', -1); -// if (!file.open(QIODevice::Truncate | QIODevice::Text)) -// { -// qDebug(tr("Error opnening file %1.") -// .arg(filename) -// .toAscii() -// ); -// -// return; -// } + if (!file.open(QIODevice::Truncate | QIODevice::Text)) + { + qDebug(tr("Error opnening file %1.") + .arg(filename) + .toAscii() + ); + return; + } + if (type == "Neighbourhood") { -// if (!neighbourhood_parsers.contains(subtype)) -// { -// qDebug(tr("The file extensions %1 isn't supported.") -// .arg(subtype) -// .toAscii() -// ); -// return; -// } + if (!neighbourhood_parsers.contains(subtype)) + { + qDebug(tr("The file extensions %1 isn't supported.") + .arg(subtype) + .toAscii() + ); + return; + } -// neighbourhood_parsers[subtype]->parseOut(neighbourhood->toXmlString(), type, subtype); - neighbourhood_parsers["N"]->parseOut("Kupa", "typ", "subtyp"); + neighbourhood_parsers[subtype]->parseOut(neighbourhood->toXmlString(), type, subtype); } else if (type == "LocalFunction") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-07 12:32:34
|
Revision: 111 http://svn.sourceforge.net/qcell/?rev=111&view=rev Author: dhubleizh Date: 2007-01-07 04:32:30 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - typo in CalculationData - nasty hack in Calculating data enablign createXmlHeader (NASTY!) - KIParserPlugin debugged (1-3d, save; load) - MainWindow is able to call proper parser(in and out) and finally save every format Modified Paths: -------------- trunk/qcell/basesources/CalculationData.cpp trunk/qcell/parsers/KI/KIParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp trunk/qcell/visgui/MainWindow.h Modified: trunk/qcell/basesources/CalculationData.cpp =================================================================== --- trunk/qcell/basesources/CalculationData.cpp 2007-01-06 20:18:51 UTC (rev 110) +++ trunk/qcell/basesources/CalculationData.cpp 2007-01-07 12:32:30 UTC (rev 111) @@ -531,7 +531,7 @@ return sizeX; } -int CalculationData::getSizeY(void) +int CalculationData::getSizeY(void) { return sizeY; } @@ -645,7 +645,8 @@ QString CalculationData::createXmlHeader(void) { - return QString(); + /// @todo The nasties thing to do - change that!!! + return QString::number((int)this); } bool CalculationData::setFromXmlString(QString *xmlString) Modified: trunk/qcell/parsers/KI/KIParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-06 20:18:51 UTC (rev 110) +++ trunk/qcell/parsers/KI/KIParserPlugin.cpp 2007-01-07 12:32:30 UTC (rev 111) @@ -7,6 +7,7 @@ */ #include "KIParserPlugin.h" +#include <QDebug> KIParserPlugin::KIParserPlugin() { @@ -30,7 +31,10 @@ // dimensions and how large it is, so we need to track counts QVector<QVector<QVector <int> > > world; // Generic type for outputing XML strings - CalculationData cd; + CalculationData* cd = new CalculationData(); + // Maximum dimensions values + int max_x, max_y, max_z; + max_x = max_y = max_z = 0; // Basic sanity check lines = QString(content).split('\n'); @@ -53,7 +57,6 @@ } else { - // A new verse for each line world.last().append(QVector<int>()); // Reset columnt ocunter for each line @@ -84,9 +87,11 @@ // Keep track of line nr line_nr++; } + // Pending line + world.remove(world.count()-1); // Char is the maximum value we can get from this file type - cd.setDataType(baseDataTypes::CHAR); + cd->setDataType(baseDataTypes::CHAR); // no Z dimenzion if ( world.count() == 1 ) @@ -94,20 +99,28 @@ // no Y dimension if (world.first().count() == 1 ) { + cd->resizeData(world.first().first().count()); for (int i = 0; i < world.first().first().count(); i++) { - cd.setValueAt(world.first().first()[i], i); + cd->setValueAt(world.first().first()[i], i); } } // X and Y dimensions present else { + max_y = world.first().count(); + cd->resizeData(max_x, max_y); for ( int i = 0; i < world.first().count(); i++ ) { for ( int j = 0; j < world.first().first().count(); j++ ) { - cd.setValueAt(world.first()[i][j], j, i); + if (world.first()[i].count() > max_x) + { + max_x = world.first()[i].count(); + cd->resizeData(max_x, max_y); + } + cd->setValueAt(world.first()[i][j], j, i); } } @@ -118,13 +131,27 @@ // X, Y and Z present else { + max_z = world.count(); + cd->resizeData(max_x, max_y, max_z); for ( int i = 0; i < world.count(); i++ ) { - for ( int j = 0; j < world.first().count(); j++ ) + if (world[i].count() > max_y) { - for ( int k; k < world.first().first().count(); k++ ) + max_y = world[i].count(); + cd->resizeData(max_x, max_y, max_z); + } + + for ( int j = 0; j < world[i].count(); j++ ) + { + for ( int k = 0; k < world[i][j].count(); k++ ) { - cd.setValueAt(world[i][j][k], k, j, i); + if (world[i][j].count() > max_x) + { + max_x = world[i][j].count(); + cd->resizeData(max_x, max_y, max_z); + } + + cd->setValueAt(world[i][j][k], k, j, i); } } @@ -133,7 +160,7 @@ } - return cd.createXmlHeader(); + return cd->createXmlHeader(); } QByteArray KIParserPlugin::parseOut(QString content, const QString type, const QString subtype) @@ -141,32 +168,35 @@ // The resulting array to write to file by the backend QByteArray result; // Generic type to parse XML request - CalculationData cd; + CalculationData* cd = (CalculationData*)content.toInt(); // Check if we can use the generic type from the XML string - if(!cd.setFromXmlString(&content)) + /// @todo Unhack this! +// if(!cd.setFromXmlString(&content)) + if(cd == NULL) { qDebug(tr("Unable to parse out internal data!").toAscii()); } - switch (cd.getDimension()) + switch (cd->getDimension()) { case 1: { - for (int x = 0; x < cd.getDataSize(); x++) + for (int x = 0; x < cd->getSizeX(); x++) { - result.append(cd.getValueAt_i(x)); + result.append((char)('0' + cd->getValueAt_i(x))); } + result.append('\n'); break; } case 2: { - for(int y = 0; y < cd.getSizeY(); y++) + for(int y = 0; y < cd->getSizeY(); y++) { - for (int x = 0; x < cd.getSizeX(); x++) + for (int x = 0; x < cd->getSizeX(); x++) { - result.append(cd.getValueAt_i(x,y)); + result.append((char)('0' + cd->getValueAt_i(x,y))); } result.append('\n'); @@ -176,13 +206,13 @@ } case 3: { - for(int z = 0; z < cd.getSizeZ(); z++) + for(int z = 0; z < cd->getSizeZ(); z++) { - for (int y = 0; y < cd.getSizeY(); y++) + for (int y = 0; y < cd->getSizeY(); y++) { - for (int x = 0; x < cd.getSizeX(); x++) + for (int x = 0; x < cd->getSizeX(); x++) { - result.append(cd.getValueAt_d(x, y, z)); + result.append((char)('0' + cd->getValueAt_d(x, y, z))); } result.append('\n'); @@ -190,6 +220,8 @@ result.append('\n'); } + // Remove last pending '\n' + result.chop(1); break; } Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-06 20:18:51 UTC (rev 110) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-07 12:32:30 UTC (rev 111) @@ -272,11 +272,9 @@ return; } -// data.clear(); /// @todo Fix that! -// CalculationData* tmp_cd = new CalculationData(); -// data.append(*tmp_cd); - world_parsers[subtype]->parse(file_content, type, subtype); + data.clear(); + data.append((CalculationData*)world_parsers[subtype]->parse(file_content, type, subtype).toInt()); } else { @@ -327,8 +325,7 @@ return; } - qDebug("Przed"); - function_parsers[subtype]->parseOut(local_function->toXmlString(), type, subtype); + file.write(function_parsers[subtype]->parseOut(local_function->toXmlString(), type, subtype)); } else if (type == "World") { @@ -342,7 +339,7 @@ } /// @todo Wait for toXmlString -// world_parsers[subtype]->parseOut(data.last().toXmlString(), type, subtype); + file.write(world_parsers[subtype]->parseOut(data.last()->createXmlHeader(), type, subtype)); } else { @@ -509,13 +506,16 @@ filters << filter; } fd.setFilters(filters); + /// @todo Forge some real suffix adding + fd.setDefaultSuffix("KI"); - fd.exec(); - - if(!fd.selectedFiles().isEmpty()) + if(fd.exec()) { - callSaver(fd.selectedFiles().first(), "World"); + if(!fd.selectedFiles().isEmpty()) + { + callSaver(fd.selectedFiles().first(), "World"); + } } } Modified: trunk/qcell/visgui/MainWindow.h =================================================================== --- trunk/qcell/visgui/MainWindow.h 2007-01-06 20:18:51 UTC (rev 110) +++ trunk/qcell/visgui/MainWindow.h 2007-01-07 12:32:30 UTC (rev 111) @@ -22,9 +22,6 @@ #include <Neighbourhood.h> #include <Renderer.h> -#include <iostream> -using namespace std; - typedef QString (*parser_fun)(QByteArray content, QString type, QString subtype); class MainWindow : public QMainWindow, private Ui::MainWindow @@ -71,7 +68,7 @@ bool working; int iteration; - QList<CalculationData> data; + QList<CalculationData*> data; LocalFunction* local_function; Neighbourhood* neighbourhood; Renderer* renderer; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <le...@us...> - 2007-01-07 19:07:35
|
Revision: 113 http://svn.sourceforge.net/qcell/?rev=113&view=rev Author: lessm Date: 2007-01-07 11:07:33 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - simulationWindow class can edit Symbols Modified Paths: -------------- trunk/qcell/baseheaders/BaseDataTypes.h trunk/qcell/baseheaders/Renderer.h trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/baseheaders/simulationwindow.ui trunk/qcell/basesources/Renderer.cpp trunk/qcell/basesources/simulationwindow.cpp Modified: trunk/qcell/baseheaders/BaseDataTypes.h =================================================================== --- trunk/qcell/baseheaders/BaseDataTypes.h 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/baseheaders/BaseDataTypes.h 2007-01-07 19:07:33 UTC (rev 113) @@ -3,7 +3,7 @@ #include <QObject> -class baseDataTypes : QObject +class baseDataTypes : public QObject { Q_OBJECT private: Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-07 19:07:33 UTC (rev 113) @@ -29,6 +29,7 @@ private: protected: QVector<SYMBOL> symbolsMap; + GLuint greed; QGLPixelBuffer *OGLpBuffer; QImage *imageBuffer; QPainter painter; @@ -38,6 +39,7 @@ QVector<double> rotation, translation; GLuint generateBox(void); + void generateGreed(void); QImage render1D(void); QImage render2D(int zval=0); @@ -70,8 +72,11 @@ bool hideSymbol(int index); bool showSymbol(int index); bool setSymbolPrimitive(int index, int primitiveId); + void setSymbol(int index, QChar symbol); void addSymbol(SYMBOL symbol); SYMBOL getSymbol(int index); + int getSymbolCount(void); + void removeSymbol(void); void setTranslation(float x, float y, float z); void setRotation(float x, float y, float z); @@ -84,6 +89,9 @@ void translateZ(float trans); CalculationData * getStorage(void); + +protected slots: + void resizeDataEvent(void); }; #endif Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 19:07:33 UTC (rev 113) @@ -11,6 +11,7 @@ #include <QPixmap> #include <QGraphicsPixmapItem> #include <QProgressDialog> +#include <QColorDialog> #include "ui_simulationwindow.h" #include "../baseheaders/Renderer.h" @@ -31,6 +32,7 @@ QTableWidget *table2D; QTableWidget *table1D; QTableWidget *table1DMem; + QTableWidget *symbolTable; bool table2DUpdateRequest, table1DUpdateRequest, graph2DUpdateRequest; @@ -52,6 +54,7 @@ void update2DGraph(void); void update1DTable(void); void update1DTableMem(void); + void updateSymbolTable(void); public: simulationWindow(QWidget *parent = 0); @@ -67,6 +70,13 @@ void GridView2DRepaint(void); void GridView1DRepaint(void); void GridView1DMemClear(void); + + void symbolTableChange(int row, int column); + void symbolTableColorChange(int row, int column); + + void addSymbol(void); + void removeSymbol(void); + signals: void progressUpdate(int val); Modified: trunk/qcell/baseheaders/simulationwindow.ui =================================================================== --- trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 19:07:33 UTC (rev 113) @@ -20,7 +20,7 @@ <enum>QTabWidget::Rounded</enum> </property> <property name="currentIndex" > - <number>3</number> + <number>1</number> </property> <widget class="QWidget" name="view3D" > <attribute name="title" > @@ -110,7 +110,7 @@ </widget> <widget class="QWidget" name="view1D" > <attribute name="title" > - <string>1D View</string> + <string>1D Text View</string> </attribute> <widget class="QRadioButton" name="Grid1DSybmols" > <property name="geometry" > @@ -168,6 +168,37 @@ </property> </widget> </widget> + <widget class="QWidget" name="symbolConfig" > + <attribute name="title" > + <string>Symbols Configuration</string> + </attribute> + <widget class="QPushButton" name="removeSymbol" > + <property name="geometry" > + <rect> + <x>110</x> + <y>10</y> + <width>90</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>Remove Symbol</string> + </property> + </widget> + <widget class="QPushButton" name="addSymbol" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>90</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>Add Symbol</string> + </property> + </widget> + </widget> </widget> </widget> <layoutdefault spacing="6" margin="11" /> Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/basesources/Renderer.cpp 2007-01-07 19:07:33 UTC (rev 113) @@ -47,6 +47,68 @@ return list; } +void Renderer::generateGreed(void) +{ + + float mov; + if(greed>0) + glDeleteLists(greed, 1); + greed = glGenLists(1); + glNewList(greed, GL_COMPILE); + + glBegin(GL_LINES); + glColor3f(1.0f, 1.0f, 1.0f); + + float mx = (float)getStorage()->getSizeX() / 2.0f, my = (float)getStorage()->getSizeY() / 2.0f, mz = (float)getStorage()->getSizeZ() / 2.0f; + + mov = (float)getStorage()->getSizeY(); + for(int y=0;y<getStorage()->getSizeY() + 1;++y) + { + glVertex3f(-(float)getStorage()->getSizeX() - 1.0f, (float)(y * 2) - mov + 1.0f, -(float)(getStorage()->getSizeZ()) - mz -1.0f); + glVertex3f( (float)getStorage()->getSizeX() - 1.0f, (float)(y * 2) - mov + 1.0f, -(float)(getStorage()->getSizeZ()) - mz -1.0f); + } + + mov = (float)getStorage()->getSizeX(); + for(int x=0;x<getStorage()->getSizeX() + 1; ++x) + { + glVertex3f((float)(x * 2) - mov -1.0f, -(float)getStorage()->getSizeY() + 1.0f, -(float)(getStorage()->getSizeZ()) - mz -1.0f); + glVertex3f((float)(x * 2) - mov -1.0f, (float)getStorage()->getSizeY() + 1.0f, -(float)(getStorage()->getSizeZ()) - mz -1.0f); + } + + + mov = (float)getStorage()->getSizeZ(); + for(int z=0;z<getStorage()->getSizeZ() + 1;++z) + { + glVertex3f(-(float)getStorage()->getSizeX() -1.0f, (float)(getStorage()->getSizeY()) + my + 1.0f, (float)(z * 2) - mov -1.0f); + glVertex3f( (float)getStorage()->getSizeX() -1.0f, (float)(getStorage()->getSizeY()) + my + 1.0f, (float)(z * 2) - mov -1.0f); + } + + mov = (float)getStorage()->getSizeX(); + for(int x=0;x<getStorage()->getSizeX() + 1; ++x) + { + glVertex3f((float)(x * 2) - mov -1.0f, (float)(getStorage()->getSizeY()) + my + 1.0f, -(float)getStorage()->getSizeZ() -1.0f); + glVertex3f((float)(x * 2) - mov -1.0f, (float)(getStorage()->getSizeY()) + my + 1.0f, (float)getStorage()->getSizeZ() -1.0f); + } + + + mov = (float)getStorage()->getSizeY(); + for(int y=0;y<getStorage()->getSizeY() + 1;++y) + { + glVertex3f(-(float)getStorage()->getSizeX() - mx -1.0f, (float)(y * 2) - mov + 1.0f, -(float)(getStorage()->getSizeZ()) -1.0f); + glVertex3f(-(float)getStorage()->getSizeX() - mx -1.0f, (float)(y * 2) - mov + 1.0f, (float)(getStorage()->getSizeZ()) -1.0f); + } + + mov = (float)getStorage()->getSizeZ(); + for(int z=0;z<getStorage()->getSizeZ() + 1;++z) + { + glVertex3f(-(float)getStorage()->getSizeX() - mx -1.0f, -(float)(getStorage()->getSizeY()) + 1.0f, (float)(z * 2) - mov -1.0f); + glVertex3f(-(float)getStorage()->getSizeX() - mx -1.0f, (float)(getStorage()->getSizeY()) + 1.0f, (float)(z * 2) - mov -1.0f); + } + + glEnd(); + glEndList(); +} + QImage Renderer::render1D(void) { if(OGLpBuffer) @@ -127,6 +189,8 @@ void Renderer::paintGL() { + if(greed==0) + generateGreed(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); @@ -169,6 +233,10 @@ translation.resize(3); rotation.resize(3); + + greed = 0; + + connect(&storage, SIGNAL(dataResized()), SLOT(resizeDataEvent())); } Renderer::~Renderer() @@ -177,6 +245,8 @@ for(int i=0;i<primitives.size();++i) glDeleteLists(primitives[i], 1); + glDeleteLists(greed, 1); + // if(painter) // delete painter; // painter = NULL; @@ -310,6 +380,9 @@ { int counter = 0, index; float mx = -(float)storage.getSizeX(), my = -(float)storage.getSizeY(), mz = -(float)storage.getSizeZ(); + glDisable(GL_LIGHTING); + glCallList(greed); + glEnable(GL_LIGHTING); for(int z=0;z<storage.getSizeZ();++z) { for(int y=storage.getSizeY();y>0;--y) @@ -419,6 +492,11 @@ return 0; } +void Renderer::setSymbol(int index, QChar symbol) +{ + symbolsMap[index].textSybmol = symbol; +} + void Renderer::addSymbol(SYMBOL symbol) { symbolsMap<<symbol; @@ -429,6 +507,17 @@ return symbolsMap[index]; } +int Renderer::getSymbolCount(void) +{ + return symbolsMap.size(); +} + +void Renderer::removeSymbol(void) +{ + if(symbolsMap.size()>2) + symbolsMap.remove(symbolsMap.size()-1); +} + void Renderer::setTranslation(float x, float y, float z) { translation[0] = x; @@ -476,4 +565,12 @@ CalculationData * Renderer::getStorage(void) { return &storage; +} + +void Renderer::resizeDataEvent(void) +{ + + if(greed>0) + glDeleteLists(greed, 1); + greed = 0; } \ No newline at end of file Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-01-07 13:25:06 UTC (rev 112) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-01-07 19:07:33 UTC (rev 113) @@ -78,8 +78,8 @@ 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); + ui.symbolConfig->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); @@ -90,6 +90,9 @@ table1DMem->move(0, 150); table1DMem->resize(ui.view1D->width() - 7, ui.view1D->height() - 157); + + symbolTable->move(0, 35); + symbolTable->resize(ui.symbolConfig->width() - 7, ui.symbolConfig->height() -42); } void simulationWindow::paintEvent(QPaintEvent * event) @@ -106,7 +109,15 @@ } if(ui.view1D->isVisible() && table1DUpdateRequest) + { update1DTable(); + table1DUpdateRequest = 0; + } + + if(ui.symbolConfig->isVisible()) + { + updateSymbolTable(); + } } void simulationWindow::update2DTable(void) @@ -139,6 +150,7 @@ 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->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); item->setTextAlignment(Qt::AlignCenter); item->setTextColor(Qt::black); if(ui.Grig2DColors->isChecked()) @@ -232,6 +244,7 @@ { item = new QTableWidgetItem(tr("%1").arg(renderer->getStorage()->getValueAt_i(x))); } + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); item->setTextAlignment(Qt::AlignCenter); item->setTextColor(Qt::black); @@ -299,6 +312,75 @@ table1DMem->removeRow(0); } +void simulationWindow::updateSymbolTable(void) +{ + QTableWidgetItem *item; + SYMBOL temp; + if(symbolTable->rowCount() != renderer->getSymbolCount()) + { + symbolTable->setRowCount(renderer->getSymbolCount()); + for(int i=0;i<symbolTable->rowCount();++i) + { + temp = renderer->getSymbol(i); + item = new QTableWidgetItem; + item->setTextAlignment(Qt::AlignCenter); + item->setFlags(0); + item->setText(tr("%1").arg(i)); + symbolTable->setItem(i, 0, item); + + item = new QTableWidgetItem; + item->setTextAlignment(Qt::AlignCenter); + item->setText(tr("%1").arg(temp.textSybmol)); + symbolTable->setItem(i, 1, item); + + item = new QTableWidgetItem; + item->setTextAlignment(Qt::AlignCenter); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + item->setBackgroundColor(temp.color); + symbolTable->setItem(i, 2, item); + + item = new QTableWidgetItem; + item->setTextAlignment(Qt::AlignCenter); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + item->setText(tr("%1").arg(temp.primitiveID)); + symbolTable->setItem(i, 3, item); + + item = new QTableWidgetItem; + item->setTextAlignment(Qt::AlignCenter); + item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); + if(temp.hide) + item->setCheckState(Qt::Checked); + else + item->setCheckState(Qt::Unchecked); + symbolTable->setItem(i, 4, item); + } + } + else + { + for(int i=0;i<renderer->getSymbolCount();++i) + { + temp = renderer->getSymbol(i); + item = symbolTable->item(i, 0); + item->setText(tr("%1").arg(i)); + + item = symbolTable->item(i, 1); + item->setText(tr("%1").arg(temp.textSybmol)); + + item = symbolTable->item(i, 2); + item->setBackgroundColor(temp.color); + + item = symbolTable->item(i, 3); + item->setText(tr("%1").arg(temp.primitiveID)); + + item = symbolTable->item(i, 4); + if(temp.hide) + item->setCheckState(Qt::Checked); + else + item->setCheckState(Qt::Unchecked); + } + } +} + simulationWindow::simulationWindow(QWidget *parent) : QWidget(parent) { @@ -322,6 +404,14 @@ table1DMem = new QTableWidget(ui.view1D); + symbolTable = new QTableWidget(ui.symbolConfig); + symbolTable->setColumnCount(5); + symbolTable->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("Value"))); + symbolTable->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("Symbol"))); + symbolTable->setHorizontalHeaderItem(2, new QTableWidgetItem(tr("Color"))); + symbolTable->setHorizontalHeaderItem(3, new QTableWidgetItem(tr("Model"))); + symbolTable->setHorizontalHeaderItem(4, new QTableWidgetItem(tr("Hide Flag"))); + table2D = new QTableWidget(ui.view2D); connect(ui.Grid2DZplane, SIGNAL(valueChanged(int)), SLOT(zPlaneChange(int))); connect(renderer->getStorage(), SIGNAL(dataUpdated()), SLOT(dataUpdateRequest())); @@ -338,6 +428,12 @@ connect(ui.memClr, SIGNAL(clicked(bool)), SLOT(GridView1DMemClear())); + connect(symbolTable, SIGNAL(cellChanged(int, int)), SLOT(symbolTableChange(int, int))); + connect(symbolTable, SIGNAL(cellDoubleClicked(int, int)), SLOT(symbolTableColorChange(int, int))); + + connect(ui.addSymbol, SIGNAL(clicked(bool)), SLOT(addSymbol())); + connect(ui.removeSymbol, SIGNAL(clicked(bool)), SLOT(removeSymbol())); + table2DUpdateRequest = 0; table1DUpdateRequest = 0; } @@ -432,3 +528,69 @@ update1DTableMem(); } + +void simulationWindow::symbolTableChange(int row, int column) +{ + QChar temp; + QTableWidgetItem *item; + item = symbolTable->item(row, column); + if(column==1) + { + temp = (item->text())[0]; + renderer->setSymbol(row, temp); + item->setText(temp); + table2DUpdateRequest = table1DUpdateRequest = 1; + } + else + if(column==4) + { + + if(item->checkState()==Qt::Checked) + renderer->hideSymbol(row); + else + renderer->showSymbol(row); + + renderer->repaint(); + } +} + +void simulationWindow::symbolTableColorChange(int row, int column) +{ + QTableWidgetItem *item; + item = symbolTable->item(row, column); + if(column==2) + { + QColor color = QColorDialog::getColor(); + if(color.isValid()) + { + item->setBackgroundColor(color); + renderer->setSymbolColor(row, color); + renderer->repaint(); + + if(ui.Grig1DColors->isChecked()) + table1DUpdateRequest = 1; + + if(ui.Grig2DColors->isChecked()) + table2DUpdateRequest = 1; + + graph2DUpdateRequest = 1; + } + } +} + +void simulationWindow::addSymbol(void) +{ + SYMBOL symbol; + symbol.primitiveID = 0; + symbol.hide = 0; + symbol.textSybmol = '1'; + renderer->addSymbol(symbol); + renderer->setSymbolColor(renderer->getSymbolCount()-1, QColor(255, 255, 255)); + updateSymbolTable(); +} + +void simulationWindow::removeSymbol(void) +{ + renderer->removeSymbol(); + updateSymbolTable(); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-07 20:05:19
|
Revision: 114 http://svn.sourceforge.net/qcell/?rev=114&view=rev Author: dhubleizh Date: 2007-01-07 12:05:16 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - Fucking Class::Enum::Value removed all over the place. LESZEK!! STOP THAT FOR GODS SAKE!!! - as susual #include<QtOpengl> => #include<QtOpenGL>, as linux is case-sensitive - visgui.pro to compile simulationWindow and Renderer - changes in MainWindow to show custom simulationWindow object - simulationWindow expands do maximum now Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/baseheaders/simulationwindow.ui trunk/qcell/basesources/CalculationData.cpp trunk/qcell/visgui/MainWindow.cpp trunk/qcell/visgui/MainWindow.h trunk/qcell/visgui/MainWindow.ui trunk/qcell/visgui/visgui.pro Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-07 20:05:16 UTC (rev 114) @@ -10,7 +10,7 @@ #include <QImage> #include <QPainter> #include <QObject> -#include <QtOpengl> +#include <QtOpenGL> #include <QPixmap> #include <QChar> Modified: trunk/qcell/baseheaders/simulationwindow.ui =================================================================== --- trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 20:05:16 UTC (rev 114) @@ -1,6 +1,22 @@ <ui version="4.0" > <class>simulationWindowClass</class> <widget class="QWidget" name="simulationWindowClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>100</width> + <height>30</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="windowTitle" > <string>simulationWindow</string> </property> Modified: trunk/qcell/basesources/CalculationData.cpp =================================================================== --- trunk/qcell/basesources/CalculationData.cpp 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/basesources/CalculationData.cpp 2007-01-07 20:05:16 UTC (rev 114) @@ -39,14 +39,14 @@ void * CalculationData::getAddressAt(int x, int y, int z, int t) { int dSize; - if(dataType==baseDataTypes::DATA_TYPES::NONE) + if(dataType==baseDataTypes::NONE) return NULL; return data + dataSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ); } CalculationData::CalculationData() { - dataType = baseDataTypes::DATA_TYPES::NONE; + dataType = baseDataTypes::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = 0; @@ -56,7 +56,7 @@ CalculationData::~CalculationData() { - dataType = baseDataTypes::DATA_TYPES::NONE; + dataType = baseDataTypes::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = 0; @@ -67,7 +67,7 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; case baseDataTypes::CHAR: @@ -92,16 +92,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, 0, 0))); case baseDataTypes::FLOAT: return (int)(*((float *)(getAddressAt(x, y, 0, 0)))); @@ -116,16 +116,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, 0))); case baseDataTypes::FLOAT: @@ -141,16 +141,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, t))); case baseDataTypes::FLOAT: @@ -183,18 +183,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, 0, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, 0, 0, 0))) = (short)val; break; } @@ -204,18 +204,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, 0, 0))) = (short)val; break; } @@ -225,18 +225,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, 0))) = (short)val; break; } @@ -246,18 +246,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, t)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, t))) = (short)val; break; } @@ -267,22 +267,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, 0, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, 0, 0, 0))); } return 0.0; @@ -292,22 +292,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, 0, 0))); } return 0.0; @@ -317,22 +317,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, 0))); } return 0.0; @@ -342,22 +342,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, t))); } return 0.0; @@ -383,11 +383,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, 0, 0, 0))) = (float)val; break; } @@ -397,11 +397,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, 0, 0))) = (float)val; break; } @@ -411,11 +411,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, 0))) = (float)val; break; } @@ -425,11 +425,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, t))) = (float)val; break; } @@ -576,10 +576,10 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: return (sizeX * sizeY * sizeZ * sizeT)/8 + 1; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: switch(dimension) { case 1: @@ -592,7 +592,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(char); } - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: switch(dimension) { case 1: @@ -605,7 +605,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(double); } - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: switch(dimension) { case 1: @@ -618,7 +618,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(float); } - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: switch(dimension) { case 1: @@ -631,7 +631,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(int); } - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: switch(dimension) { case 1: @@ -713,4 +713,4 @@ fillData(cData.getDataPointer()); return *this; -} \ No newline at end of file +} Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-07 20:05:16 UTC (rev 114) @@ -12,7 +12,10 @@ { // GUI setup - earlies possible to show the user, that we're in buisness setupUi(this); - + sw = new simulationWindow(this); + QLayoutItem* tmp = centralWidget()->layout()->takeAt(0); + centralWidget()->layout()->addWidget(sw); + centralWidget()->layout()->addItem(tmp); // Plugin parsing /// @todo get that code out of here! ParserInterface* iParser; Modified: trunk/qcell/visgui/MainWindow.h =================================================================== --- trunk/qcell/visgui/MainWindow.h 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/visgui/MainWindow.h 2007-01-07 20:05:16 UTC (rev 114) @@ -21,6 +21,7 @@ #include <LocalFunction.h> #include <Neighbourhood.h> #include <Renderer.h> +#include <simulationwindow.h> typedef QString (*parser_fun)(QByteArray content, QString type, QString subtype); @@ -50,6 +51,7 @@ void on_action_Stop_activated(); void on_action_Restart_activated(); private: + simulationWindow* sw; QMap<QString, ParserInterface*> neighbourhood_parsers; QMap<QString, ParserInterface*> function_parsers; QMap<QString, ParserInterface*> world_parsers; Modified: trunk/qcell/visgui/MainWindow.ui =================================================================== --- trunk/qcell/visgui/MainWindow.ui 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/visgui/MainWindow.ui 2007-01-07 20:05:16 UTC (rev 114) @@ -24,19 +24,6 @@ <number>6</number> </property> <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> <layout class="QHBoxLayout" > <property name="margin" > <number>0</number> Modified: trunk/qcell/visgui/visgui.pro =================================================================== --- trunk/qcell/visgui/visgui.pro 2007-01-07 19:07:33 UTC (rev 113) +++ trunk/qcell/visgui/visgui.pro 2007-01-07 20:05:16 UTC (rev 114) @@ -7,7 +7,8 @@ FORMS = MainWindow.ui \ AboutDialog.ui \ - ExperimentSetup.ui + ExperimentSetup.ui \ + ../baseheaders/simulationwindow.ui HEADERS = MainWindow.h \ ../baseheaders/Client.h \ ../baseheaders/ClientInfo.h \ @@ -16,7 +17,9 @@ ../baseheaders/GenericParserPlugin.h \ ../baseheaders/Neighbourhood.h \ ../baseheaders/CalculationData.h \ - ../baseheaders/LocalFunction.h + ../baseheaders/LocalFunction.h \ + ../baseheaders/simulationwindow.h \ + ../baseheaders/Renderer.h SOURCES = ../basesources/GenericParserPlugin.cpp \ main.cpp \ @@ -25,7 +28,9 @@ ../basesources/ClientInfo.cpp \ ../basesources/Neighbourhood.cpp \ ../basesources/CalculationData.cpp \ - ../basesources/LocalFunction.cpp + ../basesources/LocalFunction.cpp \ + ../basesources/simulationwindow.cpp \ + ../basesources/Renderer.cpp LIBS = -L../libs -lN -lFQT -lKI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-07 20:26:17
|
Revision: 115 http://svn.sourceforge.net/qcell/?rev=115&view=rev Author: dhubleizh Date: 2007-01-07 12:26:16 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - typo in simulationWindow - off with Class::Enum::Value in Calculator - Calculator{cpp,h} added to visgui.pro - proper(?) simulationWindow handling in MainWindow Modified Paths: -------------- trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/basesources/Calculator.cpp trunk/qcell/visgui/MainWindow.cpp trunk/qcell/visgui/MainWindow.h trunk/qcell/visgui/visgui.pro Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 20:05:16 UTC (rev 114) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 20:26:16 UTC (rev 115) @@ -60,8 +60,8 @@ simulationWindow(QWidget *parent = 0); ~simulationWindow(); - Renderer *getRenderer(); - CalculationData *getStorage(); + Renderer *getRenderer(); + CalculationData *getStorage(); protected slots: void zPlaneChange(int i); Modified: trunk/qcell/basesources/Calculator.cpp =================================================================== --- trunk/qcell/basesources/Calculator.cpp 2007-01-07 20:05:16 UTC (rev 114) +++ trunk/qcell/basesources/Calculator.cpp 2007-01-07 20:26:16 UTC (rev 115) @@ -106,10 +106,10 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: return (outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3])/8 + 1; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: switch(dimension) { case 1: @@ -122,7 +122,7 @@ return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(char); } - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: switch(dimension) { case 1: @@ -135,7 +135,7 @@ return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(double); } - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: switch(dimension) { case 1: @@ -148,7 +148,7 @@ return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(float); } - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: switch(dimension) { case 1: @@ -161,7 +161,7 @@ return outDataSize[0] * outDataSize[1] * outDataSize[2] * outDataSize[3] * sizeof(int); } - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: switch(dimension) { case 1: Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-07 20:05:16 UTC (rev 114) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-07 20:26:16 UTC (rev 115) @@ -248,6 +248,7 @@ neighbourhood = new Neighbourhood; neighbourhood->fromXmlString(&neighbourhood_parsers[subtype]->parse(file_content, type, subtype)); + calc.setNeighbourhood(neighbourhood); } else if (type == "LocalFunction") @@ -263,6 +264,7 @@ local_function = new LocalFunction(); local_function->fromXmlString(&function_parsers[subtype]->parse(file_content, type, subtype)); + calc.setLocalFunction(local_function); } else if (type == "World") { @@ -278,6 +280,9 @@ /// @todo Fix that! data.clear(); data.append((CalculationData*)world_parsers[subtype]->parse(file_content, type, subtype).toInt()); + CalculationData* cd = sw->getStorage(); + cd = data.first(); + /// @todo Nasty - get that code out of here ! } else { Modified: trunk/qcell/visgui/MainWindow.h =================================================================== --- trunk/qcell/visgui/MainWindow.h 2007-01-07 20:05:16 UTC (rev 114) +++ trunk/qcell/visgui/MainWindow.h 2007-01-07 20:26:16 UTC (rev 115) @@ -22,6 +22,7 @@ #include <Neighbourhood.h> #include <Renderer.h> #include <simulationwindow.h> +#include <Calculator.h> typedef QString (*parser_fun)(QByteArray content, QString type, QString subtype); @@ -70,6 +71,7 @@ bool working; int iteration; + Calculator calc; QList<CalculationData*> data; LocalFunction* local_function; Neighbourhood* neighbourhood; Modified: trunk/qcell/visgui/visgui.pro =================================================================== --- trunk/qcell/visgui/visgui.pro 2007-01-07 20:05:16 UTC (rev 114) +++ trunk/qcell/visgui/visgui.pro 2007-01-07 20:26:16 UTC (rev 115) @@ -19,7 +19,8 @@ ../baseheaders/CalculationData.h \ ../baseheaders/LocalFunction.h \ ../baseheaders/simulationwindow.h \ - ../baseheaders/Renderer.h + ../baseheaders/Renderer.h \ + ../baseheaders/Calculator.h SOURCES = ../basesources/GenericParserPlugin.cpp \ main.cpp \ @@ -30,7 +31,8 @@ ../basesources/CalculationData.cpp \ ../basesources/LocalFunction.cpp \ ../basesources/simulationwindow.cpp \ - ../basesources/Renderer.cpp + ../basesources/Renderer.cpp \ + ../basesources/Calculator.cpp LIBS = -L../libs -lN -lFQT -lKI This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-01-07 21:00:58
|
Revision: 118 http://svn.sourceforge.net/qcell/?rev=118&view=rev Author: lessm Date: 2007-01-07 13:00:56 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - new view add Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/baseheaders/simulationwindow.h trunk/qcell/baseheaders/simulationwindow.ui trunk/qcell/basesources/Renderer.cpp trunk/qcell/basesources/simulationwindow.cpp Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-07 20:55:11 UTC (rev 117) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-07 21:00:56 UTC (rev 118) @@ -10,7 +10,7 @@ #include <QImage> #include <QPainter> #include <QObject> -#include <QtOpenGL> +#include <QtOpengl> #include <QPixmap> #include <QChar> @@ -34,6 +34,7 @@ QImage *imageBuffer; QPainter painter; bool discretValues; + bool corectPerspective; QVector<GLuint> primitives; QVector<double> rotation, translation; @@ -90,6 +91,9 @@ CalculationData * getStorage(void); + void setOrtoPerspective(void); + void setRealPerspective(void); + protected slots: void resizeDataEvent(void); }; Modified: trunk/qcell/baseheaders/simulationwindow.h =================================================================== --- trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 20:55:11 UTC (rev 117) +++ trunk/qcell/baseheaders/simulationwindow.h 2007-01-07 21:00:56 UTC (rev 118) @@ -60,8 +60,8 @@ simulationWindow(QWidget *parent = 0); ~simulationWindow(); - Renderer *getRenderer(); - CalculationData *getStorage(); + Renderer *getRenderer(); + CalculationData *getStorage(); protected slots: void zPlaneChange(int i); @@ -77,6 +77,9 @@ void addSymbol(void); void removeSymbol(void); + void corectPerspectve(void); + void orthoPerspective(void); + signals: void progressUpdate(int val); Modified: trunk/qcell/baseheaders/simulationwindow.ui =================================================================== --- trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 20:55:11 UTC (rev 117) +++ trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 21:00:56 UTC (rev 118) @@ -1,22 +1,6 @@ <ui version="4.0" > <class>simulationWindowClass</class> <widget class="QWidget" name="simulationWindowClass" > - <property name="geometry" > - <rect> - <x>0</x> - <y>0</y> - <width>100</width> - <height>30</height> - </rect> - </property> - <property name="sizePolicy" > - <sizepolicy> - <hsizetype>7</hsizetype> - <vsizetype>7</vsizetype> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> <property name="windowTitle" > <string>simulationWindow</string> </property> @@ -36,12 +20,41 @@ <enum>QTabWidget::Rounded</enum> </property> <property name="currentIndex" > - <number>1</number> + <number>0</number> </property> <widget class="QWidget" name="view3D" > <attribute name="title" > <string>3D View</string> </attribute> + <widget class="QRadioButton" name="perspectiveView" > + <property name="geometry" > + <rect> + <x>20</x> + <y>10</y> + <width>83</width> + <height>18</height> + </rect> + </property> + <property name="text" > + <string>Perspective</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + <widget class="QRadioButton" name="ortho2DView" > + <property name="geometry" > + <rect> + <x>120</x> + <y>10</y> + <width>83</width> + <height>18</height> + </rect> + </property> + <property name="text" > + <string>Ortho2D</string> + </property> + </widget> </widget> <widget class="QWidget" name="view2D" > <attribute name="title" > Modified: trunk/qcell/basesources/Renderer.cpp =================================================================== --- trunk/qcell/basesources/Renderer.cpp 2007-01-07 20:55:11 UTC (rev 117) +++ trunk/qcell/basesources/Renderer.cpp 2007-01-07 21:00:56 UTC (rev 118) @@ -206,10 +206,12 @@ { glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(75.0f, (GLdouble)width / (GLdouble)height, 0.1f, 1000.0f); - glMatrixMode(GL_MODELVIEW); + if(corectPerspective) + setRealPerspective(); + else + setOrtoPerspective(); + + } Renderer::Renderer(QWidget *parent) : QGLWidget(parent) @@ -235,7 +237,7 @@ rotation.resize(3); greed = 0; - + corectPerspective = 1; connect(&storage, SIGNAL(dataResized()), SLOT(resizeDataEvent())); } @@ -569,8 +571,29 @@ void Renderer::resizeDataEvent(void) { - if(greed>0) glDeleteLists(greed, 1); greed = 0; -} \ No newline at end of file + + if(!corectPerspective) + setOrtoPerspective(); +} + +void Renderer::setOrtoPerspective(void) +{ + float aspect = (float)width()/(float)height(); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho((-(double)storage.getSizeX() - 10.0) * aspect, ((double)storage.getSizeX() + 10.0) * aspect, -(double)storage.getSizeY() -10.0 , (double)storage.getSizeY() + 10.0, 0.0, 500.0); + glMatrixMode(GL_MODELVIEW); + corectPerspective = 0; +} + +void Renderer::setRealPerspective(void) +{ + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(75.0f, (GLdouble)width() / (GLdouble)height(), 0.1f, 500.0f); + glMatrixMode(GL_MODELVIEW); + corectPerspective = 1; +} Modified: trunk/qcell/basesources/simulationwindow.cpp =================================================================== --- trunk/qcell/basesources/simulationwindow.cpp 2007-01-07 20:55:11 UTC (rev 117) +++ trunk/qcell/basesources/simulationwindow.cpp 2007-01-07 21:00:56 UTC (rev 118) @@ -80,7 +80,9 @@ ui.view2DGraph->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20); ui.symbolConfig->resize(ui.tabWidget->width(), ui.tabWidget->height() - 20); - renderer->resize(ui.view3D->width() - 7, ui.view3D->height() - 7); + renderer->move(0, 35); + renderer->resize(ui.view3D->width() - 7, ui.view3D->height() - 42); + table2D->move(0, 35); table2D->resize(ui.view2D->width() - 7 , ui.view2D->height() - 42); graphicsView2D->resize(ui.view2DGraph->width() - 7, ui.view2DGraph->height() - 7); @@ -434,6 +436,9 @@ connect(ui.addSymbol, SIGNAL(clicked(bool)), SLOT(addSymbol())); connect(ui.removeSymbol, SIGNAL(clicked(bool)), SLOT(removeSymbol())); + connect(ui.perspectiveView, SIGNAL(clicked(bool)), SLOT(corectPerspectve())); + connect(ui.ortho2DView, SIGNAL(clicked(bool)), SLOT(orthoPerspective())); + table2DUpdateRequest = 0; table1DUpdateRequest = 0; } @@ -594,3 +599,15 @@ renderer->removeSymbol(); updateSymbolTable(); } + +void simulationWindow::corectPerspectve(void) +{ + renderer->setRealPerspective(); + renderer->repaint(); +} + +void simulationWindow::orthoPerspective(void) +{ + renderer->setOrtoPerspective(); + renderer->repaint(); +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-07 22:36:02
|
Revision: 122 http://svn.sourceforge.net/qcell/?rev=122&view=rev Author: dhubleizh Date: 2007-01-07 14:35:59 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - include case in Render.h - out with Class::Enum::Value from CalculationData AGAIN! Modified Paths: -------------- trunk/qcell/baseheaders/Renderer.h trunk/qcell/basesources/CalculationData.cpp Modified: trunk/qcell/baseheaders/Renderer.h =================================================================== --- trunk/qcell/baseheaders/Renderer.h 2007-01-07 21:30:21 UTC (rev 121) +++ trunk/qcell/baseheaders/Renderer.h 2007-01-07 22:35:59 UTC (rev 122) @@ -10,7 +10,7 @@ #include <QImage> #include <QPainter> #include <QObject> -#include <QtOpengl> +#include <QtOpenGL> #include <QPixmap> #include <QChar> Modified: trunk/qcell/basesources/CalculationData.cpp =================================================================== --- trunk/qcell/basesources/CalculationData.cpp 2007-01-07 21:30:21 UTC (rev 121) +++ trunk/qcell/basesources/CalculationData.cpp 2007-01-07 22:35:59 UTC (rev 122) @@ -39,14 +39,14 @@ void * CalculationData::getAddressAt(int x, int y, int z, int t) { int dSize; - if(dataType==baseDataTypes::DATA_TYPES::NONE) + if(dataType==baseDataTypes::NONE) return NULL; return data + dataSize * (x + y * sizeX + z * sizeX * sizeY + t * sizeX * sizeY * sizeZ); } CalculationData::CalculationData() { - dataType = baseDataTypes::DATA_TYPES::CHAR; + dataType = baseDataTypes::CHAR; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = sizeof(char); @@ -56,7 +56,7 @@ CalculationData::~CalculationData() { - dataType = baseDataTypes::DATA_TYPES::NONE; + dataType = baseDataTypes::NONE; sizeX = sizeY = sizeZ = sizeT = 0; dimension = -1; dataSize = 0; @@ -67,7 +67,7 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; case baseDataTypes::CHAR: @@ -92,16 +92,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, 0, 0))); case baseDataTypes::FLOAT: return (int)(*((float *)(getAddressAt(x, y, 0, 0)))); @@ -116,16 +116,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, 0))); case baseDataTypes::FLOAT: @@ -141,16 +141,16 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return *((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return *((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return *((short *)(getAddressAt(x, y, z, t))); case baseDataTypes::FLOAT: @@ -183,18 +183,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, 0, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, 0, 0, 0))) = (short)val; break; } @@ -204,18 +204,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, 0, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, 0, 0))) = (short)val; break; } @@ -225,18 +225,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, 0)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, 0))) = (short)val; break; } @@ -246,18 +246,18 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: *((char *)getAddressAt(x, y, z, t)) = (char)val; break; - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: *((int *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: *((short *)(getAddressAt(x, y, z, t))) = (short)val; break; } @@ -267,22 +267,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, 0, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, 0, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, 0, 0, 0))); } return 0.0; @@ -292,22 +292,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, 0, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, 0, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, 0, 0))); } return 0.0; @@ -317,22 +317,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, 0)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, 0))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, 0))); } return 0.0; @@ -342,22 +342,22 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: break; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: return (double)*((char *)getAddressAt(x, y, z, t)); - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: return (double)*((int *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: return (double)*((short *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: return *((double *)(getAddressAt(x, y, z, t))); - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: return *((float *)(getAddressAt(x, y, z, t))); } return 0.0; @@ -383,11 +383,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, 0, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, 0, 0, 0))) = (float)val; break; } @@ -397,11 +397,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, 0, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, 0, 0))) = (float)val; break; } @@ -411,11 +411,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, 0))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, 0))) = (float)val; break; } @@ -425,11 +425,11 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: *((double *)(getAddressAt(x, y, z, t))) = val; break; - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: *((float *)(getAddressAt(x, y, z, t))) = (float)val; break; } @@ -576,10 +576,10 @@ { switch(dataType) { - case baseDataTypes::DATA_TYPES::BOOL: + case baseDataTypes::BOOL: return (sizeX * sizeY * sizeZ * sizeT)/8 + 1; - case baseDataTypes::DATA_TYPES::CHAR: + case baseDataTypes::CHAR: switch(dimension) { case 1: @@ -592,7 +592,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(char); } - case baseDataTypes::DATA_TYPES::DOUBLE: + case baseDataTypes::DOUBLE: switch(dimension) { case 1: @@ -605,7 +605,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(double); } - case baseDataTypes::DATA_TYPES::FLOAT: + case baseDataTypes::FLOAT: switch(dimension) { case 1: @@ -618,7 +618,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(float); } - case baseDataTypes::DATA_TYPES::INT: + case baseDataTypes::INT: switch(dimension) { case 1: @@ -631,7 +631,7 @@ return sizeX * sizeY * sizeZ * sizeT * sizeof(int); } - case baseDataTypes::DATA_TYPES::SHORT: + case baseDataTypes::SHORT: switch(dimension) { case 1: @@ -713,4 +713,4 @@ fillData(cData.getDataPointer()); return *this; -} \ No newline at end of file +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-07 22:39:07
|
Revision: 123 http://svn.sourceforge.net/qcell/?rev=123&view=rev Author: dhubleizh Date: 2007-01-07 14:39:05 -0800 (Sun, 07 Jan 2007) Log Message: ----------- - reverted to my expanding simulationWindow class - removed plugin debug from MainWindow Modified Paths: -------------- trunk/qcell/baseheaders/simulationwindow.ui trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/simulationwindow.ui =================================================================== --- trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 22:35:59 UTC (rev 122) +++ trunk/qcell/baseheaders/simulationwindow.ui 2007-01-07 22:39:05 UTC (rev 123) @@ -1,6 +1,22 @@ <ui version="4.0" > <class>simulationWindowClass</class> <widget class="QWidget" name="simulationWindowClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>100</width> + <height>30</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="windowTitle" > <string>simulationWindow</string> </property> Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-07 22:35:59 UTC (rev 122) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-07 22:39:05 UTC (rev 123) @@ -21,8 +21,6 @@ ParserInterface* iParser; QStringList parser_types, file_types; - QMessageBox::information(this, "Plugins", - QString("Number of plugins: %1").arg(QPluginLoader::staticInstances().count())); // We check each static plugin if it is a parser plugin // and if it is we register each parsing fucntion // according to supported types and file extensions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-01-08 16:11:24
|
Revision: 126 http://svn.sourceforge.net/qcell/?rev=126&view=rev Author: lessm Date: 2007-01-08 08:11:15 -0800 (Mon, 08 Jan 2007) Log Message: ----------- - libs(ki, fqt, n) compile on visual studio now Modified Paths: -------------- trunk/qcell/baseheaders/GenericParserPlugin.h trunk/qcell/baseheaders/interfaces.h trunk/qcell/basesources/GenericParserPlugin.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.h trunk/qcell/parsers/KI/KIParserPlugin.h trunk/qcell/parsers/N/NParserPlugin.h Modified: trunk/qcell/baseheaders/GenericParserPlugin.h =================================================================== --- trunk/qcell/baseheaders/GenericParserPlugin.h 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/baseheaders/GenericParserPlugin.h 2007-01-08 16:11:15 UTC (rev 126) @@ -31,7 +31,7 @@ * * @return A an XML string with parsed data */ - virtual QString realParser(QByteArray content, QString type, QString subtype) = 0; + virtual QString realParser(const QByteArray content, const QString type, const QString subtype) = 0; public: /** @@ -68,7 +68,7 @@ QString parse(const QByteArray content, const QString type, const QString subtype=""); - QByteArray parseOut(QString content, const QString type, const QString subtype="") = 0; + virtual QByteArray parseOut(QString content, const QString type, const QString subtype="") = 0; }; #endif Modified: trunk/qcell/baseheaders/interfaces.h =================================================================== --- trunk/qcell/baseheaders/interfaces.h 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/baseheaders/interfaces.h 2007-01-08 16:11:15 UTC (rev 126) @@ -28,7 +28,7 @@ * * @return A list of types supported by the parser */ - virtual QStringList parserTypes() = 0; + // virtual QStringList parserTypes() = 0; /** * @brief File types the plugin is able to parse * @@ -36,7 +36,7 @@ * * @return A list of types(extensions) of files types parsed by the plugin */ - virtual QStringList fileTypes(const QString type) = 0; + // virtual QStringList fileTypes(const QString type) = 0; /** * @brief The main parsing function Modified: trunk/qcell/basesources/GenericParserPlugin.cpp =================================================================== --- trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/basesources/GenericParserPlugin.cpp 2007-01-08 16:11:15 UTC (rev 126) @@ -6,7 +6,7 @@ * Last Update: wto 05 gru 2006 20:23:24 CET */ -#include "GenericParserPlugin.h" +#include "../baseheaders/GenericParserPlugin.h" //QStringList GenericParserPlugin::parserTypes() //{ Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.h =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.h 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.h 2007-01-08 16:11:15 UTC (rev 126) @@ -21,10 +21,10 @@ { protected: QString realParser(const QByteArray content, const QString type, const QString subtype); - QByteArray parseOut(QString content, const QString type, const QString subtype=""); + public: FQTParserPlugin(); - + QByteArray parseOut(QString content, const QString type, const QString subtype=""); }; #endif Modified: trunk/qcell/parsers/KI/KIParserPlugin.h =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-08 16:11:15 UTC (rev 126) @@ -18,12 +18,12 @@ class KIParserPlugin : public GenericParserPlugin { protected: - QString realParser(QByteArray content, QString type, QString subtype); - QByteArray parseOut(QString content, const QString type, const QString subtype=""); + QString realParser(const QByteArray content, const QString type, const QString subtype); + public: KIParserPlugin(); + QByteArray parseOut(QString content, const QString type, const QString subtype=""); - }; #endif Modified: trunk/qcell/parsers/N/NParserPlugin.h =================================================================== --- trunk/qcell/parsers/N/NParserPlugin.h 2007-01-08 06:34:57 UTC (rev 125) +++ trunk/qcell/parsers/N/NParserPlugin.h 2007-01-08 16:11:15 UTC (rev 126) @@ -19,10 +19,10 @@ { protected: QString realParser(const QByteArray content, const QString type, const QString subtype); - QByteArray parseOut(QString content, const QString type, const QString subtype); + public: NParserPlugin(); - + QByteArray parseOut(QString content, const QString type, const QString subtype); }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-01-08 16:24:51
|
Revision: 127 http://svn.sourceforge.net/qcell/?rev=127&view=rev Author: lessm Date: 2007-01-08 08:24:46 -0800 (Mon, 08 Jan 2007) Log Message: ----------- - interfaces.h changed Modified Paths: -------------- trunk/qcell/baseheaders/interfaces.h trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/interfaces.h =================================================================== --- trunk/qcell/baseheaders/interfaces.h 2007-01-08 16:11:15 UTC (rev 126) +++ trunk/qcell/baseheaders/interfaces.h 2007-01-08 16:24:46 UTC (rev 127) @@ -28,7 +28,7 @@ * * @return A list of types supported by the parser */ - // virtual QStringList parserTypes() = 0; + virtual QStringList parserTypes() = 0; /** * @brief File types the plugin is able to parse * @@ -36,7 +36,7 @@ * * @return A list of types(extensions) of files types parsed by the plugin */ - // virtual QStringList fileTypes(const QString type) = 0; + virtual QStringList fileTypes(const QString type) = 0; /** * @brief The main parsing function Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-08 16:11:15 UTC (rev 126) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-08 16:24:46 UTC (rev 127) @@ -12,7 +12,7 @@ { // GUI setup - earlies possible to show the user, that we're in buisness setupUi(this); - sw = new simulationWindow(this); + sw = new simulationWindow(this); QLayoutItem* tmp = centralWidget()->layout()->takeAt(0); centralWidget()->layout()->addWidget(sw); centralWidget()->layout()->addItem(tmp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dhu...@us...> - 2007-01-08 17:11:58
|
Revision: 128 http://svn.sourceforge.net/qcell/?rev=128&view=rev Author: dhubleizh Date: 2007-01-08 09:11:50 -0800 (Mon, 08 Jan 2007) Log Message: ----------- - typo in KIParserPlugin.cpp - removed pending /// @todo's from the file - full intialization of data in on_World_activated() - proper experiment forward an backward handling - proper experiment restart handled Modified Paths: -------------- trunk/qcell/parsers/KI/KIParserPlugin.h trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/parsers/KI/KIParserPlugin.h =================================================================== --- trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-08 16:24:46 UTC (rev 127) +++ trunk/qcell/parsers/KI/KIParserPlugin.h 2007-01-08 17:11:50 UTC (rev 128) @@ -22,7 +22,7 @@ public: KIParserPlugin(); - QByteArray parseOut(QString content, const QString type, const QString subtype=""); + QByteArray parseOut(QString content, const QString type, const QString subtype=""); }; Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-08 16:24:46 UTC (rev 127) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-08 17:11:50 UTC (rev 128) @@ -12,7 +12,7 @@ { // GUI setup - earlies possible to show the user, that we're in buisness setupUi(this); - sw = new simulationWindow(this); + sw = new simulationWindow(this); QLayoutItem* tmp = centralWidget()->layout()->takeAt(0); centralWidget()->layout()->addWidget(sw); centralWidget()->layout()->addItem(tmp); @@ -65,6 +65,7 @@ } } + /// @todo This function doesn't belong here. It initializes things not fore GUI setupEngine(); } @@ -276,8 +277,14 @@ } /// @todo Fix that! - CalculationData* cd = (CalculationData*)world_parsers[subtype]->parse(file_content, type, subtype).toInt(); - *sw->getStorage() = *cd; + data.clear(); + data.append((CalculationData*)world_parsers[subtype]->parse(file_content, type, subtype).toInt()); + *sw->getStorage() = *data.last(); + QVector<int> end_coord; + end_coord << data.last()->getSizeX() + << data.last()->getSizeY() + << data.last()->getSizeZ(); + calc.setCalculationSpace(*new QVector<int>(3, 0), end_coord); /// @todo Nasty - get that code out of here ! } else @@ -360,18 +367,20 @@ void MainWindow::oneStep(int direction) { - /// @todo Write oneStep switch (direction) { case Forward: { - if(iteration < (data.count()-1)) + if(iteration >= data.count()) { - /// @todo moving through the list + CalculationData* cd = new CalculationData(); + *cd = *data[iteration]; + calc.setForeignDataPointer((char*)cd->getDataPointer()); + calc.calculate(); } else { - /// @todo processing + /// @todo Is this needed? } iteration++; @@ -380,18 +389,17 @@ } case Back: { - if(iteration == 0) + if(iteration <= 0) { qDebug(tr("You cannot step back beyond the beginning of the experiment!").toAscii()); return; } - /// @todo actuall going back - iteration--; } } + *sw->getStorage() = *data[iteration]; iterationLCD->display(iteration); } @@ -437,7 +445,6 @@ void MainWindow::on_action_Back_activated() { - /// @todo Handle back movement oneStep( Back); } @@ -473,7 +480,9 @@ iteration = 0; this->iterationLCD->display(iteration); -// CalculationData backup = data.first(); + CalculationData* backup = data.first(); + data.clear(); + data.append(backup); } void MainWindow::on_action_World_save_activated() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <le...@us...> - 2007-01-08 22:33:13
|
Revision: 129 http://svn.sourceforge.net/qcell/?rev=129&view=rev Author: lessm Date: 2007-01-08 14:33:11 -0800 (Mon, 08 Jan 2007) Log Message: ----------- - LocalFunction have toXmlString and fromXmlString methods Modified Paths: -------------- trunk/qcell/baseheaders/LocalFunction.h trunk/qcell/basesources/LocalFunction.cpp trunk/qcell/parsers/FQT/FQTParserPlugin.cpp trunk/qcell/visgui/MainWindow.cpp Modified: trunk/qcell/baseheaders/LocalFunction.h =================================================================== --- trunk/qcell/baseheaders/LocalFunction.h 2007-01-08 17:11:50 UTC (rev 128) +++ trunk/qcell/baseheaders/LocalFunction.h 2007-01-08 22:33:11 UTC (rev 129) @@ -6,6 +6,7 @@ #include <QDomDocument> #include <QDomElement> #include <QDomText> +#include <QDomNode> #include <QStringList> #include <math.h> @@ -47,7 +48,14 @@ void valueTableFromString(QString *string); void sumArgumentsFromString(QString *string); + QVector<int> valueTranslation(int value); + QString valueFormTableToString(int index); + + void setSumsFromString(QString sums); + void setValuesFromString(QString values); + void getArgumentsFromString(QString argString, QVector<int> &sums, QVector<int> &freeArgs); + public: LocalFunction(); @@ -83,6 +91,7 @@ bool setFunctionValue(int value, int sum); bool setFunctionValue(int value, QVector<int> args); bool setFunctionValue(int value, int sum, QVector<int> freeArgs); + bool setFunctionValue(int value, int sum, int freeArgsValue); bool setFunctionValue(int value, QVector<int> sums, QVector<int> freeArgs); int resolve(QVector<int> arg); Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-01-08 17:11:50 UTC (rev 128) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-01-08 22:33:11 UTC (rev 129) @@ -132,7 +132,130 @@ /// @todo } +QVector<int> LocalFunction::valueTranslation(int value) +{ + int count=0; + int mod; + QVector<int> output; + count = sumArguments.size() + freeArguments.size(); + output.resize(count); + count--; + for(int i=0;i<freeArguments.size();++i) + output[count--] = getAlphabetSize(); + + for(int i=0;i<sumArguments.size();++i) + output[count--] = sumArguments[i].size() * getAlphabetSize(); + for(int i=sumArguments.size() + freeArguments.size() - 1;i>=0;--i) + { + if(value>-1) + { + if(value<output[i]) + { + output[i] = value; + value = -1; + } + else + { + mod = value % output[i]; + value /= output[i]; + output[i] = mod; + } + } + else + { + output[i] = 0; + } + } + return output; +} + +QString LocalFunction::valueFormTableToString(int index) +{ + int split = sumArguments.size() - 1; + QVector<int> temp = valueTranslation(index); + QString out; + for(int i=0;i<temp.size();++i) + { + out += QString("%1").arg(temp[i]); + if(i==split) + out += "+"; + else + if(i!=temp.size()-1) + out += ","; + } + out += QString("=%1;").arg(valueTable[index]); + return out; +} + +void LocalFunction::setSumsFromString(QString sums) +{ + QVector<int> sumVector; + QStringList elements; + sums.remove('\n'); + sums.remove(' '); + QStringList list = sums.split(';', QString::SkipEmptyParts); + for(int i=0;i<list.size();++i) + { + sumVector.clear(); + elements = list[i].split(',', QString::SkipEmptyParts); + for(int j=0;j<elements.size();++j) + { + sumVector.append((elements[j]).toInt()); + } + if(!sumVector.isEmpty()) + { + if(i==0) + setSumArguments(sumVector); + else + addSumArguments(sumVector); + } + } +} + + + +void LocalFunction::setValuesFromString(QString values) +{ + QStringList valuesList, splitValues; + QVector<int> sumVector, argVector; + sumVector.resize(sumArguments.size()); + argVector.resize(freeArguments.size()); + + values.remove('\n'); + values.remove(' '); + + valuesList = values.split(';', QString::SkipEmptyParts); + for(int i=0;i<valuesList.size();++i) + { + splitValues = valuesList[i].split('=', QString::SkipEmptyParts); + if(splitValues.size()==2) + { + getArgumentsFromString(splitValues[0], sumVector, argVector); + setFunctionValue(splitValues[1].toInt(), sumVector, argVector); + } + } +} + +void LocalFunction::getArgumentsFromString(QString argString, QVector<int> &sums, QVector<int> &freeArgs) +{ + QStringList mainSplit, argumentsSplit; + + sums.clear(); + freeArgs.clear(); + mainSplit = argString.split('+', QString::SkipEmptyParts); + if(mainSplit.size()==2) + { + argumentsSplit = mainSplit[0].split(',', QString::SkipEmptyParts); + for(int i=0;i<argumentsSplit.size();++i) + sums.append((argumentsSplit[i]).toInt()); + + argumentsSplit = mainSplit[1].split(',', QString::SkipEmptyParts); + for(int i=0;i<argumentsSplit.size();++i) + freeArgs.append((argumentsSplit[i]).toInt()); + } +} + LocalFunction::LocalFunction() { functionMode = LocalFunction::SWITCH; @@ -225,7 +348,7 @@ int LocalFunction::getNumberOfArgs() { - return maxArgVal; + return numArg; } int LocalFunction::getAlphabetSize() @@ -335,6 +458,25 @@ return 1; } +bool LocalFunction::setFunctionValue(int value, int sum, int freeArgsValue) +{ + int index; + if(sumArguments.size()==0 || sumArguments.size()>1) + return 0; + if(valueTable.empty()) + resizeValueTable(); + switch(functionMode) + { + case LocalFunction::SUM_AND_SWITCH: + index = sum * pow(maxArgVal, freeArguments.size()) + freeArgsValue; + valueTable[index] = value; + break; + default: + return 0; + } + return 1; +} + bool LocalFunction::setFunctionValue(int value, QVector<int> sums, QVector<int> freeArgs) { int index; @@ -398,39 +540,94 @@ QString LocalFunction::toXmlString(void) { + int mpv; QDomDocument doc; QDomElement root, element; + QDomText text; + QString temp; + root = doc.createElement("LocalFunction"); - root.setAttribute("function_type", functionMode); - doc.appendChild(root); - - switch (functionMode) + root.setAttribute("ArgumentsNumber", getNumberOfArgs()); + root.setAttribute("InputAlphabet", getAlphabetSize()); + if(sumArguments.size()>0) { - case LocalFunction::SUM: + element = doc.createElement("Sums"); + temp.clear(); + for(int i=0;i<sumArguments.size();++i) { - /// @todo Implement function type SUM toXML - break; + temp += QString("\n%1").arg((sumArguments[i])[0]); + for(int j=1;j<sumArguments[i].size();++j) + { + temp += QString(",%1").arg((sumArguments[i])[j]); + } + temp += ";\n"; } - case LocalFunction::SUM_AND_SWITCH: + text = doc.createTextNode(temp); + element.appendChild(text); + root.appendChild(element); + } + + element = doc.createElement("Values"); + mpv = mostPopularValue(); + element.setAttribute("FillValue", mpv); + temp = "\n"; + for(int i=0;i<valueTable.size();++i) + { + if(valueTable[i] != mpv) { - break; + temp += valueFormTableToString(i); + temp += "\n"; } - case LocalFunction::SWITCH: - { - /// @todo Implement SWITCH function mode toXML - break; - } } + + text = doc.createTextNode(temp); + element.appendChild(text); + root.appendChild(element); + + doc.appendChild(root); return doc.toString(); } bool LocalFunction::fromXmlString(QString *xmlString) { - return 1; + QDomDocument doc; + doc.setContent(*xmlString); + return fromDomElement(&(doc.firstChildElement())); } bool LocalFunction::fromDomElement(QDomElement *xmlElement) { - return 1; + functionMode = LocalFunction::SWITCH; + valueTable.clear(); + sumArguments.clear(); + freeArguments.clear(); + numArg = maxArgVal = numElements = 0; + + QDomElement element; + QDomNode node; + QDomText text; + if(xmlElement->tagName()=="LocalFunction") + { + init(xmlElement->attribute("ArgumentsNumber").toInt(), xmlElement->attribute("InputAlphabet").toInt(), 666); + node = xmlElement->firstChild(); + while(!node.isNull()) + { + element = node.toElement(); + if(element.tagName()=="Sums") + setSumsFromString(element.text()); + + if(element.tagName()=="Values") + { + if(element.hasAttribute("FillValue")) + { + setDefaultValue(element.attribute("FillValue").toInt()); + setValuesFromString(element.text()); + } + } + node = node.nextSibling(); + } + return 1; + } + return 0; } Modified: trunk/qcell/parsers/FQT/FQTParserPlugin.cpp =================================================================== --- trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-08 17:11:50 UTC (rev 128) +++ trunk/qcell/parsers/FQT/FQTParserPlugin.cpp 2007-01-08 22:33:11 UTC (rev 129) @@ -237,7 +237,7 @@ QVector<QVector<int> > permutations; // setting the type of function - lf.setFunctonType(LocalFunction::SUM); + //lf.setFunctonType(LocalFunction::SUM); // setting the number of arguments the function will take // and the alphabet size lf.init(arguments_nr, values_nr, return_values_nr); @@ -246,11 +246,16 @@ lf.setSumArguments(arguments); /// @todo How the fuck set FQT function parameters eh? - foreach(int sum, results.keys()) - { - - } + switch(lf.getFunctonType()) + { + case LocalFunction::SUM_AND_SWITCH: + foreach(int sum, results.keys()) + { + for(int i=0;i<results.value(sum).size();++i) + lf.setFunctionValue((results.value(sum))[i], sum, i); + } + } return lf.toXmlString(); } Modified: trunk/qcell/visgui/MainWindow.cpp =================================================================== --- trunk/qcell/visgui/MainWindow.cpp 2007-01-08 17:11:50 UTC (rev 128) +++ trunk/qcell/visgui/MainWindow.cpp 2007-01-08 22:33:11 UTC (rev 129) @@ -11,11 +11,12 @@ MainWindow::MainWindow(QWidget* parent) { // GUI setup - earlies possible to show the user, that we're in buisness - setupUi(this); + setupUi(this); + sw = new simulationWindow(this); QLayoutItem* tmp = centralWidget()->layout()->takeAt(0); centralWidget()->layout()->addWidget(sw); - centralWidget()->layout()->addItem(tmp); + centralWidget()->layout()->addItem(tmp); // Plugin parsing /// @todo get that code out of here! ParserInterface* iParser; @@ -64,7 +65,6 @@ } } } - /// @todo This function doesn't belong here. It initializes things not fore GUI setupEngine(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |