Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename T> class RGBHistogramTrait
- {
- public:
- RGBHistogramTrait(const QImage &image, RGBHistogram<T> hist) : _hist(hist), _base((QRgb *) (image.bits()));
- private:
- const QRgb *_base;
- RGBHistogram<T> _hist;
- };
- template<typename T> struct RGBHistogram
- {
- RGBHistogram<T>(Histogram<T> &redHist, Histogram<T> &greenHist, Histogram<T> &blueHist)
- : redHist(redHist), greenHist(greenHist), blueHist(blueHist) {}
- Histogram<T> &redHist, &greenHist, &blueHist;
- };
- template<typename T> void ImageReader<T>::calculate(RGBHistogram<T> &hist)
- {
- QImage image;
- if (image.load(QString::fromUtf8(_file.c_str())))
- {
- std::vector<RGBHistogramTrait<T> > *fs = new std::vector<RGBHistogramTrait<T> >[_threads];
- for (ThreadNum i = 0; i < _threads; i++)
- {
- fs->push_back(RGBHistogramTrait<T>(image, hist));
- }
- ThreadCoord::start(image.width() * image.height(), _threads, *fs);
- // Now aggregate the results in fs back into the original hist
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement