From 20cbd2c87a1297195d00df09198e3693246e3d0f Mon Sep 17 00:00:00 2001 From: Stephane Delcroix Date: Tue, 17 Mar 2009 11:20:19 +0000 Subject: [PATCH] * IptdData.custom, IptcDatum.custom: Enumerator svn path=/trunk/exiv2-sharp/; revision=129569 --- exiv2/ChangeLog | 4 ++ exiv2/IptcData.custom | 84 ++++++++++++++++++++++++++++++++++++++++++ exiv2/IptcDatum.custom | 52 ++++++++++++++++++++++++++ exiv2/Makefile.am | 2 + 4 files changed, 142 insertions(+) create mode 100644 exiv2/IptcData.custom create mode 100644 exiv2/IptcDatum.custom diff --git a/exiv2/ChangeLog b/exiv2/ChangeLog index f1298d2..01afb4d 100644 --- a/exiv2/ChangeLog +++ b/exiv2/ChangeLog @@ -1,3 +1,7 @@ +2009-03-17 Stephane Delcroix + + * IptdData.custom, IptcDatum.custom: Enumerator + 2009-03-17 Stephane Delcroix * Exiv2.metadata: api massaging for iptc support diff --git a/exiv2/IptcData.custom b/exiv2/IptcData.custom new file mode 100644 index 0000000..1ac038f --- /dev/null +++ b/exiv2/IptcData.custom @@ -0,0 +1,84 @@ +/* + * IptcData.custom - customization to Exiv2.ExifData + * + * Author(s): + * Stephane Delcroix (stephane@delcroix.org) + * Mike Gemuende (mike@gemuende.de) + * + * Copyright (c) 2008-2009 Novell + * + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +public IEnumerator GetEnumerator () +{ + return new Enumerator (this); +} + +class Enumerator : IEnumerator +{ + IptcData iptcdata; + + public Enumerator (IptcData iptcdata) + { + this.iptcdata = iptcdata; + } + + IptcDatumIterator current = null; + IptcDatumIterator end = null; + + public object Current { + get { return current; } + } + + public bool MoveNext () + { + if (iptcdata.IsEmpty) + return false; + if (end == null) + end = iptcdata.End (); + if (current == null) + current = iptcdata.Begin (); + else + current.Next (); + if (current.Equals (end)) + return false; + return true; + } + + public void Reset () + { + current = null; + } +} + +public object this [string key] +{ + get { return GetThis (key); } + set { + (GetThis (key) as IptcDatum).Value = value; + } +} + + + + diff --git a/exiv2/IptcDatum.custom b/exiv2/IptcDatum.custom new file mode 100644 index 0000000..d59aad9 --- /dev/null +++ b/exiv2/IptcDatum.custom @@ -0,0 +1,52 @@ +/* + * IptcDatum.custom + * + * Author(s): + * Stephane Delcroix (stephane@delcroix.org) + * Mike Gemuende (mike@gemuende.de) + * + * Copyright (c) 2008-2009 Novell + * + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +public object Value { + set { + if (value is UInt16) + ValueUShort = (UInt16) value; +// else if (value is UInt32) +// ValueULong = (UInt32) value; +// else if (value is Exiv2.URational) +// ValueURational = (Exiv2.URational) value; +// else if (value is Int16) +// ValueSShort = (Int16) value; +// else if (value is Int32) +// ValueSLong = (Int32) value; +// else if (value is Exiv2.Rational) +// ValueRational = (Exiv2.Rational) value; + else if (value is string) + ValueString = value as string; + else + throw new NotImplementedException (); + } +} + diff --git a/exiv2/Makefile.am b/exiv2/Makefile.am index 35ef5e4..9588434 100644 --- a/exiv2/Makefile.am +++ b/exiv2/Makefile.am @@ -19,6 +19,8 @@ CUSTOMS = \ $(srcdir)/ExifThumb.custom \ $(srcdir)/Image.custom \ $(srcdir)/ImageFactory.custom \ + $(srcdir)/IptcData.custom \ + $(srcdir)/IptcDatum.custom \ $(srcdir)/Nikon1MakerNote.custom \ $(srcdir)/Nikon2MakerNote.custom \ $(srcdir)/Nikon3MakerNote.custom \