SampleGeneratorThread.h

Go to the documentation of this file.
00001 /**<!-------------------------------------------------------------------->
00002    @class  SampleGeneratorThread
00003    @author Travis Fischer (fisch0920@gmail.com)
00004    @date   Fall 2008
00005    
00006    @brief
00007       Threaded PointSample generation over the 2D unit interval [0,1]^2
00008    (represents the 'producer' in the classic producer/consumer problem)
00009    
00010    @see Viewport
00011    @see SampleGenerator
00012    @see SampleConsumer
00013    <!-------------------------------------------------------------------->**/
00014 
00015 #ifndef SAMPLE_GENERATOR_THREAD_H_
00016 #define SAMPLE_GENERATOR_THREAD_H_
00017 
00018 #include <renderers/generators/SampleGenerator.h>
00019 #include <QThread>
00020 
00021 class PointSampleRenderer;
00022 
00023 class SampleGeneratorThread : public SampleGenerator, public QThread {
00024    
00025    public:
00026       ///@name Constructors
00027       //@{-----------------------------------------------------------------
00028       
00029       inline   SampleGeneratorThread(PointSampleRenderer *renderer = NULL)
00030          : SampleGenerator(), QThread(), 
00031            m_renderer(renderer)
00032       { }
00033       
00034       virtual ~SampleGeneratorThread();
00035       
00036       
00037       //@}-----------------------------------------------------------------
00038       ///@name Static factory
00039       //@{-----------------------------------------------------------------
00040       
00041       static SampleGeneratorThread *create(const std::string &type);
00042       
00043       
00044       //@}-----------------------------------------------------------------
00045       ///@name Main usage interface
00046       //@{-----------------------------------------------------------------
00047       
00048       /**
00049        * Generates samples over the unit domain in a new thread ('producer')
00050        */
00051       virtual void run();
00052       
00053       
00054       //@}-----------------------------------------------------------------
00055       ///@name Accessors / Mutators
00056       //@{-----------------------------------------------------------------
00057       
00058       inline PointSampleRenderer *getRenderer() {
00059          return m_renderer;
00060       }
00061       
00062       void setRenderer(PointSampleRenderer *renderer);
00063       
00064       inline const Viewport &getViewport() const {
00065          return m_viewport;
00066       }
00067       
00068       inline void setViewport(const Viewport &v) {
00069          m_viewport = v;
00070       }
00071       
00072       
00073       //@}-----------------------------------------------------------------
00074       
00075    protected:
00076       virtual void _addSample(const PointSample &s, PointSampleList &samples);
00077       
00078    protected:
00079       Viewport             m_viewport;
00080       PointSampleRenderer *m_renderer;
00081 };
00082 
00083 #endif // SAMPLE_GENERATOR_THREAD_H_
00084 

Generated on 28 Feb 2009 for Milton by doxygen 1.5.6