00001
00002
00003
00004
00005
00006
00007 #ifndef COLOR_FILTER_H
00008 #define COLOR_FILTER_H
00009
00010 #include "ColorFilterEntry.h"
00011 #include "ColorFilterMode.h"
00012 #include <QList>
00013 #include <QMap>
00014 #include <QRgb>
00015
00016 class ColorFilterStrategyAbstractBase;
00017 class QImage;
00018
00020 class ColorFilter
00021 {
00022 public:
00024 ColorFilter();
00025
00027 bool colorCompare (QRgb rgb1,
00028 QRgb rgb2) const;
00029
00031 void filterImage (const QImage &imageOriginal,
00032 QImage &imageFiltered,
00033 ColorFilterMode colorFilterMode,
00034 double low,
00035 double high,
00036 QRgb rgbBackground);
00037
00041 QRgb marginColor(const QImage *image) const;
00042
00044 bool pixelFilteredIsOn (const QImage &image,
00045 int x,
00046 int y) const;
00047
00050 double pixelToZeroToOneOrMinusOne (ColorFilterMode colorFilterMode,
00051 const QColor &pixel,
00052 QRgb rgbBackground) const;
00053
00055 bool pixelUnfilteredIsOn (ColorFilterMode colorFilterMode,
00056 const QColor &pixel,
00057 QRgb rgbBackground,
00058 double low0To1,
00059 double high0To1) const;
00060
00062 int zeroToOneToValue (ColorFilterMode colorFilterMode,
00063 double s) const;
00064
00065 private:
00066
00067 void createStrategies ();
00068
00069 typedef QList<ColorFilterEntry> ColorList;
00070
00071 void mergePixelIntoColorCounts (QRgb pixel,
00072 ColorList &colorCounts) const;
00073
00074
00075 QMap<ColorFilterMode, ColorFilterStrategyAbstractBase*> m_strategies;
00076
00077 };
00078
00079 #endif // COLOR_FILTER_H