Added website/ directory.

v0.27.3
Andreas Huggel 12 years ago
parent 95ac504aa7
commit 84120d1548

@ -0,0 +1,48 @@
Release checklist
-----------------
1 month before the release: Update po/ directory, notify translators
2 weeks before the release: Update po/ directory, remind translators
Update po/ directory
Update issues
Update ChangeLog
Update versions (see tagging script)
Review and update webpages
News page
Download page
Archive page
Index page
Other pages as needed, external links
Review and update documentation
API doc intro
Man page
Taglists
READMEs
Linux
Compile organize
Compile and run tests on Intel 32
Compile and run tests on AMD 64
Mac
Compile and run tests on Mac OSX
MinGW
Compile and run tests
MSVC
Compile with 7.1
Run tests with 7.1 executables
Compile with 8
Run tests with 8 executables
Compile with 9
Run tests with 9 executables
Compile with 10
Run tests with 10 executables
Tag release
Create packages
Finalize webpages with package information (bin/release_info.sh)
Publish webpages and packages locally
Download and test packages
Test Windows binary on Windows
Really publish webpages and packages
Validate uploaded webpages with W3C HTML checker
Exiv2 forum announcement
Facebook fan page update
Freshmeat.net announcement

@ -0,0 +1,192 @@
TABLES = Exif \
Canon \
CanonCs \
CanonSi \
CanonCf \
CanonPi \
CanonFi \
CanonPa \
Fujifilm \
Minolta \
MinoltaCsNew \
MinoltaCs5D \
MinoltaCs7D \
Nikon1 \
Nikon2 \
Nikon3 \
NikonVr \
NikonPc \
NikonWt \
NikonIi \
NikonAf \
NikonAf2 \
NikonAFT \
NikonFi \
NikonMe \
NikonFl1 \
NikonFl2 \
NikonFl3 \
NikonSiD80 \
NikonSiD40 \
NikonSiD300a \
NikonSiD300b \
NikonSi01xx \
NikonCb1 \
NikonCb2 \
NikonCb2a \
NikonCb2b \
NikonCb3 \
NikonCb4 \
NikonLd1 \
NikonLd2 \
NikonLd3 \
Olympus \
OlympusCs \
OlympusEq \
OlympusRd \
OlympusRd2 \
OlympusIp \
OlympusFi \
OlympusFe1 \
OlympusRi \
Panasonic \
PanasonicRaw \
Pentax \
Samsung2 \
Sigma \
Sony1 \
SonyMinolta \
Sony1Cs \
Sony1Cs2 \
Sony1MltCs7D \
Sony1MltCsOld \
Sony1MltCsA100 \
Iptc
SCHEMA = dc \
xmp \
xmpRights \
xmpMM \
xmpBJ \
xmpTPg \
xmpDM \
pdf \
photoshop \
crs \
tiff \
exif \
aux \
iptc \
iptcExt \
MicrosoftPhoto \
digiKam \
kipi \
plus \
mediapro \
expressionmedia \
MP \
MPRI \
MPReg \
mwg-rs
all: html doc
.PHONY: html doc news clean update update-intro update-sample update-changelog \
update-makernotes publish really-publish
html: news
@bin/gen.py master/*.in
@echo "Moving files to html/ ..."
-@mv -f master/*.html master/*.php html/
news: var/__whatsnew-latest__ var/__whatsnew-table__ html/rss.xml
doc: html
@echo "Generating API documentation ... "
# Preprocessing
@sed -e 's,="include/,="../include/,' \
-e 's,="whatsnew.html#,="../whatsnew.html#,' \
html/draft-exiv2-header.html > html/exiv2-header.html
@sed 's,="include/,="../include/,' \
html/draft-exiv2-footer.html > html/exiv2-footer.html
@bin/gen.py doxygen/mainpage.hpp.in
# API doc generation
doxygen-1.5.4 doxygen/Doxyfile
# Postprocessing
@sed 's,<h1>Exiv2 Class Index</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Class index</h2>,' html/doc/classes.html > html/doc/ttt
@mv -f html/doc/ttt html/doc/classes.html
@sed 's,<h1>Exiv2 Namespace List</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Namespaces</h2>,' html/doc/namespaces.html > html/doc/ttt
@mv -f html/doc/ttt html/doc/namespaces.html
@sed 's,<h1>Exiv2 File List</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 File list</h2>,' html/doc/files.html > html/doc/ttt
@mv -f html/doc/ttt html/doc/files.html
@sed 's,<h1>Exiv2 Examples</h1>,<h1>Image metadata library and tools</h1><h2>Exiv2 Examples</h2>,' html/doc/examples.html > html/doc/ttt
@mv -f html/doc/ttt html/doc/examples.html
-@cp -f doxygen/doxygen.css html/doc
# Cleanup
-@rm -f html/exiv2-header.html
-@rm -f html/exiv2-footer.html
-@rm -f html/draft-exiv2-header.html
-@rm -f html/draft-exiv2-footer.html
-@rm -f html/doc/namespacemembers*.html
-@rm -f html/doc/functions*.html
var/__whatsnew-table__: master/news.xml
@echo "Generating news table ..."
@xsltproc master/whatsnew-table.xsl $< > $@
var/__whatsnew-latest__: master/news.xml
@echo "Generating latest news ..."
@xsltproc master/whatsnew-latest.xsl $< > $@
html/rss.xml: master/news.xml
@echo "Generating RSS feed ..."
@xsltproc master/whatsnew-rss.xsl $< \
| awk '/pubDate/ { gsub("<[/]?pubDate>", ""); printf " <pubDate>"; system("bin/rssdate " $$0); printf "</pubDate>\n"; next } /__lastBuildDate__/ { printf " <lastBuildDate>"; system("date -R"); printf " </lastBuildDate>\n"; next; } {print}' > $@
# Run bin/release_info.sh to update release related variables (incl __version__)
update: update-manpage update-intro update-sample update-changelog update-tags update-makernotes
update-manpage:
@man -t exiv2 | ps2pdf - html/exiv2-manpage.pdf
@cat ../src/exiv2.1 | sed '/^JPEG/ i\
' | man2html -Hlinux.die.net -M/man -p | sed -e's,\(HREF=.*\)+,\1/,' -e'1,15d' -e'/NAME="index"/,$$d' \
| sed -e's/ &lt;<A HREF="mailto.*&gt;//' -e'$$d' > var/__manpage__
update-intro:
@cp -f ../doc/templates/__intro__ doxygen/draft-intro.html
@sed -e 's,="makernote.html,="../makernote.html,' \
-e 's,<a href="mailto:ahuggel@gmx.net"> contact me</a>,contact me,' \
doxygen/draft-intro.html > doxygen/intro.html
@rm -f doxygen/draft-intro.html
update-sample:
@./bin/sample.sh
update-changelog:
@cp -f ../doc/ChangeLog var/__ChangeLog__
@bin/buglinks.sh var/__ChangeLog__
update-makernotes:
@cp -f ../doc/templates/__makernotes__ var/__makernotes__
$(TABLES):
@cp -f ../doc/templates/__$@__ var/__$@__
$(SCHEMA):
@cp -f ../doc/templates/__xmp_$@__ var/__xmp_$@__
update-tags: $(TABLES) $(SCHEMA)
clean:
@rm -vf html/*.html
@rm -vf html/rss.xml
@rm -rf html/doc
@rm -vf var/__whatsnew-latest__
@rm -vf var/__whatsnew-table__
@rm -vf doxygen/mainpage.hpp
publish:
rsync -vlDtrz --delete --exclude='.svn' -e ssh html/ andreas@localhost:rs
really-publish:
rsync -vlDtrz --delete --exclude='misc/' --exclude='.svn' -e "ssh -2 -i /home/andreas/.ssh/ahuggel.key" html/ ahuggel@exiv2.org:

@ -0,0 +1,64 @@
**** UNDER CONSTRUCTION ****
The website/ directory contains the source code required to build the
web pages for exiv2.org as well as scripts to build exiv2 releases.
How to build the website
------------------------
- Build and install exiv2, build the samples and doc. And while you're
at it, it never hurts to also run the tests.
- Build bin/rssdate from the source file bin/rssdate.cpp
- Define the environment variable EXIV2HOME to the path of your exiv2
directory, i.e., the parent directory of website/
- Run 'make update' to import whatever is required from the rest of the
exiv2 sources (doc/, samples/, src/)
- Run 'make' to build the web pages
Subsequently, 'make clean; make' will remove and rebuild the web
pages; 'make update' is only needed if something changed in the exiv2
source or doc.
Dependencies
------------
- python
- doxygen-1.5.4 must be available in the path with this name
- xsltproc
- ps2pdf
- man2html
- ...
Generated HTML pages
--------------------
Master HTML files
To modify HTML content, change the master HTML files master/*.in.
Do _not_ change the html/*.html files. These are generated files.
Placeholders
The master HTML files contain placeholders for HTML code that is
common to multiple files. Placeholders are strings of the form
__placeholder__. The content for each placeholder is in a file
var/__placeholder__. A special placeholder is __last_modified__: It
doesn't need a corresponding file in the var/ directory to be
substituted. Instead, every occurrence of __last_modified__ is
automatically replaced with the current date.
Substitution of placeholders
A small Python script bin/gen.py performs the substitutions. Variables
are substituted in one pass, in alphabetical order. Thus variables in
the content of another placeholder only get substituted if their names
are greater than the name of the containing placeholder. The special
variable __last_modified__ is substituted after all regular
placeholders, so it can occur in the content of any other placeholder.
News
The file news.xml contains all news items. There are two stylesheets
(whatsnew-table.xsl, whatsnew-latest.xsl) which are used to create
placeholders __whatsnew-table__ and __whatsnew-latest__. To add or
change news items, only change the news.xml masterfile and run make.
Makefile
To re-generate the HTML pages from the master files and move them
to the html/ directory, run "make" in this directory

@ -0,0 +1,16 @@
#! /bin/sh
# Fix < and > signs and replace bugnumbers in the file given
# (ChangeLog) with links to Redmine issues.
if [ $# -ne 1 ] ; then
echo Usage: buglinks.sh ChangeLog
exit 1
fi
file=$1
sed -e 's/\&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' $file > $file.tmp
mv $file.tmp $file
sed -e 's,\#\([1-9][0-9][0-9]\),<a title="bug \1" href="http://dev.exiv2.org/issues/show/\1">#\1</a>,g; s,\([0-9][0-9][0-9][0-9][0-9][0-9][0-9]\),<a title="bug \1" href="http://dev.exiv2.org/issues/show/\1">\1</a>,g' $file > $file.tmp
mv $file.tmp $file

@ -0,0 +1,76 @@
#! /bin/sh
# Export and build an exiv2 release, 26-Jan-06, ahu
if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` <tagname>|trunk"
cat <<EOF
Export and build an Exiv2 release.
EOF
exit 1
fi
rel=$1
(
if [ -e $rel ] ; then
echo File $rel already exists, exiting...
exit 1
fi
if [ -e exiv2-$rel ] ; then
echo File exiv2-$rel already exists, exiting...
exit 1
fi
echo Exporting sources, this may take a while...
path=tags/$rel
if [ $rel = trunk ] ; then
path=trunk
fi
svn export svn://dev.exiv2.org/svn/$path
mv $rel exiv2-$rel
# Prepare the source code
cd exiv2-$rel
make config
./configure --disable-shared
make -j3
make install
make samples
make doc
cd test
make
cd ..
rm -f ABOUT-NLS
rm -f .gitignore
rm -rf test/
rm -rf kdevelop/
make distclean
rm -f Makefile
rm -f bootstrap.linux
rm -f msvc64\\runner.txt
find . -type f -name '*[Cc][Mm][Aa][Kk][Ee]*' | xargs rm -f
rm -rf xmpsdk/src/.libs
# Create source and doc packages
cd ..
tar zcvf exiv2-$rel-doc.tar.gz exiv2-$rel/doc/index.html exiv2-$rel/doc/html exiv2-$rel/doc/include
rm -rf exiv2-$rel/doc/html
tar zcvf exiv2-$rel.tar.gz exiv2-$rel
# Test the tarball: unpack, build and run tests
rm -rf exiv2-$rel
tar zxvf exiv2-$rel.tar.gz
cd exiv2-$rel
./configure
make -j3
make install
make samples
echo Exporting tests, this may take a while...
svn export svn://dev.exiv2.org/svn/tags/$rel/test
du -sk test/
cd test
make
cd ../..
) 2>&1 | tee exiv2-buildrelease-$rel.out 2>&1

@ -0,0 +1,50 @@
#! /bin/sh
# Cross-compile Exiv2 executable for Windows
# 17-Mar-07, ahu
if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` directory"
cat <<EOF
Cross-compile Exiv2 executable for Windows and build -win package.
EOF
exit 1
fi
dir=$1
(
if [ ! -e $dir ] ; then
echo "Error: Directory $dir doesn't exist."
exit 1
fi
# Configure and cross-compile
cd $dir
make maintainer-clean
make config
./configure --disable-shared --disable-visibility --target=i586-mingw32msvc --host=i586-mingw32msvc --build=i586-linux --disable-nls --with-zlib=$HOME/mingw --with-libiconv-prefix=$HOME/mingw --with-expat=$HOME/mingw
make -j3
# Prepare package
cd src
rel=`grep EXV_PACKAGE_VERSION ../msvc/include/exv_msvc.h | sed 's/.*"\(.*\)"/\1/'`
tmpdir=exiv2-$rel-win
rm -rf $tmpdir
mkdir $tmpdir
cp exiv2 $tmpdir/exiv2.exe
cd $tmpdir
strip exiv2.exe
cp ../../doc/cmd.txt .
cp ../../doc/cmdxmp.txt .
cp $HOME/mingw/dll/libexpat.dll .
todos cmd.txt cmdxmp.txt
$HOME/src/exiv2/exiv2-htmlman.sh ../exiv2.1
zip exiv2-$rel-win.zip exiv2.exe cmd.txt cmdxmp.txt exiv2-man.html libexpat.dll
# Cleanup
mv exiv2-$rel-win.zip ../../..
cd ..
rm -rf $tmpdir
cd ../..
) 2>&1 | tee exiv2-buildwinexe.out 2>&1

@ -0,0 +1,13 @@
#! /bin/sh
if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` manpage"
cat <<EOF
Convert manpage to html and make external links point to linux.die.net.
EOF
exit 1
fi
cat $1 | sed '/^JPEG/ i\
' | man2html -Hlinux.die.net -M/man -p | sed -e's,\(HREF=.*\)+,\1/,' > exiv2-man.html

@ -0,0 +1,34 @@
#! /bin/sh
wget http://www.rottmerhusen.com/objektives/lensid/files/c-header/fmountlens4.h
grep 'List of AF F-Mount lenses - Version .*' fmountlens4.h > /tmp/newversion
grep 'List of AF F-Mount lenses - Version .*' nikonmn.cpp > /tmp/oldversion
diff /tmp/oldversion /tmp/newversion
if [ $? -eq 0 ] ; then
echo "We already have the latest version."
exit
fi
cat nikonmn.cpp | awk '
/8< - - - 8< do not remove this line >8 - - - >8/ {
if (!s) {
s = 1
print
system("cat fmountlens4.h")
}
else {
s = 0
}
}
{
if (s) next;
print
}' > new-nikonmn.cpp
sed 's/struct {unsigned char lid,stps,focs,focl,aps,apl,lfw/static const struct {unsigned char lid,stps,focs,focl,aps,apl,lfw/' new-nikonmn.cpp > nikonmn.cpp
ver=`cat /tmp/newversion | awk '{print $9}'`
echo
echo "Updated Nikon Lens lookup table to v$ver of Robert Rottmerhusen's fmountlens list."
rm -f fmountlens4.h /tmp/newversion /tmp/oldversion new-nikonmn.cpp

@ -0,0 +1,43 @@
#! /bin/sh
# Tag an exiv2 release, 26-Jan-06, ahu
# Steps to create a package for release
# =====================================
# Manual: Update ChangeLog
# Manual: Update release number. The files that need changes are:
# - config/configure.ac
# - msvc/include/exv_msvc.h
# - msvc64/include/exv_msvc.h
# - src/version.hpp
# - test/data/exiv2-test.out
# - CMakeLists.txt
if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` tagname [branch]"
cat <<EOF
Tag the Exiv2 repository.
EOF
exit 1
fi
rel=$1
bra=trunk
pre=
if [ $# -eq 2 ] ; then
bra=branches/$2
pre="[$2] "
fi
echo "You're about to tag $bra as release $rel, using the following command"
echo "svn copy svn://dev.exiv2.org/svn/$bra svn://dev.exiv2.org/svn/tags/$rel -m\"${pre}Tagged release $rel\""
echo -n "Continue? [n] : "
read var
if [ x$var = xy ] ; then
# Tag the release
echo Tagging $bra as release $rel, this may take a while...
svn copy svn://dev.exiv2.org/svn/$bra svn://dev.exiv2.org/svn/tags/$rel -m"${pre}Tagged release $rel"
fi

@ -0,0 +1,57 @@
#! /usr/bin/env python
# ----------------------------------------------------------------------
# Settings
vardir = "./var"
date_format = "%d-%b-%Y"
# ----------------------------------------------------------------------
# functions
def usage():
print """Usage: gen.py file.in [...]
Substitute placeholders in input files with content
"""
def gen_html(file):
"""Replace variables in the file with their content"""
text = open(file).read()
for var in vars:
vartext = open(vardir + "/" + var).read()
text = text.replace(var, vartext)
text = last_modified(text)
return text
def last_modified(text):
"""Substitute variable __last_modified__ with the current date"""
date = time.strftime(date_format, time.localtime())
text = text.replace("__last_modified__", date)
return text
# ----------------------------------------------------------------------
# main
import sys
import os
import re
import time
# Check command line arguments
if len(sys.argv) == 1:
usage()
sys.exit()
# The input files from the command line
input = sys.argv[1:]
# Get a list of all variables (files in the form __*__) from vardir
vars = os.listdir(vardir)
for i in range(len(vars)-1, -1, -1):
if re.match("^__.*__$", vars[i]): continue
del vars[i]
vars.sort()
# Substitute variables in all input files
print "Substituting variables", vars
for file in input:
print "Processing", file, "..."
text = gen_html(file)
file = file.replace(".in", "")
open(file, 'w').write(text)

@ -0,0 +1,25 @@
#! /bin/sh
# Create variables for a new release
basedir=.
if [ $# -ne 1 ] ; then
echo Usage: release_info.sh version
exit 1
fi
version=$1
echo -n $version > $basedir/var/__version__
date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_src_pkg__
#date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_doc_pkg__
date +'%d-%b-%Y' | tr -d '\n' > $basedir/var/__rel_date_win_pkg__
ls -la html/exiv2-${version}.tar.gz | awk '{printf "%s", $5}' > $basedir/var/__size_src_pkg__
#ls -la html/exiv2-${version}-doc.tar.gz | awk '{printf "%s", $5}' > $basedir/var/__size_doc_pkg__
ls -la html/exiv2-${version}-win.zip | awk '{printf "%s", $5}' > $basedir/var/__size_win_pkg__
md5sum html/exiv2-${version}.tar.gz | awk '{printf "%s", $1}' > $basedir/var/__md5sum_src_pkg__
#md5sum html/exiv2-${version}-doc.tar.gz | awk '{printf "%s", $1}' > $basedir/var/__md5sum_doc_pkg__
md5sum html/exiv2-${version}-win.zip | awk '{printf "%s", $1}' > $basedir/var/__md5sum_win_pkg__

@ -0,0 +1,16 @@
#! /usr/bin/env python
# Remove links from HTML code
# 05-Jun-05, -ahu.
import re
import sys
# Check command line arguments
if len(sys.argv) != 2:
print """Usage: rmlink.py <file>
Remove links from HTML code
"""
sys.exit()
e = re.compile('<a.*?>(.*?)</a>', re.VERBOSE)
print e.sub(r'\1', open(sys.argv[1]).read())

@ -0,0 +1,22 @@
// g++ rssdate.cpp -o rssdate
#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include <ctime>
int main(int argc, char* const argv[])
{
if (argc != 2) {
std::cout << "Usage: " << argv[0] << " dd-Mon-yyyy\n";
return 1;
}
struct tm tm;
strptime(argv[1], "%d-%b-%Y", &tm);
char s[128];
strftime(s, 128, "%a, %d %b %Y 00:00:00 +0800", &tm);
std::cout << s;
return 0;
}

@ -0,0 +1,13 @@
#! /bin/sh
# Generate variables used for the sample.html page
# The appropriate exiv2 must be built
exiv2=$EXIV2HOME/bin/exiv2
vp=../../var
cd html/include/ >/dev/null 2>&1
$exiv2 img_1771.jpg > $vp/__sample-p__
$exiv2 -pt img_1771.jpg > $vp/__sample-pt__
$exiv2 -h > $vp/sample-h.tmp
sed -e 's/</\&lt;/g' -e 's/>/\&gt;/g' $vp/sample-h.tmp > $vp/__sample-h__
rm -f $vp/sample-h.tmp

@ -0,0 +1,28 @@
#! /bin/sh
# Copy the tag tables from the documentation.
# The documentation must be built.
tabs="__Canon__ \
__CanonCs__ \
__CanonSi__ \
__CanonPa__ \
__CanonCf__ \
__CanonPi__ \
__Exif__ \
__Fujifilm__ \
__Iptc__ \
__Minolta__ \
__MinoltaCsNew__ \
__MinoltaCs5D__ \
__MinoltaCs7D__ \
__Nikon1__ \
__Nikon2__ \
__Nikon3__ \
__Olympus__ \
__Panasonic__ \
__Sigma__ \
__Sony__"
exv_base=./exiv2
for i in $tabs; do cp -f $exv_base/doc/templates/$i var/; done

File diff suppressed because it is too large Load Diff

@ -0,0 +1,342 @@
DIV.qindex {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.nav {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
TD.navtab {
font-size: 70%;
}
A.qindex {
text-decoration: none;
font-weight: bold;
color: #1A419D;
}
A.qindex:visited {
text-decoration: none;
font-weight: bold;
color: #1A419D
}
A.qindex:hover {
text-decoration: none;
background-color: #ddddff;
}
A.qindexHL {
text-decoration: none;
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
A.qindexHL:hover {
text-decoration: none;
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
A.codeRef:link { font-weight: normal; color: #0000FF}
A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
font-family: monospace, fixed;
font-size: 95%;
}
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
BODY {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
TD.indexkey {
background-color: #e8eef2;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TD.indexvalue {
background-color: #e8eef2;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
}
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
.search { color: #003399;
font-weight: bold;
}
FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search { font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
TD.tiny { font-size: 75%;
}
a {
color: #1A41A8;
}
a:visited {
color: #2A3798;
}
.dirtab { padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
TH.dirtab { background: #e8eef2;
font-weight: bold;
}
HR { height: 1px;
border: none;
border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 4px;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
white-space: nowrap;
}
/* End Styling for detailed member documentation */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin:0.5em;
}
.directory { font-size: 9pt; font-weight: bold; }
.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
.directory > h3 { margin-top: 0; }
.directory p { margin: 0px; white-space: nowrap; }
.directory div { display: none; margin: 0px; }
.directory img { vertical-align: -30%; }

