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

« back to all changes in this revision

Viewing changes to imageplugins/enhance/localcontrasttool.cpp

  • Committer: Package Import Robot
  • Author(s): Felix Geyer, Rohan Garg, Philip Muškovac, Felix Geyer
  • Date: 2011-09-23 18:18:55 UTC
  • mfrom: (1.2.36 upstream)
  • Revision ID: package-import@ubuntu.com-20110923181855-ifs67wxkugshev9k
Tags: 2:2.1.1-0ubuntu1
[ Rohan Garg ]
* New upstream release (LP: #834190)
  - debian/control
    + Build with libqtwebkit-dev
 - debian/kipi-plugins-common
    + Install libkvkontakte required by kipi-plugins
 - debian/digikam
    + Install panoramagui

[ Philip Muškovac ]
* New upstream release
  - debian/control:
    + Add libcv-dev, libcvaux-dev, libhighgui-dev, libboost-graph1.46-dev,
      libksane-dev, libxml2-dev, libxslt-dev, libqt4-opengl-dev, libqjson-dev,
      libgpod-dev and libqca2-dev to build-deps
    + Add packages for kipi-plugins, libmediawiki, libkface, libkgeomap and
      libkvkontakte
  - debian/rules:
    + Don't build with gphoto2 since it doesn't build with it.
  - Add kubuntu_fix_test_linking.diff to fix linking of the dngconverter test
  - update install files
  - update kubuntu_01_mysqld_executable_name.diff for new cmake layout
    and rename to kubuntu_mysqld_executable_name.diff
* Fix typo in digikam-data description (LP: #804894)
* Fix Vcs links

[ Felix Geyer ]
* Move library data files to the new packages libkface-data, libkgeomap-data
  and libkvkontakte-data.
* Override version of the embedded library packages to 1.0~digikam<version>.
* Exclude the library packages from digikam-dbg to prevent file conflicts in
  the future.
* Call dh_install with --list-missing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* ============================================================
2
 
 *
3
 
 * This file is a part of digiKam project
4
 
 * http://www.digikam.org
5
 
 *
6
 
 * Date        : 2009-08-09
7
 
 * Description : a plugin to enhance image with local contrasts (as human eye does).
8
 
 *
9
 
 * Copyright (C) 2009 by Julien Pontabry <julien dot pontabry at gmail dot com>
10
 
 * Copyright (C) 2009-2010 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
 
 *
12
 
 * This program is free software; you can redistribute it
13
 
 * and/or modify it under the terms of the GNU General
14
 
 * Public License as published by the Free Software Foundation;
15
 
 * either version 2, or (at your option)
16
 
 * any later version.
17
 
 *
18
 
 * This program is distributed in the hope that it will be useful,
19
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
 
 * GNU General Public License for more details.
22
 
 *
23
 
 * ============================================================ */
24
 
 
25
 
#include "localcontrasttool.moc"
26
 
 
27
 
// Qt includes
28
 
 
29
 
#include <QCheckBox>
30
 
#include <QFile>
31
 
#include <QGridLayout>
32
 
#include <QImage>
33
 
#include <QLabel>
34
 
#include <QString>
35
 
#include <QTextStream>
36
 
 
37
 
// KDE includes
38
 
 
39
 
#include <kapplication.h>
40
 
#include <kconfig.h>
41
 
#include <kfiledialog.h>
42
 
#include <kglobal.h>
43
 
#include <kglobalsettings.h>
44
 
#include <kiconloader.h>
45
 
#include <klocale.h>
46
 
#include <kmessagebox.h>
47
 
#include <kstandarddirs.h>
48
 
#include <ktabwidget.h>
49
 
 
50
 
// Local includes
51
 
 
52
 
#include "dimg.h"
53
 
#include "editortoolsettings.h"
54
 
#include "imageiface.h"
55
 
#include "histogramwidget.h"
56
 
#include "imageregionwidget.h"
57
 
#include "localcontrastfilter.h"
58
 
#include "localcontrastsettings.h"
59
 
#include "localcontrastcontainer.h"
60
 
 
61
 
namespace DigikamEnhanceImagePlugin
62
 
{
63
 
 
64
 
class LocalContrastTool::LocalContrastToolPriv
65
 
{
66
 
public:
67
 
 
68
 
    LocalContrastToolPriv() :
69
 
        destinationPreviewData(0),
70
 
        settingsView(0),
71
 
        previewWidget(0),
72
 
        gboxSettings(0)
73
 
    {}
74
 
 
75
 
    static const QString   configGroupName;
76
 
    static const QString   configHistogramChannelEntry;
77
 
    static const QString   configHistogramScaleEntry;
78
 
 
79
 
    uchar*                 destinationPreviewData;
80
 
 
81
 
    LocalContrastSettings* settingsView;
82
 
    ImageRegionWidget*     previewWidget;
83
 
    EditorToolSettings*    gboxSettings;
84
 
};
85
 
const QString LocalContrastTool::LocalContrastToolPriv::configGroupName("localcontrast Tool");
86
 
const QString LocalContrastTool::LocalContrastToolPriv::configHistogramChannelEntry("Histogram Channel");
87
 
const QString LocalContrastTool::LocalContrastToolPriv::configHistogramScaleEntry("Histogram Scale");
88
 
 
89
 
// --------------------------------------------------------
90
 
 
91
 
LocalContrastTool::LocalContrastTool(QObject* parent)
92
 
    : EditorToolThreaded(parent),
93
 
      d(new LocalContrastToolPriv)
94
 
{
95
 
    setObjectName("localcontrast");
96
 
    setToolName(i18n("Local Contrast"));
97
 
    setToolIcon(SmallIcon("tonemap"));
98
 
 
99
 
    d->previewWidget = new ImageRegionWidget;
100
 
    setToolView(d->previewWidget);
101
 
    setPreviewModeMask(PreviewToolBar::AllPreviewModes);
102
 
 
103
 
    // -------------------------------------------------------------
104
 
 
105
 
    d->gboxSettings = new EditorToolSettings;
106
 
    d->gboxSettings->setTools(EditorToolSettings::Histogram);
107
 
    d->gboxSettings->setButtons(EditorToolSettings::Default|
108
 
                                EditorToolSettings::Ok|
109
 
                                EditorToolSettings::Cancel|
110
 
                                EditorToolSettings::Load|
111
 
                                EditorToolSettings::SaveAs|
112
 
                                EditorToolSettings::Try);
113
 
 
114
 
    // -------------------------------------------------------------
115
 
 
116
 
    d->settingsView = new LocalContrastSettings(d->gboxSettings->plainPage());
117
 
    setToolSettings(d->gboxSettings);
118
 
    init();
119
 
 
120
 
    // -------------------------------------------------------------
121
 
 
122
 
    connect(d->previewWidget, SIGNAL(signalResized()),
123
 
            this, SLOT(slotEffect()));
124
 
}
125
 
 
126
 
LocalContrastTool::~LocalContrastTool()
127
 
{
128
 
    if (d->destinationPreviewData)
129
 
    {
130
 
        delete [] d->destinationPreviewData;
131
 
    }
132
 
 
133
 
    delete d;
134
 
}
135
 
 
136
 
void LocalContrastTool::readSettings()
137
 
{
138
 
    KSharedConfig::Ptr config = KGlobal::config();
139
 
    KConfigGroup group        = config->group(d->configGroupName);
140
 
 
141
 
    d->gboxSettings->histogramBox()->setChannel((ChannelType)group.readEntry(d->configHistogramChannelEntry, (int)LuminosityChannel));
142
 
    d->gboxSettings->histogramBox()->setScale((HistogramScale)group.readEntry(d->configHistogramScaleEntry,  (int)LogScaleHistogram));
143
 
    d->settingsView->readSettings(group);
144
 
}
145
 
 
146
 
void LocalContrastTool::writeSettings()
147
 
{
148
 
    KSharedConfig::Ptr config = KGlobal::config();
149
 
    KConfigGroup group        = config->group(d->configGroupName);
150
 
 
151
 
    group.writeEntry(d->configHistogramChannelEntry, (int)d->gboxSettings->histogramBox()->channel());
152
 
    group.writeEntry(d->configHistogramScaleEntry,   (int)d->gboxSettings->histogramBox()->scale());
153
 
    d->settingsView->writeSettings(group);
154
 
    group.sync();
155
 
}
156
 
 
157
 
void LocalContrastTool::slotResetSettings()
158
 
{
159
 
    d->settingsView->resetToDefault();
160
 
}
161
 
 
162
 
void LocalContrastTool::prepareEffect()
163
 
{
164
 
    DImg image = d->previewWidget->getOriginalRegionImage(true);
165
 
    setFilter(new LocalContrastFilter(&image, this, d->settingsView->settings()));
166
 
}
167
 
 
168
 
void LocalContrastTool::prepareFinal()
169
 
{
170
 
    ImageIface iface(0, 0);
171
 
    setFilter(new LocalContrastFilter(iface.getOriginalImg(), this, d->settingsView->settings()));
172
 
}
173
 
 
174
 
void LocalContrastTool::putPreviewData()
175
 
{
176
 
    DImg preview = filter()->getTargetImage();
177
 
    d->previewWidget->setPreviewImage(preview);
178
 
 
179
 
    // Update histogram.
180
 
 
181
 
    if (d->destinationPreviewData)
182
 
    {
183
 
        delete [] d->destinationPreviewData;
184
 
    }
185
 
 
186
 
    d->destinationPreviewData = preview.copyBits();
187
 
    d->gboxSettings->histogramBox()->histogram()->updateData(d->destinationPreviewData,
188
 
            preview.width(), preview.height(), preview.sixteenBit(),
189
 
            0, 0, 0, false);
190
 
}
191
 
 
192
 
void LocalContrastTool::putFinalData()
193
 
{
194
 
    ImageIface iface(0, 0);
195
 
    iface.putOriginalImage(i18n("Local Contrast"), filter()->getTargetImage().bits());
196
 
}
197
 
 
198
 
void LocalContrastTool::slotLoadSettings()
199
 
{
200
 
    d->settingsView->loadSettings();
201
 
    d->gboxSettings->histogramBox()->histogram()->reset();
202
 
    slotEffect();
203
 
}
204
 
 
205
 
void LocalContrastTool::slotSaveAsSettings()
206
 
{
207
 
    d->settingsView->saveAsSettings();
208
 
}
209
 
 
210
 
} // namespace DigikamEnhanceImagePlugin