[Digikam-devel] extragear/graphics/digikam

Gilles Caulier caulier.gilles at free.fr
Tue Dec 20 12:07:10 GMT 2005


SVN commit 489984 by cgilles:

digiKam from trunk : new C++ class to parse RAW file based on dcraw::parse.c implementation.
TODO : 
- add new method to get RAW file orientation.
- do a new C++ class based on dcraw decoder implementation !

CCMAIL: digikam-devel at kde.org


 M  +4 -3      kioslave/Makefile.am  
 M  +5 -8      kioslave/digikamthumbnail.cpp  
 M  +1 -1      libs/dcraw/Makefile.am  
 A             libs/dcraw/dcraw_parse.cpp   [License: GPL]
 A             libs/dcraw/dcraw_parse.h   [License: GPL]
 M  +2 -1      libs/dimg/Makefile.am  
 M  +3 -9      libs/dimg/dimg.cpp  
 M  +2 -1      libs/dimg/loaders/Makefile.am  
 M  +8 -12     libs/dimg/loaders/rawloader.cpp  


--- trunk/extragear/graphics/digikam/kioslave/Makefile.am #489983:489984
@@ -1,7 +1,8 @@
 INCLUDES    = -I$(top_srcdir)/digikam/libs/jpegutils \
-	      -I$(top_srcdir)/digikam/libs/dimg \
-	      -I$(top_srcdir)/digikam/digikam \
-	      $(LIBKEXIF_CFLAGS) $(all_includes) 
+	          -I$(top_srcdir)/digikam/libs/dimg \
+	          -I$(top_srcdir)/digikam/libs/dcraw \
+	          -I$(top_srcdir)/digikam/digikam \
+	          $(LIBKEXIF_CFLAGS) $(all_includes)
 
 METASOURCES = AUTO  
 KDE_CFLAGS  = -w
--- trunk/extragear/graphics/digikam/kioslave/digikamthumbnail.cpp #489983:489984
@@ -52,6 +52,7 @@
 
 // Local includes
 
+#include "dcraw_parse.h"
 #include "dimg.h"
 #include "exiforientation_p.h"
 #include "digikamthumbnail.h"
@@ -76,11 +77,6 @@
 
 using namespace KIO;
 
-extern "C"
-{
-int dcraw_getThumbnail(const char* infile, const char* outfile);
-}
-
 static void exifRotate(const QString& filePath, QImage& thumb)
 {
     // Rotate thumbnail based on EXIF rotate tag
@@ -585,11 +581,12 @@
 
     KTempFile thumbFile(QString::null, "rawthumb");
     thumbFile.setAutoDelete(true);
-
+    Digikam::DcrawParse rawFileParser;
+    
     if (thumbFile.status() == 0)
     {
-        if (dcraw_getThumbnail(QFile::encodeName(path),
-                               QFile::encodeName(thumbFile.name())) == 0)
+        if (rawFileParser.getThumbnail(QFile::encodeName(path),
+                                       QFile::encodeName(thumbFile.name())) == 0)
         {
             image.load(thumbFile.name());
             if (!image.isNull())
--- trunk/extragear/graphics/digikam/libs/dcraw/Makefile.am #489983:489984
@@ -2,6 +2,6 @@
 
 noinst_LTLIBRARIES = libdcraw.la
 
-libdcraw_la_SOURCES = parse.c 
+libdcraw_la_SOURCES = dcraw_parse.cpp 
 
 libdcraw_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
--- trunk/extragear/graphics/digikam/libs/dimg/Makefile.am #489983:489984
@@ -17,7 +17,8 @@
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/digikam/libs/dimg/loaders \
 	                       -I$(top_srcdir)/digikam/libs/dimg/filters \
-	                       -I$(top_srcdir)/digikam/digikam 
+   	                       -I$(top_srcdir)/digikam/libs/dcraw \
+	                       -I$(top_srcdir)/digikam/digikam
 
 digikaminclude_HEADERS = dimg.h dimgloader.h icctransform.h dcolor.h 
 digikamincludedir = $(includedir)/digikam
--- trunk/extragear/graphics/digikam/libs/dimg/dimg.cpp #489983:489984
@@ -37,6 +37,7 @@
 
 // Local includes.
 
+#include "dcraw_parse.h"
 #include "jpegloader.h"
 #include "tiffloader.h"
 #include "pngloader.h"
@@ -49,14 +50,6 @@
 typedef uint64_t ullong;
 typedef int64_t  llong;
 
-
-// From dcraw program (parse.c) to identify RAW files
-
-extern "C"
-{
-    int dcraw_getCameraModel(const char* infile, char* cameraConstructor, char* cameraModel);
-}
-
 namespace Digikam
 {
 
@@ -298,6 +291,7 @@
 
     fclose(f);
 
+    DcrawParse     rawFileParser;
     unsigned short jpegID    = 0xD8FF;
     unsigned short tiffBigID = 0x4d4d;
     unsigned short tiffLilID = 0x4949;
@@ -328,7 +322,7 @@
         }
         pclose (file);
     }
-    else if (dcraw_getCameraModel( QFile::encodeName(filePath), NULL, NULL) == 0) 
+    else if (rawFileParser.getCameraModel( QFile::encodeName(filePath), NULL, NULL) == 0)
     {
         // RAW File test using dcraw.  
         // Need to test it before TIFF because any RAW file 
--- trunk/extragear/graphics/digikam/libs/dimg/loaders/Makefile.am #489983:489984
@@ -9,5 +9,6 @@
 	   	                    $(LIBJPEG) $(LIB_TIFF) 
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/digikam/libs/dimg \
-	                   -I$(top_srcdir)/digikam/digikam 
+	                       -I$(top_srcdir)/digikam/libs/dcraw \
+	                       -I$(top_srcdir)/digikam/digikam
 
--- trunk/extragear/graphics/digikam/libs/dimg/loaders/rawloader.cpp #489983:489984
@@ -39,15 +39,9 @@
 // Local includes.
 
 #include "dimg.h"
+#include "dcraw_parse.h"
 #include "rawloader.h"
 
-// From dcraw program (parse.c) to identify camera model and constructor
-
-extern "C"
-{
-    int dcraw_getCameraModel(const char* infile, char* cameraConstructor, char* cameraModel);
-}
-
 namespace Digikam
 {
 
@@ -124,9 +118,10 @@
 
     //----------------------------------------------------------
 
-    char model[256], constructor[256];
-
-    if ( dcraw_getCameraModel(QFile::encodeName(filePath), &constructor[0], &model[0]) == 0 )
+    char       model[256], constructor[256];
+    DcrawParse rawFileParser;
+    
+    if ( rawFileParser.getCameraModel(QFile::encodeName(filePath), &constructor[0], &model[0]) == 0 )
     {
         imageSetCameraModel(QString::QString(model));
         imageSetCameraConstructor(QString::QString(constructor));
@@ -204,8 +199,9 @@
     //----------------------------------------------------------
 
     char model[256], constructor[256];
-
-    if ( dcraw_getCameraModel(QFile::encodeName(filePath), constructor, model) == 0 )
+    DcrawParse rawFileParser;
+    
+    if ( rawFileParser.getCameraModel(QFile::encodeName(filePath), constructor, model) == 0 )
     {
         imageSetCameraModel(QString::QString(model));
         imageSetCameraConstructor(QString::QString(constructor));



More information about the Digikam-devel mailing list