* libexif/exif-note.[c,h]: Removed. Now in libmnote.
+2002-12-02 Lutz Müller <lutz@users.sourceforge.net>
+
+ * libexif/exif-note.[c,h]: Removed. Now in libmnote.
+
2002-09-16 Lutz Müller <lutz@users.sourceforge.net>
* libexif: Some fixes for Windows (Visual C++) by
-SUBDIRS = libexif libjpeg test po
+SUBDIRS = libexif libjpeg test po intl
CONFIG_CLEAN_FILES =
EXTRA_DIST = @PACKAGE@.spec
libexif is written in plain C and does not require any additional library.
+LIMITATIONS
+-----------
+
+If you are looking for a library to read/write MakerNotes, get libmnote.
+libexif is about tags.
+
FRONTENDS
---------
-SUBDIRS = canon fuji hp olympus
-
INCLUDES = \
-DLIBEXIF_LOCALEDIR=\""$(datadir)/locale"\" \
-I$(top_srcdir)/libexif \
exif-entry.c \
exif-format.c \
exif-ifd.c \
- exif-note.c \
exif-tag.c \
exif-utils.c \
i18n.h
+++ /dev/null
-Makefile
-Makefile.in
-.libs
-.deps
-libexif-canon.la
-*.o
-*.lo
+++ /dev/null
-INCLUDES = \
- -I$(top_srcdir)/libexif \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libexif-canon.la
-libexif_canon_la_SOURCES = \
- exif-canon-entry.c exif-canon-entry.h \
- exif-canon-note.c exif-canon-note.h \
- exif-canon-tag.c exif-canon-tag.h
-libexif_canon_la_LDFLAGS = -avoid-version
+++ /dev/null
-/* exif-canon-entry.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-canon-entry.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-struct _ExifCanonEntryPrivate {
- unsigned int ref_count;
-};
-
-ExifCanonEntry *
-exif_canon_entry_new (void)
-{
- ExifCanonEntry *entry;
-
- entry = malloc (sizeof (ExifCanonEntry));
- if (!entry)
- return (NULL);
- memset (entry, 0, sizeof (ExifCanonEntry));
-
- entry->priv = malloc (sizeof (ExifCanonEntry));
- if (!entry->priv) {
- exif_canon_entry_free (entry);
- return (NULL);
- }
- memset (entry->priv, 0, sizeof (ExifCanonEntryPrivate));
-
- entry->priv->ref_count = 1;
-
- return (entry);
-}
-
-void
-exif_canon_entry_ref (ExifCanonEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count++;
-}
-
-void
-exif_canon_entry_unref (ExifCanonEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count--;
- if (!entry->priv->ref_count)
- exif_canon_entry_free (entry);
-}
-
-void
-exif_canon_entry_free (ExifCanonEntry *entry)
-{
- if (!entry)
- return;
-
- if (entry->priv) {
- free (entry->priv);
- entry->priv = NULL;
- }
-
- if (entry->data) {
- free (entry->data);
- entry->data = NULL;
- }
-
- free (entry);
-}
+++ /dev/null
-/* exif-canon-entry.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_CANON_ENTRY_H__
-#define __EXIF_CANON_ENTRY_H__
-
-#include <libexif/exif-format.h>
-#include <libexif/canon/exif-canon-tag.h>
-
-typedef struct _ExifCanonEntry ExifCanonEntry;
-typedef struct _ExifCanonEntryPrivate ExifCanonEntryPrivate;
-
-#include <libexif/canon/exif-canon-note.h>
-
-struct _ExifCanonEntry {
- ExifCanonTag tag;
- ExifFormat format;
- unsigned long components;
-
- unsigned char *data;
- unsigned int size;
-
- /* Note containing this entry */
- ExifCanonNote *parent;
-
- ExifCanonEntryPrivate *priv;
-};
-
-/* Lifecycle */
-ExifCanonEntry *exif_canon_entry_new (void);
-void exif_canon_entry_ref (ExifCanonEntry *entry);
-void exif_canon_entry_unref (ExifCanonEntry *entry);
-void exif_canon_entry_free (ExifCanonEntry *entry);
-
-#endif /* __EXIF_CANON_ENTRY_H__ */
+++ /dev/null
-/* exif-canon-note.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-canon-note.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-static void
-exif_canon_note_free (ExifNote *n)
-{
- ExifCanonNote *note = (ExifCanonNote *) n;
-
- note = NULL;
-}
-
-static char **
-exif_canon_note_get_value (ExifNote *n)
-{
- ExifCanonNote *note = (ExifCanonNote *) n;
-
- note = NULL;
-
- return (NULL);
-}
-
-static void
-exif_canon_note_save_data (ExifNote *n, unsigned char **data,
- unsigned int *size)
-{
- ExifCanonNote *note = (ExifCanonNote *) n;
-
- note = NULL;
-}
-
-static void
-exif_canon_note_load_data (ExifNote *n, const unsigned char *data,
- unsigned int size)
-{
- ExifCanonNote *note = (ExifCanonNote *) n;
-
- note = NULL;
-}
-
-ExifNote *
-exif_canon_note_new (void)
-{
- ExifCanonNote *note;
-
- note = malloc (sizeof (ExifCanonNote));
- if (!note)
- return (NULL);
- exif_note_construct ((ExifNote *) note);
- ((ExifNote *) note)->methods.free = exif_canon_note_free;
- ((ExifNote *) note)->methods.load_data = exif_canon_note_load_data;
- ((ExifNote *) note)->methods.save_data = exif_canon_note_save_data;
- ((ExifNote *) note)->methods.get_value = exif_canon_note_get_value;
-
- return ((ExifNote *) note);
-}
+++ /dev/null
-/* exif-canon-note.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_CANON_NOTE_H__
-#define __EXIF_CANON_NOTE_H__
-
-#include <libexif/exif-note.h>
-
-typedef struct _ExifCanonNote ExifCanonNote;
-
-#include <libexif/canon/exif-canon-entry.h>
-
-struct _ExifCanonNote {
- ExifNote parent;
-
- ExifCanonEntry **entries;
- unsigned int count;
-};
-
-ExifNote *exif_canon_note_new (void);
-
-#endif /* __EXIF_CANON_NOTE_H__ */
+++ /dev/null
-/* exif-canon-tag.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-canon-tag.h"
-#include "i18n.h"
-
-#include <stdlib.h>
-
-static struct {
- ExifCanonTag tag;
- const char *name;
-} table[] = {
- {EXIF_CANON_TAG_SETTINGS_1, N_("Settings (first part)")},
- {EXIF_CANON_TAG_SETTINGS_2, N_("Settings (second part)")},
- {EXIF_CANON_TAG_IMAGE_TYPE, N_("Image type")},
- {EXIF_CANON_TAG_FIRMWARE, N_("Firmware version")},
- {EXIF_CANON_TAG_IMAGE_NUMBER, N_("Image number")},
- {EXIF_CANON_TAG_OWNER, N_("Owner name")},
- {EXIF_CANON_TAG_SERIAL_NUMBER, N_("Serial number")},
- {EXIF_CANON_TAG_CUSTOM_FUNCS, N_("Custom functions")},
- {0, NULL}
-};
-
-const char *
-exif_canon_tag_get_name (ExifCanonTag tag)
-{
- unsigned int i;
-
- for (i = 0; table[i].name; i++)
- if (table[i].tag == tag)
- break;
-
- return (_(table[i].name));
-}
+++ /dev/null
-/* exif-canon-tag.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_CANON_TAG_H__
-#define __EXIF_CANON_TAG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-enum _ExifCanonTag {
- EXIF_CANON_TAG_UNKNOWN_0 = 0x0,
- EXIF_CANON_TAG_SETTINGS_1 = 0x1,
- EXIF_CANON_TAG_UNKNOWN_3 = 0x3,
- EXIF_CANON_TAG_SETTINGS_2 = 0x4,
- EXIF_CANON_TAG_IMAGE_TYPE = 0x6,
- EXIF_CANON_TAG_FIRMWARE = 0x7,
- EXIF_CANON_TAG_IMAGE_NUMBER = 0x8,
- EXIF_CANON_TAG_OWNER = 0x9,
- EXIF_CANON_TAG_UNKNOWN_10 = 0xa,
- EXIF_CANON_TAG_SERIAL_NUMBER = 0xc,
- EXIF_CANON_TAG_UNKNOWN_13 = 0xd,
- EXIF_CANON_TAG_CUSTOM_FUNCS = 0xf
-};
-typedef enum _ExifCanonTag ExifCanonTag;
-
-const char *exif_canon_tag_get_name (ExifCanonTag tag);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __EXIF_CANON_TAG_H__ */
+++ /dev/null
-/* exif-note.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-note.h"
-#include "canon/exif-canon-note.h"
-#include "fuji/exif-fuji-note.h"
-#include "olympus/exif-olympus-note.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-struct _ExifNotePrivate {
- ExifByteOrder order;
-
- unsigned int ref_count;
-};
-
-void
-exif_note_construct (ExifNote *note)
-{
- if (!note)
- return;
-
- note->priv = malloc (sizeof (ExifNotePrivate));
- if (!note->priv)
- return;
- memset (note->priv, 0, sizeof (ExifNotePrivate));
-
- note->priv->ref_count = 1;
-}
-
-void
-exif_note_ref (ExifNote *note)
-{
- if (!note || !note->priv)
- return;
-
- note->priv->ref_count++;
-}
-
-void
-exif_note_unref (ExifNote *note)
-{
- if (!note || !note->priv)
- return;
-
- note->priv->ref_count--;
- if (!note->priv->ref_count)
- exif_note_free (note);
-}
-
-void
-exif_note_free (ExifNote *note)
-{
- if (!note)
- return;
-
- if (!note->priv) {
- free (note->priv);
- note->priv = NULL;
- }
-
- free (note);
-}
-
-static void
-exif_note_load_data (ExifNote *note,
- const unsigned char *data, unsigned int size)
-{
- if (!note)
- return;
-
- if (note->methods.load_data)
- note->methods.load_data (note, data, size);
-}
-
-ExifNote *
-exif_note_new_from_data (const unsigned char *data, unsigned int size)
-{
- ExifNote *note = NULL;
-
- if (!size || !data)
- return (NULL);
-
- /* Canon notes begin with 0x0000 */
- if ((size > 1) && (data[0] == 0x00) && (data[1] == 0x00))
- note = exif_canon_note_new ();
-
- /* Olympus notes begin with "OLYMP" */
- else if ((size >= 5) && !memcmp (data, "OLYMP", 5)) {
- note = exif_olympus_note_new ();
-
- } else {
- note = NULL;
- }
-
- if (note)
- exif_note_load_data (note, data, size);
-
- return (note);
-}
-
-char **
-exif_note_get_value (ExifNote *note)
-{
- if (!note || !note->methods.get_value)
- return (NULL);
-
- return (note->methods.get_value (note));
-}
-
-void
-exif_note_set_byte_order (ExifNote *note, ExifByteOrder order)
-{
- if (!note || !note->priv)
- return;
-
- note->priv->order = order;
-
- if (!note->methods.set_order)
- return;
-
- note->methods.set_order (note, order);
-}
-
-ExifByteOrder
-exif_note_get_byte_order (ExifNote *note)
-{
- if (!note || !note->priv)
- return (0);
-
- return (note->priv->order);
-}
+++ /dev/null
-/* exif-note.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_NOTE_H__
-#define __EXIF_NOTE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#include <libexif/exif-byte-order.h>
-
-typedef struct _ExifNote ExifNote;
-typedef struct _ExifNotePrivate ExifNotePrivate;
-
-typedef struct _ExifNoteMethods ExifNoteMethods;
-struct _ExifNoteMethods {
- void (* free) (ExifNote *);
-
- void (* load_data) (ExifNote *, const unsigned char *, unsigned int);
- void (* save_data) (ExifNote *, unsigned char **, unsigned int *);
-
- void (* set_order) (ExifNote *, ExifByteOrder);
- ExifByteOrder (* get_order) (ExifNote *);
-
- char ** (*get_value) (ExifNote *);
-};
-
-struct _ExifNote {
- ExifNoteMethods methods;
- ExifNotePrivate *priv;
-};
-
-void exif_note_construct (ExifNote *note);
-
-void exif_note_ref (ExifNote *note);
-void exif_note_unref (ExifNote *note);
-void exif_note_free (ExifNote *note);
-
-ExifNote *exif_note_new_from_data (const unsigned char *data,
- unsigned int size);
-
-char **exif_note_get_value (ExifNote *note);
-
-void exif_note_set_byte_order (ExifNote *note, ExifByteOrder order);
-ExifByteOrder exif_note_get_byte_order (ExifNote *note);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __EXIF_NOTE_H__ */
+++ /dev/null
-Makefile
-Makefile.in
-.libs
-.deps
-libexif-fuji.la
-*.o
-*.lo
+++ /dev/null
-INCLUDES = \
- -I$(top_srcdir)/libexif \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libexif-fuji.la
-libexif_fuji_la_SOURCES = \
- exif-fuji-entry.c exif-fuji-entry.h \
- exif-fuji-note.c exif-fuji-note.h \
- exif-fuji-tag.c exif-fuji-tag.h
-libexif_fuji_la_LDFLAGS = -avoid-version
+++ /dev/null
-/* exif-fuji-entry.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-fuji-entry.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-struct _ExifFujiEntryPrivate {
- unsigned int ref_count;
-};
-
-ExifFujiEntry *
-exif_fuji_entry_new (void)
-{
- ExifFujiEntry *entry;
-
- entry = malloc (sizeof (ExifFujiEntry));
- if (!entry)
- return (NULL);
- memset (entry, 0, sizeof (ExifFujiEntry));
-
- entry->priv = malloc (sizeof (ExifFujiEntry));
- if (!entry->priv) {
- exif_fuji_entry_free (entry);
- return (NULL);
- }
- memset (entry->priv, 0, sizeof (ExifFujiEntryPrivate));
-
- entry->priv->ref_count = 1;
-
- return (entry);
-}
-
-void
-exif_fuji_entry_ref (ExifFujiEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count++;
-}
-
-void
-exif_fuji_entry_unref (ExifFujiEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count--;
- if (!entry->priv->ref_count)
- exif_fuji_entry_free (entry);
-}
-
-void
-exif_fuji_entry_free (ExifFujiEntry *entry)
-{
- if (!entry)
- return;
-
- if (entry->priv) {
- free (entry->priv);
- entry->priv = NULL;
- }
-
- if (entry->data) {
- free (entry->data);
- entry->data = NULL;
- }
-
- free (entry);
-}
+++ /dev/null
-/* exif-fuji-entry.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_FUJI_ENTRY_H__
-#define __EXIF_FUJI_ENTRY_H__
-
-#include <libexif/exif-format.h>
-#include <libexif/fuji/exif-fuji-tag.h>
-
-typedef struct _ExifFujiEntry ExifFujiEntry;
-typedef struct _ExifFujiEntryPrivate ExifFujiEntryPrivate;
-
-#include <libexif/fuji/exif-fuji-note.h>
-
-struct _ExifFujiEntry {
- ExifFujiTag tag;
- ExifFormat format;
- unsigned long components;
-
- unsigned char *data;
- unsigned int size;
-
- /* Note containing this entry */
- ExifFujiNote *parent;
-
- ExifFujiEntryPrivate *priv;
-};
-
-/* Lifecycle */
-ExifFujiEntry *exif_fuji_entry_new (void);
-void exif_fuji_entry_ref (ExifFujiEntry *entry);
-void exif_fuji_entry_unref (ExifFujiEntry *entry);
-void exif_fuji_entry_free (ExifFujiEntry *entry);
-
-#endif /* __EXIF_FUJI_ENTRY_H__ */
+++ /dev/null
-/* exif-fuji-note.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-byte-order.h"
-#include "exif-fuji-note.h"
-#include "exif-utils.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-struct _ExifFujiNotePrivate {
- ExifByteOrder order;
-};
-
-static void
-exif_fuji_note_free (ExifNote *n)
-{
- ExifFujiNote *note = (ExifFujiNote *) n;
- unsigned int i;
-
- if (note->entries) {
- for (i = 0; i < note->count; i++)
- exif_fuji_entry_unref (note->entries[i]);
- free (note->entries);
- note->entries = NULL;
- note->count = 0;
- }
-}
-
-static char **
-exif_fuji_note_get_value (ExifNote *n)
-{
- ExifFujiNote *note = (ExifFujiNote *) n;
-
- note = NULL;
-
- return (NULL);
-}
-
-static void
-exif_fuji_note_save_data (ExifNote *n, unsigned char **data,
- unsigned int *size)
-{
- ExifFujiNote *note = (ExifFujiNote *) n;
- ExifByteOrder order = exif_note_get_byte_order (n);
-
- /*
- * Header: "FUJIFILM" and 4 bytes offset to the first entry.
- * As the first entry will start right thereafter, the offset is
- * 0x000c.
- */
- *data = malloc (12);
- if (!*data)
- return;
- *size = 12;
- memcpy (*data, "FUJIFILM", 8);
- exif_set_long (*data + 8, order, 0x000c);
-
- note = NULL;
-}
-
-static void
-exif_fuji_note_load_data (ExifNote *n, const unsigned char *data,
- unsigned int size)
-{
- ExifFujiNote *note = (ExifFujiNote *) n;
-
- note = NULL;
-}
-
-ExifNote *
-exif_fuji_note_new (void)
-{
- ExifFujiNote *note;
-
- note = malloc (sizeof (ExifFujiNote));
- if (!note)
- return (NULL);
- exif_note_construct ((ExifNote *) note);
- ((ExifNote *) note)->methods.free = exif_fuji_note_free;
- ((ExifNote *) note)->methods.load_data = exif_fuji_note_load_data;
- ((ExifNote *) note)->methods.save_data = exif_fuji_note_save_data;
- ((ExifNote *) note)->methods.get_value = exif_fuji_note_get_value;
-
- return ((ExifNote *) note);
-}
+++ /dev/null
-/* exif-fuji-note.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_FUJI_NOTE_H__
-#define __EXIF_FUJI_NOTE_H__
-
-#include <libexif/exif-note.h>
-
-typedef struct _ExifFujiNote ExifFujiNote;
-
-#include <libexif/fuji/exif-fuji-entry.h>
-
-struct _ExifFujiNote {
- ExifNote parent;
-
- ExifFujiEntry **entries;
- unsigned int count;
-};
-
-ExifNote *exif_fuji_note_new (void);
-
-#endif /* __EXIF_FUJI_NOTE_H__ */
+++ /dev/null
-/* exif-fuji-tag.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-fuji-tag.h"
-#include "i18n.h"
-
-#include <stdlib.h>
-
-static struct {
- ExifFujiTag tag;
- const char *name;
-} table[] = {
- {EXIF_FUJI_TAG_VERSION, N_("Version")},
- {EXIF_FUJI_TAG_QUALITY, N_("Quality")},
- {EXIF_FUJI_TAG_SHARPNESS, N_("Sharpness")},
- {EXIF_FUJI_TAG_WHITE_BALANCE, N_("White balance")},
- {EXIF_FUJI_TAG_COLOR, N_("Chromaticity saturation")},
- {EXIF_FUJI_TAG_TONE, N_("Contrast")},
- {EXIF_FUJI_TAG_FLASH_MODE, N_("Flash mode")},
- {EXIF_FUJI_TAG_FLASH_STRENGTH,
- N_("Flash firing strength compensation")},
- {EXIF_FUJI_TAG_MACRO, N_("Macro mode")},
- {EXIF_FUJI_TAG_FOCUS_MODE, N_("Focusing mode")},
- {EXIF_FUJI_TAG_SLOW_SYNC, N_("Slow synchro mode")},
- {EXIF_FUJI_TAG_PICTURE_MODE, N_("Picture mode")},
- {EXIF_FUJI_TAG_UNKNOWN_1, N_("Unknown 1")},
- {EXIF_FUJI_TAG_CONT_TAKING, N_("Continuous taking")},
- {EXIF_FUJI_TAG_UNKNOWN_2, N_("Unknown 2")},
- {EXIF_FUJI_TAG_BLUR_WARNING, N_("Blur warning")},
- {EXIF_FUJI_TAG_FOCUS_WARNING, N_("Auto focus warning")},
- {EXIF_FUJI_TAG_AUTO_EXPOSURE_WARNING, N_("Auto exposure warning")},
- {0, NULL}
-};
-
-const char *
-exif_fuji_tag_get_name (ExifFujiTag tag)
-{
- unsigned int i;
-
- for (i = 0; table[i].name; i++)
- if (table[i].tag == tag)
- break;
-
- return (_(table[i].name));
-}
+++ /dev/null
-/* exif-fuji-tag.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_FUJI_TAG_H__
-#define __EXIF_FUJI_TAG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-enum _ExifFujiTag {
- EXIF_FUJI_TAG_VERSION = 0x0000,
- EXIF_FUJI_TAG_QUALITY = 0x1000,
- EXIF_FUJI_TAG_SHARPNESS = 0x1001,
- EXIF_FUJI_TAG_WHITE_BALANCE = 0x1002,
- EXIF_FUJI_TAG_COLOR = 0x1003,
- EXIF_FUJI_TAG_TONE = 0x1004,
- EXIF_FUJI_TAG_FLASH_MODE = 0x1010,
- EXIF_FUJI_TAG_FLASH_STRENGTH = 0x1011,
- EXIF_FUJI_TAG_MACRO = 0x1020,
- EXIF_FUJI_TAG_FOCUS_MODE = 0x1021,
- EXIF_FUJI_TAG_SLOW_SYNC = 0x1030,
- EXIF_FUJI_TAG_PICTURE_MODE = 0x1031,
- EXIF_FUJI_TAG_UNKNOWN_1 = 0x1032,
- EXIF_FUJI_TAG_CONT_TAKING = 0x1100,
- EXIF_FUJI_TAG_UNKNOWN_2 = 0x1200,
- EXIF_FUJI_TAG_BLUR_WARNING = 0x1300,
- EXIF_FUJI_TAG_FOCUS_WARNING = 0x1301,
- EXIF_FUJI_TAG_AUTO_EXPOSURE_WARNING = 0x1302
-};
-typedef enum _ExifFujiTag ExifFujiTag;
-
-const char *exif_fuji_tag_get_name (ExifFujiTag tag);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __EXIF_FUJI_TAG_H__ */
+++ /dev/null
-Makefile
-Makefile.in
-.libs
-.deps
-libexif-hp.la
-*.o
-*.lo
+++ /dev/null
-INCLUDES = \
- -I$(top_srcdir)/libexif \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libexif-hp.la
-libexif_hp_la_SOURCES = \
- exif-hp-note.c exif-hp-note.h
-libexif_hp_la_LDFLAGS = -avoid-version
+++ /dev/null
-/* exif-hp-note.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-hp-note.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-static void
-exif_hp_note_free (ExifNote *n)
-{
- ExifHPNote *note = (ExifHPNote *) n;
-
- note = NULL;
-}
-
-static char **
-exif_hp_note_get_value (ExifNote *n)
-{
- ExifHPNote *note = (ExifHPNote *) n;
-
- note = NULL;
-
- return (NULL);
-}
-
-static void
-exif_hp_note_save_data (ExifNote *n, unsigned char **data,
- unsigned int *size)
-{
- ExifHPNote *note = (ExifHPNote *) n;
-
- note = NULL;
-}
-
-static void
-exif_hp_note_load_data (ExifNote *n, const unsigned char *data,
- unsigned int size)
-{
- ExifHPNote *note = (ExifHPNote *) n;
-
- /* Notes start with 'HP'... */
- if ((size < 2) || memcmp (data, "HP", 2))
- return;
-
- /* ... and finish with 0xff 0xff. */
- if ((size < 4) || (data[size - 2] != 0xff) ||
- (data[size - 1] != 0xff))
- return;
-
- note = NULL;
-}
-
-ExifNote *
-exif_hp_note_new (void)
-{
- ExifHPNote *note;
-
- note = malloc (sizeof (ExifHPNote));
- if (!note)
- return (NULL);
- exif_note_construct ((ExifNote *) note);
- ((ExifNote *) note)->methods.free = exif_hp_note_free;
- ((ExifNote *) note)->methods.load_data = exif_hp_note_load_data;
- ((ExifNote *) note)->methods.save_data = exif_hp_note_save_data;
- ((ExifNote *) note)->methods.get_value = exif_hp_note_get_value;
-
- return ((ExifNote *) note);
-}
+++ /dev/null
-/* exif-hp-note.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_HP_NOTE_H__
-#define __EXIF_HP_NOTE_H__
-
-#include <libexif/exif-note.h>
-
-typedef struct _ExifHPNote ExifHPNote;
-
-struct _ExifHPNote {
- ExifNote parent;
-};
-
-ExifNote *exif_hp_note_new (void);
-
-#endif /* __EXIF_HP_NOTE_H__ */
+++ /dev/null
-Makefile
-Makefile.in
-.libs
-.deps
-libexif-olympus.la
-*.o
-*.lo
+++ /dev/null
-INCLUDES = \
- -I$(top_srcdir)/libexif \
- -I$(top_srcdir)/intl \
- -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libexif-olympus.la
-libexif_olympus_la_SOURCES = \
- exif-olympus-entry.c exif-olympus-entry.h \
- exif-olympus-note.c exif-olympus-note.h \
- exif-olympus-tag.c exif-olympus-tag.h
-libexif_olympus_la_LDFLAGS = -avoid-version
+++ /dev/null
-/* exif-olympus-entry.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-format.h"
-#include "exif-olympus-entry.h"
-#include "exif-utils.h"
-#include "i18n.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-struct _ExifOlympusEntryPrivate {
- unsigned int ref_count;
-};
-
-ExifOlympusEntry *
-exif_olympus_entry_new (void)
-{
- ExifOlympusEntry *entry;
-
- entry = malloc (sizeof (ExifOlympusEntry));
- if (!entry)
- return (NULL);
- memset (entry, 0, sizeof (ExifOlympusEntry));
-
- entry->priv = malloc (sizeof (ExifOlympusEntry));
- if (!entry->priv) {
- exif_olympus_entry_free (entry);
- return (NULL);
- }
- memset (entry->priv, 0, sizeof (ExifOlympusEntryPrivate));
-
- entry->priv->ref_count = 1;
-
- return (entry);
-}
-
-void
-exif_olympus_entry_ref (ExifOlympusEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count++;
-}
-
-void
-exif_olympus_entry_unref (ExifOlympusEntry *entry)
-{
- if (!entry || !entry->priv)
- return;
-
- entry->priv->ref_count--;
- if (!entry->priv->ref_count)
- exif_olympus_entry_free (entry);
-}
-
-void
-exif_olympus_entry_free (ExifOlympusEntry *entry)
-{
- if (!entry)
- return;
-
- if (entry->priv) {
- free (entry->priv);
- entry->priv = NULL;
- }
-
- if (entry->data) {
- free (entry->data);
- entry->data = NULL;
- }
-
- free (entry);
-}
-
-#define CF(format,target,v) \
-{ \
- if (format != target) { \
- snprintf (v, sizeof (v), \
- _("Invalid format '%s', " \
- "expected '%s'."), \
- exif_format_get_name (format), \
- exif_format_get_name (target)); \
- break; \
- } \
-}
-
-#define CC(number,target,v) \
-{ \
- if (number != target) { \
- snprintf (v, sizeof (v), \
- _("Invalid number of components (%i, " \
- "expected %i)."), (int) number, (int) target); \
- break; \
- } \
-}
-
-#define EXIF_FORMAT_SSHORT 8
-
-char *
-exif_olympus_entry_get_value (ExifOlympusEntry *entry)
-{
- char v[1024], buf[1024];
- ExifByteOrder order;
- ExifLong vl;
- ExifShort vs;
-
- if (!entry)
- return (NULL);
- if (!entry->parent)
- return (NULL);
-
- memset (v, 0, sizeof (v));
- order = exif_note_get_byte_order ((ExifNote *) &entry->parent->parent);
- switch (entry->tag) {
- case EXIF_OLYMPUS_TAG_MODE:
- CF (entry->format, EXIF_FORMAT_LONG, v);
- CC (entry->components, 3, v);
- strncpy (v, _("Speed/Sequence/Panorama direction: "),
- sizeof (v));
- vl = exif_get_long (entry->data, order);
- switch (vl) {
- case 0:
- strncat (v, _("normal"), sizeof (v));
- break;
- case 1:
- strncat (v, _("unknown"), sizeof (v));
- break;
- case 2:
- strncat (v, _("fast"), sizeof (v));
- break;
- case 3:
- strncat (v, _("panorama"), sizeof (v));
- break;
- default:
- snprintf (buf, sizeof (buf), "%li", vl);
- strncat (v, buf, sizeof (v));
- }
- strncat (v, "/", sizeof (v));
- vl = exif_get_long (entry->data + 4, order);
- snprintf (buf, sizeof (buf), "%li", vl);
- strncat (v, buf, sizeof (v));
- strncat (v, "/", sizeof (v));
- vl = exif_get_long (entry->data + 4, order);
- switch (vl) {
- case 1:
- strncat (v, _("left to right"), sizeof (v));
- break;
- case 2:
- strncat (v, _("right to left"), sizeof (v));
- break;
- case 3:
- strncat (v, _("bottom to top"), sizeof (v));
- break;
- case 4:
- strncat (v, _("top to bottom"), sizeof (v));
- break;
- default:
- snprintf (buf, sizeof (buf), "%li", vl);
- strncat (v, buf, sizeof (v));
- }
- break;
- case EXIF_OLYMPUS_TAG_QUALITY:
- CF (entry->format, EXIF_FORMAT_SHORT, v);
- CC (entry->components, 1, v);
- vs = exif_get_short (entry->data, order);
- strncpy (v, _("Quality: "), sizeof (v));
- switch (vs) {
- case 1:
- strncat (v, _("SQ"), sizeof (v));
- break;
- case 2:
- strncat (v, _("HQ"), sizeof (v));
- break;
- case 3:
- strncat (v, _("SHQ"), sizeof (v));
- break;
- default:
- snprintf (buf, sizeof (buf), "%i", vs);
- strncat (v, buf, sizeof (v));
- }
- break;
- case EXIF_OLYMPUS_TAG_MACRO:
- CF (entry->format, EXIF_FORMAT_SHORT, v);
- CC (entry->components, 1, v);
- vs = exif_get_short (entry->data, order);
- strncpy (v, _("Macro: "), sizeof (v));
- switch (vs) {
- case 0:
- strncat (v, _("no"), sizeof (v));
- break;
- case 1:
- strncat (v, _("yes"), sizeof (v));
- break;
- default:
- snprintf (buf, sizeof (buf), "%i", vs);
- strncat (v, buf, sizeof (v));
- }
- break;
- case EXIF_OLYMPUS_TAG_UNKNOWN_1:
- CF (entry->format, EXIF_FORMAT_SHORT, v);
- CC (entry->components, 1, v);
- strncpy (v, _("Unknown tag."), sizeof (v));
- break;
- case EXIF_OLYMPUS_TAG_ZOOM:
- CF (entry->format, EXIF_FORMAT_SHORT, v);
- CC (entry->components, 1, v);
- vs = exif_get_short (entry->data, order);
- strncpy (v, _("Zoom: "), sizeof (v));
- switch (vs) {
- case 0:
- strncat (v, _("1x"), sizeof (v));
- break;
- case 2:
- strncat (v, _("2x"), sizeof (v));
- break;
- default:
- snprintf (buf, sizeof (buf), "%i", vs);
- strncat (v, buf, sizeof (v));
- }
- break;
- case EXIF_OLYMPUS_TAG_UNKNOWN_2:
- CF (entry->format, EXIF_FORMAT_RATIONAL, v);
- CC (entry->components, 1, v);
- break;
- case EXIF_OLYMPUS_TAG_UNKNOWN_3:
- CF (entry->format, EXIF_FORMAT_SSHORT, v);
- CC (entry->components, 1, v);
- break;
- case EXIF_OLYMPUS_TAG_VERSION:
- CF (entry->format, EXIF_FORMAT_ASCII, v);
- CC (entry->components, 5, v);
- break;
- case EXIF_OLYMPUS_TAG_INFO:
- CF (entry->format, EXIF_FORMAT_ASCII, v);
- CC (entry->components, 52, v);
- break;
- case EXIF_OLYMPUS_TAG_ID:
- CF (entry->format, EXIF_FORMAT_UNDEFINED, v);
- CC (entry->components, 32, v);
- break;
- case EXIF_OLYMPUS_TAG_UNKNOWN_4:
- CF (entry->format, EXIF_FORMAT_LONG, v);
- CC (entry->components, 30, v);
- break;
- default:
- break;
- }
-
- return (strdup (v));
-}
+++ /dev/null
-/* exif-olympus-entry.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_OLYMPUS_ENTRY_H__
-#define __EXIF_OLYMPUS_ENTRY_H__
-
-#include <libexif/exif-format.h>
-#include <libexif/olympus/exif-olympus-tag.h>
-
-typedef struct _ExifOlympusEntry ExifOlympusEntry;
-typedef struct _ExifOlympusEntryPrivate ExifOlympusEntryPrivate;
-
-#include <libexif/olympus/exif-olympus-note.h>
-
-struct _ExifOlympusEntry {
- ExifOlympusTag tag;
- ExifFormat format;
- unsigned long components;
-
- unsigned char *data;
- unsigned int size;
-
- /* Note containing this entry */
- ExifOlympusNote *parent;
-
- ExifOlympusEntryPrivate *priv;
-};
-
-/* Lifecycle */
-ExifOlympusEntry *exif_olympus_entry_new (void);
-void exif_olympus_entry_ref (ExifOlympusEntry *entry);
-void exif_olympus_entry_unref (ExifOlympusEntry *entry);
-void exif_olympus_entry_free (ExifOlympusEntry *entry);
-
-char *exif_olympus_entry_get_value (ExifOlympusEntry *entry);
-
-#endif /* __EXIF_OLYMPUS_ENTRY_H__ */
+++ /dev/null
-/* exif-olympus-note.c
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-byte-order.h"
-#include "exif-olympus-note.h"
-#include "exif-utils.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#define DEBUG
-
-static void
-exif_olympus_note_free (ExifNote *n)
-{
- ExifOlympusNote *note = (ExifOlympusNote *) n;
- unsigned int i;
-
- if (note->entries) {
- for (i = 0; i < note->count; i++)
- exif_olympus_entry_unref (note->entries[i]);
- free (note->entries);
- note->entries = NULL;
- note->count = 0;
- }
-}
-
-static void
-exif_olympus_note_add_entry (ExifOlympusNote *note, ExifOlympusEntry *entry)
-{
- if (!note || !entry)
- return;
-
- entry->parent = note;
- note->entries = realloc (note->entries,
- sizeof (ExifOlympusEntry) * (note->count + 1));
- note->entries[note->count] = entry;
- exif_olympus_entry_ref (entry);
- note->count++;
-}
-
-static char **
-exif_olympus_note_get_value (ExifNote *n)
-{
- char **value = NULL, *v;
- unsigned int i, count;
-
- ExifOlympusNote *note = (ExifOlympusNote *) n;
-
- for (count = i = 0; i < note->count; i++) {
- v = exif_olympus_entry_get_value (note->entries[i]);
- if (v) {
- value = realloc (value, sizeof (char *) *
- (count ? count + 2 : 2));
- if (!value)
- return (NULL);
- value[count++] = v;
- value[count] = NULL;
- }
- }
-
- return (value);
-}
-
-static void
-exif_olympus_note_load_data_entry (ExifOlympusNote *note,
- ExifOlympusEntry *entry,
- const unsigned char *d,
- unsigned int size, unsigned int offset)
-{
- unsigned int s, doff;
- ExifByteOrder order = exif_note_get_byte_order ((ExifNote *) note);
-
- entry->tag = exif_get_short (d + offset + 0, order);
- entry->format = exif_get_short (d + offset + 2, order);
- entry->components = exif_get_long (d + offset + 4, order);
-
- /*
- * Size? If bigger than 4 bytes, the actual data is not
- * in the entry but somewhere else (offset).
- */
- s = exif_format_get_size (entry->format) * entry->components;
- if (!s)
- return;
- if (s > 4)
- doff = exif_get_long (d + offset + 8, order);
- else
- doff = offset + 8;
-
- /* Sanity check */
- if (size < doff + s)
- return;
-
- entry->data = malloc (sizeof (char) * s);
- if (!entry->data)
- return;
- entry->size = s;
- memcpy (entry->data, d + doff, s);
-}
-
-static void
-exif_olympus_note_load_data (ExifNote *en, const unsigned char *data,
- unsigned int size)
-{
- ExifOlympusNote *note = (ExifOlympusNote *) en;
- ExifOlympusTag tag;
- ExifOlympusEntry *entry;
- unsigned int i, n;
- ExifByteOrder order = exif_note_get_byte_order (en);
-
- /* Verify the header */
- if ((size < 5) || memcmp (data, "OLYMP", 5))
- return;
- data += 5;
- size -= 5;
-
- /* 2 unknown bytes */
- if ((size < 2) || (data[0] != 0x00) || (data[1] != 0x01))
- return;
- data += 2;
- size -= 2;
-
- /* Number of entries */
- if (size < 2)
- return;
- n = exif_get_short (data, order);
-#ifdef DEBUG
- printf ("Reading %i entries...\n", n);
-#endif
- data += 2;
- size -= 2;
-
- /* 2 unknown bytes */
- if ((size < 2) || (data[0] != 0x00) || (data[1] != 0x00))
- return;
- data += 2;
- size -= 2;
-
- for (i = 0; i < n; i++) {
- tag = exif_get_short (data + 12 * i, order);
-#ifdef DEBUG
- printf ("Loading entry '%s' (%i)...\n",
- exif_olympus_tag_get_name (tag), i + 1);
-#endif
- entry = exif_olympus_entry_new ();
- exif_olympus_note_add_entry (note, entry);
- exif_olympus_note_load_data_entry (note, entry, data, size,
- 12 * i);
- exif_olympus_entry_unref (entry);
- }
-}
-
-ExifNote *
-exif_olympus_note_new (void)
-{
- ExifOlympusNote *note;
-
- note = malloc (sizeof (ExifOlympusNote));
- if (!note)
- return (NULL);
- memset (note, 0, sizeof (ExifOlympusNote));
- exif_note_construct ((ExifNote *) note);
- ((ExifNote *) note)->methods.free = exif_olympus_note_free;
- ((ExifNote *) note)->methods.load_data = exif_olympus_note_load_data;
- ((ExifNote *) note)->methods.get_value = exif_olympus_note_get_value;
-
- return ((ExifNote *) note);
-}
+++ /dev/null
-/* exif-olympus-note.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_OLYMPUS_NOTE_H__
-#define __EXIF_OLYMPUS_NOTE_H__
-
-#include <libexif/exif-note.h>
-
-typedef struct _ExifOlympusNote ExifOlympusNote;
-
-#include <libexif/olympus/exif-olympus-entry.h>
-
-struct _ExifOlympusNote {
- ExifNote parent;
-
- ExifOlympusEntry **entries;
- unsigned int count;
-};
-
-ExifNote *exif_olympus_note_new (void);
-
-#endif /* __EXIF_OLYMPUS_NOTE_H__ */
+++ /dev/null
-/* exif-olympus-tag.c:
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-#include "exif-olympus-tag.h"
-#include "i18n.h"
-
-#include <stdlib.h>
-
-static struct {
- ExifOlympusTag tag;
- const char *name;
-} table[] = {
- {EXIF_OLYMPUS_TAG_MODE, N_("Mode")},
- {EXIF_OLYMPUS_TAG_QUALITY, N_("Quality")},
- {EXIF_OLYMPUS_TAG_MACRO, N_("Macro")},
- {EXIF_OLYMPUS_TAG_UNKNOWN_1, N_("Unknown 1")},
- {EXIF_OLYMPUS_TAG_ZOOM, N_("Zoom")},
- {EXIF_OLYMPUS_TAG_UNKNOWN_2, N_("Unknown 2")},
- {EXIF_OLYMPUS_TAG_UNKNOWN_3, N_("Unknown 3")},
- {EXIF_OLYMPUS_TAG_VERSION, N_("Firmware version")},
- {EXIF_OLYMPUS_TAG_INFO, N_("Info")},
- {EXIF_OLYMPUS_TAG_ID, N_("Camera ID")},
- {EXIF_OLYMPUS_TAG_UNKNOWN_4, N_("Unknown 4")},
- {0, NULL}
-};
-
-const char *
-exif_olympus_tag_get_name (ExifOlympusTag tag)
-{
- unsigned int i;
-
- for (i = 0; table[i].name; i++)
- if (table[i].tag == tag)
- break;
-
- return (_(table[i].name));
-}
+++ /dev/null
-/* exif-olympus-tag.h
- *
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EXIF_OLYMPUS_TAG_H__
-#define __EXIF_OLYMPUS_TAG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-enum _ExifOlympusTag {
- EXIF_OLYMPUS_TAG_MODE = 0x0200,
- EXIF_OLYMPUS_TAG_QUALITY = 0x0201,
- EXIF_OLYMPUS_TAG_MACRO = 0x0202,
- EXIF_OLYMPUS_TAG_UNKNOWN_1 = 0x0203,
- EXIF_OLYMPUS_TAG_ZOOM = 0x0204,
- EXIF_OLYMPUS_TAG_UNKNOWN_2 = 0x0205,
- EXIF_OLYMPUS_TAG_UNKNOWN_3 = 0x0206,
- EXIF_OLYMPUS_TAG_VERSION = 0x0207,
- EXIF_OLYMPUS_TAG_INFO = 0x0208,
- EXIF_OLYMPUS_TAG_ID = 0x0209,
- EXIF_OLYMPUS_TAG_UNKNOWN_4 = 0x0f04
-};
-typedef enum _ExifOlympusTag ExifOlympusTag;
-
-const char *exif_olympus_tag_get_name (ExifOlympusTag tag);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __EXIF_OLYMPUS_TAG_H__ */