@ -0,0 +1,109 @@
<h2><a href="namespaces.html">Namespaces</a></h2>
<p>The <a href="index.html">Exiv2 library</a> is made up of all
elements defined in the <a href="namespaceExiv2.html">Exiv2
namespace</a>.</p>
<h2><a href="classes.html">Classes</a></h2>
<p>The top-level class of the Exiv2 library is <a class="el"
href="classExiv2_1_1Image.html">Exiv2::Image</a>. Exiv2::Image
defines the interface to access image metadata. Derived from
Exiv2::Image are implementations for different image formats. Most
importantly, they contain the logic to read metadata from the image
into Exiv2 metadata containers and write it back to the image.
Most applications will use
<a class="el" href="classExiv2_1_1ImageFactory.html">Exiv2::ImageFactory</a>
to access images in files or memory, in which case the image format
is transparent to them. The factory determines the image format from the
data (not the file extension) and creates an object of the corresponding
Image subclass.</p>
<p>Exif and IPTC metadata is manipulated through the classes
<a class="el" href="classExiv2_1_1ExifData.html">Exiv2::ExifData</a>
and <a class="el" href="classExiv2_1_1IptcData.html">Exiv2::IptcData</a>.
They hold a container of Exif and IPTC metadata, respectively, and define
related methods to access and manipulate the metadata.
<br>
Exif tag and IPTC dataset reference information for the standard tags
and datasets is available in the two static classes
<a class="el" href="classExiv2_1_1ExifTags.html">Exiv2::ExifTags</a> and
<a class="el" href="classExiv2_1_1IptcDataSets.html">Exiv2::IptcDataSets</a>.
<br>
The metadata containers hold objects derived from
<a class="el" href="classExiv2_1_1Metadatum.html">Exiv2::Metadatum</a>.
Interface class Exiv2::Metadatum defines methods to access the
information of one metadatum. It models the tag data as a key and
value pair.
The abstract base class
<a class="el" href="classExiv2_1_1Key.html">Exiv2::Key</a> defines the
interface for a key. Concrete keys implement Exif and IPTC keys.
The abstract base class
<a class="el" href="classExiv2_1_1Value.html">Exiv2::Value</a> defines
the interface to access tag information, from which concrete values are
derived. The actual value used in a metadatum depends on the type of
the Exif tag or IPTC dataset. It is usually determined when the Exif or
IPTC metadata is read from an image. It is also possible to manually create
a Value and together with a key add it to an ExifData or IptcData
container.</p>
The classes to access XMP metadata are
<a class="el" href="classExiv2_1_1XmpData.html">Exiv2::XmpData</a>,
<a class="el" href="classExiv2_1_1Xmpdatum.html">Exiv2::Xmpdatum</a>
and <a class="el" href="classExiv2_1_1XmpKey.html">Exiv2::XmpKey</a>.
They work similar to the corresponding Exif and IPTC classes.
The property reference information is in
<a class="el" href="classExiv2_1_1XmpProperties.html">Exiv2::XmpProperties</a>.
In addition to the expected new members, class
<a class="el" href="classExiv2_1_1Image.html">Exiv2::Image</a>
now also has an interface to access the raw XMP packet.
<br>
All XMP value types are supported: Simple types, structures,
arrays, property qualifiers and language alternatives.
<br>
XMP properties are accessed through keys of the form
"Xmp.&lt;Prefix&gt;.&lt;PropertyPath&gt;", where &lt;Prefix&gt; is the preferred
(or rather, registered) prefix for a schema namespace and
&lt;PropertyPath&gt; is the path of the XMP node. In its most basic
form, to address simple properties, &lt;PropertyPath&gt; is the name
of the property. In general, &lt;PropertyPath&gt; can be used to
address any XMP node, including array items, structure fields
qualifiers and deeply nested properties.
<br>
Any properties in known namespaces are supported and additional
namespaces can be registered.
<br>
The specialized Exiv2 values
<a class="el" href="classExiv2_1_1XmpTextValue.html">Exiv2::XmpTextValue</a>,
<a class="el" href="classExiv2_1_1XmpArrayValue.html">Exiv2::XmpArrayValue</a>
and <a class="el" href="classExiv2_1_1LangAltValue.html">Exiv2::LangAltValue</a> are
provided to simplify the use of XMP properties.
<br>
Note: Unlike Exif and IPTC tags, XMP properties do not have
a tag number.
<h2><a href="examples.html">Examples</a></h2>
<p>There are several simple examples that demonstrate the basic use of Exiv2
functionality: <a href="exifprint_8cpp-example.html">Exifprint</a>
shows how the Exif data of an image can be read and written to the screen.
<a href="iptcprint_8cpp-example.html">Iptcprint</a> is a similar
example to print IPTC data.
<a href="addmoddel_8cpp-example.html">Addmoddel</a> shows how to
add, modify and delete Exif metadata.
<a href="exifcomment_8cpp-example.html">Exifcomment</a> shows how to
set the exif comment of an image.
<a href="xmpsample_8cpp-example.html">Xmpsample.cpp</a> contains examples
of how to set various types of XMP properties.
<br>
For more real-world code have a look at the implementation of the
different actions of the Exiv2 utility (actions.cpp).</p>
<h2><a href="../makernote.html">Makernotes</a></h2>
<p>Exif Makernote data can be accessed through ExifData in the same
way as the standard Exif tags. In other words, for each entry of a
known Makernote, there is a corresponding Metadatum in the ExifData
container. Makernote taglists are available in classes
Exiv2::&lt;Make&gt;MakerNote (e.g.,
<a class="el" href="classExiv2_1_1CanonMakerNote.html">Exiv2::CanonMakerNote</a>.)

@ -0,0 +1,32 @@
// ***************************************************************** -*- C++ -*-
/*!
@mainpage Image metadata library and tools
<h2>%Exiv2 v__version__ API documentation</h2>
@htmlinclude intro.html
*/
/*!
@example addmoddel.cpp
Sample usage of high-level metadata operations.
*/
/*!
@example exifprint.cpp
Sample program to print Exif data from an image.
*/
/*!
@example exifcomment.cpp
Sample program showing how to set the Exif comment of an image.
*/
/*!
@example iptcprint.cpp
Sample program to print the IPTC metadata of an image
*/
/*!
@example iptceasy.cpp
The quickest way to access, set or modify IPTC metadata
*/
/*!
@example xmpsample.cpp
Sample usage of high-level XMP classes.
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

@ -0,0 +1,221 @@
/* -------------------------------------------------------------------------- */
/* General */
html,
body {
padding: 0;
margin: 0;
}
.oddcolor {
background-color: #f5f5f5
}
.evencolor {
background-color: #FFFFFF;
}
/* -------------------------------------------------------------------------- */
/* Content */
#content a[href^="http://"]:after {
content: " " url("external_link.png");
}
#content a[href$=".pdf"]:after {
content: " " url("pdf_file.png");
}
#content a[href$=".PDF"]:after {
content: " " url("pdf_file.png");
}
/* -------------------------------------------------------------------------- */
/* Sidebar */
#sidebar {
font-family: Verdana,Sans-serif;
font-size: 13px;
background-color: #eeeeee;
position: absolute;
top: 0;
left: 0;
width: 150px;
}
#sidebar h2 {
font-size: 18px;
margin-top: 1em;
margin-bottom: 0;
padding: 5px 10px 5px 10px;
}
#nav {
margin: 1em 0 1em 0;
padding: 0 5px 0 5px;
line-height: 0;
}
#nav li {
list-style: none;
background-image: none;
padding: 0 0 1px 0;
line-height: 1.0;
}
#nav li :link, #nav li :visited {
font-weight: normal;
line-height: 1.0;
color: #13264d;
display: block;
text-decoration: none;
border: solid 1px #eeeeee;
padding: 5px 10px 5px 10px;
}
#nav li :link:hover, #nav li :visited:hover {
color: #0a7ddb;
border: solid 1px #dddddd;
border-style: dotted;
background-color: #ffffd0;
}
#nav li :link:active, #nav li :visited:active {
background-color: #f5f5f5;
}
#nav ul {
margin: 1px 1px 0 1px;
padding: 0 0 1px 0;
background-color: #f8f8f8;
border: solid 1px #ffffff;
}
#nav ul :link, #nav ul :visited {
padding: 5px 5px 5px 1.5em;
border: solid 1px #f8f8f8;
}
#nav ul :link:hover, #nav ul :visited:hover {
background-image: none;
border: solid 1px #f8f8f8;
background-color: #ffffd0;
}
/* -------------------------------------------------------------------------- */
/* What's new */
#latest h2 {
color: #ec361d;
}
#news {
margin: 0 5px 1em 5px;
padding: 2px 2px 0 2px;
line-height: 1;
font-size: 80%;
background-color: #f8f8f8;
border: solid 1px #ffffff;
}
#news li {
list-style: none;
padding: 0 0 0.5em 0;
}
#news :link, #news :visited {
color: #13264d;
display: block;
border: solid 1px #f8f8f8;
text-decoration: none;
padding: 2px 2px 2px 2px;
}
#news :link:hover, #news :visited:hover {
color: #ec361d;
border: solid 1px #ec361d;
background-color: #ffffd0;
}
#news :link:active, #news :visited:active {
background-color: #ffffff;
}
span.newstitle {
font-weight: bold;
}
span.newsabstract {
color: #000000;
}
/* -------------------------------------------------------------------------- */
/* Ohloh widgets */
#ohloh_thin_badge {
margin-top: 2em;
margin-left: 25px;
margin-bottom: 1.5em;
}
#ohloh_factoids {
margin-left: 10px;
margin-right: 20px;
border: solid 1px #bbbbbb;
border-style: dotted;
}
#ohloh_factoids a[href^="http://"]:after {
content: "";
}
/* -------------------------------------------------------------------------- */
/* Firefox banners */
#firefox {
margin-top: 1.5em;
margin-left: 15px;
margin-bottom: 1.5em;
}
/* -------------------------------------------------------------------------- */
/* Validator */
#validator {
margin-top: 1.5em;
margin-left: 35px;
margin-bottom: 1.5em;
}
/* -------------------------------------------------------------------------- */
/* doxygen */
#doxygen {
margin-top: 2em;
margin-left: 25px;
margin-bottom: 1.5em;
}
/* -------------------------------------------------------------------------- */
/* Content */
#content {
position: absolute;
top: 0px;
left: 150px;
padding: 20px 30px 0 30px;
}
/* -------------------------------------------------------------------------- */
/* Footer */
#footer table {
border-top: solid 1px #EEEAE4;
margin-top: 1.5em;
padding-top: 10px;
font-size: 73%;
line-height: normal;
}
/* -------------------------------------------------------------------------- */
/* Examples (Code) */
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
padding: 6px;
}
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

