[Digikam-devel] branches/stable/extragear/graphics/digikam/kioslave

Gilles Caulier caulier.gilles at free.fr
Thu Apr 20 08:29:47 BST 2006


SVN commit 531782 by cgilles:

digikam from stable : Fix broken thumbnail creation by digiKam KIO-slave with 16 bits TIFF images unrecognized properly by dcraw::parse method like a real tiff images.
CCBUGS: 125916
CCMAIL: digikam-devel at kde.org

 M  +55 -34    digikamthumbnail.cpp  
 M  +32 -29    digikamthumbnail.h  


--- branches/stable/extragear/graphics/digikam/kioslave/digikamthumbnail.cpp #531781:531782
@@ -1,30 +1,27 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-//    DIGIKAMTHUMBNAIL.CPP
-//
-//    Copyright (C) 2003-2004 Renchi Raju <renchi at pooh.tam.uiuc.edu>
-//                            Gilles CAULIER <caulier dot gilles at free.fr>
-//
-//    This program is free software; you can redistribute it and/or modify
-//    it under the terms of the GNU General Public License as published by
-//    the Free Software Foundation; either version 2 of the License, or
-//    (at your option) any later version.
-//
-//    This program is distributed in the hope that it will be useful,
-//    but WITHOUT ANY WARRANTY; without even the implied warranty of
-//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//    GNU General Public License for more details.
-//
-//    You should have received a copy of the GNU General Public License
-//    along with this program; if not, write to the Free Software
-//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//
-//////////////////////////////////////////////////////////////////////////////
+/* ============================================================
+ * Authors: Renchi Raju <renchi at pooh.tam.uiuc.edu>
+ *          Gilles Caulier <caulier dot gilles at kdemail dot net> 
+ * Date   : 2003-01-15
+ * Description : digiKam KIO slave to get image thumbnails.
+ *
+ * Copyright 2003-2005 by Renchi Raju, Gilles Caulier
+ * Copyright 2006      by Gilles Caulier
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, or (at your option)
+ * any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * ============================================================ */
 
 #define XMD_H
 
-#include <digikam_export.h>
-
 // Qt Includes.
 
 #include <qcstring.h>
@@ -32,6 +29,7 @@
 #include <qimage.h>
 #include <qdatastream.h>
 #include <qfile.h>
+#include <qfileinfo.h>
 #include <qdir.h>
 #include <qwmatrix.h>
 #include <qregexp.h>
@@ -80,6 +78,7 @@
 
 #include "dcraw_parse.h"
 #include "digikamthumbnail.h"
+#include "digikam_export.h"
 
 #define X_DISPLAY_MISSING 1
 #include <Imlib2.h>
@@ -342,20 +341,25 @@
 
     if (regenerate)
     {
-        // Try JPEG loading...
-        if ( !loadJPEG(img, url.path()) )
+        // In first we trying to load image using the file extension. This is mandatory because
+        // some tiff files are detected like RAW files by dcraw::parse method.
+        if ( !loadByExtension(img, url.path()) )
         {
-            // Try to load with imlib2
-            if ( !loadImlib2(img, url.path()) )
+            // Try JPEG loading...
+            if ( !loadJPEG(img, url.path()) )
             {
-                // Try to load with QT/KDELib
-                if (!img.load(url.path()))
+                // Try to load with dcraw : RAW files.
+                if ( !loadDCRAW(img, url.path()) )
                 {
-                    // Try to load with KDE thumbcreators
-                    if (!loadKDEThumbCreator(img, url.path()))
+                    // Try to load with imlib2 : TIFF, PNG, etc.
+                    if ( !loadImlib2(img, url.path()) )
                     {
-                        // Try to load with dcraw
-                        loadDCRAW( img, url.path() );
+                        // Try to load with QT/KDELib
+                        if ( !img.load(url.path()) )
+                        {
+                            // Try to load with KDE thumbcreators : video files and others stuff.
+                            loadKDEThumbCreator(img, url.path());
+                        }
                     }
                 }
             }
@@ -436,7 +440,24 @@
     finished();
 }
 
+bool kio_digikamthumbnailProtocol::loadByExtension(QImage& image, const QString& path)
+{
+    QFileInfo fileInfo(path);
+    if (!fileInfo.exists())
+        return false;
+    
+    QString ext = fileInfo.extension().upper();
 
+    if (ext == QString("JPEG") || ext == QString("JPG"))
+        return (loadJPEG(image, path));
+    else if (ext == QString("PNG"))
+        return (image.load(path));
+    else if (ext == QString("TIFF") || ext == QString("TIF"))
+        return (image.load(path));
+    
+    return false;
+}
+
 /////////////////////////////////////////////////////////////////////////////////////////
 // JPEG Extraction
 
--- branches/stable/extragear/graphics/digikam/kioslave/digikamthumbnail.h #531781:531782
@@ -1,25 +1,24 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-//    DIGIKAMTHUMBNAIL.H
-//
-//    Copyright (C) 2003-2004 Renchi Raju <renchi at pooh.tam.uiuc.edu>
-//                            Gilles CAULIER <caulier dot gilles at free.fr>
-//
-//    This program is free software; you can redistribute it and/or modify
-//    it under the terms of the GNU General Public License as published by
-//    the Free Software Foundation; either version 2 of the License, or
-//    (at your option) any later version.
-//
-//    This program is distributed in the hope that it will be useful,
-//    but WITHOUT ANY WARRANTY; without even the implied warranty of
-//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//    GNU General Public License for more details.
-//
-//    You should have received a copy of the GNU General Public License
-//    along with this program; if not, write to the Free Software
-//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//
-//////////////////////////////////////////////////////////////////////////////
+/* ============================================================
+ * Authors: Renchi Raju <renchi at pooh.tam.uiuc.edu>
+ *          Gilles Caulier <caulier dot gilles at kdemail dot net> 
+ * Date   : 2003-01-15
+ * Description : digiKam KIO slave to get image thumbnails.
+ * 
+ * Copyright 2003-2005 by Renchi Raju, Gilles Caulier
+ * Copyright 2006      by Gilles Caulier
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, or (at your option)
+ * any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * ============================================================ */
 
 #ifndef _digikamthumbnail_H_
 #define _digikamthumbnail_H_
@@ -36,6 +35,7 @@
 
 class kio_digikamthumbnailProtocol : public KIO::SlaveBase
 {
+
 public:
 
     kio_digikamthumbnailProtocol(int argc, char** argv);
@@ -44,22 +44,25 @@
 
 private:
 
+    bool loadByExtension(QImage& image, const QString& path);
     bool loadJPEG(QImage& image, const QString& path);
     bool loadImlib2(QImage& image, const QString& path);
     bool loadKDEThumbCreator(QImage& image, const QString& path);
     bool loadDCRAW(QImage& image,  const QString& path);
     void createThumbnailDirs();
 
-    int  cachedSize_;
+private:
 
-    int org_width_;
-    int org_height_;
-    int new_width_;
-    int new_height_;
+    int           cachedSize_;
 
-    QString smallThumbPath_;
-    QString bigThumbPath_;
+    int           org_width_;
+    int           org_height_;
+    int           new_width_;
+    int           new_height_;
 
+    QString       smallThumbPath_;
+    QString       bigThumbPath_;
+
     QApplication *app_;
     int           argc_;
     char**        argv_;



More information about the Digikam-devel mailing list