extragear/graphics/digikam/utilities/cameragui

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

extragear/graphics/digikam/utilities/cameragui

Gilles Caulier
SVN commit 491071 by cgilles:

digiKam from trunk : It's Christmast Time !

Camera Interface can display RAW file thumbnails. Tom you can backport this commit into stable branch.

Next stage is to create new DImg method to get thumbnail.

CCMAIL: [hidden email]

 M  +10 -9     Makefile.am  
 M  +48 -14    umscamera.cpp  


--- trunk/extragear/graphics/digikam/utilities/cameragui/Makefile.am #491070:491071
@@ -2,20 +2,21 @@
 
 noinst_LTLIBRARIES = libcameragui.la
 
-libcameragui_la_SOURCES = cameraui.cpp   cameraiconview.cpp  \
- cameraiconitem.cpp cameracontroller.cpp \
- animwidget.cpp renamecustomizer.cpp  \
- dkcamera.cpp gpcamera.cpp umscamera.cpp \
- gpiteminfo.cpp gpiteminfodlg.cpp camerainfodialog.cpp \
- albumselectdialog.cpp
+libcameragui_la_SOURCES = cameraui.cpp cameraiconview.cpp  \
+  cameraiconitem.cpp cameracontroller.cpp \
+  animwidget.cpp renamecustomizer.cpp  \
+  dkcamera.cpp gpcamera.cpp umscamera.cpp \
+  gpiteminfo.cpp gpiteminfodlg.cpp camerainfodialog.cpp \
+  albumselectdialog.cpp
 
 libcameragui_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
 libcameragui_la_LIBADD  = $(LIB_GPHOTO) $(LIBKEXIF_LIBS) $(LIBJPEG)
 
 INCLUDES= -I$(top_srcdir)/digikam/digikam \
- -I$(top_srcdir)/digikam/utilities/imageeditor/editor \
- -I$(top_srcdir)/digikam/libs/jpegutils \
- $(GPHOTO_CFLAGS) $(LIBKEXIF_CFLAGS) $(all_includes)
+  -I$(top_srcdir)/digikam/utilities/imageeditor/editor \
+  -I$(top_srcdir)/digikam/libs/jpegutils \
+  -I$(top_srcdir)/digikam/libs/dcraw \
+  $(GPHOTO_CFLAGS) $(LIBKEXIF_CFLAGS) $(all_includes)
 
 digikamcameraguiicondir = $(kde_datadir)/digikam/icons
 digikamcameraguiicon_ICON = AUTO
--- trunk/extragear/graphics/digikam/utilities/cameragui/umscamera.cpp #491070:491071
@@ -1,10 +1,12 @@
 /* ============================================================
  * Author: Renchi Raju <[hidden email]>
+ *         Gilles Caulier <caulier dot gilles at free.fr>
  * Date  : 2004-12-21
  * Description :
  *
- * Copyright 2004 by Renchi Raju
-
+ * Copyright 2004-2005 by Renchi Raju
+ * Copyright 2005 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;
@@ -18,14 +20,8 @@
  *
  * ============================================================ */
 
-#include <kdebug.h>
+// C Ansi includes.
 
-#include <qdir.h>
-#include <qfileinfo.h>
-#include <qfile.h>
-#include <qstringlist.h>
-#include <qdeepcopy.h>
-
 extern "C"
 {
 #include <sys/types.h>
@@ -34,10 +30,27 @@
 #include <utime.h>
 }
 
+// QT includes.
+
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qfile.h>
+#include <qstringlist.h>
+#include <qdeepcopy.h>
+
+// KDE includes.
+
+#include <ktempfile.h>
+#include <kdebug.h>
+
+// LibKExif includes.
+
 #include <libkexif/kexifdata.h>
 
+// Local includes.
+
+#include "dcraw_parse.h"
 #include "albumsettings.h"
-
 #include "umscamera.h"
 
 UMSCamera::UMSCamera(const QString& model,
@@ -130,17 +143,38 @@
                              QImage& thumbnail)
 {
     m_cancel = false;
+
+    // Trying to get thumbnail from Exif data.
+
     KExifData exifData;
-    if (!exifData.readFromFile(folder + "/" + itemName))
+    
+    if (exifData.readFromFile(folder + "/" + itemName))
     {
-        return false;
+        thumbnail = exifData.getThumbnail();
+        if (!thumbnail.isNull())
+           return true;
     }
+
+   // Trying to get thumbnail from RAW file using dcraw parse utility.
 
-    thumbnail = exifData.getThumbnail();
+    KTempFile thumbFile(QString::null, "camerarawthumb");
+    thumbFile.setAutoDelete(true);
+    Digikam::DcrawParse rawFileParser;
+    
+    if (thumbFile.status() == 0)
+    {
+        if (rawFileParser.getThumbnail(QFile::encodeName(folder + "/" + itemName),
+                                    QFile::encodeName(thumbFile.name())) == 0)
+        {
+            thumbnail.load(thumbFile.name());
+            if (!thumbnail.isNull())
+                return true;
+        }
+    }
 
     // TODO: check for thm files if we didn't manage to get thumbnail from exif
     
-    return true;
+    return false;
 }
 
 bool UMSCamera::getExif(const QString& ,
_______________________________________________
Digikam-devel mailing list
[hidden email]
https://mail.kde.org/mailman/listinfo/digikam-devel