00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _ACCUMULATOR_H_
00022 #define _ACCUMULATOR_H_
00023
00024 #include "sequence.h"
00025 #include "../fractalparameters.h"
00026 #include "../palette.h"
00027
00028 #include <QtCore/QFile>
00029 #include <QtGui/QImage>
00030
00036 class Accumulator
00037 {
00038 protected:
00039 FractalParameters const * m_fractal_parameters;
00040 QVarLengthArray<unsigned int> m_buffer;
00041
00042 qreal m_inv_x_step;
00043 qreal m_inv_y_step;
00044 unsigned int m_buffer_size;
00045
00046 public:
00051 Accumulator( const FractalParameters * _fractal_parameters );
00052
00058 QImage toImage( const Palette& _palette ) const;
00059
00065 virtual void accumulate( const Point& _init_point, const PointsSequence& _sequence ) = 0;
00070 virtual void accumulate( const Accumulator& _accumulator );
00076 virtual void accumulateAt( const unsigned int _position, const Accumulator& _accumulator );
00077
00083 virtual int load( QFile& _file );
00089 virtual int save( QFile& _file ) const;
00090
00091 protected:
00097 unsigned int bufferPosition( const Point& _point );
00098
00099 };
00100
00101 #endif //_ACCUMULATOR_H_