@ -0,0 +1,92 @@
/* -----------------------------------------------
http://www.whatcounter.com
webmaster@whatcounter.com
- v.2.2.5
powered by
(c) 2000-2003 www.phpee.com
------------------------------------------------ */
// ----------------------------------------------------------
// SETTINGS:
// here should be your username you received from w1.whatcounter.com
// Do not edit this file manually!! Use the one you got in your
// confirmation-email or the one from Whatcounter's settings
// section.
id = "exiv2";
// If you're using a frameset and are not getting correct
// referrers, please uncomment the following line:
// pp_frames = true;
// ----------------------------------------------------------
// define some defaults -------------------------------------
if(showme==null) var showme='n';
if(st==null) var st='js'; // st means show-type
// get the user agent name ----------------------------------
v = navigator.appName;
// get the screen resolution --------------------------------
c=0;
if (v != "Netscape") c = screen.colorDepth;
else c = screen.pixelDepth;
// get the screen size --------------------------------------
s = screen.width+"x"+screen.height;
// get the document's title ---------------------------------
t = escape(document.title);
// get the document's referrer -------------------------------
var f = "";
// if pp_frames is true then try getting the framed referral (without error checking)
if (typeof(pp_frames) != "undefined")
if (pp_frames)
f = top.document.referrer;
// get the referral for non-multi-domained-framed sites using a Netscape browser
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
if (document["parent"] != null)
if (parent["document"] != null) // ACCESS ERROR HERE!
if (parent.document["referrer"] != null)
if (typeof(parent.document) == "object")
f = parent.document.referrer;
// get the referral for the current document if a framed referral wasn't found
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
if (document["referrer"] != null)
f = document.referrer;
// convert all the unknown's into blank
if ((f == "") || (f == "[unknown origin]") || (f == "unknown") || (f == "undefined"))
f = "";
// escape the referral
f = escape(f);
// getting data ready to send -------------------------------
r="?id="+id+"&referer="+f+"&r="+s+"&c="+c+"&showme="+showme+"&st="+st+"&title="+t;
// adding logid if called by st='phpjs'
if(jslogid==null) var jslogid = 0;
else r = r + "&jslogid="+jslogid;
if (st=='js') { // calling PowerPhlogger by JavaScript-tag
if (v != "Microsoft Internet Explorer") {
r = r+"&url="+document.URL; // $HTTP_REFERER problem with NS,...
}
document.open();
document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://w1.whatcounter.com/pphlogger.php"+r+"\"></script>");
document.close();
} else { // calling PowerPhlogger by IMG-tag
rand = Math.round(1000*Math.random());
r = r+"&b="+rand; //force the page to load the IMG
document.open();
document.write("<img src=\"http://w1.whatcounter.com/pphlogger.php"+r+"\" alt=\"\" border=\"0\">");
document.close();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,90 @@
/* -------------------------------------------------------------------------- */
.BoxTable {
width: 90%;
}
.BoxTable>td {
width: 100%;
}
/* -------------------------------------------------------------------------- */
.ParamTable {
text-align: right;
}
.ParamTable td.Desc {
font-weight: bold;
text-align: right;
}
/* -------------------------------------------------------------------------- */
.ReportTable {
font: Icon;
width: 100%;
border: 1px Solid ThreeDShadow;
background: Window;
color: WindowText;
border-spacing: 0px;
}
.ReportTable thead {
background: ButtonFace;
font-weight: bold;
}
.ReportTable th {
border: 1px solid;
border-color: ButtonHighlight ButtonShadow
ButtonShadow ButtonHighlight;
cursor: default;
text-align: center;
padding: 1px 1px 1px 1px;
}
.ReportTable th:active {
border-color: ButtonShadow ButtonHighlight
ButtonHighlight ButtonShadow;
padding: 1px 1px 1px 1px;
}
.ReportTable tbody tr.OddRow {
background: #FFFFFF
}
.ReportTable tbody tr.EvenRow {
background: #CCDBEA
}
.ReportTable tfoot {
background: #FFFFFF;
font-weight: bold;
}
.ReportTable tfoot tr {
border: 1px Solid ThreeDShadow;
}
.ReportTable>td {
padding: 2px 5px;
}
.ReportTable td.Total {
text-align: right;
}
/* -------------------------------------------------------------------------- */
.SortArrow {
width: 11px;
height: 11px;
background-position: center center;
background-repeat: no-repeat;
margin: 0 2px;
}
.SortArrow.descending {
background-image: url("descending.png"); /* relative to this css file */
}
.SortArrow.ascending {
background-image: url("ascending.png"); /* relative to this css file */
}

@ -0,0 +1,356 @@
/*----------------------------------------------------------------------------\
| Sortable Table 1.03 |
|-----------------------------------------------------------------------------|
| Created by Erik Arvidsson |
| (http://webfx.eae.net/contact.html#erik) |
| For WebFX (http://webfx.eae.net/) |
|-----------------------------------------------------------------------------|
| A DOM 1 based script that allows an ordinary HTML table to be sortable. |
|-----------------------------------------------------------------------------|
| Copyright (c) 1998 - 2002 Erik Arvidsson |
|-----------------------------------------------------------------------------|
| This 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. |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| This software is available under the three different licenses mentioned |
| below. To use this software you must chose, and qualify, for one of those. |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| The WebFX Non-Commercial License http://webfx.eae.net/license.html |
| Permits anyone the right to use the software in a non-commercial context |
| free of charge. |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| The WebFX Commercial license http://webfx.eae.net/commercial.html |
| Permits the license holder the right to use the software in a commercial |
| context. Such license must be specifically obtained, however it's valid for |
| any number of implementations of the licensed software. |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt |
| Permits anyone the right to use and modify the software without limitations |
| as long as proper credits are given and the original and modified source |
| code are included. Requires that the final product, software derivate from |
| the original source or any software utilizing a GPL component, such as |
| this, is also licensed under the GPL license. |
|-----------------------------------------------------------------------------|
| 2003-01-10 | First version |
| 2003-01-19 | Minor changes to the date parsing |
| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |
| 2003-02-01 | Sloppy typo like error fixed in getInnerText |
|-----------------------------------------------------------------------------|
| Created 2003-01-10 | All changes are in the log above. | Updated 2003-02-01 |
\----------------------------------------------------------------------------*/
/*
Changes made (ahu):
+ Support header TH element (headerOnclick)
+ Added support for a TD attribute 'sortValue' (getRowValue):
If it is there, use its value for sorting instead of the cell content.
This allows sorting by a value that differs from what is seen on the
screen. As a simple example, consider sorting a column containing
formatted numbers: <TD sortValue="1000">1,000.00</TD>
+ 15-May 2004, ahu: changed default sort order (on the first click) to
ascending (SortableTable.prototype.sort)
ToDo:
- Allow for different Date formats
*/
function SortableTable(oTable, oSortTypes) {
this.element = oTable;
this.tHead = oTable.tHead;
this.tBody = oTable.tBodies[0];
this.document = oTable.ownerDocument || oTable.document;
this.sortColumn = null;
this.descending = null;
var oThis = this;
this._headerOnclick = function (e) {
oThis.headerOnclick(e);
};
// only IE needs this
var win = this.document.defaultView || this.document.parentWindow;
this._onunload = function () {
oThis.destroy();
};
if (win && typeof win.attachEvent != "undefined") {
win.attachEvent("onunload", this._onunload);
}
this.initHeader(oSortTypes || []);
}
SortableTable.gecko = navigator.product == "Gecko";
SortableTable.msie = /msie/i.test(navigator.userAgent);
// Mozilla is faster when doing the DOM manipulations on
// an orphaned element. MSIE is not
SortableTable.removeBeforeSort = SortableTable.gecko;
SortableTable.prototype.onsort = function () {};
// adds arrow containers and events
// also binds sort type to the header cells so that reordering columns does
// not break the sort types
SortableTable.prototype.initHeader = function (oSortTypes) {
var cells = this.tHead.rows[0].cells;
var l = cells.length;
var img, c;
for (var i = 0; i < l; i++) {
c = cells[i];
img = this.document.createElement("IMG");
img.src = "include/blank.png"; // relative to the file that uses this
c.appendChild(img);
if (oSortTypes[i] != null) {
c._sortType = oSortTypes[i];
}
if (typeof c.addEventListener != "undefined")
c.addEventListener("click", this._headerOnclick, false);
else if (typeof c.attachEvent != "undefined")
c.attachEvent("onclick", this._headerOnclick);
}
this.updateHeaderArrows();
};
// remove arrows and events
SortableTable.prototype.uninitHeader = function () {
var cells = this.tHead.rows[0].cells;
var l = cells.length;
var c;
for (var i = 0; i < l; i++) {
c = cells[i];
c.removeChild(c.lastChild);
if (typeof c.removeEventListener != "undefined")
c.removeEventListener("click", this._headerOnclick, false);
else if (typeof c.detachEvent != "undefined")
c.detachEvent("onclick", this._headerOnclick);
}
};
SortableTable.prototype.updateHeaderArrows = function () {
var cells = this.tHead.rows[0].cells;
var l = cells.length;
var img;
for (var i = 0; i < l; i++) {
img = cells[i].lastChild;
if (i == this.sortColumn)
img.className = "SortArrow " + (this.descending ? "descending" : "ascending");
else
img.className = "SortArrow";
}
};
SortableTable.prototype.headerOnclick = function (e) {
// find TD or TH element
var el = e.target || e.srcElement;
while (el.tagName != "TD" && el.tagName != "TH")
el = el.parentNode;
this.sort(el.cellIndex);
};
SortableTable.prototype.getSortType = function (nColumn) {
var cell = this.tHead.rows[0].cells[nColumn];
var val = cell._sortType;
if (val != "")
return val;
return "String";
};
// only nColumn is required
// if bDescending is left out the old value is taken into account
// if sSortType is left out the sort type is found from the sortTypes array
SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {
if (sSortType == null)
sSortType = this.getSortType(nColumn);
// exit if None
if (sSortType == "None")
return;
if (bDescending == null) {
if (this.sortColumn != nColumn)
// 15-May 2004, ahu: change to false for ascending
this.descending = false;
else
this.descending = !this.descending;
}
this.sortColumn = nColumn;
if (typeof this.onbeforesort == "function")
this.onbeforesort();
var f = this.getSortFunction(sSortType, nColumn);
var a = this.getCache(sSortType, nColumn);
var tBody = this.tBody;
a.sort(f);
if (this.descending)
a.reverse();
if (SortableTable.removeBeforeSort) {
// remove from doc
var nextSibling = tBody.nextSibling;
var p = tBody.parentNode;
p.removeChild(tBody);
}
// insert in the new order
var l = a.length;
for (var i = 0; i < l; i++)
tBody.appendChild(a[i].element);
if (SortableTable.removeBeforeSort) {
// insert into doc
p.insertBefore(tBody, nextSibling);
}
this.updateHeaderArrows();
this.destroyCache(a);
if (typeof this.onsort == "function")
this.onsort();
};
SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {
var oThis = this;
this._asyncsort = function () {
oThis.sort(nColumn, bDescending, sSortType);
};
window.setTimeout(this._asyncsort, 1);
};
SortableTable.prototype.getCache = function (sType, nColumn) {
var rows = this.tBody.rows;
var l = rows.length;
var a = new Array(l);
var r;
for (var i = 0; i < l; i++) {
r = rows[i];
a[i] = {
value: this.getRowValue(r, sType, nColumn),
element: r
};
};
return a;
};
SortableTable.prototype.destroyCache = function (oArray) {
var l = oArray.length;
for (var i = 0; i < l; i++) {
oArray[i].value = null;
oArray[i].element = null;
oArray[i] = null;
}
}
SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {
var c = oRow.cells[nColumn];
var s = c.getAttribute("sortValue");
if (!s) {
if (typeof c.innerText != "undefined")
s = c.innerText;
else
s = SortableTable.getInnerText(c);
}
return this.getValueFromString(s, sType);
};
SortableTable.getInnerText = function (oNode) {
var s = "";
var cs = oNode.childNodes;
var l = cs.length;
for (var i = 0; i < l; i++) {
switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
s += SortableTable.getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
s += cs[i].nodeValue;
break;
}
}
return s;
}
SortableTable.prototype.getValueFromString = function (sText, sType) {
switch (sType) {
case "Number":
return Number(sText);
case "CaseInsensitiveString":
return sText.toUpperCase();
case "Date":
var parts = sText.split("-");
var d = new Date(0);
d.setFullYear(parts[0]);
d.setDate(parts[2]);
d.setMonth(parts[1] - 1);
return d.valueOf();
}
return sText;
};
SortableTable.prototype.getSortFunction = function (sType, nColumn) {
return function compare(n1, n2) {
if (n1.value < n2.value)
return -1;
if (n2.value < n1.value)
return 1;
return 0;
};
};
SortableTable.prototype.destroy = function () {
this.uninitHeader();
var win = this.document.parentWindow;
if (win && typeof win.detachEvent != "undefined") { // only IE needs this
win.detachEvent("onunload", this._onunload);
}
this._onunload = null;
this.element = null;
this.tHead = null;
this.tBody = null;
this.document = null;
this._headerOnclick = null;
this.sortTypes = null;
this._asyncsort = null;
this.onsort = null;
};
/* -------------------------------------------------------------------------- */
function addClassName(el, sClassName) {
var s = el.className;
var p = s.split(" ");
var l = p.length;
for (var i = 0; i < l; i++) {
if (p[i] == sClassName)
return;
}
p[p.length] = sClassName;
el.className = p.join(" ");
}
function removeClassName(el, sClassName) {
var s = el.className;
var p = s.split(" ");
var np = [];
var l = p.length;
var j = 0;
for (var i = 0; i < l; i++) {
if (p[i] != sClassName)
np[j++] = p[i];
}
el.className = np.join(" ");
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,503 @@
__doctype__
<html>
__header2__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Archive</h2>
<p>These are all previously released versions of Exiv2. For the most current version, go to the <a title="Current version of Exiv2" href="download.html">download page</a>.</p>
<table class="ReportTable" id="report-1" cellspacing="0">
<colgroup>
<col>
<col>
<col align="center">
<col align="center">
<col>
</colgroup>
<thead>
<tr>
<th><b>Package</b></th>
<th><b>Filename</b></th>
<th><b>Size (Bytes)</b></th>
<th><b>Date</b></th>
<th><b>MD5</b></th>
</tr>
</thead>
<tbody>
<tr class="OddRow">
<td>Exiv2 v0.22 Source</td>
<td><a title="Download the v0.22 source package" href="exiv2-0.22.tar.gz" >exiv2-0.22.tar.gz</a></td>
<td>3482572</td>
<td>18-Sep-2011</td>
<td>84d7d5b1802529efca8ac3d6e6a97e3a</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.22 Windows executable</td>
<td><a title="Download the v0.22 Windows executable" href="exiv2-0.22-win.zip" >exiv2-0.22-win.zip</a></td>
<td>1677934</td>
<td>18-Sep-2011</td>
<td>20f918dce2504a3a59df2de24f785c64</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.21.1 Source</td>
<td><a title="Download the v0.21.1 source package" href="exiv2-0.21.1.tar.gz" >exiv2-0.21.1.tar.gz</a></td>
<td>3004521</td>
<td>14-Feb-2011</td>
<td>5c99bbcaa998f6b200b92f2bf0ac4f9e</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.21.1 Windows executable</td>
<td><a title="Download the v0.21.1 Windows executable" href="exiv2-0.21.1-win.zip" >exiv2-0.21.1-win.zip</a></td>
<td>1640376</td>
<td>14-Feb-2011</td>
<td>ddfdd3be4e3a64d9a6571ee7a873eeda</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.21 Source</td>
<td><a title="Download the v0.21 source package" href="exiv2-0.21.tar.gz" >exiv2-0.21.tar.gz</a></td>
<td>3002066</td>
<td>01-Dec-2010</td>
<td>2caf74de59b5424996959ccea1c001fb</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.21 Windows executable</td>
<td><a title="Download the v0.21 Windows executable" href="exiv2-0.21-win.zip" >exiv2-0.21-win.zip</a></td>
<td>1639929</td>
<td>01-Dec-2010</td>
<td>6a9fc0b4cef4dbbc7820bb24791ec2d3</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.20 Source</td>
<td><a title="Download the v0.20 source package" href="exiv2-0.20.tar.gz" >exiv2-0.20.tar.gz</a></td>
<td>2941045</td>
<td>30-May-2010</td>
<td>3173d08a4313dc94b7bd1b7cdbda2093</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.20 Windows executable</td>
<td><a title="Download the v0.20 Windows executable" href="exiv2-0.20-win.zip" >exiv2-0.20-win.zip</a></td>
<td>1604291</td>
<td>30-May-2010</td>
<td>9c572b6c50d8c484a0d61dd7f2385966</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.19 Source</td>
<td><a title="Download the v0.19 source package" href="exiv2-0.19.tar.gz" >exiv2-0.19.tar.gz</a></td>
<td>2658781</td>
<td>30-Dec-2009</td>
<td>f52fb75a2cb7512f1484deab76473e13</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.19 Windows executable</td>
<td><a title="Download the v0.19 Windows executable" href="exiv2-0.19-win.zip" >exiv2-0.19-win.zip</a></td>
<td>1637143</td>
<td>30-Dec-2009</td>
<td>ea6f54ab7cfbfc4fdc68e2332e0e15af</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.18.2 Source</td>
<td><a title="Download the v0.18.2 source package" href="exiv2-0.18.2.tar.gz" >exiv2-0.18.2.tar.gz</a></td>
<td>2394263</td>
<td>24-Jun-2009</td>
<td>300cc55e098d7ff7560b4c6992282c53</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.18.2 Windows executable</td>
<td><a title="Download the v0.18.2 Windows executable" href="exiv2-0.18.2-win.zip" >exiv2-0.18.2-win.zip</a></td>
<td>1773751</td>
<td>24-Jun-2009</td>
<td>566dc35c684d79d0b4083f2122cae65e</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.18.1 Source</td>
<td><a title="Download the v0.18.1 source package" href="exiv2-0.18.1.tar.gz" >exiv2-0.18.1.tar.gz</a></td>
<td>2342158</td>
<td>06-Apr-2009</td>
<td>744f06b3a2beeb2341f30b157cbd8e7e</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.18.1 Windows executable</td>
<td><a title="Download the v0.18.1 Windows executable" href="exiv2-0.18.1-win.zip" >exiv2-0.18.1-win.zip</a></td>
<td>1767271</td>
<td>06-Apr-2009</td>
<td>c7591a7aed7f3bee68a6372511e32521</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.18 Source</td>
<td><a title="Download the v0.18 source package" href="exiv2-0.18.tar.gz" >exiv2-0.18.tar.gz</a></td>
<td>2299215</td>
<td>18-Dec-2008</td>
<td>03044792525ae0a1b109df5a53b858fb</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.18 Windows executable</td>
<td><a title="Download the v0.18 Windows executable" href="exiv2-0.18-win.zip" >exiv2-0.18-win.zip</a></td>
<td>1602335</td>
<td>18-Dec-2008</td>
<td>3f782e5c340a54a23309e120d00c5e88</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.18-pre2 Source</td>
<td><a title="Download the v0.18-pre2 source package" href="exiv2-0.18-pre2.tar.gz" >exiv2-0.18-pre2.tar.gz</a></td>
<td>2198231</td>
<td>04-Nov-2008</td>
<td>7b52cebd0af071fe663a4a06e64d47cd</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.18-pre2 Windows executable</td>
<td><a title="Download the v0.18-pre2 Windows executable" href="exiv2-0.18-pre2-win.zip" >exiv2-0.18-pre2-win.zip</a></td>
<td>1574233</td>
<td>04-Nov-2008</td>
<td>e007e0a988fb5508605c5f0eb4930d7c</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.18-pre1 Source</td>
<td><a title="Download the v0.18-pre1 source package" href="exiv2-0.18-pre1.tar.gz" >exiv2-0.18-pre1.tar.gz</a></td>
<td>1838552</td>
<td>11-Sep-2008</td>
<td>63b4bbcfe5a1c02187c795b8a67b8112</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.18-pre1 Windows executable</td>
<td><a title="Download the v0.18-pre1 Windows executable" href="exiv2-0.18-pre1-win.zip" >exiv2-0.18-pre1-win.zip</a></td>
<td>1553504</td>
<td>11-Sep-2008</td>
<td>1b64f0ce990ba99fbd06f90126b4995a</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.17.1 Source</td>
<td><a title="Download the v0.17.1 source package" href="exiv2-0.17.1.tar.gz" >exiv2-0.17.1.tar.gz</a></td>
<td>1807220</td>
<td>19-Jun-2008</td>
<td>52a602f4f0d9e89b7084ac795b7547ac</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.17.1 Windows executable</td>
<td><a title="Download the v0.17.1 Windows executable" href="exiv2-0.17.1-win.zip" >exiv2-0.17.1-win.zip</a></td>
<td>1557896</td>
<td>19-Jun-2008</td>
<td>b33ee61aef7d9fe37e75c776523bc72c</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.17 Source</td>
<td><a title="Download the v0.17 source package" href="exiv2-0.17.tar.gz" >exiv2-0.17.tar.gz</a></td>
<td>1807917</td>
<td>06-Jun-2008</td>
<td>800508a2d6db7b736cced8cfeff97a4e</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.17 Windows executable</td>
<td><a title="Download the v0.17 Windows executable" href="exiv2-0.17-win.zip" >exiv2-0.17-win.zip</a></td>
<td>1557670</td>
<td>06-Jun-2008</td>
<td>78635a863842789be0ce7129205e1467</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.16 Source</td>
<td><a title="Download the v0.16 source package" href="exiv2-0.16.tar.gz" >exiv2-0.16.tar.gz</a></td>
<td>1591822</td>
<td>10-Jan-2008</td>
<td>a6e72343885d990c593bd013c6c988f1</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.16 Documentation</td>
<td><a title="Download the v0.16 API documentation and metadata tag reference" href="exiv2-0.16-doc.tar.gz" >exiv2-0.16-doc.tar.gz</a></td>
<td>2730508</td>
<td>10-Jan-2008</td>
<td>ad8bf4b006b6a22f5a9d50856c1b6285</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.16 Windows executable</td>
<td><a title="Download the v0.16 Windows executable" href="exiv2-0.16-win.zip" >exiv2-0.16-win.zip</a></td>
<td>1499946</td>
<td>10-Jan-2008</td>
<td>8de2fc0f942a7fa4ade825da2743a7ca</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.16-pre1 Source</td>
<td><a title="Download the v0.16-pre1 source package" href="exiv2-0.16-pre1.tar.gz" >exiv2-0.16-pre1.tar.gz</a></td>
<td>1540861</td>
<td>09-Nov-2007</td>
<td>e4d0836f92b917f6e5ff85041c8717fb</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.16-pre1 Documentation</td>
<td><a title="Download the v0.16-pre1 API documentation and metadata tag reference" href="exiv2-0.16-pre1-doc.tar.gz" >exiv2-0.16-pre1-doc.tar.gz</a></td>
<td>2713829</td>
<td>09-Nov-2007</td>
<td>7e1b5bc79195e3d818f4c7e12866bf99</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.16-pre1 Windows executable</td>
<td><a title="Download the v0.16-pre1 Windows executable" href="exiv2-0.16-pre1-win.zip" >exiv2-0.16-pre1-win.zip</a></td>
<td>1498744</td>
<td>09-Nov-2007</td>
<td>570d7e34404aa3315811e5a33d13f9cd</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.15 Source</td>
<td><a title="Download the v0.15 source package" href="exiv2-0.15.tar.gz" >exiv2-0.15.tar.gz</a></td>
<td>1133249</td>
<td>10-Jul-2007</td>
<td>bb18d19e1d6fb255dadda456cadec00e</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.15 Documentation</td>
<td><a title="Download the v0.15 API documentation and metadata tag reference" href="exiv2-0.15-doc.tar.gz" >exiv2-0.15-doc.tar.gz</a></td>
<td>2586720</td>
<td>10-Jul-2007</td>
<td>51adef87722e057805ad863be9cb131a</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.15 Windows executable</td>
<td><a title="Download the v0.15 Windows executable" href="exiv2-0.15-win.zip" >exiv2-0.15-win.zip</a></td>
<td>1115891</td>
<td>10-Jul-2007</td>
<td>508f9376c7c143876ef202b1308ff0dd</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.14 Source</td>
<td><a title="Download the v0.14 source package" href="exiv2-0.14.tar.gz" >exiv2-0.14.tar.gz</a></td>
<td>1028225</td>
<td>19-Mar-2007</td>
<td>6f8edde77d95f49fc83329feb615bb33</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.14 Documentation</td>
<td><a title="Download the v0.14 API documentation and metadata tag reference" href="exiv2-0.14-doc.tar.gz" >exiv2-0.14-doc.tar.gz</a></td>
<td>1835888</td>
<td>20-Mar-2007</td>
<td>7245efe6934e8febc4466e50acd939f6</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.14 Windows executable</td>
<td><a title="Download the v0.14 Windows executable" href="exiv2-0.14-win.zip" >exiv2-0.14-win.zip</a></td>
<td>1112164</td>
<td>19-Mar-2007</td>
<td>635019737e2b72446055b4929e8871ac</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.13 Source</td>
<td><a title="Download the v0.13 source package" href="exiv2-0.13.tar.gz" >exiv2-0.13.tar.gz</a></td>
<td>2841724</td>
<td>03-Mar-2007</td>
<td>492d476e3130ac27983d93e5595d81e8</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.13 Windows executable</td>
<td><a title="Download the v0.13 Windows executable" href="exiv2-0.13-win.zip" >exiv2-0.13-win.zip</a></td>
<td>1109773</td>
<td>03-Mar-2007</td>
<td>825d221f787ef97b5dc571f30d4cf561</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.12 Source</td>
<td><a title="Download the v0.12 source package" href="exiv2-0.12.tar.gz" >exiv2-0.12.tar.gz</a></td>
<td>2359138</td>
<td>27-Nov-2006</td>
<td>a97a4e489df7ec99458e3e33b506c3e6</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.12 Windows executable</td>
<td><a title="Download the v0.12 Windows executable" href="exiv2-0.12-win.zip" >exiv2-0.12-win.zip</a></td>
<td>440131</td>
<td>01-Dec-2006</td>
<td>82dbfa8f4d190b26c99481b778e01a06</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.11 Source</td>
<td><a title="Download the v0.11 source package" href="exiv2-0.11.tar.gz" >exiv2-0.11.tar.gz</a></td>
<td>2380087</td>
<td>16-Sep-2006</td>
<td>269ce822946c56549d086f0c08dffc79</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.11 Windows executable</td>
<td><a title="Download the v0.11 Windows executable" href="exiv2-0.11-win.zip" >exiv2-0.11-win.zip</a></td>
<td>407109</td>
<td>16-Sep-2006</td>
<td>cc75a88f1c447e7bff63da0de0c7c24b</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.10 Source</td>
<td><a title="Download the v0.10 source package" href="exiv2-0.10.tar.gz" >exiv2-0.10.tar.gz</a></td>
<td>2053756</td>
<td>03-Jun-2006</td>
<td>5af2256fb9895d9331684e8c1865b956</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.10 Windows executable</td>
<td><a title="Download the v0.10 Windows executable" href="exiv2-0.10-win.zip" >exiv2-0.10-win.zip</a></td>
<td>404766</td>
<td>03-Jun-2006</td>
<td>b67a0a6804bce8b85593325b02c0d2cf</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.9.1 Source</td>
<td><a title="Download the v0.9.1 source package" href="exiv2-0.9.1.tar.gz" >exiv2-0.9.1.tar.gz</a></td>
<td>1602868</td>
<td>04-Feb-2006</td>
<td>4c6593751368f5e9235d85e0d4058e67</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.9.1 Windows executable</td>
<td><a title="Download the v0.9.1 Windows executable" href="exiv2-0.9.1-win.zip" >exiv2-0.9.1-win.zip</a></td>
<td>355312</td>
<td>04-Feb-2006</td>
<td>805c81c16741f2e41e59e7dfd37fe1a2</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.9 Source</td>
<td><a title="Download the v0.9 source package" href="exiv2-0.9.tar.gz" >exiv2-0.9.tar.gz</a></td>
<td>1613781</td>
<td>26-Jan-2006</td>
<td>ee82fcba2741f5c771cb21d3eacefeef</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.9 Windows executable</td>
<td><a title="Download the v0.9 Windows executable" href="exiv2-0.9-win.zip" >exiv2-0.9-win.zip</a></td>
<td>355270</td>
<td>26-Jan-2006</td>
<td>fa54efd391e87fea0c309b65ca5f1a65</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.8 Source</td>
<td><a title="Download the v0.8 source package" href="exiv2-0.8.tar.gz" >exiv2-0.8.tar.gz</a></td>
<td>1318689</td>
<td>19-Nov-2005</td>
<td>70779ef4adb2a41732c44dcdbd535412</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.8 Windows executable</td>
<td><a title="Download the v0.8 Windows executable" href="exiv2-0.8-win.zip" >exiv2-0.8-win.zip</a></td>
<td>338156</td>
<td>19-Nov-2005</td>
<td>bfc1787972dcc5557833b2d75be32447</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.7 Source</td>
<td><a title="Download the v0.7 source package" href="exiv2-0.7.tar.gz" >exiv2-0.7.tar.gz</a></td>
<td>1245111</td>
<td>15-Jun-2005</td>
<td>540e720b77c05ca50d5005a140e38138</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.7 Windows executable</td>
<td><a title="Download the v0.7 Windows executable" href="exiv2-0.7-win.zip" >exiv2-0.7-win.zip</a></td>
<td>273949</td>
<td>15-Jun-2005</td>
<td>6c26bdb7a2c949c7771269ead55b53b2</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.6.2 Source</td>
<td><a title="Download the v0.6.2 source package" href="exiv2-0.6.2.tar.gz" >exiv2-0.6.2.tar.gz</a></td>
<td>975615</td>
<td>06-Mar-2005</td>
<td>2f41777091b2145c4799c3bed55519e3</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.6.2 Windows executable</td>
<td><a title="Download the v0.6.2 Windows executable" href="exiv2-0.6.2-win.zip" >exiv2-0.6.2-win.zip</a></td>
<td>248513</td>
<td>06-Mar-2005</td>
<td>7031cc7228ac376f643601d72d919e91</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.6.1 Source</td>
<td><a title="Download the v0.6.1 source package" href="exiv2-0.6.1.tar.gz" >exiv2-0.6.1.tar.gz</a></td>
<td>749879</td>
<td>17-Jan-2005</td>
<td>34b702a84c3448832c07bb0c02e829bc</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.6.1 Windows executable</td>
<td><a title="Download the v0.6.1 Windows executable" href="exiv2-0.6.1-win.zip" >exiv2-0.6.1-win.zip</a></td>
<td>248002</td>
<td>17-Jan-2005</td>
<td>fdfc905dd8a13a43d4980a9091bb1e48</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.6 Source</td>
<td><a title="Download the v0.6 source package" href="exiv2-0.6.tar.gz" >exiv2-0.6.tar.gz</a></td>
<td>716240</td>
<td>12-Dec-2004</td>
<td>464bcf3878d65196e0a326b2e24752e9</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.6 Windows executable</td>
<td><a title="Download the v0.6 Windows executable" href="exiv2-0.6-win.zip" >exiv2-0.6-win.zip</a></td>
<td>236965</td>
<td>12-Dec-2004</td>
<td>66088a3424b6e2fbc2a7a8887d2b1343</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.5 Source</td>
<td><a title="Download the v0.5 source package" href="exiv2-0.5.tar.gz" >exiv2-0.5.tar.gz</a></td>
<td>645739</td>
<td>13-Sep-2004</td>
<td>e9362bc1b9e5cea5b095a99af08613ee</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.5 Windows executable</td>
<td><a title="Download the v0.5 Windows executable" href="exiv2-0.5-win.zip" >exiv2-0.5-win.zip</a></td>
<td>219168</td>
<td>13-Sep-2004</td>
<td>8347281c3d7430ab48547d04a9c42a8d</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.4 Source</td>
<td><a title="Download the v0.4 source package" href="exiv2-0.4.tar.gz" >exiv2-0.4.tar.gz</a></td>
<td>430893</td>
<td>03-Jul-2004</td>
<td>8b29148c36225836a1935a8b4193b060</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.4 Windows executable</td>
<td><a title="Download the v0.4 Windows executable" href="exiv2-0.4-win.zip" >exiv2-0.4-win.zip</a></td>
<td>197304</td>
<td>03-Jul-2004</td>
<td>fa05437d78c32737f17c9c6ea8badb24</td>
</tr>
<tr class="OddRow">
<td>Exiv2 v0.3 Source</td>
<td><a title="Download the v0.3 source package" href="exiv2-0.3.tar.gz" >exiv2-0.3.tar.gz</a></td>
<td>372479</td>
<td>10-May-2004</td>
<td>3ea7ecc9a37ebf75a46c6e7f0286ab55</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v0.3 Windows executable</td>
<td><a title="Download the v0.3 Windows executable" href="exiv2-0.3-win.zip" >exiv2-0.3-win.zip</a></td>
<td>188242</td>
<td>10-May-2004</td>
<td>be15cbf86e3a3e91a44f1749f6eb8f1d</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
//<![CDATA[
var t1 = new SortableTable(
document.getElementById("report-1"),
["String", "String", "Number", "String", "String"]
);
t1.onsort = function () {
var rows = t1.tBody.rows;
var l = rows.length;
for (var i = 0; i < l; i++) {
removeClassName(rows[i], i % 2 ? "OddRow" : "EvenRow");
addClassName(rows[i], i % 2 ? "EvenRow" : "OddRow");
}
};
//]]>
</script>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,20 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Exiv2 changelog</h2>
<div class="fragment"><pre>
__ChangeLog__
</pre></div>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,159 @@
__doctype__
<html>
__header2__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Download</h2>
<p>There are two packages available for download here: the original source
package and one with just a Windows executable.</p>
<p>From the <b>source package</b> you can build the Exiv2 library, command
line utility, the
<a title="organize directories with digital images" href="http://dev.exiv2.org/boards/3/topics/show/44">organize</a>
tool and a number of simple example and test applications. With a
few additional third party tools you can also generate the complete
API documentation. The package includes standard build files for
UNIX-like systems (including GNU/Linux, Mac OS X and MinGW) as well
as Visual Studio project files for Visual C++ .NET 2003 (MSVC 7.1)
and later. After downloading and unpacking the distribution, please
see the <em>README</em> file in the top directory for build and
installation notes and further information.
<p>The <b>Windows package</b> only contains the command line utility
<code>exiv2.exe</code>, Expat DLL, Exiv2 manpage and two sample
command files. To get started, run the executable with the -h
parameter from a cmd shell:
<code><a title="Exiv2 usage" href="sample.html#usage">exiv2 -h</a></code>.
For details, read the <a href="manpage.html" title="Exiv2 man page">man page</a>.
The Windows executable was compiled with the
<a title="MinGW homepage" href="http://www.mingw.org">MinGW</a> cross compiler
on an Intel 32 bit machine running
<a title="Debian homepage" href="http://www.debian.org">Debian</a>.
</p>
<p>As an alternative to the packages here, many Linux distributions,
BSD-based systems and Open Source package collections for Darwin and
Mac OS X have their own Exiv2 packages that can be installed via the
package management system of the distribution.</p>
<table class="ReportTable" id="report-2" cellspacing="0">
<colgroup>
<col>
<col>
<col align="center">
<col align="center">
<col>
</colgroup>
<thead>
<tr>
<th><b>Package</b></th>
<th><b>Filename</b></th>
<th><b>Size (Bytes)</b></th>
<th><b>Date</b></th>
<th><b>MD5</b></th>
</tr>
</thead>
<tbody>
<tr class="OddRow">
<td>Exiv2 v__version__ Source</td>
<td><a title="Download the v__version__ source package" href="exiv2-__version__.tar.gz" >exiv2-__version__.tar.gz</a></td>
<td>__size_src_pkg__</td>
<td>__rel_date_src_pkg__</td>
<td>__md5sum_src_pkg__</td>
</tr>
<tr class="EvenRow">
<td>Exiv2 v__version__ Windows executable</td>
<td><a title="Download the v__version__ Windows executable" href="exiv2-__version__-win.zip" >exiv2-__version__-win.zip</a></td>
<td>__size_win_pkg__</td>
<td>__rel_date_win_pkg__</td>
<td>__md5sum_win_pkg__</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
//<![CDATA[
var t1 = new SortableTable(
document.getElementById("report-2"),
["String", "String", "Number", "String", "String"]
);
t1.onsort = function () {
var rows = t1.tBody.rows;
var l = rows.length;
for (var i = 0; i < l; i++) {
removeClassName(rows[i], i % 2 ? "OddRow" : "EvenRow");
addClassName(rows[i], i % 2 ? "EvenRow" : "OddRow");
}
};
//]]>
</script>
<p><a title="Old packages" href="archive.html">Older releases</a> are
also still available.
See the <a title="Changelog" href="changelog.html">ChangeLog</a>
for a detailed list of changes between releases.</p>
<p>Exiv2 is developed on GNU/Linux with recent versions of
<a title="The GNU Compiler Collection" href="http://gcc.gnu.org/">GCC</a>.
Written in C++, it uses the standard C++ library, a few POSIX
and C functions and is fairly portable. Dependencies are on
<a title="zlib homepage" href="http://www.zlib.net">zlib</a> for PNG
support,
<a title="gettext homepage" href="http://www.gnu.org/software/gettext/">gettext</a>
for NLS,
<a title="libiconv homepage" href="http://www.gnu.org/software/libiconv/">libiconv</a>
for characterset conversions and
<a title="Expat homepage" href="http://expat.sourceforge.net/">Expat</a> for XMP support.
(Note that modern Linux distributions usually have gettext and iconv in libc
and these features can be disabled individually.)</p>
<h2><a name="devel">Repository</a></h2>
<p>Exiv2 is maintained in a Subversion repository. You can
<a href="http://dev.exiv2.org/repositories/show/exiv2" title="Exiv2 online source code repository" >browse the source code online</a>
or get a copy of the latest development code from the repository.
Once you have the source code, see the <em>README</em> file in the top
directory for build and installation notes.
</p>
<p>To check-out the current source code from the repository, you need a
<a title="Get Subversion!"
href="http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients">Subversion client</a>.
If you use a command line client, change to the directory where you want to keep
the source code and type:</p>
<div class="fragment"><pre>
<span class="stringliteral">$ svn checkout svn://dev.exiv2.org/svn/trunk</span>
</pre></div>
<p>Not included in the source distribution are test data and several
test drivers. To download these directly from the repository (about
27 MB), change to your local exiv2-__version__/ directory and use the
following command:</p>
<div class="fragment"><pre>
<span class="stringliteral">$ svn export svn://dev.exiv2.org/svn/tags/__version__/test</span>
</pre></div>
<h2><a name="license">License</a></h2>
<p>Exiv2 is <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>;
you can redistribute it and/or modify it under the terms of the
<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public
License</a> as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.</p>
<p>Alternatively, Exiv2 is also available with a commercial license, which allows it to be
used in closed-source projects. Contact me for more information.</p>
<p>Exiv2 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.</p>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,5 @@
__footer__
</div>
__tracker__
</body>
</html>

@ -0,0 +1,7 @@
__doctype__
<html>
__header3__
<body>
__sidebar5__
<div id="content">

@ -0,0 +1,24 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Example 1: exifprint.cpp</h2>
<p>Here is a very simple program to read and print the Exif metadata
of an image. Go to <a title="Sample usage of high-level metadata operations"
href="example2.html#exifprint">Example2</a> to see how the
output looks like.</p>
__example1__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,45 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Example 2: addmoddel.cpp</h2>
<p>Sample usage of high-level Exiv2 library calls to add, modify and delete Exif metadata.</p>
__example2__
<p>Here is the image with the Exif metadata from this example</p>
<img style="border:1px solid #CCCCCC;" src="include/img_2158.jpg" height="386"
width="360" title="img_2158.jpg (28036 Bytes)"
alt="Image containing the Exif metadata from example 2">
<p>Using the print function from
<a title="Reading and printing the Exif metadata of an image"
href="example1.html">Example1</a> shows the
following Exif tags in the image. Note the tag
<em>Exif.Image.ExifTag</em>: It is required by the Exif standard because
the metadata contains an <em>Exif.Photo.*</em> tag and is automatically
added by Exiv2 to ensure that the Exif structure is valid.</p>
<a name="exifprint"></a>
<div class="fragment"><pre>
<span class="stringliteral">$ exifprint img_2158.jpg</span>
Exif.Image.Model 0x0110 Ascii 7 Test 1
Exif.Image.SamplesPerPixel 0x0115 Short 1 162
Exif.Image.XResolution 0x011a SLong 1 -2
Exif.Image.YResolution 0x011b SRational 1 -2/3
Exif.Image.ExifTag 0x8769 Long 1 89
Exif.Photo.DateTimeOriginal 0x9003 Ascii 20 2000:12:31 23:59:59
</pre></div>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,38 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Example 3: iptcprint.cpp</h2>
<p>This is a very simple program to read and print the IPTC metadata
of an image.</p>
__example3__
<a name="smiley1"></a>
<p><img style="border:1px solid #CCCCCC;" src="include/smiley1.jpg" height="140" width="167" title="smiley1.jpg (2909 Bytes)" alt="Sample image with the IPTC data shown below"></p>
<div class="fragment"><pre>
<span class="stringliteral">$ iptcprint smiley1.jpg</span>
Iptc.Application2.Headline 0x0069 String 17 The headline I am
Iptc.Application2.Keywords 0x0019 String 19 Yet another keyword
Iptc.Application2.DateCreated 0x0037 Date 8 2004-08-03
Iptc.Application2.Urgency 0x000a String 5 very!
Iptc.Envelope.ModelVersion 0x0000 Short 1 42
Iptc.Envelope.TimeSent 0x0050 Time 11 14:41:00-05:00
Iptc.Application2.RasterizedCaption 0x007d Undefined 8 230 42 34 2 90 84 23 146
Iptc.0x0009.0x0001 0x0001 String 9 Who am I?
</pre></div>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,23 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Example 4: iptceasy.cpp</h2>
<p>This shows the quickest way to access, set or modify IPTC metadata, which is similar to how std::map works. The sample
program writes the IPTC data to a file. <a title="Reading and printing the IPTC metadata of an image"
href="example3.html#smiley1">Example 3</a> has the image with this IPTC data.</p>
__example4__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,139 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Example 5: xmpsample.cpp</h2>
<p>Sample (test) usage of high level XMP classes. This example shows various aspects
of setting XMP metadata, including complex types. See also
<a href="example2.html">addmoddel.cpp</a></p>
__example5__
<p><a name="output">The resulting XMP Exiv2 metadata and XMP packet is below.</a>
The same can be achieved with a set of <a href="sample.html#xmp">commands</a>
to the exiv2 command line tool.</p>
<a name="xmpsamle"></a>
<div class="fragment"><pre>
<span class="stringliteral">$ xmpsample</span>
Xmp.dc.source XmpText 13 xmpsample.cpp
Xmp.dc.subject XmpBag 2 Palmtree, Rubbertree
Xmp.dc.title LangAlt 2 lang="de-DE" Sonnenuntergang am Strand, lang="en-US" Sunset on the beach
Xmp.dc.one XmpText 2 -1
Xmp.dc.two XmpText 6 3.1415
Xmp.dc.three XmpText 3 5/7
Xmp.dc.four XmpText 3 255
Xmp.dc.five XmpText 3 256
Xmp.dc.six XmpText 5 false
Xmp.dc.seven XmpText 5 Seven
Xmp.dc.format XmpText 10 image/jpeg
Xmp.dc.creator XmpSeq 3 1) The first creator, 2) The second creator, 3) And another one
Xmp.dc.description LangAlt 2 lang="x-default" Hello, World, lang="de-DE" Hallo, Welt
Xmp.tiff.ImageDescription LangAlt 2 lang="x-default" TIFF image description, lang="de-DE" TIFF Bildbeschreibung
Xmp.xmpDM.videoFrameSize/stDim:w XmpText 2 16
Xmp.xmpDM.videoFrameSize/stDim:h XmpText 1 9
Xmp.xmpDM.videoFrameSize/stDim:unit XmpText 4 inch
Xmp.dc.publisher XmpBag 1 James Bond
Xmp.dc.publisher[1]/?ns:role XmpText 12 secret agent
Xmp.dc.creator[2]/?ns:role XmpText 10 programmer
Xmp.xmpBJ.JobRef XmpText 0 type="Bag"
Xmp.xmpBJ.JobRef[1]/stJob:name XmpText 14 Birthday party
Xmp.xmpBJ.JobRef[1]/stJob:role XmpText 12 Photographer
Xmp.xmpBJ.JobRef[2]/stJob:name XmpText 16 Wedding ceremony
Xmp.xmpBJ.JobRef[2]/stJob:role XmpText 8 Best man
&lt;?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?&gt;
&lt;x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.1.1-Exiv2"&gt;
&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
&lt;rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:ns="myNamespace/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:xapBJ="http://ns.adobe.com/xap/1.0/bj/"
xmlns:stJob="http://ns.adobe.com/xap/1.0/sType/Job#"
dc:source="xmpsample.cpp"
dc:one="-1"
dc:two="3.1415"
dc:three="5/7"
dc:four="255"
dc:five="256"
dc:six="false"
dc:seven="Seven"
dc:format="image/jpeg"&gt;
&lt;dc:subject&gt;
&lt;rdf:Bag&gt;
&lt;rdf:li&gt;Palmtree&lt;/rdf:li&gt;
&lt;rdf:li&gt;Rubbertree&lt;/rdf:li&gt;
&lt;/rdf:Bag&gt;
&lt;/dc:subject&gt;
&lt;dc:title&gt;
&lt;rdf:Alt&gt;
&lt;rdf:li xml:lang="de-DE"&gt;Sonnenuntergang am Strand&lt;/rdf:li&gt;
&lt;rdf:li xml:lang="en-US"&gt;Sunset on the beach&lt;/rdf:li&gt;
&lt;/rdf:Alt&gt;
&lt;/dc:title&gt;
&lt;dc:creator&gt;
&lt;rdf:Seq&gt;
&lt;rdf:li&gt;1) The first creator&lt;/rdf:li&gt;
&lt;rdf:li rdf:parseType="Resource"&gt;
&lt;rdf:value&gt;2) The second creator&lt;/rdf:value&gt;
&lt;ns:role&gt;programmer&lt;/ns:role&gt;
&lt;/rdf:li&gt;
&lt;rdf:li&gt;3) And another one&lt;/rdf:li&gt;
&lt;/rdf:Seq&gt;
&lt;/dc:creator&gt;
&lt;dc:description&gt;
&lt;rdf:Alt&gt;
&lt;rdf:li xml:lang="x-default"&gt;Hello, World&lt;/rdf:li&gt;
&lt;rdf:li xml:lang="de-DE"&gt;Hallo, Welt&lt;/rdf:li&gt;
&lt;/rdf:Alt&gt;
&lt;/dc:description&gt;
&lt;dc:publisher&gt;
&lt;rdf:Bag&gt;
&lt;rdf:li rdf:parseType="Resource"&gt;
&lt;rdf:value&gt;James Bond&lt;/rdf:value&gt;
&lt;ns:role&gt;secret agent&lt;/ns:role&gt;
&lt;/rdf:li&gt;
&lt;/rdf:Bag&gt;
&lt;/dc:publisher&gt;
&lt;tiff:ImageDescription&gt;
&lt;rdf:Alt&gt;
&lt;rdf:li xml:lang="x-default"&gt;TIFF image description&lt;/rdf:li&gt;
&lt;rdf:li xml:lang="de-DE"&gt;TIFF Bildbeschreibung&lt;/rdf:li&gt;
&lt;/rdf:Alt&gt;
&lt;/tiff:ImageDescription&gt;
&lt;xmpDM:videoFrameSize
stDim:w="16"
stDim:h="9"
stDim:unit="inch"/&gt;
&lt;xapBJ:JobRef&gt;
&lt;rdf:Bag&gt;
&lt;rdf:li
stJob:name="Birthday party"
stJob:role="Photographer"/&gt;
&lt;rdf:li
stJob:name="Wedding ceremony"
stJob:role="Best man"/&gt;
&lt;/rdf:Bag&gt;
&lt;/xapBJ:JobRef&gt;
&lt;/rdf:Description&gt;
&lt;/rdf:RDF&gt;
&lt;/x:xmpmeta&gt;
&lt;?xpacket end="w"?&gt;
</pre></div>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,86 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Exiv2 Overview</h2>
<p>Exiv2 is a <a href="#lib">C++ library</a> and a <a href="#util">command line utility</a>
to manage image <a href="http://en.wikipedia.org/wiki/Metadata">metadata</a>.
It provides fast and easy read and write access to the
<a href="http://en.wikipedia.org/wiki/Exif">Exif</a>,
<a href="http://en.wikipedia.org/wiki/IPTC">IPTC</a> and
<a href="http://en.wikipedia.org/wiki/Extensible_Metadata_Platform">XMP</a> metadata
of images in <a href="http://dev.exiv2.org/wiki/exiv2/Supported_image_formats">various formats</a>.
Exiv2 is available as <a href="download.html#license">free software</a> and with a
<a href="download.html#license">commercial license</a>, and is used in many projects</a>.</p>
<p><a name="lib">The Exiv2 library provides</a></p>
<ul>
<li>
<table cellspacing="0" align="right" border="0" cellpadding="0">
<tr>
<td>
<div id="ohloh_factoids">
<script type="text/javascript" src="http://www.ohloh.net/p/13985/widgets/project_factoids.js"></script>
</div>
</td>
</tr>
</table>
fast read and write access to the Exif, IPTC, and XMP metadata
of an image
</li>
<li>an easy to use and <a href="doc/index.html" title="Exiv2 API documentation">extensively documented</a> API</li>
<li>conversions of Exif and IPTC metadata to XMP and vice versa</li>
<li>a smart IPTC implementation that does not affect data that programs like Photoshop store
in the same image segment</li>
<li>Exif <a href="makernote.html" title="Exif Makernote Formats and Specifications">Makernote</a> support:
<ul>
<li>Makernote tags can be read and written just like any other metadata</li>
<li>a sophisticated write algorithm avoids corrupting the Makernote</li>
</ul>
</li>
<li>a simple interface to extract previews embedded in RAW images and Exif thumbnails</li>
<li>set and delete methods for Exif thumbnails</li>
</ul>
<p>Examples: <a title="Reading and printing the Exif metadata of an image" href="example1.html">read Exif</a>;
<a title="Sample usage of high-level Exif metadata operations" href="example2.html">add, modify, delete Exif</a>;
<a title="Reading and printing the IPTC metadata of an image" href="example3.html">read IPTC</a>;
<a title="The quickest way to access, set or modify IPTC metadata" href="example4.html">set IPTC</a>;
<a title="Sample (test) usage of high level XMP classes" href="example5.html">set XMP</a>
</p>
<p><a name="util">Exiv2 is also a command line utility to</a></p>
<ul>
<li>print Exif, IPTC and XMP image metadata in different formats: Exif summary info, interpreted values,
or the plain data for each tag (a <a title="Sample Exiv2 utility output" href="sample.html">sample</a> is here)</li>
<li><a title="Modify" href="sample.html#modify">set, add and delete</a> Exif, IPTC and XMP image metadata
from command line modify commands or command scripts</li>
<li>adjust the Exif timestamp (that's how it all started...)</li>
<li>rename Exif image files according to the Exif timestamp</li>
<li>extract, insert and delete Exif, IPTC and XMP metadata and JPEG comments</li>
<li>extract previews from RAW images and thumbnails from the Exif metadata</li>
<li>insert and delete the thumbnail image embedded in the Exif metadata</li>
<li>print, set and delete the JPEG comment of JPEG images</li>
<li>fix the Exif ISO setting of picture taken with Canon and Nikon cameras</li>
</ul>
<p>Future plans include</p>
<ul>
<li>a unified metadata container</li>
<li>support for additional image formats</li>
<li>more Makernotes</li>
</ul>
<p>The <a href="http://dev.exiv2.org/projects/roadmap/exiv2">roadmap</a> has details for the upcoming version.</p>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,24 @@
__doctype__
<html>
__header2__
<body>
__sidebar3__
<div id="content">
__maintitle__
<h2>IPTC datasets defined in Exiv2</h2>
<p>Datasets are defined according to the specification of the IPTC
<a href="http://www.iptc.org/IIM/">Information Interchange Model (IIM)</a>.</p>
<p>Click on a column header to sort the table.</p>
__Iptc__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,86 @@
__doctype__
<html>
__header2__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Makernote formats and specifications</h2>
<p>
The Makernote is tag 0x927c in the Exif IFD (Exif.Photo.MakerNote). According to the
<a title="The Exif 2.2 standard (PDF)" href="http://www.exif.org/Exif2-2.PDF">
Exif 2.2 standard</a>, the makernote is <i>"a tag for manufacturers of
Exif writers to record any desired information. The contents are up to
the manufacturer, but this tag should not be used for any other than
its intended purpose."</i></p>
<p>Most vendors do not publish their makernote specifications. Most of the
<a href="#R0">specifications available on the Internet</a>
were reverse-engineered. Judging from the size of many makernote
fields, manufacturers store a lot of information there and from the
available specifications, some of this is certainly quite
interesting. For example, makernotes may contain information about the
lens used, contrast, saturation and sharpness settings, image quality
settings, etc. For some more advanced camera settings, the Exif
standard doesn't define a standard tag, so camera vendors have to
resort to using the makernote. Unfortunately, in some cases, camera
vendors store important information only in proprietary makernote
fields, instead of using available Exif standard tags. The most
infamous example for this is Nikon's ISO settings tag.</p>
<p>Most vendors write the makernote in TIFF format, i.e., in the same
format as the rest of the Exif information is encoded. This appears to
be a sensible thing at first glance. Unfortunately, in general it
means that <i>any</i> change of an Exif tag, which moves the
makernote field, will corrupt it. It is an inherent problem of the
TIFF format that a writer must know the format and all extensions
used, in order to be able to write changes correctly; unknown tags are
potentially corrupted when they are moved (rearranged). But since
makernotes are usually proprietary, Exif writers often don't know
these details. The reason to write to the Exif data could be as simple
as to add copyright information, an Exif comment, etc. Some camera
manufacturers seem to have recognized this problem and now use a
modified TIFF format with offsets relative to somewhere at the
beginning of the makernote field for the makernote IFD to address the
issue.</p>
<p>The following table summarizes the structures of the makernote
field used by some vendors. Please let me know if you have additional
information.</p>
__makernotes__
<p><a href="http://www.exif.org/">Exif.org</a> has another table with similar
info and sample pictures: <a href="http://www.exif.org/samples.html">Digital
Camera Sample Images</a>. According to this source, (at least some) Ricoh and
Kodak cameras do not write the makernote in IFD format.</p>
<h2><a name="R0">References</a></h2>
<p><a name="R1">[1]</a> <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html">Exif
file format</a> by TsuruZoh Tachibanaya<br>
<a name="R2">[2]</a> <a href="http://www.burren.cx/david/canon.html">EXIF Makernote
of Canon</a> by David Burren<br>
<a name="R3">[3]</a> <a href="http://www.tawbaware.com/990exif.htm">Makernote
EXIF Tag of the Nikon 990</a> by Max Lyons<br>
<a name="R4">[4]</a> <a href="http://www.dicasoft.de/casiomn.htm">&quot;Makernote&quot;
Exif tag of Casio</a> by Eckhard Henkel<br>
<a name="R5">[5]</a> <a href="http://www.dalibor.cz/minolta/makernote.htm">Minolta
MakerNote</a> by Dalibor Jelinek<br>
<a name="R6">[6]</a> <a href="http://www.exif.org/makernotes/SanyoMakerNote.html">Sanyo
MakerNote</a> by John Hawkins<br>
<a name="R7">[7]</a> <a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">
SIGMA and FOVEON EXIF MakerNote Documentation</a> by Foveon<br>
<a name="R8">[8]</a> <a href="http://www.compton.nu/panasonic.html">Panasonic
MakerNote Information</a> by Tom Hughes<br>
<a name="R9">[9]</a> <a href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/makernotes.html">
Various Makernote specifications</a> from the <a href="http://www.ozhiker.com/electronics/pjmt/index.html">
PHP JPEG Metadata Toolkit</a> by Evan Hunter<br>
<a name="R10">[10]</a> <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">ExifTool</a>, the most complete and up-to-date tool for reading and writing meta information in image files, by Phil Harvey</p>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,20 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Exiv2 Command line utility man page</h2>
<a href="exiv2-manpage.pdf" title="Exiv2 man page (PDF)">PDF version</a>
__manpage__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,65 @@
__doctype__
<html>
__header2__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Metadata reference tables</h2>
<h3>Exif tags</h3>
<ul>
<li><a href="tags.html">Standard Exif tags</a></li>
<li><a href="tags-canon.html">Canon MakerNote tags</a></li>
<li><a href="tags-fujifilm.html">Fujifilm MakerNote tags</a></li>
<li><a href="tags-minolta.html">Minolta MakerNote tags</a></li>
<li><a href="tags-nikon.html">Nikon MakerNote tags</a></li>
<li><a href="tags-olympus.html">Olympus MakerNote tags</a></li>
<li><a href="tags-panasonic.html">Panasonic MakerNote tags</a></li>
<li><a href="tags-pentax.html">Pentax MakerNote tags</a></li>
<li><a href="tags-samsung.html">Samsung MakerNote tags</a></li>
<li><a href="tags-sigma.html">Sigma/Foveon MakerNote tags</a></li>
<li><a href="tags-sony.html">Sony MakerNote tags</a></li>
</ul>
<h3>IPTC datasets</h3>
<ul>
<li><a href="iptc.html">IPTC datasets</a></li>
</ul>
<h3>XMP properties</h3>
<ul>
<li><a href="tags-xmp-dc.html">Dublin Core schema (dc)</a></li>
<li><a href="tags-xmp-xmp.html">XMP Basic schema (xmp)</a></li>
<li><a href="tags-xmp-xmpRights.html">XMP Rights Management schema (xmpRights)</a></li>
<li><a href="tags-xmp-xmpMM.html">XMP Media Management schema (xmpMM)</a></li>
<li><a href="tags-xmp-xmpBJ.html">XMP Basic Job Ticket schema (xmpBJ)</a></li>
<li><a href="tags-xmp-xmpTPg.html">XMP Paged-Text schema (xmpTPg)</a></li>
<li><a href="tags-xmp-xmpDM.html">XMP Dynamic Media schema (xmpDM)</a></li>
<li><a href="tags-xmp-pdf.html">Adobe PDF schema (pdf)</a></li>
<li><a href="tags-xmp-photoshop.html">Photoshop schema (photoshop)</a></li>
<li><a href="tags-xmp-crs.html">Camera Raw schema (crs)</a></li>
<li><a href="tags-xmp-tiff.html">Exif schema for TIFF Properties (tiff)</a></li>
<li><a href="tags-xmp-exif.html">Exif schema for Exif-specific Properties (exif)</a></li>
<li><a href="tags-xmp-aux.html">Exif schema for Additional Exif Properties (aux)</a></li>
<li><a href="tags-xmp-iptc.html">IPTC Core schema (Iptc4xmpCore)</a></li>
<li><a href="tags-xmp-iptcExt.html">IPTC Extension schema (Iptc4xmpExt)</a></li>
<li><a href="tags-xmp-plus.html">PLUS License Data Format schema (plus)</a></li>
<li><a href="tags-xmp-digiKam.html">digiKam Photo Management schema (digiKam)</a></li>
<li><a href="tags-xmp-kipi.html">KDE Image Program Interface schema (kipi)</a></li>
<li><a href="tags-xmp-MicrosoftPhoto.html">Microsoft Photo schema (MicrosoftPhoto)</a></li>
<li><a href="tags-xmp-mediapro.html">iView Media Pro schema (mediapro)</a></li>
<li><a href="tags-xmp-expressionmedia.html">Microsoft Expression Media schema (expressionmedia)</a></li>
<li><a href="tags-xmp-MP.html">Microsoft Photo 1.2 schema (MP)</a></li>
<li><a href="tags-xmp-MPRI.html">Microsoft Photo RegionInfo schema (MPRI)</a></li>
<li><a href="tags-xmp-MPReg.html">Microsoft Photo Region schema (MPReg)</a></li>
<li><a href="tags-xmp-mwg-rs.html">Metadata Working Group Regions schema (mwg-rs)</a></li>
</ul>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,628 @@
<?xml version = '1.0'?>
<news>
<newsitem>
<date>23-Apr-2012</date>
<title>Exiv2 0.23 released</title>
<abstract>Write support for Canon CR2 raw images, bugfixes.
</abstract>
<desc>Exiv2 can now finally write metadata to Canon CR2 images. Besides, this release
adds support for Pentax makernotes in Pentax native DNG images, updates various lens lists
and contains the usual new minor features and bugfixes, which are all detailed in
the <a title="ChangeLog" href="changelog.html">ChangeLog</a>.
</desc>
</newsitem>
<newsitem>
<date>18-Sep-2011</date>
<title>Exiv2 0.22 released</title>
<abstract>Postscript (EPS) support, MSVC 64 bit project.
</abstract>
<desc>This release adds support to access previews and read and write XMP
metadata in Postscript images. It also introduces a new MSVC project for 64 bit
builds as well as many smaller features and bugfixes, all of which are listed in
the <a title="ChangeLog" href="changelog.html">ChangeLog</a> as usual.
</desc>
</newsitem>
<newsitem>
<date>14-Feb-2011</date>
<title>Exiv2 0.21.1 released</title>
<abstract>Bugfixes.
</abstract>
<desc>This release fixes several bugs that were present in 0.21 and is binary
compatible with the previous version. As usual, the
<a title="ChangeLog" href="changelog.html">ChangeLog</a> lists all
changes in detail.
</desc>
</newsitem>
<newsitem>
<date>01-Dec-2010</date>
<title>Exiv2 0.21 released</title>
<abstract>Samsung SRW and Makernote support, API changes.
</abstract>
<desc>This release adds read and write support for Samsung SRW
images and <a title="Samsung makernote tags" href="tags-samsung.html">Samsung makernotes</a>.
The exiv2 library now accepts a custom error handler and has a
setting to control which messages are generated. The exiv2 command
line tool has a new 'quiet' option which uses the new functionality
to suppress all library warnings.
Some important API changes will allow many future image format
and makernote enhancements to be done in a binary compatible
fashion. The new exiv2.hpp umbrella header file further shields
applications from library changes.
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> lists these and
various smaller enhancements, bug fixes and tag updates in detail.
</desc>
</newsitem>
<newsitem>
<date>30-May-2010</date>
<title>Exiv2 0.20 released</title>
<abstract>Makernote updates, ORF write support.
</abstract>
<desc>This release includes
<a title="Sony makernote tags" href="tags-sony.html">Sony</a>,
<a title="Nikon makernote tags" href="tags-nikon.html">Nikon</a> and
<a title="Pentax makernote tags" href="tags-pentax.html">Pentax</a>
makernote updates and a significant performance improvement for Nikon
makernotes. Writing to Minolta raw images (ORF) is now supported.
Several TIFF tags and the XMP
<a href="tags-xmp-kipi.html" title="KDE Image Program Interface schema">KDE Image Program Interface (kipi) schema</a>,
<a href="tags-xmp-mediapro.html" title="iView Media Pro schema">iView Media Pro schema</a> and
<a href="tags-xmp-expressionmedia.html" title="Microsoft Expression Media schema">Microsoft Expression Media schema</a>
have been added. See the
<a title="ChangeLog" href="changelog.html">ChangeLog</a> for a complete list of
all enhancements and bugfixes in this release.
</desc>
</newsitem>
<newsitem>
<date>30-Dec-2009</date>
<title>Exiv2 0.19 released</title>
<abstract>TIFF performance improvements and Nikon updates.
</abstract>
<desc>This release has a dramatically reduced memory footprint when writing
to TIFF and TIFF-based images as the images are no longer completely
loaded into memory. In addition it improves performance of read
operations for such files by about a factor six on Windows. It also
provides extended Nikon makernote support. Exiv2 is now able to read
and write many additional
<a title="Nikon makernote tags" href="tags-nikon.html">Nikon makernote tags</a>,
including encrypted tags. The XMP toolkit used by Exiv2 has been upgraded to
the latest available version,
<a title="Iptc4xmpExt schema" href="tags-xmp-iptcExt.html">iptc4xmpExt</a> and
<a title="PLUS schema" href="tags-xmp-plus.html">plus</a> XMP schemas have been
added and several XMP conversion issues fixed.
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> lists all
these enhancements and various other features and bugs that have been
addressed for this release.
</desc>
</newsitem>
<newsitem>
<date>24-Jun-2009</date>
<title>Exiv2 0.18.2 released</title>
<abstract>Bugfix release.
</abstract>
<desc>This release fixes several important issues found with PNG
write-support, writing to certain NEF images and writing comments to
JPG images, among others. It also contains minor Nikon and Minolta
lens updates and updates Polish translations.
The <a title="ChangeLog" href="changelog.html">ChangeLog</a> has
the complete list of changes, as usual.
</desc>
</newsitem>
<newsitem>
<date>06-Apr-2009</date>
<title>Exiv2 0.18.1 released</title>
<abstract>Writes to PSD and reads from RW2 images.
</abstract>
<desc>This release adds write-support for Adobe Photoshop PSD
images, read-support for Panasonic RW2 images, Panasonic and Nikon
makernote updates, and a number of improvements under the hood and
bug fixes, detailed in the <a title="ChangeLog" href="changelog.html">ChangeLog</a>.
It also includes a new utility,
<a title="organize directories with digital images" href="http://dev.exiv2.org/boards/3/topics/show/44">organize</a>,
contributed by Brad Schick.
</desc>
</newsitem>
<newsitem>
<date>08-Jan-2009</date>
<title>Community website</title>
<abstract>dev.exiv2.org hosts all project resources.
</abstract>
<desc>Brad has migrated the Mantis issue tracker and the commit
info list to a
<a href="http://www.redmine.org" title="Redmine - a flexible project management web application">Redmine</a>
installation. This also includes a new forum, which replaces the Exiv2
Yahoo! group, and a new Exiv2 Wiki, all integrated, with a common
look-and-feel and a single sign-on. From the main website, these
project resources are accessible through the
<a href="http://dev.exiv2.org/wiki/exiv2" title="Exiv2 project resources and help centre">Project</a>
link in the sidebar.<br />
Thanks to Brad Schick for this latest innovation as well as his
reliable sysadmin services and sponsorship since the early days of
the project!
</desc>
</newsitem>
<newsitem>
<date>18-Dec-2008</date>
<title>Exiv2 0.18 released</title>
<abstract>It's official: Exiv2 writes to TIFF images.
</abstract>
<desc>Here is the final 0.18 release with write-support for TIFF,
DNG, NEF, PEF, PNG and JP2 images, makernote updates and access to
image previews. On Windows, Exiv2 can now be built as a DLL.<br />
In addition to the changes in the 0.18 pre-releases, the Exiv2
command line utility has new options to show all (Exif, IPTC and
XMP) metadata and to list and extract preview images, while the
library enhancements are mostly bug fixes and minor features. See
the <a title="ChangeLog" href="changelog.html">ChangeLog</a> for
details.
</desc>
</newsitem>
<newsitem>
<date>04-Nov-2008</date>
<title>Exiv2 0.18-pre2</title>
<abstract>Windows DLL, image previews.
</abstract>
<desc>With this pre-release it is now possible to build an Exiv2 Windows
DLL.<br />
A new API was added to
<a title="" href="http://uk.groups.yahoo.com/group/exiv2/message/1404">access image previews</a>
of any image. In addition to Exif thumbnails this allows retrieving
various other previews from RAW images and Exif MakerNotes through
a common interface.<br />
Another backward-compatible API change allows
<a title="" href="http://uk.groups.yahoo.com/group/exiv2/message/1408">advanced Exif pretty-printing functions</a>
to refer to all Exif tags.<br />
Further Exif improvements and fixes are detailed in the
<a title="ChangeLog" href="changelog.html">ChangeLog</a>.<br />
Again, please use this pre-release to test with backups of your
images and to adapt applications to the modified interface, and raise
issues in the <a title="Exiv2 support forum" href="support.html">forum</a>.
Your feedback is important to finalizing release 0.18.
</desc>
</newsitem>
<newsitem>
<date>11-Sep-2008</date>
<title>Exiv2 0.18-pre1</title>
<abstract>Write-support for TIFF, PNG and JP2 images.
</abstract>
<desc>This pre-release adds write-support for TIFF, DNG, NEF, PEF,
PNG and JP2 images and provides the basis for write-support for
other TIFF-like RAW formats.<br />
The library's <a title="Exiv2 API documentation" href="doc/index.html">API</a>
was streamlined and internal symbols removed from the ABI. The
benefits of this change are manifold. In particular, the reduced
API is easier to work with and will ultimately be more stable.<br />
Under the hood, the TIFF parser code was consolidated: JPEG images
now also use the new TIFF parser to read and write Exif metadata
and the old obsolete code was removed.<br />
See the <a title="ChangeLog" href="changelog.html">ChangeLog</a> for a
complete list of changes and links to even more details.<br />
Please use this pre-release to test with backups of your images and
to adapt applications to the modified interface, and raise issues
in the
<a title="Exiv2 support forum" href="support.html">forum</a>.
This feedback is key to finalizing release 0.18.
</desc>
</newsitem>
<newsitem>
<date>19-Jun-2008</date>
<title>Exiv2 0.17.1 released</title>
<abstract>Important bugfixes.
</abstract>
<desc>This is a bugfix release for some important issues, some of which
were introduced with the previous release. See the
<a title="ChangeLog" href="changelog.html">ChangeLog</a> for details.
</desc>
</newsitem>
<newsitem>
<date>06-Jun-2008</date>
<title>Exiv2 0.17 released</title>
<abstract>Conversion of Exif and IPTC to/from XMP, JP2 and PSD support.
</abstract>
<desc>This release considerably extends the functionality for
dealing with XMP. It includes conversion of Exif and IPTC to/from
XMP, XMP sidecar files and XMP pretty printing functionality. It
also adds support for JPEG 2000 (JP2) and Photoshop (PSD) images,
among other
<a title="ChangeLog" href="changelog.html">improvements and fixes</a>.
</desc>
</newsitem>
<newsitem>
<date>06-Mar-2008</date>
<title>API documentation</title>
<abstract>The complete API documentation is now available online.
</abstract>
<desc>The complete Exiv2 API documentation is now available
<a title="Exiv2 API documentation" href="doc/index.html">online</a>.
Thanks to Dimitri van Heesch for
<a title="Doxygen" href="http://www.doxygen.org">doxygen</a>,
the great source code documentation generator tool!
</desc>
</newsitem>
<newsitem>
<date>10-Jan-2008</date>
<title>Exiv2 0.16 released</title>
<abstract>XMP support also for MSVC, bugfixes, enhancements.
</abstract>
<desc>Here is the final 0.16 release with XMP support. It took longer
than it should have and thus contains quite a
<a title="ChangeLog" href="changelog.html">list</a> of bug fixes and
enhancements.
</desc>
</newsitem>
<newsitem>
<date>09-Nov-2007</date>
<title>Exiv2 0.16-pre1</title>
<abstract>XMP support, Olympus ORF format and Pentax makernotes.
</abstract>
<desc>This is a pre-release of the upcoming Exiv2 0.16 with XMP
support. Adding XMP metadata to an image is now just as easy as
adding Exif or IPTC tags. In addition there is new support for Olympus ORF
images and Pentax makernotes. Please try Exiv2 0.16-pre1 and report issues
you may have with it to the
<a title="Exiv2 support forum" href="support.html">Exiv2 forum</a>.
</desc>
</newsitem>
<newsitem>
<date>24-Sep-2007</date>
<title>XMP testing</title>
<abstract>XMP support is ready for testing.
</abstract>
<desc>The XMP implementation is now in the trunk in SVN and it is
reasonably complete and ready for testing. Please try it out and let
us know your comments. See
<a title="XMP BETA announcement" href="http://uk.groups.yahoo.com/group/exiv2/message/916">this announcement</a> for more details.</desc>
</newsitem>
<newsitem>
<date>31-Aug-2007</date>
<title>XMP support</title>
<abstract>Support for XMP metadata is being developed.
</abstract>
<desc>We're working on adding XMP support to the library, which should
become the main feature of the next release.
Contributions are welcome, in particular we need input from potential
users about API preferences and XMP test data. You are invited to
join <a title="XMP discussion" href="http://uk.groups.yahoo.com/group/exiv2/message/836">this discussion</a> in the forum and
contribute your viewpoints.
</desc>
</newsitem>
<newsitem>
<date>10-Jul-2007</date>
<title>Exiv2 0.15 released</title>
<abstract>Maintenace release, support for Minolta G500 RAW files.
</abstract>
<desc>This maintenance release fixes a number of bugs, adds support for
Minolta G500 RAW files and has minor tag and some larger translation updates.
See the <a title="ChangeLog" href="changelog.html">changelog</a> for a concise
listing of patches in this release.
</desc>
</newsitem>
<newsitem>
<date>19-Mar-2007</date>
<title>Exiv2 0.14 released</title>
<abstract>Proper library versioning, small fixes and features.
</abstract>
<desc>Exiv2 now uses libtool's -version-info library versioning system, which
will allow future releases to indicate their compatibility with previous
releases. This release also fixes a few bugs and adds minor
features and tweaks to the build environment. See the
<a title="ChangeLog" href="changelog.html">changelog</a> for details.
</desc>
</newsitem>
<newsitem>
<date>03-Mar-2007</date>
<title>Exiv2 0.13 released</title>
<abstract>National Language Support, Fujifilm RAF read-support, ...
</abstract>
<desc>This release features the Native Language Support framework and
partial translations for Finnish, French, German, Polish, Russian
and Spanish. It adds read-support for Fujifilm RAF images and a number
of other features and fixes, listed in the
<a title="ChangeLog" href="changelog.html">changelog</a>.
</desc>
</newsitem>
<newsitem>
<date>06-Dec-2006</date>
<title>Internationalisation</title>
<abstract>Exiv2 with NLS is ready to be translated.
</abstract>
<desc>A framework for Native Language Support (using
<a title="GNU gettext homepage" href="http://www.gnu.org/software/gettext">GNU gettext</a>)
has been added to the Exiv2 library in the SVN repository. This will
be the main new feature of the next release.<br />
Messages from Exiv2 like metadata tag titles, content, descriptions
are ready to be translated now. If you are interested to contribute to
the project, take a look at the
<a title="Development" href="download.html#devel">Exiv2 repository</a>.
You can start a new translation using the Exiv2.pot file or update an
existing PO file. Please contact me to coordinate; Thanks in advance!
</desc>
</newsitem>
<newsitem>
<date>27-Nov-2006</date>
<title>Exiv2 0.12 released</title>
<abstract>Maintenance release with bugfixes and minor features.
</abstract>
<desc>This is a bugfix release with just a few new features thrown
in. The exiv2 tool can now use the original filename when renaming
images and the library has pretty-print functions for Exif GPS tags.
See the <a title="ChangeLog" href="changelog.html">changelog</a>
for more.
</desc>
</newsitem>
<newsitem>
<date>16-Sep-2006</date>
<title>Exiv2 0.11 released</title>
<abstract>Adds PNG and ARW support, a Canon makernote update,
performance improvements and more.
</abstract>
<desc>This release adds PNG and Sony ARW file format support, both
read-only. Canon makernote tags were updated and a few additional
Canon composite tags are now recognized. Reading TIFF and related
files is about six times faster now compared to the previous version.
This release finally works with Visual Studio C++ 2005 (MSVC 8) and
fixes various bugs.
See the <a title="ChangeLog" href="changelog.html">changelog</a>
for details.
</desc>
</newsitem>
<newsitem>
<date>21-Aug-2006</date>
<title>Duallicensing</title>
<abstract>Exiv2 is now also available with a licence for use in closed-source
projects.
</abstract>
<desc>Exiv2 is now also available with a commercial license, i.e., for a fee,
which makes it suitable for use in closed-source projects. Contact me for details.
See this <a title="License discussion" href="http://uk.groups.yahoo.com/group/exiv2/message/255">discussion</a> in the forum for more information on the implications of this change.
</desc>
</newsitem>
<newsitem>
<date>03-Jun-2006</date>
<title>Exiv2 0.10 released</title>
<abstract>Read support for TIFF, NEF, CR2, PEF, SR2, DNG and MRW images.
Minolta makernote support.
</abstract>
<desc>Exiv2 can now read TIFF images and a number of TIFF-based RAW
image formats, including Nikon NEF, Canon CR2, Pentax PEF, Sony SR2,
Adobe DNG and Minolta MRW formats. Besides displaying the Exif metadata,
you can easily copy it from TIFF or RAW files to JPEG files
(with the insert action).<br />
This release also adds
<a title="Minolta Makernote tags" href="tags-minolta.html">Minolta</a>
<a title="Makernote Formats and Specifications" href="makernote.html">makernote</a>
support among <a title="Changelog" href="changelog.html">other changes</a>.<br />
</desc>
</newsitem>
<newsitem>
<date>08-Mar-2006</date>
<title>Announcing exiv2.org</title>
<abstract>The Exiv2 project now has its own domain, www.exiv2.org
</abstract>
<desc>The new address not only looks nice, it is also hosted on an account with
sufficient bandwidth to support the steadily increasing number of downloads.<br />
If you have a bookmark or page that links to the old Exiv2 homepage, please change
it to the respective new page on
<a title="The new address of the Exiv2 project" href="http://www.exiv2.org/">www.exiv2.org/</a>.<br />
Thanks to Brad for hosting and sponsoring the site.
</desc>
</newsitem>
<newsitem>
<date>04-Feb-2006</date>
<title>Exiv2 0.9.1 released</title>
<abstract>Fixes a bug which could cause an invalid Exif user comment tag
to be written to images.
</abstract>
<desc>Exiv2 wrote an invalid Exif.Photo.UserComment tag when it was added
to an image which didn't have this tag before. This bug is fixed in this
release. It was introduced in release 0.8.<br />
Added a method to class Image to check which types of metadata are supported.<br />
See the <a title="ChangeLog" href="changelog.html">changelog</a> and this
<a title="Exiv2 bug #451" href="http://dev.exiv2.org/issues/show/451">bug report</a> for details.
</desc>
</newsitem>
<newsitem>
<date>26-Jan-2006</date>
<title>Exiv2 0.9 released</title>
<abstract>Adds Canon CRW write support and new utility features to
manipulate image file timestamps and fix Nikon ISO settings.
</abstract>
<desc>Completed Canon CRW support, tags can now also be written to Canon
CRW images. See the documentation for the list of Exif tags that can be
accessed in CRW files.<br />
Added new options to the utility to deal with image file timestamps and
to make the ISO setting of Nikon cameras accessible to applications
that don't know Nikon makernotes by copying it from the makernote
to the regular Exif ISO tag.<br />
The <a title="Changelog" href="changelog.html">changelog</a> has the
complete list.
</desc>
</newsitem>
<newsitem>
<date>19-Nov-2005</date>
<title>Exiv2 0.8 released</title>
<abstract>Canon CRW read support, bugfixes and other incremental
improvements. Added a manual page for the utility.
</abstract>
<desc>The Canon RAW support is currently read-only. Canon THM is also
supported, since that is the same as JPEG. Note that THM files contain
all the Exif stuff, CRW have only a few tags. Other improvements are
mostly bugfixes to make Exiv2 handle various (more or less) exceptional
situations more gracefully.<br />
For application developers, there is a new precompiler define to
suppress all output from the library and a small script,
exiv2-config, to help with the compilation of your applications.<br />
As always, check out the <a title="Changelog" href="changelog.html">changelog</a>
for details.
</desc>
</newsitem>
<newsitem>
<date>09-Oct-2005</date>
<title>Vizrea agreement</title>
<abstract>A license agreement allows Vizrea to use Exiv2 in their
proprietary products. In return, they will make their changes available
to the free version.
</abstract>
<desc>I've recently entered into an agreement with
<a title="Vizrea" href="http://www.vizrea.com">Vizrea</a>,
under which the company can use most of the Exiv2 library (except for
the Nikon lens table and related code) in their proprietary products
under terms which are different from those of the GPL.
In return Vizrea will assign the copyright of their changes to me and
contribute them back to the free version.<br />
Therefore, if this deal is successful, the free version of Exiv2
will benefit from the code contributed under the agreement. Since
Brad, who wrote major portions of the existing library is with
Vizrea, this will hopefully allow him to continue to spend time
adding good stuff to Exiv2.
</desc>
</newsitem>
<newsitem>
<date>15-Jun-2005</date>
<title>Exiv2 0.7 released</title>
<abstract>Design changes in the library, new Olympus, Panasonic and basic
Sony makernotes and updated Canon and Nikon makernotes.
</abstract>
<desc>The inside-out design change made class Exiv2::Image the
top-level class of the library. This is the basis for support of
other file formats (however, Exiv2 still only supports Jpeg for
now). As a result, the C++ interface changed fundamentally in the
way how metadata is accessed. Existing programs will need to be
updated (see the examples). Thanks to the new I/O abstraction layer,
it is now possible to access images in memory directly.<br />
Additional makernotes from Olympus, Panasonic and Sony cameras
are recognized and the Canon and Nikon makernotes have been updated.<br />
Exif tags now have a default type, it works like the existing Iptc
default type.<br />
See the <a title="Changelog" href="changelog.html">changelog</a> for details.
</desc>
</newsitem>
<newsitem>
<date>06-Mar-2005</date>
<title>Exiv2 0.6.2 released</title>
<abstract>New utility features, some bugfixes, and an improved build environment.
</abstract>
<desc>Utility: New -M option to specify modify commands directly on the
command line, new -l option for a directory to/from which to extract/import
files.<br />
Bugfixes: Support for non-standard IFDs (as created by e.g., GraphicConverter
for Mac), proper non-intrusive writing for the utility's modify command.<br />
Build environment: Libtool support for correct (shared) library generation
on various platforms, improved installation routine.<br />
The <a title="Changelog" href="changelog.html">changelog</a> has the details.
</desc>
</newsitem>
<newsitem>
<date>17-Jan-2005</date>
<title>Exiv2 0.6.1 released</title>
<abstract>Fixes a bug that could lose the thumbnail when Exif
tags were modified and adds metadata write support to the utility.
</abstract>
<desc>Bugfix: The Exif thumbnail is no more lost when Exif data is modified
in an "intrusive" manner, e.g., by adding new tags. This was a bug
introduced with release 0.6. <br/>
Feature: The new modify option adds metadata write support to the Exiv2
utility. <br/>As usual, the
<a title="Changelog" href="changelog.html">changelog</a> has more details.
</desc>
</newsitem>
<newsitem>
<date>09-Jan-2005</date>
<title>Support forum added</title>
<abstract>There is now a Yahoo! group for Exiv2 help and discussions.
</abstract>
<desc>There have been more queries recently which may be of interest for
other users. Going forward, please direct your questions to the new
<a title="Exiv2 support" href="support.html">forum</a>.
</desc>
</newsitem>
<newsitem>
<date>12-Dec-2004</date>
<title>Exiv2 0.6 released</title>
<abstract>More IPTC functions in the utility, library support for the
creation of all Exif metadata from scratch and more.
</abstract>
<desc>This is a maintenance release containing numerous smaller
improvements and fixes. The Exiv2 utility now also deletes,
extracts, and re-inserts IPTC data and Jpeg comments from/into Jpeg
files. The library now supports creation of all Exif metadata from
scratch, including makernote tags and thumbnails. In addition, Exif
as well as IPTC metadata with unknown tag names can be added and
manipulated just like known tags. See the <a title="Changelog"
href="changelog.html">changelog</a> for more details.
</desc>
</newsitem>
<newsitem>
<date>30-Oct-2004</date>
<title>Source online</title>
<abstract>The Exiv2 source code repository and a public bug tracking
system are now online.
</abstract>
<desc>Brad Schick, author of <a title="Robot Battle"
href="http://www.robotbattle.com/index.php">Robot Battle</a>, now
hosts the Exiv2 source code repository. He converted it from CVS to
Subversion and provides a web interface, public bug tracking system
and a nifty live list of the 50 last commits. Thanks! Check out the
<a title="Development" href="download.html#devel">development
section</a> on the download page.
</desc>
</newsitem>
<newsitem>
<date>13-Sep-2004</date>
<title>Exiv2 0.5 released</title>
<abstract>IPTC metadata read and write support, an autoconf configure
script, MSVC project files.
</abstract>
<desc>This release adds support for IPTC metadata. IPTC datasets can
now be manipulated (read and written) similar to Exif metadata.
In connection with the IPTC feature, the existing Metadatum Key and
Value concept was enhanced and the Jpeg file access code was revamped.
The exiv2 utility has a new print option to show the IPTC metadata of
a Jpeg image.
Also, this release adds a configure script and MSVC project files
(but no libtool support yet).
See the <a title="Changelog" href="changelog.html">changelog</a> for
details.
</desc>
</newsitem>
<newsitem>
<date>13-Sep-2004</date>
<title>Exif keys changed</title>
<abstract>With release 0.5 all Exif key values in existing applications
need to be updated.
</abstract>
<desc>Starting with release 0.5 the keys used to identify
<a title="Exif and MakerNote tags" href="metadata.html">Exif tags</a>
are of the form '<i>Exif</i>.groupName.tagName' to be consistent
with the new IPTC keys. Existing programs need to be updated
accordingly. Since the old keys are plain C++ strings, the
compiler cannot detect the change. However, it will tell you to use
the new classes Key and ExifKey in the critical regions of the code.
</desc>
</newsitem>
<newsitem>
<date>03-Jul-2004</date>
<title>Exiv2 0.4 released</title>
<abstract>Support for Nikon makernotes, improved handling of corrupt IFDs,
more intuitive command line parsing for the Exiv2 utility and more.
</abstract>
<desc>This release adds support for three different Nikon makernote
formats to the library. The generalised IfdMakerNote interface can
accomodate more makernote oddities and allows for programmatic
detection of the makernote format. The library now knows how to
deal with broken IFDs. The Exiv2 utility uses a more intuitive and
less rigid command line parsing logic. See the <a title="Changelog"
href="changelog.html">changelog</a>
for details.
</desc>
</newsitem>
<newsitem>
<date>03-Jul-2004</date>
<title>Nikon tags added</title>
<abstract>Tags for three different Nikon makernote formats are now supported
and available on the website.
</abstract>
<desc>Tags for three different Nikon makernote formats are now available
<a title="Nikon makernote tags" href="tags-nikon.html">here</a>.
</desc>
</newsitem>
</news>

@ -0,0 +1,189 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>Exiv2 utility sample output</h2>
<img style="border:1px solid #CCCCCC;" src="include/img_1771.jpg" height="360" width="480" title="img_1771.jpg (32764 Bytes)" alt="Sample image with the Exif data shown below">
<p>By default, the utility prints a summary of the Exif information</p>
<div class="fragment"><pre>
<span class="stringliteral">$ exiv2 img_1771.jpg</span>
__sample-p__
</pre></div>
<p>With the <code>-pt</code> option, the utility prints out all Exif information as interpreted (translated) values. Alternatively, <code>-pv</code> prints the plain Exif data values.</p>
<div class="fragment"><pre>
<span class="stringliteral">$ exiv2 -pt img_1771.jpg</span>
__sample-pt__
</pre></div>
<p>Short description of the actions and options supported by the Exiv2 utility
(see the <a href="manpage.html" title="Exiv2 man page">man page</a> for details)</p>
<div class="fragment"><a name="usage"></a><pre>
<span class="stringliteral">$ exiv2 -h</span>
__sample-h__
</pre></div>
<p><a name="modify">You can modify any Exif or IPTC metadata using modify-commands from a file (<code>-m</code> option) or directly from the command line (<code>-M</code> option). Multiple <code>-M</code> and <code>-m</code> directives can be combined. Here is a sample command file for the modify option (lines starting with <code>#</code> are comments)</a></p>
<div class="fragment"><pre>
<span class="comment"># Sample Exiv2 command file</span>
# -------------------------
#
# $ exiv2 -m cmd.txt file ...
#
# to apply the commands in cmd.txt to each file. Alternatively, commands can be
# run from the command line directly, without a command file:
#
# $ exiv2 -M"add Iptc.Application2.Credit String mee too!" file ...
#
# Note the quotes. Multiple -m and -M options are allowed and can be combined.
#
# Command file format
# -------------------
# Empty lines and lines starting with # are ignored
# Each remaining line is a command. The format for command lines is
# &lt;cmd&gt; &lt;key&gt; [[&lt;type&gt;] &lt;value&gt;]
# cmd = set|add|del
# set will set the value of an existing tag of the given key or add a tag
# add will add a tag (unless the key is a non-repeatable IPTC key)
# del will delete a tag
# key = Exiv2 Exif or IPTC key
# type =
# Byte|Ascii|Short|Long|Rational|Undefined|SShort|SLong|SRational|Comment
# for Exif keys, and
# String|Date|Time|Short|Undefined for IPTC keys
# The format for IPTC Date values is YYYY-MM-DD (year, month, day) and
# for IPTC Time values it is HH:MM:SS&plusmn;HH:MM where HH:MM:SS refers to local
# hour, minute and seconds and &plusmn;HH:MM refers to hours and minutes ahead or
# behind Universal Coordinated Time.
# A default type is used if none is explicitely given. The default type
# is determined based on the key.
# value
# The remaining text on the line is the value. It can optionally be enclosed in
# double quotes ("value")
#
add Iptc.Application2.Credit String "mee too! (1)"
add Iptc.Application2.Credit mee too! (2)
del Iptc.Application2.Headline
set Iptc.Application2.Headline Filename
add Exif.Image.WhitePoint Short 32 12 4 5 6
set Exif.Image.DateTime Ascii "Zwanzig nach fuenf"
set Exif.Image.Artist Ascii nobody
set Exif.Image.Artist "Vincent van Gogh"
set Exif.Photo.UserComment Comment charset=Ascii This is an ASCII Exif comment
</pre></div>
<p><a name="xmp">The following commands are for XMP tags</a>,
the <a href="example5.html#output">result</a>
is the same as that of Example 5.</p>
<div class="fragment"><pre>
<span class="comment"># Sample Exiv2 command file for XMP tags</span>
# --------------------------------------
# Set basic properties. Exiv2 uses the value type of the XMP specification
# for the property, if it is not specified. The default XMP value type
# for unknown properties is a simple text value.
# A simple text property.
set Xmp.dc.source xmpsample.cpp
# An array item (unordered array).
set Xmp.dc.subject "Palmtree"
# Add a 2nd array item
set Xmp.dc.subject "Rubbertree"
# A language alternative (without a default)
set Xmp.dc.title lang=en-US Sunset on the beach
set Xmp.dc.title lang=de-DE Sonnenuntergang am Strand
# Any properties can be set provided the namespace is known.
set Xmp.dc.one -1
set Xmp.dc.two 3.1415
set Xmp.dc.three 5/7
set Xmp.dc.four 255
set Xmp.dc.five 256
set Xmp.dc.six false
set Xmp.dc.seven Seven
# The value type can be specified. Exiv2 has support for a limited number
# of specific XMP types with built-in types: The basic XmpText, array
# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq
# (ordered array) and language alternatives LangAlt.
# Simple text property with explicitly specified value type
set Xmp.dc.format XmpText "image/jpeg"
# An ordered array
set Xmp.dc.creator XmpSeq "1) The first creator"
set Xmp.dc.creator "2) The second creator"
set Xmp.dc.creator "3) And another one"
# A language alternative. The default entry of a langauge alternative
# doesn't need a language qualifier.
set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt
set Xmp.dc.description LangAlt Hello, World
# According to the XMP specification, Xmp.tiff.ImageDescription is an
# alias for Xmp.dc.description. Exiv2 treats an alias just like any
# other property.
set Xmp.tiff.ImageDescription TIFF image description
set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung
# Register a namespace which Exiv2 doesn't know yet with a prefix.
reg ns myNamespace/
# There are no built-in Exiv2 value types for structures, qualifiers and
# nested types. However, these can be added by using an XmpText value and a
# path as the key.
# Add a structure
set Xmp.xmpDM.videoFrameSize/stDim:w 16
set Xmp.xmpDM.videoFrameSize/stDim:h 9
set Xmp.xmpDM.videoFrameSize/stDim:unit inch
# Add an element with a qualifier (using the namespace registered earlier)
set Xmp.dc.publisher James Bond
set Xmp.dc.publisher/?ns:role secret agent
# Add a qualifer to an array element of Xmp.dc.creator (added above)
set Xmp.dc.creator[2]/?ns:role programmer
# Add an array of structures. First set a text property with just the
# array type. (Note: this is not the same as creating an XmpBag property.)
set Xmp.xmpBJ.JobRef XmpText type=Bag
# Then set the array items. Each of them is a structure with two elements.
set Xmp.xmpBJ.JobRef[1]/stJob:name XmpText Birthday party
set Xmp.xmpBJ.JobRef[1]/stJob:role XmpText Photographer
set Xmp.xmpBJ.JobRef[2]/stJob:name Wedding ceremony
set Xmp.xmpBJ.JobRef[2]/stJob:role Best man
</pre></div>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,59 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Canon MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Canon cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R2">[2]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Canon__
<br>
<h3>Canon Camera Settings Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonCs__
<br>
<h3>Canon Shot Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonSi__
<br>
<h3>Canon Panorama Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonPa__
<br>
<h3>Canon Custom Function Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonCf__
<br>
<h3>Canon Picture Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonPi__
<br>
<h3>Canon File Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__CanonFi__
<br>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,22 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Fujifilm MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Fujifilm cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R1">[1]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Fujifilm__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,41 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Minolta MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Minolta cameras.
These Exiv2 tags are based on <a href="makernote.html#R5">[5]</a>,
<a href="makernote.html#R9">[9]</a> and <a href="makernote.html#R10">[10]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Minolta__
<br>
<h3>Minolta Camera Settings (tags from older and newer cameras)</h3>
<p>Click on a column header to sort the table.</p>
__MinoltaCsNew__
<br>
<h3>Minolta 5D Camera Settings</h3>
<p>Click on a column header to sort the table.</p>
__MinoltaCs5D__
<br>
<h3>Minolta 7D Camera Settings</h3>
<p>Click on a column header to sort the table.</p>
__MinoltaCs7D__
<br>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,198 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<p>There are three different Nikon MakerNote formats. Exiv2 will automatically detect the correct format for the Exif data from a particular Nikon camera model.</p>
<h2>Nikon (format 1) MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Nikon cameras, such as the E990 and D1. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R3">[3]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Nikon1__
<br>
<h2>Nikon (format 2) MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Nikon cameras, including the E700, E800, E900, E900S, E910, E950. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R1">[1]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Nikon2__
<br>
<h2>Nikon (format 3) MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.</p>
<p>Click on a column header to sort the table.</p>
__Nikon3__
<br>
<h3>Nikon Vibration Reduction Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonVr__
<br>
<h3>Nikon Picture Control Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonPc__
<br>
<h3>Nikon World Time Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonWt__
<br>
<h3>Nikon ISO Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonIi__
<br>
<h3>Nikon Auto Focus Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonAf__
<br>
<h3>Nikon Auto Focus 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonAf2__
<br>
<h3>Nikon AF Fine Tune Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonAFT__
<br>
<h3>Nikon File Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonFi__
<br>
<h3>Nikon Multi Exposure Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonMe__
<br>
<h3>Nikon Flash Info 1 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonFl1__
<br>
<h3>Nikon Flash Info 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonFl2__
<br>
<h3>Nikon Flash Info 3 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonFl3__
<br>
<h3>Nikon Shot Info D80 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonSiD80__
<br>
<h3>Nikon Shot Info D40 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonSiD40__
<br>
<h3>Nikon Shot Info D300a Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonSiD300a__
<br>
<h3>Nikon Shot Info D300b Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonSiD300b__
<br>
<h3>Nikon Shot Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonSi01xx__
<br>
<h3>Nikon Color Balance 1 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb1__
<br>
<h3>Nikon Color Balance 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb2__
<br>
<h3>Nikon Color Balance 2a Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb2a__
<br>
<h3>Nikon Color Balance 2b Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb2b__
<br>
<h3>Nikon Color Balance 3 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb3__
<br>
<h3>Nikon Color Balance 4 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonCb4__
<br>
<h3>Nikon Lens Data 1 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonLd1__
<br>
<h3>Nikon Lens Data 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonLd2__
<br>
<h3>Nikon Lens Data 3 Tags</h3>
<p>Click on a column header to sort the table.</p>
__NikonLd3__
<br>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,72 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Olympus MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Olympus cameras. References: <a href="makernote.html#R1">[1]</a>, <a href="makernote.html#R9">[9]</a>, and <a href="makernote.html#R10">[10]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Olympus__
<br>
<h3>Olympus Camera Settings Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusCs__
<br>
<h3>Olympus Equipment Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusEq__
<br>
<h3>Olympus Raw Development Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusRd__
<br>
<h3>Olympus Raw Development 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusRd2__
<br>
<h3>Olympus Image Processing Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusIp__
<br>
<h3>Olympus Focus Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusFi__
<br>
<h3>Olympus FE Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusFe1__
<br>
<h3>Olympus Raw Info Tags</h3>
<p>Click on a column header to sort the table.</p>
__OlympusRi__
<br>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,24 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Panasonic MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Panasonic cameras. References:
<a href="makernote.html#R8">[8]</a>, <a href="makernote.html#R9">[9]</a>, and <a href="makernote.html#R10">[10]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Panasonic__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,25 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Pentax MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Pentax cameras.
The same tags are found in Pentax native DNG makernotes with group <i>PentaxDng</i>.
Reference: <a href="makernote.html#R10">[10]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Pentax__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,22 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Samsung MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Samsung cameras.</p>
<p>Click on a column header to sort the table.</p>
__Samsung2__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,22 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Sigma/Foveon MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Sigma/Foveon cameras. These tags are defined by Exiv2 in accordance with <a href="makernote.html#R7">[7]</a>.</p>
<p>Click on a column header to sort the table.</p>
__Sigma__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,65 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Sony MakerNote Tags defined in Exiv2</h2>
<p>Tags found in the MakerNote of images taken with Sony cameras.</p>
<p>Click on a column header to sort the table.</p>
__Sony1__
<br>
<h3>Sony Minolta Tags</h3>
<p>These are the same tags as found in the Minolta MakerNote.
In Sony images the group name is <b><code>SonyMinolta</code></b>.</p>
<p>Click on a column header to sort the table.</p>
__SonyMinolta__
<br>
<h3>Sony Camera Settings Tags</h3>
<p>Click on a column header to sort the table.</p>
__Sony1Cs__
<br>
<h3>Sony Camera Settings 2 Tags</h3>
<p>Click on a column header to sort the table.</p>
__Sony1Cs2__
<br>
<h3>Sony Minolta Camera Settings Tags</h3>
<p>These are the same tags as the Minolta Camera Settings in the Minolta MakerNote.
In Sony images the group name is <b><code>Sony1MltCsOld</code></b> or <b><code>Sony1MltCsNew</code></b>.</p>
<p>Click on a column header to sort the table.</p>
__Sony1MltCsOld__
<br>
<h3>Sony Minolta Camera Settings 7D Tags</h3>
<p>These are the same tags as the Minolta 7D Camera Settings in the Minolta MakerNote.
In Sony images the group name is <b><code>Sony1MltCs7D</code></b>.</p>
<p>Click on a column header to sort the table.</p>
__Sony1MltCs7D__
<br>
<h3>Sony Minolta Camera Settings A100 Tags</h3>
<p>Click on a column header to sort the table.</p>
__Sony1MltCsA100__
<br>
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Microsoft Photo 1.2 schema</h2>
<p>The Microsoft Photo 1.2 schema provides a set of properties for image regions.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.MP.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>MP</code></b></li>
</ul>
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_MP__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Microsoft Photo RegionInfo schema</h2>
<p>The Microsoft Photo RegionInfo 1.2 schema provides a set of properties for region info.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.MPRI.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/t/RegionInfo#</code></b></li>
<li>The preferred schema namespace prefix is <b><code>MPRI</code></b></li>
</ul>
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_MPRI__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Microsoft Photo Region schema</h2>
<p>The Microsoft Photo Region 1.2 schema provides a set of properties for image regions.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.MPReg.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.2/t/Region#</code></b></li>
<li>The preferred schema namespace prefix is <b><code>MPReg</code></b></li>
</ul>
<p>Reference: <a href="http://msdn.microsoft.com/en-us/library/ee719905%28VS.85%29.aspx" title="People Tagging Overview">People Tagging Overview</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_MPReg__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Microsoft Photo Schema</h2>
<p>This schema specifies XMP properties used by Microsoft.
<ul>
<li>Exiv2 keys are <b><code>Xmp.MicrosoftPhoto.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/photo/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>MicrosoftPhoto</code></b></li>
</ul>
</p>
<p>Click on a column header to sort the table.</p>
__xmp_MicrosoftPhoto__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,28 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Exif Schema for Additional Exif Properties</h2>
<p>The following table lists additional XMP properties that describe the equipment used to produce
Exif data.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.aux.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/exif/1.0/aux/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>aux</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_aux__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Camera Raw Schema</h2>
<p>This schema specifies XMP properties associated with image files produced in camera raw mode.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.crs.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/camera-raw-settings/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>crs</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_crs__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Dublin Core Schema</h2>
<p>The Dublin Core schema provides a set of commonly used XMP properties.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.dc.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://purl.org/dc/elements/1.1/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>dc</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_dc__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>digiKam Photo Management Schema</h2>
<p>This schema specifies XMP properties used by digiKam.
<ul>
<li>Exiv2 keys are <b><code>Xmp.digiKam.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://www.digikam.org/ns/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>digiKam</code></b></li>
</ul>
</p>
<p>Click on a column header to sort the table.</p>
__xmp_digiKam__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,35 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Exif Schema for Exif-specific Properties</h2>
<p>The following table lists the XMP properties defined solely by Exif.</p>
<p>Note: A number of Exif 2.2 properties are not included in XMP. These are generally
properties that relate directly to the image stream, or that are of little use without access
to the image stream. A general XMP principle is that XMP metadata should have value
in and of itself, separate from the primary file content. The omitted properties include:
StripOffsets, RowsPerStrip, StripByteCounts, JPEGInterchangeFormat, and
JPEGInterchangeFormatLength.</p>
<p>Note: Properties beginning with "GPS" are GPS properties that are also used by DIG-35 and
are part of the JPEG-2000 standard.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.exif.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/exif/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>exif</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_exif__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,28 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Microsoft Expression Media schema</h2>
<p>This is the Microsoft badged version of the
<a href="tags-xmp-mediapro.html" title="iView Media Pro schema">iView Media Pro schema</a>.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.expressionmedia.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.microsoft.com/expressionmedia/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>expressionmedia</code></b></li>
</ul>
<p>Reference: ?</p>
<p>Click on a column header to sort the table.</p>
__xmp_expressionmedia__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,28 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>IPTC Core schema</h2>
<p>This schema specifies the IPTC Core XMP properties.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.iptc.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>Iptc4xmpCore</code></b></li>
</ul>
<p>Reference: <a href="http://www.iptc.org/std/Iptc4xmpCore/1.0/specification/Iptc4xmpCore_1.0-spec-XMPSchema_8.pdf" title="IPTC Core Schema for XMP">"IPTC Core" Schema for XMP</a></p><p>Note: Exiv2 uses <b><code>iptc</code></b> (rather than <code>Iptc4xmpCore</code>) as the group name for keys of IPTC Core schema properties.</p>
<p>Click on a column header to sort the table.</p>
__xmp_iptc__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,31 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>IPTC Extension schema</h2>
<p>This schema specifies the IPTC Extension XMP properties. The IPTC
Extension schema extends and complements the IPTC Core schema by a set
of more granular properties and further specialized rights related
properties from the PLUS metadata schema.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.iptcExt.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://iptc.org/std/Iptc4xmpExt/2008-02-29/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>Iptc4xmpExt</code></b></li>
</ul>
<p>Reference: <a href="http://www.iptc.org/std/photometadata/2008/specification/IPTC-PhotoMetadata-2008_2.pdf" title="IPTC Standard Photo Metadata 2008">IPTC Photo Metadata 2008</a> standard</p>
<p>Note: Exiv2 uses <b><code>iptcExt</code></b> (rather than <code>Iptc4xmpExt</code>) as the group name for keys of IPTC Extension schema properties.</p>
<p>Click on a column header to sort the table.</p>
__xmp_iptcExt__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>KDE Image Program Interface schema</h2>
<p>KDE Image Program Interface schema tags, used by digiKam kipi-plugins.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.kipi.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://www.digikam.org/ns/kipi/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>kipi</code></b></li>
</ul>
<p>Reference: ?</p>
<p>Click on a column header to sort the table.</p>
__xmp_kipi__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,28 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>iView Media Pro schema</h2>
<p>iView Media Pro schema tags. See also its successor, the
<a href="tags-xmp-expressionmedia.html" title="Microsoft Expression Media schema">Microsoft Expression Media schema</a>.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.mediapro.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.iview-multimedia.com/mediapro/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>mediapro</code></b></li>
</ul>
<p>Reference: ?</p>
<p>Click on a column header to sort the table.</p>
__xmp_mediapro__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Metadata Working Group Regions schema</h2>
<p>The Metadata Working Group's schema for image region metadata.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.mwg-rs.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://www.metadataworkinggroup.com/schemas/regions/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>mwg-rs</code></b></li>
</ul>
<p>Reference: <a href="http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf" title="Guidelines for Handling Image Metadata">Guidelines for Handling Image Metadata</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_mwg-rs__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Adobe PDF schema</h2>
<p>This schema specifies XMP properties used with Adobe PDF documents.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.pdf.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/pdf/1.3/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>pdf</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_pdf__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Photoshop Schema</h2>
<p>This schema specifies XMP properties used by Adobe Photoshop.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.photoshop.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/photoshop/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>photoshop</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_photoshop__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,29 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>PLUS License Data Format schema</h2>
<p>The PLUS License Data Format ("LDF") is an ordered group of fields available
for optional use in embedding and reading image license metadata in digital
files and other documents.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.plus.&lt;Property&gt;</code></b></li>
<li>The schema namespace URI is <b><code>http://ns.useplus.org/ldf/xmp/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>plus</code></b></li>
</ul>
<p>Reference: <a href="http://ns.useplus.org/go.ashx" title="PLUS Technical Specification">PLUS Technical Specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_plus__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,16 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,28 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>Exif Schema for TIFF Properties</h2>
<p>The following table lists the XMP properties for TIFF-derived data. Only those TIFF properties that
are mentioned in the EXIF 2.2 specification are included here.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.tiff.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/tiff/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>tiff</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_tiff__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Basic Schema</h2>
<p>The XMP Basic Schema contains XMP properties that provide basic descriptive information.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmp.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmp</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmp__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Basic Job Ticket Schema</h2>
<p>The following XMP schema describes very simple workflow or job information.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmpBJ.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/bj/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmpBJ</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmpBJ__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Dynamic Media Schema</h2>
<p>This schema specifies XMP properties used by the Adobe dynamic media group.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmpDM.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xmp/1.0/DynamicMedia/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmpDM</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmpDM__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,34 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Media Management Schema</h2>
<p>The XMP Media Management Schema is primarily for use by digital asset management (DAM) systems.</p>
<p>The following XMP properties are "owned" by the DAM system and should be set by applications
under their direction; they should not be used by unmanaged files: xmpMM:ManagedFrom,
xmpMM:Manager, xmpMM:ManageTo, xmpMM:ManageUI, xmpMM:ManagerVariant.</p>
<p>The following properties are owned by the DAM system for managed files, but can also be
used by applications for unmanaged files: xmpMM:DerivedFrom, xmpMM:DocumentID,
xmpMM:RenditionClass, xmpMM:RenditionParams, xmpMM:VersionID, xmpMM:Versions.</p>
<p>The xmpMM:History property is always owned by the application.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmpMM.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/mm/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmpMM</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmpMM__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,29 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Rights Management Schema</h2>
<p>This schema includes XMP properties related to rights management. These properties specify
information regarding the legal restrictions associated with a resource.<br>
Note: XMP is not a rights-enforcement mechanism.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmpRights.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/rights/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmpRights</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmpRights__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,27 @@
__doctype__
<html>
__header2__
<body>
__sidebar4__
<div id="content">
__maintitle__
<h2>XMP Paged-Text Schema</h2>
<p>The Paged-Text schema is used for XMP properties for text appearing on a page in a document.</p>
<ul>
<li>Exiv2 keys are <b><code>Xmp.xmpTPg.&lt;Property&gt;</code></b>
<li>The schema namespace URI is <b><code>http://ns.adobe.com/xap/1.0/t/pg/</code></b></li>
<li>The preferred schema namespace prefix is <b><code>xmpTPg</code></b></li>
</ul>
<p>Reference: <a href="http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf" title="XMP specification">XMP specification</a></p>
<p>Click on a column header to sort the table.</p>
__xmp_xmpTPg__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,23 @@
__doctype__
<html>
__header2__
<body>
__sidebar2__
<div id="content">
__maintitle__
<h2>Exif Tags supported by Exiv2</h2>
<p>These are the Exif tags as defined in the <a title="The Exif 2.2 standard (PDF)" href="http://www.exif.org/Exif2-2.PDF">Exif 2.2 standard</a>.</p>
<p>IFD1 tags are not listed seperately. All IFD0 tags may also be present in IFD1, according to the standard. The second part of the Exiv2 key of an IFD1 tag is <i>Thumbnail</i> (instead of <i>Image</i>), the other two parts of the key are the same as for IFD0 tags.</p>
<p>Click on a column header to sort the table.</p>
__Exif__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" />
<!-- *********************************************************************** -->
<xsl:template match="news">
<div id="latest">
<h2>Latest News</h2>
<ul id="news">
<xsl:apply-templates select="newsitem[position()&lt;5]" />
<xsl:if test="newsitem[last()>4]">
<li>
<span class="newstitle"><a href="whatsnew.html#item5">More news...</a></span>
</li>
</xsl:if>
</ul>
</div>
<xsl:comment> closes latest </xsl:comment>
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template match="newsitem">
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="concat('whatsnew.html#item', position())" />
</xsl:attribute>
<span class="newstitle">
<xsl:value-of select="title" />
</span>
<br />
<span class="newsabstract">
<xsl:value-of select="abstract" />
</span>
</a>
</li>
</xsl:template>
<!-- *********************************************************************** -->
</xsl:stylesheet>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<!-- *********************************************************************** -->
<xsl:template match="news">
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>What's new in Exiv2</title>
<link>http://www.exiv2.org/</link>
<description>News from the Exiv2 project.</description>
<lastBuildDate>__lastBuildDate__</lastBuildDate>
<language>en-us</language>
<atom:link href="http://www.exiv2.org/rss.xml" rel="self" type="application/rss+xml" />
<xsl:apply-templates select="newsitem" />
</channel>
</rss>
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template match="newsitem">
<item>
<title><xsl:value-of select="title" /></title>
<link>http://exiv2.org/whatsnew.html#item<xsl:value-of select="position()" /></link>
<guid>http://exiv2.org/whatsnew.html#item<xsl:value-of select="position()" /></guid>
<pubDate><xsl:value-of select="date" /></pubDate>
<description><xsl:value-of select="abstract" /></description>
</item>
</xsl:template>
<!-- *********************************************************************** -->
</xsl:stylesheet>

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="iso-8859-1" ?> <!--*- sgml -*-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" />
<!-- *********************************************************************** -->
<xsl:template match="news">
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<colgroup>
<col width="90" />
<col />
</colgroup>
<tbody>
<xsl:apply-templates select="newsitem" />
</tbody>
</table>
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template match="newsitem[position() mod 2 = 0]">
<xsl:call-template name="data-row">
<xsl:with-param name="rowClass" select="'evencolor'" />
</xsl:call-template>
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template match="newsitem[position() mod 2 = 1]">
<xsl:call-template name="data-row">
<xsl:with-param name="rowClass" select="'oddcolor'" />
</xsl:call-template>
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template match="desc">
<xsl:copy-of select="text()|*" />
</xsl:template>
<!-- *********************************************************************** -->
<xsl:template name="data-row">
<xsl:param name="rowClass" />
<tr><xsl:attribute name="class"><xsl:value-of select="$rowClass" /></xsl:attribute>
<td valign="top"><xsl:value-of select="date" /></td>
<td>
<b>
<a><xsl:attribute name="name">item<xsl:value-of select="position()" /></xsl:attribute>
<xsl:value-of select="title" />
</a>
</b>
<br />
<xsl:apply-templates select="desc" />
</td>
</tr>
</xsl:template>
<!-- *********************************************************************** -->
</xsl:stylesheet>

@ -0,0 +1,17 @@
__doctype__
<html>
__header1__
<body>
__sidebar1__
<div id="content">
__maintitle__
<h2>What's new</h2>
__whatsnew-table__
__footer__
</div>
<!-- closes content -->
__tracker__
</body>
</html>

@ -0,0 +1 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!--*- sgml -*-->

@ -0,0 +1,51 @@
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
<span class="comment">// exifprint.cpp, $Rev: 2286 $</span>
<span class="comment">// Sample program to print the Exif metadata of an image</span>
<span class="preprocessor">#include &lt;exiv2/exiv2.hpp&gt;</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;iomanip&gt;</span>
<span class="preprocessor">#include &lt;cassert&gt;</span>
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
<span class="keyword">try</span> {
<span class="keywordflow">if</span> (argc != 2) {
std::cout &lt;&lt; <span class="stringliteral">"Usage: "</span> &lt;&lt; argv[0] &lt;&lt; <span class="stringliteral">" file\n"</span>;
<span class="keywordflow">return</span> 1;
}
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
assert(image.get() != 0);
image-&gt;readMetadata();
Exiv2::ExifData &amp;exifData = image-&gt;exifData();
<span class="keywordflow">if</span> (exifData.empty()) {
std::string error(argv[1]);
error += <span class="stringliteral">": No Exif data found in the file"</span>;
<span class="keywordflow">throw</span> Exiv2::Error(1, error);
}
Exiv2::ExifData::const_iterator end = exifData.end();
<span class="keywordflow">for</span> (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
const char* tn = i-&gt;typeName();
std::cout &lt;&lt; std::setw(44) &lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::left
&lt;&lt; i-&gt;key() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; <span class="stringliteral">"0x"</span> &lt;&lt; std::setw(4) &lt;&lt; std::setfill(<span class="charliteral">'0'</span>) &lt;&lt; std::right
&lt;&lt; std::hex &lt;&lt; i-&gt;tag() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::setw(9) &lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::left
&lt;&lt; (tn ? tn : <span class="stringliteral">"Unknown"</span>) &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::dec &lt;&lt; std::setw(3)
&lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::right
&lt;&lt; i-&gt;count() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::dec &lt;&lt; i-&gt;value()
&lt;&lt; <span class="stringliteral">"\n"</span>;
}
<span class="keywordflow">return</span> 0;
}
<span class="keywordflow">catch</span> (Exiv2::AnyError&amp; e) {
std::cout &lt;&lt; <span class="stringliteral">"Caught Exiv2 exception '"</span> &lt;&lt; e.what() &lt;&lt; <span class="stringliteral">"'\n"</span>;
<span class="keywordflow">return</span> -1;
}
</pre></div>

@ -0,0 +1,110 @@
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
<span class="comment">// addmoddel.cpp, $Rev: 2286 $</span>
<span class="comment">// Sample program showing how to add, modify and delete Exif metadata.</span>
<span class="preprocessor">#include &lt;exiv2/exiv2.hpp&gt;</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;iomanip&gt;</span>
<span class="preprocessor">#include &lt;cassert&gt;</span>
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
<span class="keyword">try</span> {
<span class="keywordflow">if</span> (argc != 2) {
std::cout &lt;&lt; <span class="stringliteral">"Usage: "</span> &lt;&lt; argv[0] &lt;&lt; <span class="stringliteral">" file\n"</span>;
<span class="keywordflow">return</span> 1;
}
std::string file(argv[1]);
<span class="comment">// Container for exif metadata. This is an example of creating</span>
<span class="comment">// exif metadata from scratch. If you want to add, modify, delete</span>
<span class="comment">// metadata that exists in an image, start with ImageFactory::open</span>
Exiv2::ExifData exifData;
<span class="comment">// *************************************************************************</span>
<span class="comment">// Add to the Exif data</span>
<span class="comment">// This is the quickest way to add (simple) Exif data. If a metadatum for</span>
<span class="comment">// a given key already exists, its value is overwritten. Otherwise a new</span>
<span class="comment">// tag is added.</span>
exifData[<span class="stringliteral">"Exif.Image.Model"</span>] = <span class="stringliteral">"Test 1"</span>; <span class="comment">// AsciiValue</span>
exifData[<span class="stringliteral">"Exif.Image.SamplesPerPixel"</span>] = uint16_t(162); <span class="comment">// UShortValue</span>
exifData[<span class="stringliteral">"Exif.Image.XResolution"</span>] = int32_t(-2); <span class="comment">// LongValue</span>
exifData[<span class="stringliteral">"Exif.Image.YResolution"</span>] = Exiv2::Rational(-2, 3); <span class="comment">// RationalValue</span>
std::cout &lt;&lt; <span class="stringliteral">"Added a few tags the quick way.\n"</span>;
<span class="comment">// Create a ASCII string value (note the use of create)</span>
Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString);
<span class="comment">// Set the value to a string</span>
v-&gt;read(<span class="stringliteral">"1999:12:31 23:59:59"</span>);
<span class="comment">// Add the value together with its key to the Exif data container</span>
Exiv2::ExifKey key(<span class="stringliteral">"Exif.Photo.DateTimeOriginal"</span>);
exifData.add(key, v.get());
std::cout &lt;&lt; <span class="stringliteral">"Added key \""</span> &lt;&lt; key &lt;&lt; <span class="stringliteral">"\", value \""</span> &lt;&lt; *v &lt;&lt; <span class="stringliteral">"\"\n"</span>;
<span class="comment">// Now create a more interesting value (without using the create method)</span>
Exiv2::URationalValue::AutoPtr rv(<span class="keyword">new</span> Exiv2::URationalValue);
<span class="comment">// Set two rational components from a string</span>
rv-&gt;read(<span class="stringliteral">"1/2 1/3"</span>);
<span class="comment">// Add more elements through the extended interface of rational value</span>
rv-&gt;value_.push_back(std::make_pair(2,3));
rv-&gt;value_.push_back(std::make_pair(3,4));
<span class="comment">// Add the key and value pair to the Exif data</span>
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
exifData.add(key, rv.get());
std::cout &lt;&lt; <span class="stringliteral">"Added key \""</span> &lt;&lt; key &lt;&lt; <span class="stringliteral">"\", value \""</span> &lt;&lt; *rv &lt;&lt; <span class="stringliteral">"\"\n"</span>;
<span class="comment">// *************************************************************************</span>
<span class="comment">// Modify Exif data</span>
<span class="comment">// Since we know that the metadatum exists (or we don't mind creating a new</span>
<span class="comment">// tag if it doesn't), we can simply do this:</span>
Exiv2::Exifdatum&amp; tag = exifData[<span class="stringliteral">"Exif.Photo.DateTimeOriginal"</span>];
std::string date = tag.toString();
date.replace(0, 4, <span class="stringliteral">"2000"</span>);
tag.setValue(date);
std::cout &lt;&lt; <span class="stringliteral">"Modified key \""</span> &lt;&lt; key
&lt;&lt; <span class="stringliteral">"\", new value \""</span> &lt;&lt; tag.value() &lt;&lt; <span class="stringliteral">"\"\n"</span>;
<span class="comment">// Alternatively, we can use findKey()</span>
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
Exiv2::ExifData::iterator pos = exifData.findKey(key);
<span class="keywordflow">if</span> (pos == exifData.end()) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Key not found"</span>);
<span class="comment">// Get a pointer to a copy of the value</span>
v = pos-&gt;getValue();
<span class="comment">// Downcast the Value pointer to its actual type</span>
Exiv2::URationalValue* prv = <span class="keyword">dynamic_cast&lt;</span>Exiv2::URationalValue*<span class="keyword">&gt;</span>(v.release());
<span class="keywordflow">if</span> (prv == 0) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Downcast failed"</span>);
rv = Exiv2::URationalValue::AutoPtr(prv);
<span class="comment">// Modify the value directly through the interface of URationalValue</span>
rv-&gt;value_[2] = std::make_pair(88,77);
<span class="comment">// Copy the modified value back to the metadatum</span>
pos-&gt;setValue(rv.get());
std::cout &lt;&lt; <span class="stringliteral">"Modified key \""</span> &lt;&lt; key
&lt;&lt; <span class="stringliteral">"\", new value \""</span> &lt;&lt; pos-&gt;value() &lt;&lt; <span class="stringliteral">"\"\n"</span>;
<span class="comment">// *************************************************************************</span>
<span class="comment">// Delete metadata from the Exif data container</span>
<span class="comment">// Delete the metadatum at iterator position pos</span>
key = Exiv2::ExifKey(<span class="stringliteral">"Exif.Image.PrimaryChromaticities"</span>);
pos = exifData.findKey(key);
<span class="keywordflow">if</span> (pos == exifData.end()) <span class="keywordflow">throw</span> Exiv2::Error(1, <span class="stringliteral">"Key not found"</span>);
exifData.erase(pos);
std::cout &lt;&lt; <span class="stringliteral">"Deleted key \""</span> &lt;&lt; key &lt;&lt; <span class="stringliteral">"\"\n"</span>;
<span class="comment">// *************************************************************************</span>
<span class="comment">// Finally, write the remaining Exif data to the image file</span>
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
assert(image.get() != 0);
image-&gt;setExifData(exifData);
image-&gt;writeMetadata();
<span class="keywordflow">return</span> 0;
}
<span class="keywordflow">catch</span> (Exiv2::AnyError&amp; e) {
std::cout &lt;&lt; <span class="stringliteral">"Caught Exiv2 exception '"</span> &lt;&lt; e &lt;&lt; <span class="stringliteral">"'\n"</span>;
<span class="keywordflow">return</span> -1;
}
</pre></div>

@ -0,0 +1,51 @@
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
<span class="comment">// iptcprint.cpp, $Rev: 2286 $</span>
<span class="comment">// Sample program to print the IPTC metadata of an image</span>
<span class="preprocessor">#include &lt;exiv2/exiv2.hpp&gt;</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;iomanip&gt;</span>
<span class="preprocessor">#include &lt;cassert&gt;</span>
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
<span class="keyword">try</span> {
<span class="keywordflow">if</span> (argc != 2) {
std::cout &lt;&lt; <span class="stringliteral">"Usage: "</span> &lt;&lt; argv[0] &lt;&lt; <span class="stringliteral">" file\n"</span>;
<span class="keywordflow">return</span> 1;
}
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]);
assert (image.get() != 0);
image-&gt;readMetadata();
Exiv2::IptcData &amp;iptcData = image-&gt;iptcData();
<span class="keywordflow">if</span> (iptcData.empty()) {
std::string error(argv[1]);
error += <span class="stringliteral">": No IPTC data found in the file"</span>;
<span class="keywordflow">throw</span> Exiv2::Error(1, error);
}
Exiv2::IptcData::iterator end = iptcData.end();
<span class="keywordflow">for</span> (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) {
std::cout &lt;&lt; std::setw(44) &lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::left
&lt;&lt; md-&gt;key() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; <span class="stringliteral">"0x"</span> &lt;&lt; std::setw(4) &lt;&lt; std::setfill(<span class="charliteral">'0'</span>) &lt;&lt; std::right
&lt;&lt; std::hex &lt;&lt; md-&gt;tag() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::setw(9) &lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::left
&lt;&lt; md-&gt;typeName() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::dec &lt;&lt; std::setw(3)
&lt;&lt; std::setfill(<span class="charliteral">' '</span>) &lt;&lt; std::right
&lt;&lt; md-&gt;count() &lt;&lt; <span class="stringliteral">" "</span>
&lt;&lt; std::dec &lt;&lt; md-&gt;value()
&lt;&lt; std::endl;
}
<span class="keywordflow">return</span> 0;
}
<span class="keywordflow">catch</span> (Exiv2::AnyError&amp; e) {
std::cout &lt;&lt; <span class="stringliteral">"Caught Exiv2 exception '"</span> &lt;&lt; e &lt;&lt; <span class="stringliteral">"'\n"</span>;
<span class="keywordflow">return</span> -1;
}
</pre></div>

