[Digikam-devel] extragear/graphics/digikam/imageplugins
Gilles Caulier
caulier.gilles at free.fr
Tue May 9 09:44:18 BST 2006
SVN commit 538891 by cgilles:
digikam from trunk : Black & White converter plugin : perform optimizations and simplifications of little thumbnail effect in QListBox. No need to create a new instance of ImageIface at each thumb construction
CCMAIL: digikam-devel at kde.org
M +22 -37 imageeffect_bwsepia.cpp
M +1 -0 imageeffect_bwsepia.h
--- trunk/extragear/graphics/digikam/imageplugins/imageeffect_bwsepia.cpp #538890:538891
@@ -71,22 +71,26 @@
class ListBoxWhatsThis : public QWhatsThis
{
+
public:
+
ListBoxWhatsThis(QListBox* w) : QWhatsThis(w), m_listBox(w) {}
virtual QString text (const QPoint &);
void add(QListBoxItem*, const QString& text);
protected:
- QMap<QListBoxItem*, QString> m_itemWhatsThisMap;
- QListBox* m_listBox;
+
+ QMap<QListBoxItem*, QString> m_itemWhatsThisMap;
+ QListBox *m_listBox;
};
QString ListBoxWhatsThis::text(const QPoint &p)
{
QListBoxItem* item = m_listBox->itemAt(p);
- if (item != 0) {
+
+ if (item != 0)
return m_itemWhatsThisMap[item];
- }
+
return QString::null;
}
@@ -95,7 +99,6 @@
m_itemWhatsThisMap[item] = text;
}
-
class ListBoxPreviewItem : public QListBoxPixmap
{
public:
@@ -118,19 +121,19 @@
return QMAX(width, pixmap()->width() + 5);
}
+// -----------------------------------------------------------------------------------
-
-
-
ImageEffect_BWSepia::ImageEffect_BWSepia(QWidget* parent)
- : Digikam::ImageDlgBase(parent, i18n("Convert to Black & White"), "convertbw", false)
- ,m_destinationPreviewData(0L)
+ : Digikam::ImageDlgBase(parent, i18n("Convert to Black & White"),
+ "convertbw", false),
+ m_destinationPreviewData(0L)
{
setHelp("blackandwhitetool.anchor", "digikam");
Digikam::ImageIface iface(0, 0);
- m_originalImage = iface.getOriginalImg();
- m_curves = new Digikam::ImageCurves(m_originalImage->sixteenBit());
+ m_originalImage = iface.getOriginalImg();
+ m_thumbnailImage = m_originalImage->smoothScale(128, 128, QSize::ScaleMin);
+ m_curves = new Digikam::ImageCurves(m_originalImage->sixteenBit());
// -------------------------------------------------------------
@@ -399,6 +402,13 @@
delete m_curves;
}
+QPixmap ImageEffect_BWSepia::getThumbnailForEffect(int type)
+{
+ Digikam::DImg thumb = m_thumbnailImage.copy();
+ blackAndWhiteConversion(thumb.bits(), thumb.width(), thumb.height(), thumb.sixteenBit(), type);
+ return (thumb.convertToPixmap());
+}
+
void ImageEffect_BWSepia::slotChannelChanged(int channel)
{
switch(channel)
@@ -515,31 +525,6 @@
kapp->restoreOverrideCursor();
}
-QPixmap ImageEffect_BWSepia::getThumbnailForEffect(int type)
-{
- const int shrinkFactor = 2;
-
- Digikam::ImageIface* iface = m_previewWidget->imageIface();
- int w = iface->previewWidth() / shrinkFactor;
- int h = iface->previewHeight() / shrinkFactor;
- bool a = iface->previewHasAlpha();
- bool sb = iface->previewSixteenBit();
-
- Digikam::ImageIface* thumbnailIface = new Digikam::ImageIface(w, h);
- uchar *data = thumbnailIface->getPreviewImage();
-
- blackAndWhiteConversion(data, w, h, sb, type);
-
- Digikam::DImg preview(w, h, sb, a, data);
-
- QPixmap res = preview.convertToPixmap();
- delete[] data;
- delete thumbnailIface;
-
- return res;
-}
-
-
void ImageEffect_BWSepia::finalRendering()
{
kapp->setOverrideCursor( KCursor::waitCursor() );
--- trunk/extragear/graphics/digikam/imageplugins/imageeffect_bwsepia.h #538890:538891
@@ -123,6 +123,7 @@
Digikam::ImageCurves *m_curves;
Digikam::DImg *m_originalImage;
+ Digikam::DImg m_thumbnailImage;
private:
More information about the Digikam-devel
mailing list