[Rawstudio-commit] r2010 - trunk/src
Anders Brander
anders at brander.dk
Wed Sep 17 10:17:56 CEST 2008
Author: abrander
Date: 2008-09-17 10:17:56 +0200 (Wed, 17 Sep 2008)
New Revision: 2010
Modified:
trunk/src/ciff-meta.c
trunk/src/ciff-meta.h
trunk/src/mrw-meta.c
trunk/src/mrw-meta.h
trunk/src/rawstudio.c
trunk/src/rawstudio.h
trunk/src/rs-metadata.c
trunk/src/tiff-meta.c
trunk/src/tiff-meta.h
trunk/src/x3f-meta.c
trunk/src/x3f-meta.h
Log:
Merged metadata and thumbnail loading.
Modified: trunk/src/ciff-meta.c
===================================================================
--- trunk/src/ciff-meta.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/ciff-meta.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -181,7 +181,11 @@
rs_ciff_load_meta(const gchar *filename, RSMetadata *meta)
{
guint root=0;
+ GdkPixbuf *pixbuf = NULL, *pixbuf2 = NULL;
+ gdouble ratio;
+ guint start=0, length=0;//, root=0;
RAWFILE *rawfile;
+
rawfile = raw_open_file(filename);
if (!rawfile)
return;
@@ -190,43 +194,19 @@
return;
raw_get_uint(rawfile, 2, &root);
raw_crw_walker(rawfile, root, raw_get_filesize(rawfile)-root, meta);
- raw_close_file(rawfile);
adobe_coeff_set(&meta->adobe_coeff, meta->model_ascii, meta->model_ascii);
- return;
-}
-GdkPixbuf *
-rs_ciff_load_thumb(const gchar *src)
-{
- GdkPixbuf *pixbuf = NULL, *pixbuf2 = NULL;
- gdouble ratio;
- guint start=0, length=0, root=0;
- RSMetadata *m;
- RAWFILE *rawfile;
-
- raw_init();
-
- rawfile = raw_open_file(src);
- if (!rawfile) return(NULL);
-
- raw_init_file_tiff(rawfile, 0);
- if (!raw_strcmp(rawfile, 6, "HEAPCCDR", 8))
- return(NULL);
- raw_get_uint(rawfile, 2, &root);
- m = rs_metadata_new();
- raw_crw_walker(rawfile, root, raw_get_filesize(rawfile)-root, m);
-
- if ((m->thumbnail_start>0) && (m->thumbnail_length>0))
+ if ((meta->thumbnail_start>0) && (meta->thumbnail_length>0))
{
- start = m->thumbnail_start;
- length = m->thumbnail_length;
+ start = meta->thumbnail_start;
+ length = meta->thumbnail_length;
}
- else if ((m->preview_start>0) && (m->preview_length>0))
+ else if ((meta->preview_start>0) && (meta->preview_length>0))
{
- start = m->preview_start;
- length = m->preview_length;
+ start = meta->preview_start;
+ length = meta->preview_length;
}
if ((start>0) && (length>0))
@@ -240,7 +220,7 @@
pixbuf2 = gdk_pixbuf_scale_simple(pixbuf, (gint) (128.0*ratio), 128, GDK_INTERP_BILINEAR);
g_object_unref(pixbuf);
pixbuf = pixbuf2;
- switch (m->orientation)
+ switch (meta->orientation)
{
/* this is very COUNTER-intuitive - gdk_pixbuf_rotate_simple() is wierd */
case 90:
@@ -254,8 +234,8 @@
pixbuf = pixbuf2;
break;
}
+ meta->thumbnail = pixbuf;
}
raw_close_file(rawfile);
- g_object_unref(m);
- return(pixbuf);
+ return;
}
Modified: trunk/src/ciff-meta.h
===================================================================
--- trunk/src/ciff-meta.h 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/ciff-meta.h 2008-09-17 08:17:56 UTC (rev 2010)
@@ -18,4 +18,3 @@
*/
void rs_ciff_load_meta(const gchar *filename, RSMetadata *meta);
-GdkPixbuf *rs_ciff_load_thumb(const gchar *src);
Modified: trunk/src/mrw-meta.c
===================================================================
--- trunk/src/mrw-meta.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/mrw-meta.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -72,46 +72,24 @@
rs_mrw_load_meta(const gchar *filename, RSMetadata *meta)
{
RAWFILE *rawfile;
+ GdkPixbuf *pixbuf=NULL, *pixbuf2=NULL;
+ guint start=0, length=0;
+
raw_init();
if (!(rawfile = raw_open_file(filename)))
return;
raw_mrw_walker(rawfile, 0, meta);
- raw_close_file(rawfile);
- return;
-}
-
-GdkPixbuf *
-rs_mrw_load_thumb(const gchar *src)
-{
- RAWFILE *rawfile;
- GdkPixbuf *pixbuf=NULL, *pixbuf2=NULL;
- RSMetadata meta;
- guint start=0, length=0;
-
- raw_init();
-
- meta.thumbnail_start = 0;
- meta.thumbnail_length = 0;
- meta.preview_start = 0;
- meta.preview_length = 0;
- meta.make = MAKE_MINOLTA;
-
- if (!(rawfile = raw_open_file(src)))
- return(NULL);
- raw_mrw_walker(rawfile, 0, &meta);
-
- if ((meta.thumbnail_start>0) && (meta.thumbnail_length>0))
+ if ((meta->thumbnail_start>0) && (meta->thumbnail_length>0))
{
- start = meta.thumbnail_start;
- length = meta.thumbnail_length;
+ start = meta->thumbnail_start;
+ length = meta->thumbnail_length;
}
-
- else if ((meta.preview_start>0) && (meta.preview_length>0))
+ else if ((meta->preview_start>0) && (meta->preview_length>0))
{
- start = meta.preview_start;
- length = meta.preview_length;
+ start = meta->preview_start;
+ length = meta->preview_length;
}
if ((start>0) && (length>0))
@@ -132,7 +110,7 @@
gdk_pixbuf_loader_close(pl, NULL);
g_free(thumbbuffer);
- if (pixbuf==NULL) return(NULL);
+ if (pixbuf==NULL) return;
ratio = ((gdouble) gdk_pixbuf_get_width(pixbuf))/((gdouble) gdk_pixbuf_get_height(pixbuf));
if (ratio>1.0)
pixbuf2 = gdk_pixbuf_scale_simple(pixbuf, 128, (gint) (128.0/ratio), GDK_INTERP_BILINEAR);
@@ -140,7 +118,7 @@
pixbuf2 = gdk_pixbuf_scale_simple(pixbuf, (gint) (128.0*ratio), 128, GDK_INTERP_BILINEAR);
g_object_unref(pixbuf);
pixbuf = pixbuf2;
- switch (meta.orientation)
+ switch (meta->orientation)
{
/* this is very COUNTER-intuitive - gdk_pixbuf_rotate_simple() is wierd */
case 90:
@@ -154,9 +132,10 @@
pixbuf = pixbuf2;
break;
}
+ meta->thumbnail = pixbuf;
}
raw_close_file(rawfile);
- return(pixbuf);
+ return;
}
Modified: trunk/src/mrw-meta.h
===================================================================
--- trunk/src/mrw-meta.h 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/mrw-meta.h 2008-09-17 08:17:56 UTC (rev 2010)
@@ -21,6 +21,5 @@
#define MRW_META_H
extern void rs_mrw_load_meta(const gchar *filename, RSMetadata *meta);
-extern GdkPixbuf *rs_mrw_load_thumb(const gchar *src);
#endif
Modified: trunk/src/rawstudio.c
===================================================================
--- trunk/src/rawstudio.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/rawstudio.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -55,14 +55,13 @@
static void photo_settings_changed(RS_PHOTO *photo, gint mask, RS_BLOB *rs);
static void photo_spatial_changed(RS_PHOTO *photo, RS_BLOB *rs);
static RS_SETTINGS *rs_settings_new();
-static GdkPixbuf *rs_thumb_gdk(const gchar *src);
+static void rs_gdk_load_meta(const gchar *src, RSMetadata *metadata);
RS_FILETYPE *filetypes;
static void
rs_add_filetype(gchar *id, gint filetype, const gchar *ext, gchar *description,
RS_IMAGE16 *(*load)(const gchar *, gboolean),
- GdkPixbuf *(*thumb)(const gchar *),
void (*load_meta)(const gchar *, RSMetadata *),
gboolean (*save)(RS_PHOTO *photo, const gchar *filename, gint filetype, gint width, gint height, gboolean keep_aspect, gdouble scale, gint snapshot, RS_CMS *cms))
{
@@ -80,7 +79,6 @@
cur->ext = ext;
cur->description = description;
cur->load = load;
- cur->thumb = thumb;
cur->load_meta = load_meta;
cur->save = save;
cur->next = NULL;
@@ -92,47 +90,47 @@
{
filetypes = NULL;
rs_add_filetype("cr2", FILETYPE_RAW, ".cr2", _("Canon CR2"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("crw", FILETYPE_RAW, ".crw", _("Canon CIFF"),
- rs_image16_open_dcraw, rs_ciff_load_thumb, rs_ciff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_ciff_load_meta, NULL);
rs_add_filetype("nef", FILETYPE_RAW, ".nef", _("Nikon NEF"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("mrw", FILETYPE_RAW, ".mrw", _("Minolta raw"),
- rs_image16_open_dcraw, rs_mrw_load_thumb, rs_mrw_load_meta, NULL);
+ rs_image16_open_dcraw, rs_mrw_load_meta, NULL);
rs_add_filetype("cr-tiff", FILETYPE_RAW, ".tif", _("Canon TIFF"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("arw", FILETYPE_RAW, ".arw", _("Sony"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("sr2", FILETYPE_RAW, ".sr2", _("Sony"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("sr2", FILETYPE_RAW, ".srf", _("Sony"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("kdc", FILETYPE_RAW, ".kdc", _("Kodak"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("kdc", FILETYPE_RAW, ".dcr", _("Kodak"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("x3f", FILETYPE_RAW, ".x3f", _("Sigma"),
- rs_image16_open_dcraw, rs_x3f_load_thumb, rs_x3f_load_meta, NULL);
+ rs_image16_open_dcraw, rs_x3f_load_meta, NULL);
rs_add_filetype("orf", FILETYPE_RAW, ".orf", "",
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("raw", FILETYPE_RAW, ".raw", _("Panasonic raw"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("pef", FILETYPE_RAW, ".pef", _("Pentax raw"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("dng", FILETYPE_RAW, "dng", _("Adobe Digital negative"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("mef", FILETYPE_RAW, "mef", _("Mamiya"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("3fr", FILETYPE_RAW, "3fr", _("Hasselblad"),
- rs_image16_open_dcraw, rs_tiff_load_thumb, rs_tiff_load_meta, NULL);
+ rs_image16_open_dcraw, rs_tiff_load_meta, NULL);
rs_add_filetype("jpeg", FILETYPE_JPEG, ".jpg", _("JPEG (Joint Photographic Experts Group)"),
- rs_image16_open_gdk, rs_thumb_gdk, NULL, rs_photo_save);
+ rs_image16_open_gdk, rs_gdk_load_meta, rs_photo_save);
rs_add_filetype("png", FILETYPE_PNG, ".png", _("PNG (Portable Network Graphics)"),
- rs_image16_open_gdk, rs_thumb_gdk, NULL, rs_photo_save);
+ rs_image16_open_gdk, rs_gdk_load_meta, rs_photo_save);
rs_add_filetype("tiff8", FILETYPE_TIFF8, ".tif", _("8-bit TIFF (Tagged Image File Format)"),
- rs_image16_open_gdk, rs_thumb_gdk, NULL, rs_photo_save);
+ rs_image16_open_gdk, rs_gdk_load_meta, rs_photo_save);
rs_add_filetype("tiff16", FILETYPE_TIFF16, ".tif", _("16-bit TIFF (Tagged Image File Format)"),
- rs_image16_open_gdk, rs_thumb_gdk, NULL, rs_photo_save);
+ rs_image16_open_gdk, rs_gdk_load_meta, rs_photo_save);
return;
}
@@ -657,14 +655,10 @@
return(ret);
}
-static GdkPixbuf *
-rs_thumb_gdk(const gchar *src)
+void
+rs_gdk_load_meta(const gchar *src, RSMetadata *metadata)
{
- GdkPixbuf *pixbuf=NULL;
-
- pixbuf = gdk_pixbuf_new_from_file_at_size(src, 128, 128, NULL);
-
- return(pixbuf);
+ metadata->thumbnail = gdk_pixbuf_new_from_file_at_size(src, 128, 128, NULL);
}
GdkPixbuf *
@@ -677,19 +671,31 @@
{
pixbuf = gdk_pixbuf_new_from_file(thumbname, NULL);
- if (!pixbuf && filetype->thumb)
+ if (!pixbuf)
{
- pixbuf = filetype->thumb(src);
+ RSMetadata *metadata = rs_metadata_new_from_file(src);
+ pixbuf = metadata->thumbnail;
if (pixbuf)
+ {
+ g_object_ref(pixbuf);
gdk_pixbuf_save(pixbuf, thumbname, "png", NULL, NULL);
+ }
+ g_object_unref(metadata);
}
g_free(thumbname);
}
- else if (filetype->thumb)
- pixbuf = filetype->thumb(src);
+ else
+ {
+ RSMetadata *metadata = rs_metadata_new_from_file(src);
+ pixbuf = metadata->thumbnail;
+ if (pixbuf)
+ g_object_ref(pixbuf);
+ g_object_unref(metadata);
+ }
+
return pixbuf;
}
Modified: trunk/src/rawstudio.h
===================================================================
--- trunk/src/rawstudio.h 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/rawstudio.h 2008-09-17 08:17:56 UTC (rev 2010)
@@ -206,6 +206,7 @@
gdouble color_tone;
gshort focallength;
RS_MATRIX4 adobe_coeff;
+ GdkPixbuf *thumbnail;
} RSMetadata;
typedef struct _photo {
@@ -256,7 +257,6 @@
const gchar *ext;
gchar *description;
RS_IMAGE16 *(*load)(const gchar *, gboolean);
- GdkPixbuf *(*thumb)(const gchar *);
void (*load_meta)(const gchar *, RSMetadata *);
gboolean (*save)(RS_PHOTO *photo, const gchar *filename, gint filetype, gint width, gint height, gboolean keep_aspect, gdouble scale, gint snapshot, RS_CMS *cms);
struct _rs_filetype *next;
Modified: trunk/src/rs-metadata.c
===================================================================
--- trunk/src/rs-metadata.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/rs-metadata.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -40,6 +40,8 @@
g_free(metadata->model_ascii);
if (metadata->time_ascii)
g_free(metadata->time_ascii);
+ if (metadata->thumbnail)
+ g_object_unref(metadata->thumbnail);
}
/* Chain up */
@@ -93,6 +95,7 @@
for(i=0;i<4;i++)
metadata->cam_mul[i] = 1.0f;
matrix4_identity(&metadata->adobe_coeff);
+ metadata->thumbnail = NULL;
}
RSMetadata*
Modified: trunk/src/tiff-meta.c
===================================================================
--- trunk/src/tiff-meta.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/tiff-meta.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -1101,6 +1101,8 @@
void
rs_tiff_load_meta(const gchar *filename, RSMetadata *meta)
{
+ GdkPixbuf *pixbuf=NULL, *pixbuf2=NULL;
+ guint start=0, length=0;
RAWFILE *rawfile;
raw_init();
@@ -1110,22 +1112,6 @@
rs_tiff_load_meta_from_rawfile(rawfile, 0, meta);
- raw_close_file(rawfile);
-}
-
-GdkPixbuf *
-rs_tiff_load_thumb(const gchar *src)
-{
- RAWFILE *rawfile;
- GdkPixbuf *pixbuf=NULL, *pixbuf2=NULL;
- guint start=0, length=0;
- RSMetadata *meta = rs_metadata_new();
-
- if (!(rawfile = raw_open_file(src)))
- return(NULL);
-
- rs_tiff_load_meta_from_rawfile(rawfile, 0, meta);
-
if ((meta->thumbnail_start>0) && (meta->thumbnail_length>0))
{
start = meta->thumbnail_start;
@@ -1180,7 +1166,7 @@
else if (meta->make == MAKE_PANASONIC)
{
RS_PHOTO *photo;
- if ((photo = rs_photo_load_from_file(src, TRUE)))
+ if ((photo = rs_photo_load_from_file(filename, TRUE)))
{
gint c;
gfloat pre_mul[4];
@@ -1242,10 +1228,8 @@
pixbuf = pixbuf2;
break;
}
+ meta->thumbnail = pixbuf;
}
- g_object_unref(meta);
raw_close_file(rawfile);
-
- return(pixbuf);
}
Modified: trunk/src/tiff-meta.h
===================================================================
--- trunk/src/tiff-meta.h 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/tiff-meta.h 2008-09-17 08:17:56 UTC (rev 2010)
@@ -22,4 +22,3 @@
extern gboolean exif_reader(RAWFILE *rawfile, guint offset, RSMetadata *meta);
extern void rs_tiff_load_meta_from_rawfile(RAWFILE *rawfile, guint offset, RSMetadata *meta);
extern void rs_tiff_load_meta(const gchar *filename, RSMetadata *meta);
-extern GdkPixbuf *rs_tiff_load_thumb(const gchar *src);
Modified: trunk/src/x3f-meta.c
===================================================================
--- trunk/src/x3f-meta.c 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/x3f-meta.c 2008-09-17 08:17:56 UTC (rev 2010)
@@ -90,6 +90,7 @@
guint columns;
guint rows;
guint rowstride; /* row size in bytes, a value of zero means variable */
+ void *image_data;
/* Followed by image-data */
} __attribute__ ((packed)) X3F_IMAGE_DATA;
@@ -118,6 +119,9 @@
X3F_DIRECTORY_SECTION directory;
X3F_DIRECTORY_ENTRY directory_entry;
X3F_IMAGE_DATA image_data;
+ guint start=0, width=0, height=0, rowstride=0;
+ GdkPixbuf *pixbuf = NULL, *pixbuf2 = NULL;
+ gdouble ratio=1.0;
rawfile = raw_open_file(filename);
@@ -184,14 +188,16 @@
raw_get_uint(rawfile, offset+G_STRUCT_OFFSET(X3F_DIRECTORY_ENTRY, offset), &directory_entry.offset);
raw_get_uint(rawfile, offset+G_STRUCT_OFFSET(X3F_DIRECTORY_ENTRY, length), &directory_entry.length);
- if (raw_strcmp(rawfile, offset+G_STRUCT_OFFSET(X3F_DIRECTORY_ENTRY, type), "IMAG", 4))
+ if (raw_strcmp(rawfile, offset+G_STRUCT_OFFSET(X3F_DIRECTORY_ENTRY, type), "IMA", 3))
{
/* Image Data */
- raw_get_uint(rawfile, directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, type_of_image_data), &image_data.type_of_image_data);
-
- if (image_data.type_of_image_data == X3F_DATA_FORMAT_UNCOMPRESSED)
+ raw_get_uint(rawfile, directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, data_format), &image_data.data_format);
+ if (image_data.data_format == X3F_DATA_FORMAT_UNCOMPRESSED)
{
- /* FIXME: thumbnail */
+ start = directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, image_data);
+ raw_get_uint(rawfile, directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, columns), &width);
+ raw_get_uint(rawfile, directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, rows), &height);
+ raw_get_uint(rawfile, directory_entry.offset+G_STRUCT_OFFSET(X3F_IMAGE_DATA, rowstride), &rowstride);
}
}
else if (raw_strcmp(rawfile, offset+G_STRUCT_OFFSET(X3F_DIRECTORY_ENTRY, type), "PROP", 4))
@@ -265,51 +271,7 @@
}
}
}
-}
-GdkPixbuf *
-rs_x3f_load_thumb(const gchar *src)
-{
- GdkPixbuf *pixbuf = NULL, *pixbuf2 = NULL;
- gdouble ratio=1.0;
- guint directory=0, directory_entries=0, n=0;
- guint data_offset=0, data_length=0, data_format=0;
- guint start=0, width=0, height=0, rowstride=0;
- RAWFILE *rawfile;
-
- raw_init();
-
- rawfile = raw_open_file(src);
- if (!rawfile) return(NULL);
- if (!raw_strcmp(rawfile, 0, "FOVb", 4))
- {
- raw_close_file(rawfile);
- return(NULL);
- }
-
- raw_set_byteorder(rawfile, 0x4949); /* x3f is always little endian */
- raw_get_uint(rawfile, raw_get_filesize(rawfile)-4, &directory);
- raw_get_uint(rawfile, directory+8, &directory_entries);
- for(n=0;n<(directory_entries*12);n+=12)
- {
- raw_get_uint(rawfile, directory+12+n, &data_offset);
- raw_get_uint(rawfile, directory+12+n+4, &data_length);
- if (raw_strcmp(rawfile, directory+12+n+8, "IMA", 3)) /* Catch both IMAG and IMA2 */
- {
- if (raw_strcmp(rawfile, data_offset, "SECi", 4))
- {
- raw_get_uint(rawfile, data_offset+12, &data_format);
- if (data_format == 3)
- {
- raw_get_uint(rawfile, data_offset+16, &width);
- raw_get_uint(rawfile, data_offset+20, &height);
- raw_get_uint(rawfile, data_offset+24, &rowstride);
- start = data_offset+28;
- }
- }
- }
- }
-
if (width > 0)
pixbuf = gdk_pixbuf_new_from_data(raw_get_map(rawfile)+start, GDK_COLORSPACE_RGB, FALSE, 8,
width, height, rowstride, NULL, NULL);
@@ -322,9 +284,9 @@
else
pixbuf2 = gdk_pixbuf_scale_simple(pixbuf, (gint) (128.0*ratio), 128, GDK_INTERP_BILINEAR);
g_object_unref(pixbuf);
- pixbuf = pixbuf2;
+ meta->thumbnail = pixbuf2;
}
raw_close_file(rawfile);
- return(pixbuf);
+ return;
}
Modified: trunk/src/x3f-meta.h
===================================================================
--- trunk/src/x3f-meta.h 2008-09-16 17:32:25 UTC (rev 2009)
+++ trunk/src/x3f-meta.h 2008-09-17 08:17:56 UTC (rev 2010)
@@ -18,4 +18,3 @@
*/
extern void rs_x3f_load_meta(const gchar *filename, RSMetadata *meta);
-GdkPixbuf *rs_x3f_load_thumb(const gchar *src);
More information about the Rawstudio-commit
mailing list