@ -0,0 +1,50 @@
<div class="fragment"><pre><span class="comment">// ***************************************************************** -*- C++ -*-</span>
<span class="comment">// iptceasy.cpp, $Rev: 2286 $</span>
<span class="comment">// The quickest way to access, set or modify IPTC metadata.</span>
<span class="preprocessor">#include &lt;exiv2/exiv2.hpp&gt;</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;iomanip&gt;</span>
<span class="preprocessor">#include &lt;cassert&gt;</span>
<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])
<span class="keyword">try</span> {
<span class="keywordflow">if</span> (argc != 2) {
std::cout &lt;&lt; <span class="stringliteral">"Usage: "</span> &lt;&lt; argv[0] &lt;&lt; <span class="stringliteral">" file\n"</span>;
<span class="keywordflow">return</span> 1;
}
std::string file(argv[1]);
Exiv2::IptcData iptcData;
iptcData[<span class="stringliteral">"Iptc.Application2.Headline"</span>] = <span class="stringliteral">"The headline I am"</span>;
iptcData[<span class="stringliteral">"Iptc.Application2.Keywords"</span>] = <span class="stringliteral">"Yet another keyword"</span>;
iptcData[<span class="stringliteral">"Iptc.Application2.DateCreated"</span>] = <span class="stringliteral">"2004-8-3"</span>;
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = uint16_t(1);
iptcData[<span class="stringliteral">"Iptc.Envelope.ModelVersion"</span>] = 42;
iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] = <span class="stringliteral">"14:41:0-05:00"</span>;
iptcData[<span class="stringliteral">"Iptc.Application2.RasterizedCaption"</span>] = <span class="stringliteral">"230 42 34 2 90 84 23 146"</span>;
iptcData[<span class="stringliteral">"Iptc.0x0009.0x0001"</span>] = <span class="stringliteral">"Who am I?"</span>;
Exiv2::StringValue value;
value.read(<span class="stringliteral">"very!"</span>);
iptcData[<span class="stringliteral">"Iptc.Application2.Urgency"</span>] = value;
std::cout &lt;&lt; <span class="stringliteral">"Time sent: "</span> &lt;&lt; iptcData[<span class="stringliteral">"Iptc.Envelope.TimeSent"</span>] &lt;&lt; <span class="stringliteral">"\n"</span>;
<span class="comment">// Open image file</span>
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file);
assert (image.get() != 0);
<span class="comment">// Set IPTC data and write it to the file</span>
image-&gt;setIptcData(iptcData);
image-&gt;writeMetadata();
<span class="keywordflow">return</span> 0;
}
<span class="keywordflow">catch</span> (Exiv2::AnyError&amp; e) {
std::cout &lt;&lt; <span class="stringliteral">"Caught Exiv2 exception '"</span> &lt;&lt; e &lt;&lt; <span class="stringliteral">"'\n"</span>;
<span class="keywordflow">return</span> -1;
}
</pre></div>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save