SampleGeneratorThread.cpp

Go to the documentation of this file.
00001 /**<!-------------------------------------------------------------------->
00002    @file   SampleGeneratorThread.cpp
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 #include "SampleGeneratorThread.h"
00016 #include "generators.h"
00017 
00018 #include <PointSampleRenderer.h>
00019 #include <QtCore>
00020 
00021 SampleGeneratorThread::~SampleGeneratorThread() {
00022    ASSERT(m_renderer);
00023    
00024    m_renderer->removeProducer();
00025 }
00026 
00027 void SampleGeneratorThread::run() {
00028    PointSampleList dummyList;
00029    ASSERT(m_renderer);
00030    
00031    generate(dummyList, m_viewport);
00032 }
00033 
00034 void SampleGeneratorThread::_addSample(const PointSample &s, 
00035                                        PointSampleList &/* unused */)
00036 {
00037    m_renderer->addSharedSample(s);
00038 }
00039 
00040 void SampleGeneratorThread::setRenderer(PointSampleRenderer *renderer) {
00041    ASSERT(renderer);
00042    
00043    m_renderer = renderer;
00044    m_renderer->addProducer();
00045 }
00046 
00047 SampleGeneratorThread *SampleGeneratorThread::create(const std::string &type) {
00048    if (type == "uniform") {
00049       return new UniformSampleGeneratorThread();
00050    } else if (type == "stochastic") {
00051       return new StochasticSampleGeneratorThread();
00052    } else if (type == "jittered") {
00053       return new JitteredSampleGeneratorThread();
00054    } else if (type == "dissolve") {
00055       return new DissolveSampleGeneratorThread();
00056    } else if (type == "hilbert") {
00057       return new HilbertSampleGeneratorThread();
00058    } else if (type == "super" || type == "default") {
00059       return new SuperSampleGeneratorThread("jittered");
00060    } else {
00061       ASSERT(0 && "encountered unknown sample type\n");
00062    }
00063    
00064    return NULL;
00065 }
00066 

Generated on 28 Feb 2009 for Milton by doxygen 1.5.6