1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released      *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission.     *
5  ******************************************************************************************************/
6 
7 #include "ColorConstants.h"
8 #include "ColorFilterSettings.h"
9 #include "ColorFilterSettingsStrategyForeground.h"
10 #include <qmath.h>
11 #include <QTextStream>
12 
ColorFilterSettingsStrategyForeground()13 ColorFilterSettingsStrategyForeground::ColorFilterSettingsStrategyForeground ()
14 {
15 }
16 
~ColorFilterSettingsStrategyForeground()17 ColorFilterSettingsStrategyForeground::~ColorFilterSettingsStrategyForeground ()
18 {
19 }
20 
high(const ColorFilterSettings & colorFilterSettings) const21 double ColorFilterSettingsStrategyForeground::high (const ColorFilterSettings &colorFilterSettings) const
22 {
23   return double (colorFilterSettings.foregroundHigh () - FOREGROUND_MIN) /
24     double (FOREGROUND_MAX - FOREGROUND_MIN);
25 }
26 
low(const ColorFilterSettings & colorFilterSettings) const27 double ColorFilterSettingsStrategyForeground::low (const ColorFilterSettings &colorFilterSettings) const
28 {
29   return double (colorFilterSettings.foregroundLow () - FOREGROUND_MIN) /
30     double (FOREGROUND_MAX - FOREGROUND_MIN);
31 }
32 
printStream(const ColorFilterSettings & colorFilterSettings,QString indentation,QTextStream & str) const33 void ColorFilterSettingsStrategyForeground::printStream (const ColorFilterSettings &colorFilterSettings,
34                                                          QString indentation,
35                                                          QTextStream &str) const
36 {
37   str << indentation << "foregroundLow=" << colorFilterSettings.intensityLow () << "\n";
38   str << indentation << "foregroundHigh=" << colorFilterSettings.intensityHigh () << "\n";
39 }
40 
setHigh(ColorFilterSettings & colorFilterSettings,double s0To1)41 void ColorFilterSettingsStrategyForeground::setHigh (ColorFilterSettings &colorFilterSettings,
42                                                      double s0To1)
43 {
44   colorFilterSettings.setForegroundHigh (qFloor (FOREGROUND_MIN + s0To1 * (FOREGROUND_MAX - FOREGROUND_MIN)));
45 }
46 
setLow(ColorFilterSettings & colorFilterSettings,double s0To1)47 void ColorFilterSettingsStrategyForeground::setLow (ColorFilterSettings &colorFilterSettings,
48                                                     double s0To1)
49 {
50   colorFilterSettings.setForegroundLow (qFloor (FOREGROUND_MIN + s0To1 * (FOREGROUND_MAX - FOREGROUND_MIN)));
51 }
52