~ubuntu-branches/ubuntu/saucy/digikam/saucy

« back to all changes in this revision

Viewing changes to libs/dimg/filters/bw/mixerfilter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-12-21 23:19:11 UTC
  • mfrom: (1.2.33 upstream) (3.1.7 experimental)
  • Revision ID: james.westby@ubuntu.com-20101221231911-z9jip7s5aht1jqn9
Tags: 2:1.7.0-1ubuntu1
* Merge from Debian Experimental. Remaining Ubuntu changes:
  - Export .pot name and copy to plugins in debian/rules
  - Version build-depends on kipi-plugins-dev to ensure build is against the
    same version on all archs
* Drop debian/patches/kubuntu_01_linker.diff, incoporated upstream
* Remove patches directory and unused patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
{
42
42
 
43
43
MixerFilter::MixerFilter(DImg* orgImage, QObject* parent, const MixerContainer& settings)
44
 
           : DImgThreadedFilter(orgImage, parent, "MixerFilter")
 
44
    : DImgThreadedFilter(orgImage, parent, "MixerFilter")
45
45
{
46
46
    m_settings = settings;
47
47
    initFilter();
66
66
 
67
67
    register uint i;
68
68
 
69
 
    double rnorm = CalculateNorm (m_settings.redRedGain, m_settings.redGreenGain, 
 
69
    double rnorm = CalculateNorm (m_settings.redRedGain, m_settings.redGreenGain,
70
70
                                  m_settings.redBlueGain, m_settings.bPreserveLum);
71
 
    double gnorm = CalculateNorm (m_settings.greenRedGain, m_settings.greenGreenGain, 
 
71
    double gnorm = CalculateNorm (m_settings.greenRedGain, m_settings.greenGreenGain,
72
72
                                  m_settings.greenBlueGain, m_settings.bPreserveLum);
73
 
    double bnorm = CalculateNorm (m_settings.blueRedGain, m_settings.blueGreenGain, 
 
73
    double bnorm = CalculateNorm (m_settings.blueRedGain, m_settings.blueGreenGain,
74
74
                                  m_settings.blueBlueGain, m_settings.bPreserveLum);
75
75
 
76
76
    if (!sixteenBit)        // 8 bits image.
107
107
            ptr += 4;
108
108
 
109
109
            progress = (int)(((double)i * 100.0) / size);
 
110
 
110
111
            if ( progress%5 == 0 )
 
112
            {
111
113
                postProgress( progress );
 
114
            }
112
115
        }
113
116
    }
114
117
    else               // 16 bits image.
115
118
    {
116
119
        unsigned short  nGray, red, green, blue;
117
 
        unsigned short* ptr = (unsigned short *)bits;
 
120
        unsigned short* ptr = (unsigned short*)bits;
118
121
 
119
122
        for (i = 0 ; i < size ; ++i)
120
123
        {
130
133
            }
131
134
            else
132
135
            {
133
 
                ptr[0] = MixPixel (m_settings.blueRedGain, m_settings.blueGreenGain, m_settings.blueBlueGain, 
 
136
                ptr[0] = MixPixel (m_settings.blueRedGain, m_settings.blueGreenGain, m_settings.blueBlueGain,
134
137
                                   red, green, blue, sixteenBit, bnorm);
135
 
                ptr[1] = MixPixel (m_settings.greenRedGain, m_settings.greenGreenGain, m_settings.greenBlueGain, 
 
138
                ptr[1] = MixPixel (m_settings.greenRedGain, m_settings.greenGreenGain, m_settings.greenBlueGain,
136
139
                                   red, green, blue, sixteenBit, gnorm);
137
 
                ptr[2] = MixPixel (m_settings.redRedGain, m_settings.redGreenGain, m_settings.redBlueGain, 
 
140
                ptr[2] = MixPixel (m_settings.redRedGain, m_settings.redGreenGain, m_settings.redBlueGain,
138
141
                                   red, green, blue, sixteenBit, rnorm);
139
142
            }
140
143
 
141
144
            ptr += 4;
142
145
 
143
146
            progress = (int)(((double)i * 100.0) / size);
 
147
 
144
148
            if ( progress%5 == 0 )
 
149
            {
145
150
                postProgress( progress );
 
151
            }
146
152
        }
147
153
    }
148
154
}
153
159
    double lfSum = RedGain + GreenGain + BlueGain;
154
160
 
155
161
    if ((lfSum == 0.0) || (bPreserveLum == false))
 
162
    {
156
163
        return (1.0);
 
164
    }
157
165
 
158
166
    return( fabs (1.0 / lfSum) );
159
167
}