00001
00042 #ifndef AIZONE_HPP
00043 #define AIZONE_HPP
00044
00045 #include <QtGui>
00046
00047 namespace AiGenerator
00048 {
00055 class AiZone : public QObject
00056 {
00057 Q_OBJECT
00058
00059 public:
00060
00065 AiZone( const AiZone & zone );
00066
00083 AiZone( QObject * parent = 0 ,
00084 double x = .0 , double y = .0 ,
00085 double zoneWidth = .0 , double zoneHeight = .0 ,
00086 int imageWidth = 0 , int imageHeight = 0 ,
00087 int starPoint = 0,int increment = 0 , int iteration = 0,
00088 double zoom = 1. , double viewx = 0. , double viewy = 0.);
00089
00094 QImage & image();
00095
00099 volatile bool status;
00100
00105 void serialize( QDataStream & stream );
00106
00111 void deserialize( QDataStream & stream );
00112
00117 AiZone & operator = ( const AiZone &rhs );
00118
00119 public slots:
00124 double getX();
00125
00130 double getY();
00131
00136 double getZoneWidth();
00137
00142 double getZoneHeight();
00143
00148 int getImageWidth();
00149
00154 int getImageHeight();
00155
00160 int getStartPoint();
00161
00166 int getIncrement();
00167
00172 int getIteration();
00173
00180 unsigned int getPixel(int x, int y);
00181
00188 void setPixel(int x, int y, unsigned int rgb);
00189
00198 void setPixel(int x, int y, int red, int green, int blue);
00199
00205 void setPixels( int line ,QList< int > pix );
00206
00211 bool cancel();
00212
00217 void progress(int val);
00218
00223 double getZoom();
00224
00229 double getViewX();
00230
00235 double getViewY();
00236
00243 bool valid(int x, int y);
00244
00248 void sendSnapshot();
00249
00253 void beep();
00254
00259 void initRandom(unsigned long long j = 0);
00260
00265 unsigned long long generateUInt64();
00266
00271 double generateDouble();
00272
00277 unsigned int generateUInt32();
00278
00283 int getLastX() const;
00284
00289 int getLastY() const;
00290
00295 int getLastIteration() const;
00296
00303 void setLastXYI(int x, int y, int i);
00304
00305 signals:
00310 void progressStatus(int val);
00311
00316 void snapshot(AiGenerator::AiZone * zone);
00317
00318 private:
00322 double m_x;
00323
00327 double m_y;
00328
00332 double m_zoneWidth;
00333
00337 double m_zoneHeight;
00338
00342 int m_imageWidth;
00343
00347 int m_imageHeight;
00348
00352 int m_startPoint;
00353
00357 int m_increment;
00358
00362 int m_iteration;
00363
00367 double m_zoom;
00368
00372 double m_viewX;
00373
00377 double m_viewY;
00378
00382 QImage m_image;
00383
00387 unsigned long long m_u, m_v, m_w;
00388
00392 int m_last_x;
00393
00397 int m_last_y;
00398
00402 int m_last_iteration;
00403 };
00404 }
00405
00410 Q_DECLARE_METATYPE( AiGenerator::AiZone )
00411
00412 #endif // AIZONE_HPP